diff --git a/languages/zh.js b/languages/zh.js index 927d6d5e..4a3fe6f4 100644 --- a/languages/zh.js +++ b/languages/zh.js @@ -54,7 +54,8 @@ follow_attack_fixed: tp`追加${'damage'}的${'attr'}伤害`, auto_heal_buff: tp`行动结束后${'icon'}回复${'value'}的${'stats'}`, auto_heal: tp`${'icon'}消除宝珠的回合,回复${'belong_to'}${'value'}的${'stats'}`, - ctw: tp`${'icon'}${'value'}内时间停止,可以任意移动宝珠`, + ctw: tp`${'icon'}${'time'}内时间停止,可以任意移动宝珠${'addition'}`, + ctw_addition: tp`,达成${'cond'}时,${'skill'}`, gravity: tp`${'icon'}造成${'target'}${'value'}的伤害`, resolve: tp`${'icon'}如${'stats'}≧${'min'},受到单一次致命攻击时,将会以1点 HP 生还`, board_change: tp`全画面的宝珠变为${'orbs'}`, diff --git a/script-json_data.js b/script-json_data.js index 696021c5..d62036f6 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -69,7 +69,8 @@ let localTranslating = { follow_attack_fixed: tp`inflicts ${'damage'} ${'attr'} damage`, auto_heal_buff: tp`${'icon'}Heal ${'value'} ${'stats'} every turn`, auto_heal: tp`${'icon'}Heal ${'stats'} by ${'belong_to'} ${'value'} after matching orbs`, - ctw: tp`${'icon'}Move orbs freely for ${'value'}`, + ctw: tp`${'icon'}Move orbs freely for ${'time'}${'addition'}`, + ctw_addition: tp`, ${'cond'} is achieved, ${'skill'}`, gravity: tp`${'icon'}Reduce ${'target'} ${'value'}`, resolve: tp`${'icon'}Survive a single hit when ${'stats'}≧${'min'}`, board_change: tp`Change all orbs to ${'orbs'}`, @@ -2051,18 +2052,54 @@ const specialSearchFunctions = (function() { }, {name:"Increase Damage Cap",otLangName:{chs:"增加伤害上限 buff",cht:"增加傷害上限 buff"}, function:cards=>{ - const searchTypeArray = [241]; + function getIncreaseDamageCap(skill) + { + let cap = 0; + switch (skill.type) { + case 241: + cap = skill.params[1]; + break; + case 246: + cap = skill.params[2]; + break; + case 247: + cap = skill.params[3]; + break; + } + return cap; + } + const searchTypeArray = [241, 246, 247]; return cards.filter(card=>{ const skill = getCardActiveSkill(card, searchTypeArray); return skill; - }).sort((a,b)=>sortByParams(a, b, searchTypeArray, 1)); + }).sort((a,b)=>{ + const a_ss = getCardActiveSkill(a, searchTypeArray), b_ss = getCardActiveSkill(b, searchTypeArray); + let a_pC = getIncreaseDamageCap(a_ss), b_pC = getIncreaseDamageCap(b_ss); + return a_pC - b_pC; + }); }, addition:card=>{ - const searchTypeArray = [241]; + const searchTypeArray = [241, 246, 247]; const skill = getCardActiveSkill(card, searchTypeArray); if (!skill) return; const sk = skill.params; - return `${(sk[1]*1e8).bigNumberToString()}×${sk[0]}T`; + let cap; + switch (skill.type) { + case 241: + cap = sk[1]; + break; + case 246: + cap = sk[2]; + break; + case 247: + cap = sk[3]; + break; + } + if (skill.type == 241) { + return `${(cap*1e8).bigNumberToString()}×${sk[0]}T`; + } else { + return `${(cap*1e8).bigNumberToString()} in ${sk[0]}S`; + } } }, {name:"Member ATK rate change",otLangName:{chs:"队员攻击力 buff",cht:"隊員攻擊力 buff"}, @@ -3054,14 +3091,14 @@ const specialSearchFunctions = (function() { }, {name:"Time pause(sort by time)",otLangName:{chs:"时间暂停(按停止时间排序)",cht:"時間暫停(按停止時間排序)"}, function:cards=>{ - const searchTypeArray = [5]; + const searchTypeArray = [5, 246, 247]; return cards.filter(card=>{ const skill = getCardActiveSkill(card, searchTypeArray); return skill; }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); }, addition:card=>{ - const searchTypeArray = [5]; + const searchTypeArray = [5, 246, 247]; const skill = getCardActiveSkill(card, searchTypeArray); const value = skill.params[0]; return `时停${value}s`; diff --git a/script-skill-parser.js b/script-skill-parser.js index d88ed880..002936af 100644 --- a/script-skill-parser.js +++ b/script-skill-parser.js @@ -862,6 +862,12 @@ const c = { if (attrs === void 0) { attrs = Attributes.all(); } return { exact: { type: type, value: value, attrs: attrs, multiple: multiple} }; }, + combos: function (min) { + return { combos: { min } }; + }, + attrs: function (attrs, min) { + return { attrs: { attrs, min} }; + }, compo: function (type, ids) { return { compo: { type: type, ids: ids } }; }, @@ -1029,7 +1035,9 @@ function fixedTime(value) { return { kind: SkillKinds.FixedTime, value: v.consta function addCombo(value) { return { kind: SkillKinds.AddCombo, value: value }; } function defBreak(value) { return { kind: SkillKinds.DefenseBreak, value: value }; } function poison(value) { return { kind: SkillKinds.Poison, value: value }; } -function CTW(value) { return { kind: SkillKinds.CTW, value: value }; } +function CTW(time, cond, skill) { + return { kind: SkillKinds.CTW, time, cond, skill }; +} function followAttack(value) { return { kind: SkillKinds.FollowAttack, value: value }; } function followAttackFixed(value) { return { kind: SkillKinds.FollowAttackFixed, value: v.constant(value) }; } function autoHeal(value) { return { kind: SkillKinds.AutoHeal, value: value }; } @@ -1601,11 +1609,11 @@ const skillObjectParsers = { boardJammingStates('immobility', 'fixed', { positions: {colums: flags(colum), rows: flags(row)} }) ); }, - [241](turns, cap, target = 1) { //改变伤害上限主动技 - const targetTypes = ["self","leader-self","leader-helper","sub-members"]; - const typeArr = flags(target).map(n => targetTypes[n]); + [241](turns, cap) { //改变伤害上限主动技 + // const targetTypes = ["self","leader-self","leader-helper","sub-members"]; + // const typeArr = flags(target).map(n => targetTypes[n]); return activeTurns(turns, - increaseDamageCap(cap * 1e8, typeArr) + increaseDamageCap(cap * 1e8, ["self"]) ); }, [244](turns, type) { //改变板面大小主动技 @@ -1636,6 +1644,12 @@ const skillObjectParsers = { [245](rarity, _2, _3, hp, atk, rcv) { //全员满足某种情况,现在是全部星级不一样 return powerUp(flags(_2), flags(_3), p.mul({ hp: hp || 100, atk: atk || 100, rcv: rcv || 100 }), c.compo('team-same-rarity', rarity)); }, + [246](time, combo, cap) { //限定时间内转出多少C提高伤害上限 + return CTW(v.constant(time), c.combos(combo) , increaseDamageCap(cap * 1e8, ["self"])); + }, + [247](time, attr, min, cap) { //限定时间内转出多少色提高伤害上限 + return CTW(v.constant(time), c.attrs(flags(attr), min) , increaseDamageCap(cap * 1e8, ["self"])); + }, [1000](type, pos, ...ids) { const posType = (type=>{ switch (type) { @@ -1994,10 +2008,18 @@ function renderSkill(skill, option = {}) break; } case SkillKinds.CTW: { //时间暂停 + let {time, cond, skill: subSkill} = skill; let dict = { icon: createIcon(skill.kind), - value: renderValue(skill.value, { unit: tsp.unit.seconds }), + time: renderValue(time, { unit: tsp.unit.seconds }), }; + if (cond) { + let dict2 = { + cond: renderCondition(cond), + skill: renderSkill(subSkill) + } + dict.addition = tsp.skill.ctw_addition(dict2); + } frg.ap(tsp.skill.ctw(dict)); break; } @@ -2761,6 +2783,17 @@ function renderCondition(cond) { value: renderValue(v.constant(cond.remainOrbs.count), {unit: tsp.unit.orbs}), }; frg.ap(tsp.cond.remain_orbs(dict)); + } else if (cond.combos) { + const { min } = cond.combos; + let dict = { min }; + frg.ap(tsp.power.scale_combos(dict)); + } else if (cond.attrs) { + const { attrs, min} = cond.attrs; + let dict = { + min, + orbs: renderOrbs(attrs, {affix: true}) + }; + frg.ap(tsp.power.scale_attributes(dict)); } else if (cond.exact) { const { type, attrs , value, multiple } = cond.exact; if (type === 'combo') { diff --git a/service-worker.js b/service-worker.js index 74f8722a..a79746ee 100644 --- a/service-worker.js +++ b/service-worker.js @@ -8051,7 +8051,7 @@ const cachesMap = new Map([ ], [ "multi.html", - "1ef781f0286837ddf18d06784992af68" + "7a8c2f2cdd08036c0b18d0fd82ca5213" ], [ "script-custom_elements.js", @@ -8063,7 +8063,7 @@ const cachesMap = new Map([ ], [ "script-skill-parser.js", - "3c6789e94ed2b39052d209c363eabc3a" + "640054aa1e74d653993af4c9a4de5b00" ], [ "script-universal_function.js", @@ -8071,11 +8071,11 @@ const cachesMap = new Map([ ], [ "script.js", - "29b443c6701b1f475c0e37141cc40725" + "e7baa9224af3134c62a8b62e19d12197" ], [ "solo.html", - "e8feb027ec5ac6d7e627e5ad10281030" + "9a82c31d52533ebc37f1a04e5753fb63" ], [ "style-monsterimages.css", @@ -8083,7 +8083,7 @@ const cachesMap = new Map([ ], [ "style.css", - "8c8575c31b4b6282037986a3b6935b89" + "ea0c9d5bb0aefd3032eb7de8500d4f14" ], [ "temp.js", @@ -8091,7 +8091,7 @@ const cachesMap = new Map([ ], [ "triple.html", - "1e5b3a2ff515fb7043537ac417390afb" + "a7858b668418ca1c2f37f75c85fd0dac" ], [ "languages/en.css", diff --git a/style.css b/style.css index 96877b69..fe4f7f29 100644 --- a/style.css +++ b/style.css @@ -2064,15 +2064,18 @@ icon.inflicts::after { content: attr(data-search-result-count); } -.guide-mod .search-mon-list{ - max-height: 30vh; - overflow: auto; -} +/*图鉴模式使用粘性定位*/ .guide-mod .sticky-box { position: sticky; top: 0; z-index: 1; } +/*图鉴模式默认高度为30%设备高度,可修改大小*/ +.guide-mod .search-mon-list{ + overflow: auto; + height: 30vh; + resize: vertical; +} .setting-box .row-mon-id .real-time-change-card-label { @@ -3826,12 +3829,6 @@ table .orb-icon { margin-right: 5px; } -.dialog-dungeon-enchance .collab-list::after { - content: "(Will be deprecated)" -} -:lang(zh) .dialog-dungeon-enchance .collab-list::after { - content: "(即将弃用)" -} .icon-skill, .icon-skill::after,