diff --git a/languages/en.css b/languages/en.css index 7fa140bb..d04dc838 100644 --- a/languages/en.css +++ b/languages/en.css @@ -83,6 +83,9 @@ .m-level-btn-max::before{ content: "Max Lv."; } +.m-level-exp::before{ + content: "Need Exp:"; +} .edit-box .setting-box .row-mon-awoken::before{ content: "▼Monster Awoken"; } diff --git a/languages/ja.css b/languages/ja.css index 77aa7285..d121e3a0 100644 --- a/languages/ja.css +++ b/languages/ja.css @@ -82,6 +82,9 @@ .m-level-btn-max::before{ content: "最大Lv."; } +.m-level-exp::before{ + content: "必要な経験値:"; +} .edit-box .setting-box .row-mon-awoken::before{ content: "▼モンスター覚醒"; } diff --git a/languages/ko.css b/languages/ko.css index e3f6bf1a..ff56eedc 100644 --- a/languages/ko.css +++ b/languages/ko.css @@ -82,6 +82,9 @@ .m-level-btn-max::before{ content: "최대Lv."; } +.m-level-exp::before{ + content: "필요한 Exp:"; +} .edit-box .setting-box .row-mon-awoken::before{ content: "▼몬스터 각성"; } diff --git a/languages/zh-CN.js b/languages/zh-CN.js index 64f784d0..d6b239a5 100644 --- a/languages/zh-CN.js +++ b/languages/zh-CN.js @@ -1171,4 +1171,22 @@ function parseSkillDescription(skill) } //(skill.description.length?(descriptionToHTML(skill.description) + "
"):"") + str return str; +} +//大数字缩短长度 +function parseBigNumber(number) +{ + if (number === 0) + { + return number; + }else if (number % 1e8 === 0) + { + return number / 1e8 + "亿"; + }else if (number % 1e4 === 0) + { + return number / 1e4 + "万"; + }else + { + return number; + } + } \ No newline at end of file diff --git a/languages/zh-TW.css b/languages/zh-TW.css index 85178f3e..6b35df33 100644 --- a/languages/zh-TW.css +++ b/languages/zh-TW.css @@ -85,6 +85,9 @@ .m-level-btn-max::before{ content: "最高Lv."; } +.m-level-exp::before{ + content: "需要經驗值:"; +} .edit-box .setting-box .row-mon-awoken::before{ content: "▼怪物覺醒"; } diff --git a/languages/zh.css b/languages/zh.css index 68800cee..fb96310d 100644 --- a/languages/zh.css +++ b/languages/zh.css @@ -85,6 +85,9 @@ .m-level-btn-max::before{ content: "最高Lv."; } +.m-level-exp::before{ + content: "需要经验值:"; +} .edit-box .setting-box .row-mon-awoken::before{ content: "▼怪物觉醒"; } diff --git a/multi.html b/multi.html index 9eb38354..f462aed7 100644 --- a/multi.html +++ b/multi.html @@ -696,9 +696,12 @@ var formation = new Formation(teamsCount,5);
- - - +
+
+ + + +
diff --git a/script.js b/script.js index b84cd73d..4e903686 100644 --- a/script.js +++ b/script.js @@ -203,7 +203,7 @@ function toggleShowMonSkillCd() //清除数据 function clearData() { - location.href=location.href.replace(location.search,''); + location.search = ""; } //轮换ABC队伍 function swapABCteam() @@ -877,13 +877,29 @@ function initialize() } //等级 const monEditLv = settingBox.querySelector(".m-level"); - monEditLv.onchange = reCalculateAbility; + monEditLv.onchange = function(){ + reCalculateExp(); + reCalculateAbility(); + }; const monEditLvMin = settingBox.querySelector(".m-level-btn-min"); + const monLvExp = settingBox.querySelector(".m-level-exp"); monEditLvMin.ipt = monEditLv; monEditLvMin.onclick = setIptToMyValue; const monEditLvMax = settingBox.querySelector(".m-level-btn-max"); monEditLvMax.ipt = monEditLv; monEditLvMax.onclick = setIptToMyValue; + //编辑界面重新计算怪物的经验值 + function reCalculateExp(){ + const monid = parseInt(monstersID.value || 0, 10); + const level = parseInt(monEditLv.value || 0, 10); + const tempMon = { + id:monid, + level:level + } + const needExp = calculateExp(tempMon); + monLvExp.innerHTML = needExp ? parseBigNumber(needExp[0]) + (level>99?` + ${parseBigNumber(needExp[1])}` : "") : ""; + }; + editBox.reCalculateExp = reCalculateExp; //加蛋 const monEditAddHpLi = settingBox.querySelector(".row-mon-plus .m-plus-hp-li"); const monEditAddAtkLi = settingBox.querySelector(".row-mon-plus .m-plus-atk-li"); @@ -910,7 +926,7 @@ function initialize() monEditAddHp.value = 99; monEditAddAtk.value = 99; monEditAddRcv.value = 99; - editBox.reCalculateAbility(); + reCalculateAbility(); }; //三维的计算值 const monEditHpValue = monEditAddHpLi.querySelector(".ability-value"); @@ -1569,6 +1585,7 @@ function editMon(teamNum,isAssist,indexInTeam) rowMonLatent.classList.add("display-none"); editBoxTitle.classList.add("edit-box-title-assist"); } + editBox.reCalculateExp(); editBox.reCalculateAbility(); } //编辑窗,修改怪物ID @@ -1595,6 +1612,8 @@ function editBoxChangeMonId(id) mRare.className = "monster-rare rare-" + card.rarity; const mCost = monInfoBox.querySelector(".monster-cost"); mCost.innerHTML = card.cost; + /*const mExp = monInfoBox.querySelector(".monster-exp"); + mExp.innerHTML = card.exp.max;*/ const mName = monInfoBox.querySelector(".monster-name"); mName.innerHTML = returnMonsterNameArr(card, currentLanguage.searchlist, currentDataSource.code)[0]; const mCollabId = monInfoBox.querySelector(".monster-collabId"); @@ -1785,6 +1804,7 @@ function editBoxChangeMonId(id) } editBox.latent.length = 0; editBox.refreshLatent(editBox.latent,id); + editBox.reCalculateExp(); editBox.reCalculateAbility(); } //搜索并显示合作 diff --git a/solo.html b/solo.html index ed60b515..bc7c9e26 100644 --- a/solo.html +++ b/solo.html @@ -392,6 +392,7 @@ var formation = new Formation(teamsCount,6);
+
@@ -644,9 +645,12 @@ var formation = new Formation(teamsCount,6);
- - - +
+
+ + + +
diff --git a/style.css b/style.css index d52573af..77d775ca 100644 --- a/style.css +++ b/style.css @@ -910,7 +910,6 @@ ul{ .edit-box .setting-box .row-mon-level::before{ /*content: "▼怪物等级";*/ - display: block; } .edit-box .setting-box .m-level{ font-size: 25px; @@ -918,7 +917,9 @@ ul{ width: calc(100% - 220px); box-sizing: border-box; } -.m-level-btn-min,.m-level-btn-max{ +.m-level-btn-min, +.m-level-btn-max +{ height: 40px; box-sizing: border-box; font-size: 25px; @@ -930,12 +931,21 @@ ul{ .m-level-btn-max{ width: 145px; } -/*.m-level-btn-max::before{ +.m-level-exp{ + margin-left: 10px; + display: inline-block; +} +/* +.m-level-exp::before{ + content: "需要经验:"; +} +.m-level-btn-max::before{ content: "最高Lv"; } .edit-box .setting-box .row-mon-awoken::before{ content: "▼怪物觉醒"; -}*/ +} +*/ .row-mon-awoken .awoken-ul, .row-mon-super-awoken .awoken-ul{ font-size: 0; height: 32px; diff --git a/triple.html b/triple.html index 68bf51ff..9d0d4854 100644 --- a/triple.html +++ b/triple.html @@ -1281,9 +1281,12 @@ var formation = new Formation(teamsCount,6);
- - - +
+
+ + + +
diff --git a/universal_function.js b/universal_function.js index 8791d49f..14790782 100644 --- a/universal_function.js +++ b/universal_function.js @@ -147,6 +147,35 @@ function returnMonsterNameArr(card, lsList, defaultCode) } return monNameArr; } +//Code From pad-rikuu +function valueAt(level, maxLevel, curve) { + const f = (maxLevel === 1 || level >= maxLevel) ? 1 : ((level - 1) / (maxLevel - 1)); + return curve.min + (curve.max - curve.min) * Math.pow(f, curve.scale); +} +//Code From pad-rikuu +function curve(c, level, maxLevel, limitBreakIncr) { + let value = valueAt(level, maxLevel, { + min: c.min, + max: c.max || (c.min * maxLevel), + scale: c.scale || 1 + }); + + if (level > maxLevel) { + const exceed = level - maxLevel; + value += c.max ? (c.max * (limitBreakIncr / 100) * (exceed / 11)) : c.min * exceed; + } + return value; +} +//计算怪物的经验值 +function calculateExp(member) +{ + if (!member) return null; + const memberCard = Cards[member.id]; + if (!memberCard || memberCard.id == 0 || !memberCard.enabled) return null; + const v99Exp = valueAt(member.level, 99, memberCard.exp); + const v110Exp = member.level > 99 ? Math.max(0, member.level - memberCard.maxLevel - 1) * 5000000 : 0; + return [Math.round(v99Exp),v110Exp]; +} //计算怪物的能力 //function calculateAbility(monid = 0, level = 1, plus = [0,0,0], awoken = 0, latent = [], weaponId = null, weaponAwoken = null, solo = true) function calculateAbility(member = null, assist = null, solo = true) @@ -167,25 +196,6 @@ function calculateAbility(member = null, assist = null, solo = true) const assistCard = assist ? Cards[assist.id] : null; if (!memberCard || memberCard.id == 0 || !memberCard.enabled) return null; - //Code From pad-rikuu - function valueAt(level, maxLevel, curve) { - const f = (maxLevel === 1 || level >= maxLevel) ? 1 : ((level - 1) / (maxLevel - 1)); - return curve.min + (curve.max - curve.min) * Math.pow(f, curve.scale); - } - //Code From pad-rikuu - function curve(c, level, maxLevel, limitBreakIncr) { - let value = valueAt(level, maxLevel, { - min: c.min, - max: c.max || (c.min * maxLevel), - scale: c.scale || 1 - }); - - if (level > maxLevel) { - const exceed = level - maxLevel; - value += c.max ? (c.max * (limitBreakIncr / 100) * (exceed / 11)) : c.min * exceed; - } - return value; - } const bonusScale = [0.1,0.05,0.15]; //辅助宠物附加的属性倍率 const plusAdd = [10,5,3]; //加值的增加值 const awokenAdd = [ //对应加三维觉醒的序号与增加值 @@ -335,15 +345,9 @@ function createCardA(id) //将怪物的文字介绍解析为HTML function descriptionToHTML(str) { - str = str.replace(/\n/igm,"
"); - str = str.replace(/\^([a-fA-F0-9]{6})\^([^\^]+)\^p/igm,'$2'); - let monReg = /\%\{m([0-9]{1,4})\}/igm; - let monRegRes; - - while((monRegRes = monReg.exec(str))!=null) { - str = str.replace(monRegRes[0],cardN(parseInt(monRegRes[1]))); - } - //str = str.replace(/\%\{m([0-9]{1,4})\}/igm,cardN(`$1`)); + str = str.replace(/\n/ig,"
"); //换行 + str = str.replace(/\^([a-fA-F0-9]{6})\^([^\^]+)\^p/igm,'$2'); //文字颜色 + str = str.replace(/\%\{m([0-9]{1,4})\}/g,function (str, p1, offset, s){return cardN(parseInt(p1,10));}); //怪物头像 return str; } //返回怪物名 @@ -366,4 +370,16 @@ function cardN(id){ function parseSkillDescription(skill) { return descriptionToHTML(skill.description); +} +//大数字缩短长度,默认返回本地定义字符串 +function parseBigNumber(number) +{ + /* //千位分隔符 + const res=number.toString().replace(/\d+/, function(n){ // 先提取整数部分 + return n.replace(/(\d)(?=(\d{3})+$)/g,function($1){ + return $1+","; + }); + }) + */ + return number.toLocaleString(); } \ No newline at end of file