var ms = null; window.onload = function() { GM_xmlhttpRequest({ method: "GET", url:"monsters-info/mon.json", onload: function(response) { ms = JSON.parse(response.response); initialize();//初始化 test(); //测试代码 }, onerror: function(response) { console.error("怪物数据获取错误",response); } }); } //初始化 function initialize() { var monstersList = document.querySelector("#monsters-list"); ms.forEach(function(m){ var opt = monstersList.appendChild(document.createElement("option")); opt.value = m.id; opt.label = m.id + " | " + m.name + " | " + m.ename; }); //编辑框 var editBox = document.querySelector(".edit-box"); var settingBox = editBox.querySelector(".setting-box") //id搜索 var monstersSearch = editBox.querySelector(".edit-box .m-id"); monstersSearch.onchange = function(){ if (/^\d+$/.test(this.value)) { editChangeMonId(parseInt(this.value)); } } monstersSearch.oninput = monstersSearch.onchange; //觉醒 var monEditAwokens = Array.prototype.slice.call(settingBox.querySelectorAll(".m-awoken-ul>.awoken-icon")); monEditAwokens.forEach(function(akDom,idx,domArr){ akDom.onclick = function(){ if (idx >= domArr.filter(function(d){return !d.classList.contains("display-none")}).length-1) domArr[0].innerHTML = "★"; else domArr[0].innerHTML = idx; for(var ai=1;ai= 12?2:1); },0); } function refreshLatent() //刷新潜觉 { if (this.value<0) return; var usedHoleN = usedHole(latent); for (var ai=0;ai<6;ai++) { if (latent[ai]) { monEditLatents[ai].className = "latent-icon latent-icon-" + latent[ai]; monEditLatents[ai].value = ai; } else if(ai<(6-usedHoleN+latent.length)) { monEditLatents[ai].className = "latent-icon"; monEditLatents[ai].value = -1; } else { monEditLatents[ai].className = "display-none"; monEditLatents[ai].value = -1; } } } editBox.refreshLatent = refreshLatent; //已有觉醒的去除 monEditLatents.forEach(function(l){ l.onclick = function(){ var aIdx = parseInt(this.value); latent.splice(aIdx,1); refreshLatent(); } }) //可选觉醒的添加 monEditLatentsAllowable.forEach(function(la){ la.onclick = function(){ if (this.classList.contains("unselected-latent")) return; var lIdx = parseInt(this.value); var usedHoleN = usedHole(latent); if (lIdx >= 12 && usedHoleN<=4) latent.push(lIdx); else if (lIdx < 12 && usedHoleN<=5) latent.push(lIdx); refreshLatent(); /* var allowHole = monEditLatents.filter(function(l){ //返回空余潜觉格子 return !l.classList.contains("display-none") && //没被隐藏的 Array.prototype.slice.call(l.classList).filter(function(c){ //存在觉醒图标className的 return /^latent\-icon\-\d+$/ig.test(c); }).length<1; }) var lIdx = parseInt(this.value); if (lIdx >= 12) { //占两格 if (allowHole.length>=2) { allowHole[0].className = "latent-icon latent-icon-" + lIdx; allowHole.value = lIdx; allowHole[allowHole.length-1].className = "display-none"; } }else { //占一格 if (allowHole.length>=1) { allowHole[0].className = "latent-icon latent-icon-" + lIdx; allowHole.value = lIdx; } } */ } }) } function changeid(mon,monDom,awokenDom) { var md = ms[mon.id]; //怪物固定数据 /* mon.id mon.level mon.awoken mon.addition mon.acquisitusAwoken */ if (mon.id>-1) //如果提供了id { monDom.className = "monster"; monDom.classList.add("pet-cards-" + Math.ceil(mon.id/100)); //添加图片编号 var idxInPage = (mon.id-1) % 100; //获取当前页面的总序号 monDom.classList.add("pet-cards-index-x-" + idxInPage % 10); //添加X方向序号 monDom.classList.add("pet-cards-index-y-" + parseInt(idxInPage / 10)); //添加Y方向序号 monDom.querySelector(".property").className = "property property-" + md.ppt[0]; //主属性 monDom.querySelector(".subproperty").className = "subproperty subproperty-" + md.ppt[1]; //副属性 monDom.title = "No." + mon.id + " " + md.name; monDom.href = "http://pad.skyozora.com/pets/" + mon.id; } if (mon.level>0) //如果提供了等级 { monDom.querySelector(".level").innerHTML = mon.level || 99; } if (mon.awoken>-1) //如果提供了觉醒 { var awokenIcon = monDom.querySelector(".awoken-count"); if (mon.awoken == 0 || md.awoken.length < 1) //没觉醒 { awokenIcon.classList.add("display-none"); awokenIcon.innerHTML = ""; }else { awokenIcon.classList.remove("display-none"); if (mon.awoken < md.awoken.length) //觉醒没满直接写数字 awokenIcon.innerHTML = mon.awoken; else //满觉醒打星星 awokenIcon.innerHTML = "★"; } } if (mon.addition) //如果提供了加值 { monDom.querySelector(".addition .hp").innerHTML = mon.addition[0]; monDom.querySelector(".addition .atk").innerHTML = mon.addition[1]; monDom.querySelector(".addition .rcv").innerHTML = mon.addition[2]; if (mon.addition[0]+mon.addition[1]+mon.addition[2] >= 297) { monDom.querySelector(".addition").classList.add("has297"); }else { monDom.querySelector(".addition").classList.remove("has297"); } } if (awokenDom && mon.acquisitusAwoken) //如果提供了潜觉 { } } function test() { var m1 = document.querySelector(".formation-A-box .formation-team .team-1 .monster"); var a1 = document.querySelector(".formation-A-box .formation-team .team-1 .acquisitus-awoken-ul"); changeid({ id:5209, level:98, awoken:8, addition:[99,99,99], acquisitusAwoken:[], },m1,a1) editChangeMonId(3264); } function editChangeMonId(id) { var md = ms[id]; //怪物固定数据 if (!md){ id = 0; md = ms[0] } var editBox = document.querySelector(".edit-box"); var monInfoBox = editBox.querySelector(".monsterinfo-box"); var me = monInfoBox.querySelector(".monster"); changeid({id:id,},me); //改变图像 var mId = monInfoBox.querySelector(".monster-id"); mId.innerHTML = id; var mRare = monInfoBox.querySelector(".monster-rare"); mRare.className = "monster-rare rare-" + md.rare; var mName = monInfoBox.querySelector(".monster-name"); mName.innerHTML = md.name; var mType = monInfoBox.querySelectorAll(".monster-type li"); for (var ti=0;ti99?99:md.maxLevel; var monLatentAllowUl = editBox.querySelector(".m-latent-allowable-ul"); //该宠Type允许的杀 var allowLatent = uniq(md.type.reduce(function (previous, t, index, array) { return previous.concat(type_allowable_latent[t]); },[])); for(var li=17;li<=24;li++) { var latentDom = monLatentAllowUl.querySelector(".latent-icon-" + li); if (allowLatent.indexOf(li)>=0) { if(latentDom.classList.contains("unselected-latent")) latentDom.classList.remove("unselected-latent"); }else { if(!latentDom.classList.contains("unselected-latent")) latentDom.classList.add("unselected-latent"); } } editBox.latent.length = 0; editBox.refreshLatent(); }