加入破白盾的技能解析
This commit is contained in:
parent
bc3dc14fdc
commit
39fd27a898
Binary file not shown.
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 66 KiB |
Binary file not shown.
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 188 KiB |
|
@ -224,6 +224,7 @@ const _localTranslating = {
|
||||||
maxhp: tp`${'icon'}最大HP`,
|
maxhp: tp`${'icon'}最大HP`,
|
||||||
hp: tp`HP`,
|
hp: tp`HP`,
|
||||||
chp: tp`当前HP`,
|
chp: tp`当前HP`,
|
||||||
|
shield: tp`护盾`,
|
||||||
atk: tp`攻击力`,
|
atk: tp`攻击力`,
|
||||||
rcv: tp`回复力`,
|
rcv: tp`回复力`,
|
||||||
teamhp: tp`队伍总HP`,
|
teamhp: tp`队伍总HP`,
|
||||||
|
|
|
@ -224,6 +224,7 @@ const _localTranslating = {
|
||||||
maxhp: tp`最大HP`,
|
maxhp: tp`最大HP`,
|
||||||
hp: tp`HP`,
|
hp: tp`HP`,
|
||||||
chp: tp`當前HP`,
|
chp: tp`當前HP`,
|
||||||
|
shield: tp`護盾`,
|
||||||
atk: tp`攻擊力`,
|
atk: tp`攻擊力`,
|
||||||
rcv: tp`回復力`,
|
rcv: tp`回復力`,
|
||||||
teamhp: tp`隊伍總HP`,
|
teamhp: tp`隊伍總HP`,
|
||||||
|
|
|
@ -238,6 +238,7 @@ let localTranslating = {
|
||||||
maxhp: tp`${'icon'}Max HP`,
|
maxhp: tp`${'icon'}Max HP`,
|
||||||
hp: tp`HP`,
|
hp: tp`HP`,
|
||||||
chp: tp`current HP`,
|
chp: tp`current HP`,
|
||||||
|
shield: tp`shield`,
|
||||||
atk: tp`ATK`,
|
atk: tp`ATK`,
|
||||||
rcv: tp`RCV`,
|
rcv: tp`RCV`,
|
||||||
teamhp: tp`Team HP`,
|
teamhp: tp`Team HP`,
|
||||||
|
@ -2320,7 +2321,10 @@ const specialSearchFunctions = (function() {
|
||||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||||
if (!skill) return;
|
if (!skill) return;
|
||||||
const sk = skill.params;
|
const sk = skill.params;
|
||||||
return document.createTextNode(`威吓×${sk[0]}T`);
|
const fragment = document.createDocumentFragment();
|
||||||
|
fragment.appendChild(createSkillIcon('delay'));
|
||||||
|
fragment.append(`×${sk[0]}T`);
|
||||||
|
return fragment;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{name:"Reduces enemies' DEF(sort by rate)",otLangName:{chs:"破防(按防御减少比例排序)",cht:"破防(按防禦減少比例排序)"},
|
{name:"Reduces enemies' DEF(sort by rate)",otLangName:{chs:"破防(按防御减少比例排序)",cht:"破防(按防禦減少比例排序)"},
|
||||||
|
@ -2336,7 +2340,10 @@ const specialSearchFunctions = (function() {
|
||||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||||
if (!skill) return;
|
if (!skill) return;
|
||||||
const sk = skill.params;
|
const sk = skill.params;
|
||||||
return `破防${sk[1]}%×${sk[0]}T`;
|
const fragment = document.createDocumentFragment();
|
||||||
|
fragment.appendChild(createSkillIcon('def-break'));
|
||||||
|
fragment.append(`${sk[1]}%×${sk[0]}T`);
|
||||||
|
return fragment;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{name:"Poisons enemies(sort by rate)",otLangName:{chs:"中毒(按毒伤比率排序)",cht:"中毒(按毒傷比率排序)"},
|
{name:"Poisons enemies(sort by rate)",otLangName:{chs:"中毒(按毒伤比率排序)",cht:"中毒(按毒傷比率排序)"},
|
||||||
|
@ -2352,7 +2359,10 @@ const specialSearchFunctions = (function() {
|
||||||
const skill = getCardActiveSkill(card, searchTypeArray);
|
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||||
if (!skill) return;
|
if (!skill) return;
|
||||||
const sk = skill.params;
|
const sk = skill.params;
|
||||||
return `攻击力×${sk[0]/100}倍`;
|
const fragment = document.createDocumentFragment();
|
||||||
|
fragment.appendChild(createSkillIcon('poison'));
|
||||||
|
fragment.append(`ATK×${sk[0]/100}`);
|
||||||
|
return fragment;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{name:"Change enemies's Attr(sort by attr)",otLangName:{chs:"改变敌人属性(按属性排序)",cht:"改變敵人屬性(按屬性排序)"},
|
{name:"Change enemies's Attr(sort by attr)",otLangName:{chs:"改变敌人属性(按属性排序)",cht:"改變敵人屬性(按屬性排序)"},
|
||||||
|
@ -2389,8 +2399,9 @@ const specialSearchFunctions = (function() {
|
||||||
const sk = skill.params;
|
const sk = skill.params;
|
||||||
|
|
||||||
const fragment = document.createDocumentFragment();
|
const fragment = document.createDocumentFragment();
|
||||||
fragment.appendChild(document.createTextNode(`${sk[1]/100}倍`));
|
fragment.appendChild(createSkillIcon('counter-attack'));
|
||||||
fragment.appendChild(createOrbsList(sk[2]));
|
fragment.appendChild(createOrbsList(sk[2]));
|
||||||
|
fragment.appendChild(document.createTextNode(`×${sk[1]/100}倍`));
|
||||||
fragment.appendChild(document.createTextNode(`×${sk[0]}T`));
|
fragment.appendChild(document.createTextNode(`×${sk[0]}T`));
|
||||||
|
|
||||||
return fragment;
|
return fragment;
|
||||||
|
@ -3243,6 +3254,25 @@ const specialSearchFunctions = (function() {
|
||||||
},
|
},
|
||||||
addition: gravity_Addition
|
addition: gravity_Addition
|
||||||
},
|
},
|
||||||
|
{name:"Breaking Shield",otLangName:{chs:"破白盾",cht:"破白盾"},
|
||||||
|
function:cards=>{
|
||||||
|
const searchTypeArray = [259];
|
||||||
|
return cards.filter(card=>{
|
||||||
|
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||||
|
return skill;
|
||||||
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
||||||
|
},
|
||||||
|
addition:card=>{
|
||||||
|
const searchTypeArray = [259];
|
||||||
|
const skill = getCardActiveSkill(card, searchTypeArray);
|
||||||
|
if (!skill) return;
|
||||||
|
const sk = skill.params;
|
||||||
|
const fragment = document.createDocumentFragment();
|
||||||
|
fragment.appendChild(createSkillIcon('breaking-shield'));
|
||||||
|
fragment.append(`-${sk[0]}%`);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
},
|
||||||
]},
|
]},
|
||||||
{group:true,name:"-----Damage Enemy - Fixed damage-----",otLangName:{chs:"-----对敌直接伤害类-无视防御固伤-----",cht:"-----對敵直接傷害類-無視防禦固傷-----"}, functions: [
|
{group:true,name:"-----Damage Enemy - Fixed damage-----",otLangName:{chs:"-----对敌直接伤害类-无视防御固伤-----",cht:"-----對敵直接傷害類-無視防禦固傷-----"}, functions: [
|
||||||
{name:"Fixed damage - Any(sort by damage)",otLangName:{chs:"无视防御固伤-任意(按总伤害排序)",cht:"無視防禦固傷-任意(按總傷害排序)"},
|
{name:"Fixed damage - Any(sort by damage)",otLangName:{chs:"无视防御固伤-任意(按总伤害排序)",cht:"無視防禦固傷-任意(按總傷害排序)"},
|
||||||
|
|
|
@ -479,6 +479,7 @@ const SkillKinds = {
|
||||||
BoardJammingStates: "board-jamming-states",
|
BoardJammingStates: "board-jamming-states",
|
||||||
RemoveAssist: "remove-assist",
|
RemoveAssist: "remove-assist",
|
||||||
PredictionFalling: "prediction-falling",
|
PredictionFalling: "prediction-falling",
|
||||||
|
BreakingShield: "breaking-shield",
|
||||||
}
|
}
|
||||||
|
|
||||||
function skillParser(skillId)
|
function skillParser(skillId)
|
||||||
|
@ -815,6 +816,9 @@ const v = {
|
||||||
xCHP: function(value) {
|
xCHP: function(value) {
|
||||||
return { kind: SkillValueKind.xCHP, value: (value / 100) ?? 1 };
|
return { kind: SkillValueKind.xCHP, value: (value / 100) ?? 1 };
|
||||||
},
|
},
|
||||||
|
xShield: function(value) {
|
||||||
|
return { kind: SkillValueKind.xShield, value: (value / 100) ?? 1 };
|
||||||
|
},
|
||||||
xATK: function(value) {
|
xATK: function(value) {
|
||||||
return { kind: SkillValueKind.xATK, value: (value / 100) ?? 1 };
|
return { kind: SkillValueKind.xATK, value: (value / 100) ?? 1 };
|
||||||
},
|
},
|
||||||
|
@ -1067,6 +1071,9 @@ function removeAssist() {
|
||||||
function predictionFalling() {
|
function predictionFalling() {
|
||||||
return { kind: SkillKinds.PredictionFalling };
|
return { kind: SkillKinds.PredictionFalling };
|
||||||
}
|
}
|
||||||
|
function breakingShield(value) {
|
||||||
|
return { kind: SkillKinds.BreakingShield, value: value };
|
||||||
|
}
|
||||||
|
|
||||||
const skillObjectParsers = {
|
const skillObjectParsers = {
|
||||||
//parser: (() => []), //这个用来解决代码提示的报错问题,不起实际作用
|
//parser: (() => []), //这个用来解决代码提示的报错问题,不起实际作用
|
||||||
|
@ -1709,6 +1716,7 @@ const skillObjectParsers = {
|
||||||
increaseDamageCap(cap * 1e8, typeArr)
|
increaseDamageCap(cap * 1e8, typeArr)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
[259](percent) { return breakingShield(v.xShield(percent)); },
|
||||||
[1000](type, pos, ...ids) {
|
[1000](type, pos, ...ids) {
|
||||||
const posType = (type=>{
|
const posType = (type=>{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@ -2283,7 +2291,7 @@ function renderSkill(skill, option = {})
|
||||||
frg.ap(tsp.skill.drum());
|
frg.ap(tsp.skill.drum());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SkillKinds.AutoPath: { //小龙的萌新技能
|
case SkillKinds.AutoPath: { //自动路径,小龙的萌新技能
|
||||||
const {matchesNumber} = skill;
|
const {matchesNumber} = skill;
|
||||||
frg.ap(tsp.skill.auto_path({
|
frg.ap(tsp.skill.auto_path({
|
||||||
icon: createIcon(skill.kind),
|
icon: createIcon(skill.kind),
|
||||||
|
@ -2759,6 +2767,15 @@ function renderSkill(skill, option = {})
|
||||||
frg.ap(tsp.skill.prediction_falling(dict));
|
frg.ap(tsp.skill.prediction_falling(dict));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SkillKinds.BreakingShield: { //破白盾
|
||||||
|
let dict = {
|
||||||
|
icon: createIcon(skill.kind),
|
||||||
|
target: tsp.target.enemy(),
|
||||||
|
value: renderValue(skill.value, { percent:true }),
|
||||||
|
};
|
||||||
|
frg.ap(tsp.skill.gravity(dict));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
console.log("未处理的技能类型",skill.kind, skill);
|
console.log("未处理的技能类型",skill.kind, skill);
|
||||||
|
@ -3321,6 +3338,18 @@ function renderValue(_value, option = {}) {
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SkillValueKind.xShield: {
|
||||||
|
dict = {
|
||||||
|
value: option.percent ? (_value.value * 100).keepCounts(od,os) : _value.value.keepCounts(od,os),
|
||||||
|
stats: renderStat('shield'),
|
||||||
|
};
|
||||||
|
frg.ap(
|
||||||
|
option.percent ?
|
||||||
|
tspv.mul_of_percent(dict) :
|
||||||
|
tspv.mul_of_times(dict)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case SkillValueKind.xATK: {
|
case SkillValueKind.xATK: {
|
||||||
dict = {
|
dict = {
|
||||||
value: option.percent ? (_value.value * 100).keepCounts(od,os) : _value.value.keepCounts(od,os),
|
value: option.percent ? (_value.value * 100).keepCounts(od,os) : _value.value.keepCounts(od,os),
|
||||||
|
|
|
@ -27591,11 +27591,11 @@ const cachesMap = new Map([
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"script-json_data.js",
|
"script-json_data.js",
|
||||||
"c561981bc04e8cb4d34854e82f693225"
|
"a35ace305c9c34d939adff8af66327ed"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"script-skill-parser.js",
|
"script-skill-parser.js",
|
||||||
"7fd84302ec5dc1d1a7b68a8f4bbec9d5"
|
"5d5e6d38d82035de49807f72b2d8b0c3"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"script-universal_function.js",
|
"script-universal_function.js",
|
||||||
|
@ -27615,7 +27615,7 @@ const cachesMap = new Map([
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"style.css",
|
"style.css",
|
||||||
"422f4ee07beebce7698f9ea55978721a"
|
"83e798ecd23802bb1d6b755dca6d8392"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"temp.js",
|
"temp.js",
|
||||||
|
@ -27659,7 +27659,7 @@ const cachesMap = new Map([
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"languages/zh-hans.js",
|
"languages/zh-hans.js",
|
||||||
"1cb9427d980613750be284b683b6c965"
|
"e8f4e76f67a4cbb4a72517e6f17434ee"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"languages/zh-hant.css",
|
"languages/zh-hant.css",
|
||||||
|
@ -27667,7 +27667,7 @@ const cachesMap = new Map([
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"languages/zh-hant.js",
|
"languages/zh-hant.js",
|
||||||
"2d62a0b2c437f20580881351ed0f2faf"
|
"bede32cfeaa26e46a4cd26d57c319378"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"images/attrs.png",
|
"images/attrs.png",
|
||||||
|
@ -27803,7 +27803,7 @@ const cachesMap = new Map([
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"images/icon-skills.png",
|
"images/icon-skills.png",
|
||||||
"0554abb63a36baf0348ba844e7aa10f4"
|
"924dcf954c1f7def6addc3f62e17e028"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"images/icon-switch-leader.png",
|
"images/icon-switch-leader.png",
|
||||||
|
|
|
@ -4587,6 +4587,10 @@ body.external-link-support #external-support{
|
||||||
{
|
{
|
||||||
background-position-y:calc(-36px * 42);
|
background-position-y:calc(-36px * 42);
|
||||||
}
|
}
|
||||||
|
.icon-skill[data-icon-type="breaking-shield"]
|
||||||
|
{
|
||||||
|
background-position-y:calc(-36px * 43);
|
||||||
|
}
|
||||||
|
|
||||||
:where(:lang(en), :lang(ko)) .icon-skill:where(
|
:where(:lang(en), :lang(ko)) .icon-skill:where(
|
||||||
[data-icon-type="mass-attack"],
|
[data-icon-type="mass-attack"],
|
||||||
|
|
Loading…
Reference in New Issue