| @@ -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'}`, | |||
| @@ -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`; | |||
| @@ -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') { | |||
| @@ -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", | |||
| @@ -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, | |||