diff --git a/images/latent.png b/images/latent.png index 80295187..db05a245 100644 Binary files a/images/latent.png and b/images/latent.png differ diff --git a/images/project file/latent.fw.png b/images/project file/latent.fw.png index 7abb169f..a730589e 100644 Binary files a/images/project file/latent.fw.png and b/images/project file/latent.fw.png differ diff --git a/languages/en.css b/languages/en.css index 83032cb1..13b8db14 100644 --- a/languages/en.css +++ b/languages/en.css @@ -117,13 +117,6 @@ .edit-box .setting-box .row-mon-level::before{ content: "▼Monster Level"; } -.row-mon-level .level-value::before, -.row-mon-level .m-level-btn-min::before, -.row-mon-level .m-level-btn-max::before, -.row-mon-level .m-level-btn-110::before -{ - content: "Lv."; -} .edit-box .setting-box .monster-cost::before{ content: "COST:"; } diff --git a/languages/ja.css b/languages/ja.css index c7ccc700..b54733ff 100644 --- a/languages/ja.css +++ b/languages/ja.css @@ -115,13 +115,6 @@ .edit-box .setting-box .row-mon-level::before{ content: "▼モンスターレベル"; } -.row-mon-level .level-value::before, -.row-mon-level .m-level-btn-min::before, -.row-mon-level .m-level-btn-max::before, -.row-mon-level .m-level-btn-110::before -{ - content: "Lv."; -} .edit-box .setting-box .monster-cost::before{ content: "コスト:"; } diff --git a/languages/ko.css b/languages/ko.css index 9bec5906..c95938ca 100644 --- a/languages/ko.css +++ b/languages/ko.css @@ -116,13 +116,6 @@ .edit-box .setting-box .row-mon-level::before{ content: "▼몬스터 레벨"; } -.row-mon-level .level-value::before, -.row-mon-level .m-level-btn-min::before, -.row-mon-level .m-level-btn-max::before, -.row-mon-level .m-level-btn-110::before -{ - content: "Lv."; -} .edit-box .setting-box .monster-cost::before{ content: "코스트:"; } diff --git a/languages/zh-TW.css b/languages/zh-TW.css index 1ed2250d..660a50df 100644 --- a/languages/zh-TW.css +++ b/languages/zh-TW.css @@ -119,13 +119,6 @@ .edit-box .setting-box .row-mon-level::before{ content: "▼怪物等級"; } -.row-mon-level .level-value::before, -.row-mon-level .m-level-btn-min::before, -.row-mon-level .m-level-btn-max::before, -.row-mon-level .m-level-btn-110::before -{ - content: "Lv."; -} .edit-box .setting-box .monster-cost::before{ content: "消耗:"; } diff --git a/languages/zh.css b/languages/zh.css index d66d09a3..e2d4e1fb 100644 --- a/languages/zh.css +++ b/languages/zh.css @@ -115,17 +115,9 @@ .row-mon-ability .m-rcv-li::before{ content: "回復:"; } - .edit-box .setting-box .row-mon-level::before{ content: "▼怪物等级"; } -.row-mon-level .level-value::before, -.row-mon-level .m-level-btn-min::before, -.row-mon-level .m-level-btn-max::before, -.row-mon-level .m-level-btn-110::before -{ - content: "Lv."; -} .edit-box .setting-box .monster-cost::before{ content: "消耗:"; } diff --git a/multi.html b/multi.html index 74af1d3b..7d82ea89 100644 --- a/multi.html +++ b/multi.html @@ -845,6 +845,7 @@ var formation = new Formation(teamsCount,5);
~ +
@@ -898,6 +899,9 @@ var formation = new Formation(teamsCount,5);
  • +
  • +
  • +
  • @@ -906,6 +910,7 @@ var formation = new Formation(teamsCount,5);
  • +
  • diff --git a/script-json_data.js b/script-json_data.js index 8a5e62a2..3f466627 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -39,6 +39,16 @@ typekiller_for_type.forEach(t=> type_allowable_latent[t.type] = t.allowableLatent; } ); +//一般共同能打的潜觉 +const common_allowable_latent = [ + 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, + 28,29,30,31,32,33,34,35,36,37,38, + 39,40,41, //需要拥有觉醒的才能打,但是有武器 +]; +//120级才能打的潜觉 +const v120_allowable_latent = [ + 42,43,44,45 +]; //等效觉醒列表 const equivalent_awoken = [ {small:10,big:52,times:2}, //防封 diff --git a/script-universal_function.js b/script-universal_function.js index eee9f87c..0713d08a 100644 --- a/script-universal_function.js +++ b/script-universal_function.js @@ -133,10 +133,10 @@ function latentUseHole(latentId) switch (true) { case (latentId === 12): - case (latentId >= 16 && latentId <= 36): + case (latentId >= 16 && latentId <= 36 || latentId >= 43): return 2; case (latentId >= 13 && latentId <= 15): - case (latentId >= 37): + case (latentId >= 37 && latentId <= 42): return 6; case (latentId < 12): default: @@ -244,9 +244,14 @@ 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]; + const expArray = [ + Math.round(valueAt(member.level, 99, memberCard.exp)) //99级以内的经验 + ]; + if (member.level > 99) + expArray.push(Math.max(0, Math.min(member.level, 110) - 100) * 5000000); + if (member.level > 110) + expArray.push(Math.max(0, Math.min(member.level, 120) - 110) * 20000000); + return expArray; } //计算怪物的能力 function calculateAbility(member, assist = null, solo = true, teamsCount = 1) @@ -283,9 +288,9 @@ function calculateAbility(member, assist = null, solo = true, teamsCount = 1) }); } const latentScale = [ //对应加三维潜在觉醒的序号与增加比例 - [{index:1,scale:0.015},{index:12,scale:0.03},{index:28,scale:0.045}], //HP - [{index:2,scale:0.01},{index:12,scale:0.02},{index:29,scale:0.03}], //ATK - [{index:3,scale:0.1},{index:12,scale:0.2},{index:30,scale:0.3}] //RCV + [{index:1,scale:0.015},{index:12,scale:0.03},{index:28,scale:0.045},{index:43,scale:0.09}], //HP + [{index:2,scale:0.01},{index:12,scale:0.02},{index:29,scale:0.03},{index:44,scale:0.06}], //ATK + [{index:3,scale:0.1},{index:12,scale:0.2},{index:30,scale:0.3},{index:45,scale:0.6}] //RCV ]; const memberCurves = [memberCard.hp, memberCard.atk, memberCard.rcv]; const assistCurves = assistCard ? [assistCard.hp, assistCard.atk, assistCard.rcv] : null; @@ -548,22 +553,18 @@ function isReincarnated(card) return card.is8Latent && !card.isUltEvo && (card.evoBaseId || card.evoRootId) != card.id && (card.awakenings.includes(49) ? isReincarnated(Cards[card.evoBaseId]) : true); } //获取类型允许的潜觉 -function getAllowLatent(types) +function getAllowLatent(card) { - const latentSet = new Set(); - types.filter(i => i >= 0) + const latentSet = new Set(common_allowable_latent); + card.types.filter(i => i >= 0) .map(type => type_allowable_latent[type]) .forEach(tA => tA.forEach(t => latentSet.add(t))); + if (card.limitBreakIncr) + { + v120_allowable_latent.forEach(t=>latentSet.add(t)); + } return Array.from(latentSet); } -//筛选出允许的潜觉 -function filterAllowLatent(latent, allowLatent) -{ - const allKillerLatent = typekiller_for_type.map(type => type.latent); - return latent.filter(lat => - !allKillerLatent.includes(lat) || //保留不属于杀的潜觉 - allKillerLatent.includes(lat) && allowLatent.includes(lat)); //属于杀的潜觉则只保留允许的 -} //计算队伍中有多少血量 function countTeamHp(memberArr, leader1id, leader2id, solo, noAwoken=false) { diff --git a/script.js b/script.js index 64c5b9a8..493754a6 100644 --- a/script.js +++ b/script.js @@ -1819,6 +1819,9 @@ function initialize() { const monEditLv110 = settingBox.querySelector(".m-level-btn-110"); monEditLv110.ipt = monEditLv; monEditLv110.onclick = setIptToMyValue; + const monEditLv120 = settingBox.querySelector(".m-level-btn-120"); + monEditLv120.ipt = monEditLv; + monEditLv120.onclick = setIptToMyValue; //编辑界面重新计算怪物的经验值 function reCalculateExp() { const monid = editBox.mid; @@ -1828,7 +1831,7 @@ function initialize() { level: level }; const needExp = calculateExp(tempMon); - monLvExp.textContent = needExp ? needExp[0].bigNumberToString() + (level > 99 ? ` + ${needExp[1].bigNumberToString()}` : "") : ""; + monLvExp.textContent = needExp ? needExp.map(exp=>exp.bigNumberToString()).join(" + ") : ""; } editBox.reCalculateExp = reCalculateExp; //三维 @@ -2323,9 +2326,10 @@ function changeid(mon, monDom, latentDom) { levelDom.classList.remove("max"); } if (card.limitBreakIncr && level >= card.maxLevel) { //如果支持超觉,并且等级超过99,就添加支持超觉的蓝色 - levelDom.classList.add("_110"); + levelDom.classList.add(level > 110 ? "_120" : "_110"); } else { levelDom.classList.remove("_110"); + levelDom.classList.remove("_120"); } } const awokenIcon = monDom.querySelector(".awoken-count-num"); @@ -2671,14 +2675,19 @@ function editBoxChangeMonId(id) { //monEditLvMax.textContent = monEditLvMax.value = card.maxLevel; monEditLvMax.value = card.maxLevel; const monEditLv = settingBox.querySelector(".m-level"); - monEditLv.max = monEditLv.value = card.maxLevel + (card.limitBreakIncr ? 11 : 0); //默认等级为110 + monEditLv.max = card.limitBreakIncr ? 120 : card.maxLevel; //最大等级为120 + monEditLv.value = card.limitBreakIncr ? 110 : card.maxLevel; //默认等级为110 const monEditLv110 = settingBox.querySelector(".m-level-btn-110"); + const monEditLv120 = settingBox.querySelector(".m-level-btn-120"); monEditLv110.setAttribute("data-limit-break-incr",card.limitBreakIncr); + monEditLv120.setAttribute("data-limit-break-incr",card.limitBreakIncr); if (card.limitBreakIncr) { monEditLv110.classList.remove(className_displayNone); + monEditLv120.classList.remove(className_displayNone); } else { monEditLv110.classList.add(className_displayNone); + monEditLv120.classList.add(className_displayNone); } const mCost = settingBox.querySelector(".monster-cost"); @@ -2688,17 +2697,17 @@ function editBoxChangeMonId(id) { const rowLatent = settingBox.querySelector(".row-mon-latent"); const monLatentAllowUl = rowLatent.querySelector(".m-latent-allowable-ul"); //该宠Type允许的杀,set不会出现重复的 - const allowLatent = getAllowLatent(card.types); + const allowLatent = getAllowLatent(card); - typekiller_for_type.forEach(type => { //显示允许的杀,隐藏不允许的杀 - const latentDom = monLatentAllowUl.querySelector(`.latent-icon[data-latent-icon='${type.latent}']`); - if (!latentDom) return; - if (allowLatent.includes(type.latent)) { - latentDom.classList.remove("unallowable-latent"); + const latentIcons = Array.from(monLatentAllowUl.querySelectorAll(`.latent-icon[data-latent-icon]`)); + latentIcons.forEach(icon => { //显示允许的潜觉,隐藏不允许的潜觉 + const ltId = parseInt(icon.getAttribute("data-latent-icon"),10); + if (allowLatent.includes(ltId)) { + icon.classList.remove("unallowable-latent"); } else { - latentDom.classList.add("unallowable-latent"); + icon.classList.add("unallowable-latent"); } - }) + }); //怪物主动技能 const rowSkill = settingBox.querySelector(".row-mon-skill"); @@ -2768,7 +2777,7 @@ function editBoxChangeMonId(id) { } //去除所有不能再打的潜觉 - editBox.latent = filterAllowLatent(editBox.latent,allowLatent); + editBox.latent = editBox.latent.filter(lat => allowLatent.includes(lat)); editBox.refreshLatent(editBox.latent, id); editBox.reCalculateExp(); editBox.reCalculateAbility(); diff --git a/solo.html b/solo.html index 1d7e000b..80cd9d31 100644 --- a/solo.html +++ b/solo.html @@ -768,6 +768,7 @@ var formation = new Formation(teamsCount,6);
    ~ +
    @@ -821,6 +822,9 @@ var formation = new Formation(teamsCount,6);
  • +
  • +
  • +
  • @@ -829,6 +833,7 @@ var formation = new Formation(teamsCount,6);
  • +
  • diff --git a/style-monsterimages.css b/style-monsterimages.css index a00d4816..89cce6e9 100644 --- a/style-monsterimages.css +++ b/style-monsterimages.css @@ -709,7 +709,10 @@ .latent-icon[data-latent-icon='33']::before, .latent-icon[data-latent-icon='34']::before, .latent-icon[data-latent-icon='35']::before, -.latent-icon[data-latent-icon='36']::before +.latent-icon[data-latent-icon='36']::before, +.latent-icon[data-latent-icon='43']::before, +.latent-icon[data-latent-icon='44']::before, +.latent-icon[data-latent-icon='45']::before { width: 76px; } @@ -720,7 +723,8 @@ .latent-icon[data-latent-icon='38']::before, .latent-icon[data-latent-icon='39']::before, .latent-icon[data-latent-icon='40']::before, -.latent-icon[data-latent-icon='41']::before +.latent-icon[data-latent-icon='41']::before, +.latent-icon[data-latent-icon='42']::before { width: 252px; } @@ -847,6 +851,18 @@ .latent-icon[data-latent-icon='41']::before{ /*U解禁消*/ background-position-y: calc(-32px * 41); } +.latent-icon[data-latent-icon='42']::before{ /*伤害上限解除*/ + background-position-y: calc(-32px * 42); +} +.latent-icon[data-latent-icon='43']::before{ /*HP++*/ + background-position-y: calc(-32px * 43); +} +.latent-icon[data-latent-icon='44']::before{ /*攻击++*/ + background-position-y: calc(-32px * 44); +} +.latent-icon[data-latent-icon='45']::before{ /*回复++*/ + background-position-y: calc(-32px * 45); +} /* 徽章背景 */ .badge{ diff --git a/style.css b/style.css index 8421d7b8..dc553d74 100644 --- a/style.css +++ b/style.css @@ -363,6 +363,9 @@ ul{ .monster .level._110{ color: lightskyblue; } +.monster .level._120{ + color: lightgreen; +} /*.monster .level::before{ content: "Lv."; }.monster .level.max::before{ @@ -700,7 +703,13 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after .team-latents .latent-icon[data-latent-icon='36'], .team-latents .latent-icon[data-latent-icon='37'], .team-latents .latent-icon[data-latent-icon='38'], -.team-latents .latent-icon[data-latent-icon='39'] +.team-latents .latent-icon[data-latent-icon='39'], +.team-latents .latent-icon[data-latent-icon='40'], +.team-latents .latent-icon[data-latent-icon='41'], +.team-latents .latent-icon[data-latent-icon='42'], +.team-latents .latent-icon[data-latent-icon='43'], +.team-latents .latent-icon[data-latent-icon='44'], +.team-latents .latent-icon[data-latent-icon='45'] { margin-left: 0; margin-right: 0; @@ -709,7 +718,11 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after .team-latents .latent-ul .latent-icon[data-latent-icon='14']::before, .team-latents .latent-ul .latent-icon[data-latent-icon='15']::before, .team-latents .latent-ul .latent-icon[data-latent-icon='37']::before, -.team-latents .latent-ul .latent-icon[data-latent-icon='38']::before +.team-latents .latent-ul .latent-icon[data-latent-icon='38']::before, +.team-latents .latent-ul .latent-icon[data-latent-icon='39']::before, +.team-latents .latent-ul .latent-icon[data-latent-icon='40']::before, +.team-latents .latent-ul .latent-icon[data-latent-icon='41']::before, +.team-latents .latent-ul .latent-icon[data-latent-icon='42']::before { /*6格的潜觉*/ width: 152px; margin-left: -50px; @@ -719,7 +732,11 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after .team-latents .latent-ul .latent-icon[data-latent-icon='14'], .team-latents .latent-ul .latent-icon[data-latent-icon='15'], .team-latents .latent-ul .latent-icon[data-latent-icon='37'], -.team-latents .latent-ul .latent-icon[data-latent-icon='38'] +.team-latents .latent-ul .latent-icon[data-latent-icon='38'], +.team-latents .latent-ul .latent-icon[data-latent-icon='39'], +.team-latents .latent-ul .latent-icon[data-latent-icon='40'], +.team-latents .latent-ul .latent-icon[data-latent-icon='41'], +.team-latents .latent-ul .latent-icon[data-latent-icon='42'] { border-radius: 5px 5px 5px 0; box-shadow: black 1px 1px 1px; @@ -728,7 +745,11 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after .team-latents .latent-icon[data-latent-icon='14']+.latent-icon, .team-latents .latent-icon[data-latent-icon='15']+.latent-icon, .team-latents .latent-icon[data-latent-icon='37']+.latent-icon, -.team-latents .latent-icon[data-latent-icon='38']+.latent-icon +.team-latents .latent-icon[data-latent-icon='38']+.latent-icon, +.team-latents .latent-icon[data-latent-icon='39']+.latent-icon, +.team-latents .latent-icon[data-latent-icon='40']+.latent-icon, +.team-latents .latent-icon[data-latent-icon='41']+.latent-icon, +.team-latents .latent-icon[data-latent-icon='42']+.latent-icon { width: 76px; margin-left: 0; @@ -746,7 +767,11 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after .team-latents .latent-icon[data-latent-icon='14']+.latent-icon::before, .team-latents .latent-icon[data-latent-icon='15']+.latent-icon::before, .team-latents .latent-icon[data-latent-icon='37']+.latent-icon::before, -.team-latents .latent-icon[data-latent-icon='38']+.latent-icon::before +.team-latents .latent-icon[data-latent-icon='38']+.latent-icon::before, +.team-latents .latent-icon[data-latent-icon='39']+.latent-icon::before, +.team-latents .latent-icon[data-latent-icon='40']+.latent-icon::before, +.team-latents .latent-icon[data-latent-icon='41']+.latent-icon::before, +.team-latents .latent-icon[data-latent-icon='42']+.latent-icon::before { background: none; } @@ -1772,7 +1797,14 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after { margin-left: 10px; } - +.row-mon-level .level-value::before, +.row-mon-level .m-level-btn-min::before, +.row-mon-level .m-level-btn-max::before, +.row-mon-level .m-level-btn-110::before, +.row-mon-level .m-level-btn-120::before +{ + content: "Lv."; +} .row-mon-level .subrow { font-family: var(--game-font-family ); @@ -1795,7 +1827,8 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after } .m-level-btn-min, .m-level-btn-max, -.m-level-btn-110 +.m-level-btn-110, +.m-level-btn-120 { box-sizing: border-box; font-size: 18px; @@ -1806,7 +1839,8 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after { content: attr(value); } -.row-mon-level .m-level-btn-110::after +.row-mon-level .m-level-btn-110::after, +.row-mon-level .m-level-btn-120::after { content: attr(value) " (+" attr(data-limit-break-incr) "%)"; } @@ -1814,6 +1848,10 @@ body:not(.solo) .awoken-icon[data-awoken-icon="64"]::after { color: blue; } +.m-level-btn-120 +{ + color: green; +} /* .m-level-exp::before{ content: "需要经验:"; diff --git a/triple.html b/triple.html index e70e1e02..2b3f28d5 100644 --- a/triple.html +++ b/triple.html @@ -1497,6 +1497,7 @@ var formation = new Formation(teamsCount,6);
    ~ +
    @@ -1550,6 +1551,9 @@ var formation = new Formation(teamsCount,6);
  • +
  • +
  • +
  • @@ -1558,6 +1562,7 @@ var formation = new Formation(teamsCount,6);
  • +