diff --git a/images/icon-skills.png b/images/icon-skills.png index a8673f67..371087c9 100644 Binary files a/images/icon-skills.png and b/images/icon-skills.png differ diff --git a/images/project file/icon-skills.fw.png b/images/project file/icon-skills.fw.png index 72e74b6c..6d9fd3d5 100644 Binary files a/images/project file/icon-skills.fw.png and b/images/project file/icon-skills.fw.png differ diff --git a/languages/zh-hans.js b/languages/zh-hans.js index 18b3b655..a259cff9 100644 --- a/languages/zh-hans.js +++ b/languages/zh-hans.js @@ -119,8 +119,10 @@ const _localTranslating = { set_orb_state_nail: tp`${'orbs'}增加${'value'}${'icon'}钉子状态`, rate_multiply: tp`作为队长进入地下城时,${'rate'}变为${'value'}`, rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`, - rate_multiply_coin: tp`${'icon'}金币掉落率`, + rate_multiply_coin: tp`${'icon'}金币倍率`, rate_multiply_exp: tp`${'icon'}等级经验倍率`, + rate_multiply_plus_point: tp`${'icon'}加蛋值倍率`, + rate_multiply_part_break: tp`${'icon'}部位破坏素材掉率`, reduce_damage: tp`${'condition'}受到的${'attrs'}伤害${'chance'}${'icon'}减少${'value'}`, power_up: tp`${'condition'}${'targets'}${'target'}${'each_time'}${'value'}${'reduceDamage'}${'additional'}`, power_up_targets: tp`${'attrs_types'}的 `, diff --git a/languages/zh-hant.js b/languages/zh-hant.js index 6beec1c1..dc6f03f6 100644 --- a/languages/zh-hant.js +++ b/languages/zh-hant.js @@ -119,8 +119,10 @@ const _localTranslating = { set_orb_state_nail: tp`${'orbs'}增加${'value'}${'icon'}釘子狀態`, rate_multiply: tp`作為隊長進入地下城時,${'rate'}變為${'value'}`, rate_multiply_drop: tp`${'icon'}怪物蛋掉落率`, - rate_multiply_coin: tp`${'icon'}金幣掉落率`, + rate_multiply_coin: tp`${'icon'}金幣倍率`, rate_multiply_exp: tp`${'icon'}等級經驗倍率`, + rate_multiply_plus_point: tp`${'icon'}加蛋值倍率`, + rate_multiply_part_break: tp`${'icon'}部位破壞素材掉率`, reduce_damage: tp`${'condition'}受到的${'attrs'}傷害${'chance'}${'icon'}減少${'value'}`, power_up: tp`${'condition'}${'targets'}${'target'}${'each_time'}${'value'}${'reduceDamage'}${'additional'}`, power_up_targets: tp`${'attrs_types'}的 `, diff --git a/script-json_data.js b/script-json_data.js index 6e091e34..91898fc8 100644 --- a/script-json_data.js +++ b/script-json_data.js @@ -136,6 +136,8 @@ let localTranslating = { rate_multiply_drop: tp`${'icon'}Drop rate`, rate_multiply_coin: tp`${'icon'}Coins`, rate_multiply_exp: tp`${'icon'}Rank EXP`, + rate_multiply_plus_point: tp`${'icon'}Plus Point`, + rate_multiply_part_break: tp`${'icon'}Part Break Drop rate`, 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 @@ -3990,14 +3992,20 @@ const specialSearchFunctions = (function() { addition:card=>{ const value = getSkillFixedDamage(card); if (value <= 0 ) return; - let nodeArr = [`${value.bigNumberToString()}固伤`]; - let skill; - if (skill = getCardLeaderSkill(card, [235])) { - nodeArr.push("/"); - nodeArr.push(createOrbsList(Bin.unflags(skill.params[0]))); - nodeArr.push(`×${skill.params[2]}`); + const fragment = document.createDocumentFragment(); + + const icon = document.createElement("icon"); + icon.className = "attr"; + icon.setAttribute("data-attr-icon", "fixed"); + + fragment.append(icon, value.bigNumberToString()); + let skill = getCardLeaderSkill(card, [235]); + if (skill) { + fragment.append("/", + createOrbsList(Bin.unflags(skill.params[0])), + `×${skill.params[2]}`); } - return nodeArr.nodeJoin(); + return fragment; } }, {name:"Adds combo",otLangName:{chs:"队长技+C",cht:"隊長技+C"}, @@ -4012,16 +4020,19 @@ const specialSearchFunctions = (function() { addition:card=>{ const value = getSkillAddCombo(card); if (value <= 0 ) return; - let nodeArr = [`+${value.bigNumberToString()}C`]; + const fragment = document.createDocumentFragment(); + fragment.append(createSkillIcon('add-combo'), value.bigNumberToString()); let skill; if (skill = getCardLeaderSkill(card, [210])) { - nodeArr.push("/十字"); + fragment.append("/十字"); } else if (skill = getCardLeaderSkill(card, [235])) { - nodeArr.push("/"); - nodeArr.push(createOrbsList(Bin.unflags(skill.params[0]))); - nodeArr.push(`×${skill.params[2]}`); + if (skill?.params?.[5]) { + fragment.append("/", + createOrbsList(Bin.unflags(skill.params[0])), + `×${skill.params[2]}`); + } } - return nodeArr.nodeJoin(); + return fragment; } }, {name:"Move time changes",otLangName:{chs:"队长技加/减秒",cht:"隊長技加/減秒"}, @@ -4037,7 +4048,12 @@ const specialSearchFunctions = (function() { const skill = getCardLeaderSkill(card, searchTypeArray); if (!skill) return; const value = skill.params[0]; - return `${value > 0 ? "+" : ""}${value/100}s`; + const fragment = document.createDocumentFragment(); + fragment.append(createSkillIcon("status-time", value < 0 ? "time-decr" : "time-incr"), + value > 0 ? "+" : "-", + Math.abs(value/100), + "s"); + return fragment; } }, {name:"Fixed move time",otLangName:{chs:"固定操作时间",cht:"固定操作時間"}, @@ -4053,7 +4069,11 @@ const specialSearchFunctions = (function() { const skill = getCardLeaderSkill(card, searchTypeArray); if (!skill) return; const value = skill.params[0]; - return `固定${value}s`; + const fragment = document.createDocumentFragment(); + fragment.append(createSkillIcon("fixed-time"), + Math.abs(value), + "s"); + return fragment; } }, {name:"Impart Awakenings",otLangName:{chs:"赋予觉醒",cht:"賦予覺醒"}, @@ -4195,54 +4215,103 @@ const specialSearchFunctions = (function() { }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); } }, - {name:"Increase item drop rate",otLangName:{chs:"增加道具掉落率",cht:"增加道具掉落率"}, - function:cards=>{ - const searchTypeArray = [53]; - return cards.filter(card=>{ + {group:true,name:"Increased drop rewards",otLangName:{chs:"增加掉落奖励",cht:"增加掉落獎勵"}, functions: [ + {name:"Increase Item Drop rate",otLangName:{chs:"增加道具掉落率",cht:"增加道具掉落率"}, + function:cards=>{ + const searchTypeArray = [53]; + return cards.filter(card=>{ + const skill = getCardLeaderSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition:card=>{ + const searchTypeArray = [53]; const skill = getCardLeaderSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + if (!skill) return; + const sk = skill.params; + const fragment = document.createDocumentFragment(); + fragment.appendChild(createSkillIcon('rate-mul-drop')); + fragment.append(`x${sk[0]/100}`); + return fragment; + } }, - addition:card=>{ - const searchTypeArray = [53]; - const skill = getCardLeaderSkill(card, searchTypeArray); - if (!skill) return; - const sk = skill.params; - return `掉率x${sk[0]/100}`; - } - }, - {name:"Increase coin rate",otLangName:{chs:"增加金币掉落倍数",cht:"增加金幣掉落倍數"}, - function:cards=>{ - const searchTypeArray = [54]; - return cards.filter(card=>{ - const skill = getCardLeaderSkill(card, searchTypeArray); - return skill; - }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); - }, - addition:card=>{ + {name:"Increase Coin rate",otLangName:{chs:"增加金币掉落倍数",cht:"增加金幣掉落倍數"}, + function:cards=>{ const searchTypeArray = [54]; - const skill = getCardLeaderSkill(card, searchTypeArray); - if (!skill) return; - const sk = skill.params; - return `金币x${sk[0]/100}`; - } - }, - {name:"Increase Exp rate",otLangName:{chs:"增加经验获取倍数",cht:"增加經驗獲取倍數"}, - function:cards=>{ - const searchTypeArray = [148]; return cards.filter(card=>{ const skill = getCardLeaderSkill(card, searchTypeArray); return skill; }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition:card=>{ + const searchTypeArray = [54]; + const skill = getCardLeaderSkill(card, searchTypeArray); + if (!skill) return; + const sk = skill.params; + const fragment = document.createDocumentFragment(); + fragment.appendChild(createSkillIcon('rate-mul-coin')); + fragment.append(`x${sk[0]/100}`); + return fragment; + } }, - addition:card=>{ - const searchTypeArray = [148]; - const skill = getCardLeaderSkill(card, searchTypeArray); - if (!skill) return; - const sk = skill.params; - return `经验x${sk[0]/100}`; - } - }, + {name:"Increase Exp rate",otLangName:{chs:"增加经验获取倍数",cht:"增加經驗獲取倍數"}, + function:cards=>{ + const searchTypeArray = [148]; + return cards.filter(card=>{ + const skill = getCardLeaderSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition:card=>{ + const searchTypeArray = [148]; + const skill = getCardLeaderSkill(card, searchTypeArray); + if (!skill) return; + const sk = skill.params; + const fragment = document.createDocumentFragment(); + fragment.appendChild(createSkillIcon('rate-mul-exp')); + fragment.append(`x${sk[0]/100}`); + return fragment; + } + }, + {name:"Increase Plus Point rate",otLangName:{chs:"增加加蛋值掉落倍数",cht:"增加加蛋值掉落倍數"}, + function:cards=>{ + const searchTypeArray = [264]; + return cards.filter(card=>{ + const skill = getCardLeaderSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition:card=>{ + const searchTypeArray = [264]; + const skill = getCardLeaderSkill(card, searchTypeArray); + if (!skill) return; + const sk = skill.params; + const fragment = document.createDocumentFragment(); + fragment.appendChild(createSkillIcon('rate-mul-plus_point')); + fragment.append(`x${sk[0]/100}`); + return fragment; + } + }, + {name:"Increase Part Break drop rate",otLangName:{chs:"增加部位破坏素材掉率",cht:"增加部位破壞素材掉率"}, + function:cards=>{ + const searchTypeArray = [265]; + return cards.filter(card=>{ + const skill = getCardLeaderSkill(card, searchTypeArray); + return skill; + }).sort((a,b)=>sortByParams(a,b,searchTypeArray)); + }, + addition:card=>{ + const searchTypeArray = [265]; + const skill = getCardLeaderSkill(card, searchTypeArray); + if (!skill) return; + const sk = skill.params; + const fragment = document.createDocumentFragment(); + fragment.appendChild(createSkillIcon('rate-mul-part_break')); + fragment.append(`x${sk[0]/100}`); + return fragment; + } + }, + ]}, ]}, {group:true,name:"HP Scale",otLangName:{chs:"血倍率",cht:"血倍率"}, functions: [ {name:"HP Scale [3, ∞)",otLangName:{chs:"队长血倍率[2, ∞)",cht:"隊長血倍率[2, ∞)"}, diff --git a/script-skill-parser.js b/script-skill-parser.js index 906d2778..2aa33106 100644 --- a/script-skill-parser.js +++ b/script-skill-parser.js @@ -1736,6 +1736,8 @@ const skillObjectParsers = { increaseDamageCapacity(cap * 1e8, void 0, Bin.unflags(attr), Bin.unflags(type)) ); }, + [264](mul) { return rateMultiply(v.percent(mul), 'plus_point'); }, + [265](mul) { return rateMultiply(v.percent(mul), 'part_break'); }, [1000](type, pos, ...ids) { const posType = (type=>{ switch (type) { diff --git a/service-worker.js b/service-worker.js index 6bee901d..93b826cd 100644 --- a/service-worker.js +++ b/service-worker.js @@ -41355,11 +41355,11 @@ const cachesMap = new Map([ ], [ "script-json_data.js", - "d9d76afeaa0a4ba4ac94e106cf2117e2" + "93003bbb7ee2d688ed4e68b21d39a53f" ], [ "script-skill-parser.js", - "1747fe828fc25e0394f82245eccca5c7" + "7b4700be7e38bbfdddfe90e251103675" ], [ "script-universal_function.js", @@ -41383,7 +41383,7 @@ const cachesMap = new Map([ ], [ "style.css", - "0548eea7ac972f4bac0ffebf384a51e5" + "16b834eb40e460324cdf9c3f2fcfe0b8" ], [ "temp.js", @@ -41427,7 +41427,7 @@ const cachesMap = new Map([ ], [ "languages/zh-hans.js", - "8552840a3934a8eee0d0e001419036d9" + "68e8eca512a164fab743ed6b455d8ab6" ], [ "languages/zh-hant.css", @@ -41435,7 +41435,7 @@ const cachesMap = new Map([ ], [ "languages/zh-hant.js", - "3f4938a03f1d14544bd9da895126ed6c" + "b046584b6338fd1e0f7f93108e0dd16f" ], [ "images/attrs.png", @@ -41587,7 +41587,7 @@ const cachesMap = new Map([ ], [ "images/icon-skills.png", - "9b5c57a64636cbfddffbb4549f5e6035" + "66cc711b4a07f80bb869650ccdb23eec" ], [ "images/icon-switch-leader.png", diff --git a/style.css b/style.css index ff9e9a3c..612ce8e1 100644 --- a/style.css +++ b/style.css @@ -1889,13 +1889,15 @@ label[for="search-string"] { } .awoken-preview .awoken-icon, .custom-addition .awoken-icon, -.custom-addition .type-icon +.custom-addition .type-icon, +.custom-addition .attr { filter: unset; transform: scale(0.75); margin: calc(-32px * (1 - 0.75) / 2); } -.custom-addition .board .orb { +.custom-addition .board .orb + { filter: unset; transform: scale(0.5); margin: calc(-36px * (1 - 0.5) / 2); @@ -5060,4 +5062,13 @@ body.external-link-support #external-support{ } :lang(ko) .icon-skill[data-icon-type="resolve"] { background-position-x: calc(-36px * 2); +} + +.icon-skill[data-icon-type="rate-mul-plus_point"] +{ + background-position-y:calc(-36px * 45); +} +.icon-skill[data-icon-type="rate-mul-part_break"] +{ + background-position-y:calc(-36px * 46); } \ No newline at end of file