diff --git a/languages/en.css b/languages/en.css index 094ed65b..1118ce8a 100644 --- a/languages/en.css +++ b/languages/en.css @@ -238,7 +238,7 @@ label[for="screenshot-transparent"]::after{ content: "🔄Rotating ABC Team"; } .control-box .lbl-henshin-change::before{ - content: "🦸Henshin"; + content: "🦸Changes"; } .control-box .lbl-remove-assist::before{ content: "⛔Remove Assist"; @@ -555,12 +555,12 @@ label[for="real-time-change-card"]::after .henshin .evo-type::before, .henshin .evo-type::after { - content: "Henshin"; + content: "Changes"; } .random-henshin .evo-type::before, .random-henshin .evo-type::after { - content: "Random Henshin"; + content: "Random Changes"; } .random-henshin .evo-type-div { @@ -574,7 +574,7 @@ label[for="real-time-change-card"]::after .henshin-loop .evo-type::before, .henshin-loop .evo-type::after { - content: "Loop Henshin"; + content: "Loop Changes"; } .henshin-loop .evo-type { diff --git a/script-json_data.js b/script-json_data.js index 78627cb2..8ffe39f7 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -134,8 +134,8 @@ let localTranslating = { reduce_damage: tp`${'condition'}${'chance'}${'icon'}Reduces ${'attrs'} damage taken by ${'value'}`, power_up: tp`${'condition'}${'targets'}${'each_time'}${'value'}${'reduceDamage'}${'additional'}`, power_up_targets: tp`[${'attrs_types'}]'s `, //attrs, types, attrs_types - henshin: tp`Transforms into ${'cards'}`, - random_henshin: tp`Random transforms into ${'cards'}`, + henshin: tp`Changes to ${'cards'}`, + random_henshin: tp`Random changes to ${'cards'}`, void_poison: tp`Voids ${'poison'} damage`, skill_proviso: tp`The follow-up effect can only be activates ${'condition'}`, impart_awoken: tp`Impart ${'attrs_types'} additional ${'awakenings'}`, diff --git a/script-universal_function.js b/script-universal_function.js index 4754efc6..5ffe235a 100644 --- a/script-universal_function.js +++ b/script-universal_function.js @@ -649,14 +649,14 @@ function valueAt(level, maxLevel, curve) { function curve(c, level, maxLevel, limitBreakIncr, limitBreakIncr120) { let value = valueAt(level, maxLevel, { min: c.min, - max: c.max !== undefined ? c.max : (c.min * maxLevel), + max: c.max !== void 0 ? c.max : (c.min * maxLevel), scale: c.scale || 1 }); if (level > maxLevel) { const exceed99 = Math.min(level - maxLevel, 11); const exceed110 = Math.max(0, level - 110); - value += c.max !== undefined ? + value += c.max !== void 0 ? ((c.max * (limitBreakIncr / 100) * (exceed99 / 11)) + (c.max * (limitBreakIncr120 / 100) * (exceed110 / 10))) : (c.min * exceed99 + c.min * exceed110); } diff --git a/script.js b/script.js index c1029520..95c44898 100644 --- a/script.js +++ b/script.js @@ -123,7 +123,7 @@ class Plus extends Array { this[1] = hp[1]; this[2] = hp[2]; } else { //传入三个数字的形式 - if (!Number.isInteger(hp) || !Number.isInteger(atk) || !Number.isInteger(rcv)) throw new TypeError("传入的+值不是整数"); + if (!Number.isInteger(hp) || !Number.isInteger(atk) || !Number.isInteger(rcv)) throw new TypeError("传入的 +值 不是整数"); this[0] = hp; this[1] = atk; this[2] = rcv; @@ -133,21 +133,24 @@ class Plus extends Array { return this[0]; } set hp(num) { - if (!Number.isInteger(num)) throw new TypeError("传入的+值不是整数"); + if (!Number.isInteger(num)) throw new TypeError("传入的 HP +值 不是整数"); + if (num < 0 || num > 99) throw new RangeError("HP +值应为 0-99 之间的整数"); this[0] = num; } get atk() { return this[1]; } set atk(num) { - if (!Number.isInteger(num)) throw new TypeError("传入的+值不是整数"); + if (!Number.isInteger(num)) throw new TypeError("传入的 ATK +值 不是整数"); + if (num < 0 || num > 99) throw new RangeError("ATK +值应为 0-99 之间的整数"); this[1] = num; } get rcv() { return this[2]; } set rcv(num) { - if (!Number.isInteger(num)) throw new TypeError("传入的+值不是整数"); + if (!Number.isInteger(num)) throw new TypeError("传入的 RCV +值 不是整数"); + if (num < 0 || num > 99) throw new RangeError("RCV +值应为 0-99 之间的整数"); this[2] = num; } get is297() { @@ -190,6 +193,9 @@ class LatentAwakening extends Array { Object.assign(this, arg); } } + get usedHole() { + return this.reduce((p,v)=>p + latentUseHole(v),0); + } toBigInt() { //直接使用目前的最新版本 const leftNumn = 0b111n; @@ -220,12 +226,13 @@ class LatentAwakening extends Array { } } class Member2 { - id = 0; + id = 0; //原始id + changes = null; //变身后id level = 1; - plus = new Plus(); awakening = 0; superAwakening= 0; - latentAwakening = new LatentAwakening(); + #plus = new Plus(); + #latentAwakening = new LatentAwakening(); skillLevel = 0; assistMember = null; get hasAssist() { @@ -247,6 +254,48 @@ class Member2 { get card() { return Cards[this.id] ?? Cards[0]; } + get plus() { + return this.#plus; + } + set plus(arr) { + if (!Array.isArray(arr) || !arr.every(n=>Number.isInteger(n))) + throw new TypeError("直接设定 +值 应当为整形数组"); + this.#plus[0] = arr[0]; + this.#plus[1] = arr[1]; + this.#plus[2] = arr[2]; + } + get latentAwakening() { + return this.#latentAwakening; + } + set latentAwakening(arr) { + if (!Array.isArray(arr) || !arr.every(n=>Number.isInteger(n))) + throw new TypeError("直接设定 潜在觉醒 应当为整形数组"); + this.#latentAwakening.length = arr.length; + for (let i=0;i 99) + expArray.push(Math.max(0, Math.min(this.level, 110) - 100) * 5000000); + if (this.level > 110) + expArray.push(Math.max(0, Math.min(this.level, 120) - 110) * 20000000); + return expArray; + } + getWorkingAwakenings(states) { + const {awakningsBind, removeAssist} = states; + if (awakningsBind) return []; + const awaknings = this.card.awakenings.slice(0, this.awakening); + if (this.hasAssist && !removeAssist) //有武器并且没有禁武器时 + awaknings.push(...this.assistMember.getAwakenings(states)); + return awaknings; + } + getAbilities(states) { + const {awakningsBind, removeAssist, dungeonEnchance} = states; + } } class Card { flags = 0; @@ -553,8 +602,8 @@ class LeaderSkillType_ExtraEffects { class Team extends Array { badge = 0; helperTeam = null; - constructor(memberCount = 6) - { + switchesLeader = null; + constructor(memberCount = 6) { super(memberCount);//建立 Array } get leader1(){ @@ -565,6 +614,21 @@ class Team extends Array { return helperTeam instanceof Team ? this.helperTeam.leader1 : this[5]; } } +class Formation2 { + teams = []; + title = ""; + detail = ""; + dungeonEnchance = null; + constructor(teamCount) { + for (let i=0; i