|
|
|
@@ -104,6 +104,7 @@ let localTranslating = { |
|
|
|
power_up: tp`${'condition'}${'targets'}${'value'}${'reduceDamage'}${'addCombo'}${'followAttack'}`,
|
|
|
|
power_up_targets: tp`[${'attrs_types'}]'s `, //attrs, types, attrs_types
|
|
|
|
henshin: tp`Transforms into ${'card'}`,
|
|
|
|
random_henshin: tp`Random transforms into ${'cards'}`,
|
|
|
|
void_poison: tp`Voids ${'poison'} damage`,
|
|
|
|
skill_proviso: tp`The follow-up effect can only be activates ${'condition'}`,
|
|
|
|
obstruct_opponent: tp`Apply obstruct skill effect to ${'target'}: ${'skills'}`,
|
|
|
|
@@ -137,8 +138,9 @@ let localTranslating = { |
|
|
|
multi_player: tp`When in Multiplayer Mode `,
|
|
|
|
remain_orbs: tp`When ≤ ${'value'} Orbs on the board `,
|
|
|
|
exact_combo: tp`When exactly ${'value'} combos `,
|
|
|
|
exact_match_length: tp`When matching exactly ${'value'}${'orbs'} `,
|
|
|
|
exact_match_length: tp`When matching exactly of ${'value'}${'orbs'} `,
|
|
|
|
exact_match_enhanced: tp` orbs including enhanced`,
|
|
|
|
exact_match_length_multiple: tp`When matching each exactly of ${'value'}${'orbs'} `,
|
|
|
|
|
|
|
|
compo_type_card: tp`When ${'ids'} are all on team, `,
|
|
|
|
compo_type_series: tp`When all subs from ${'ids'} collab (Needs at least 1 sub), `,
|
|
|
|
@@ -177,7 +179,9 @@ let localTranslating = { |
|
|
|
team: tp`team`,
|
|
|
|
team_last: tp`the lastest member`,
|
|
|
|
team_leader: tp`leader`,
|
|
|
|
team_sub: tp`sub-monsters`,
|
|
|
|
sub_members: tp`sub-members`,
|
|
|
|
leader_self: tp`left leader`,
|
|
|
|
leader_helper: tp`right leader`,
|
|
|
|
enemy: tp`Enemy`,
|
|
|
|
enemy_all: tp`all enemys`,
|
|
|
|
enemy_one: tp`1 enemy`,
|
|
|
|
@@ -342,11 +346,11 @@ let localTranslating = { |
|
|
|
[75]: tp`${'icon'}Enhanced Wood Combos`,
|
|
|
|
[76]: tp`${'icon'}Enhanced Light Combos`,
|
|
|
|
[77]: tp`${'icon'}Enhanced Dark Combos`,
|
|
|
|
[78]: tp`${'icon'}CrossBoost`,
|
|
|
|
[79]: tp`${'icon'}Enhanced 3 colors`,
|
|
|
|
[80]: tp`${'icon'}Enhanced 4 colors`,
|
|
|
|
[81]: tp`${'icon'}Enhanced 5 colors`,
|
|
|
|
[82]: tp`${'icon'}Super Connecting Eraser Bonus`,
|
|
|
|
[78]: tp`${'icon'}Cross Attack`,
|
|
|
|
[79]: tp`${'icon'}3 Att. Enhanced Attack`,
|
|
|
|
[80]: tp`${'icon'}4 Att. Enhanced Attack`,
|
|
|
|
[81]: tp`${'icon'}5 Att. Enhanced Attack`,
|
|
|
|
[82]: tp`${'icon'}Super Enhanced Matching`,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
};
|
|
|
|
@@ -701,6 +705,10 @@ const specialSearchFunctions = (function() { |
|
|
|
case 210: //十字触发
|
|
|
|
scale = sk[1]/100;
|
|
|
|
break;
|
|
|
|
case 235: { //可多次触发
|
|
|
|
reduce.scale = (sk[4] || 0) / 100;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
case 138: //调用其他队长技
|
|
|
|
scale = sk.reduce((pmul,skid)=> 1 - (1-pmul) * (1-getReduceScale(Skills[skid], allAttr, noHPneed)),0);
|
|
|
|
@@ -1194,7 +1202,15 @@ const specialSearchFunctions = (function() { |
|
|
|
});
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
return getSkillFixedDamage(card).bigNumberToString() + "固伤";
|
|
|
|
const value = getSkillFixedDamage(card);
|
|
|
|
let nodeArr = [`${value.bigNumberToString()}固伤`];
|
|
|
|
let skill;
|
|
|
|
if (skill = getCardLeaderSkill(card, [235])) {
|
|
|
|
nodeArr.push("/");
|
|
|
|
nodeArr.push(createOrbsList(flags(skill.params[0])));
|
|
|
|
nodeArr.push(`×${skill.params[2]}`);
|
|
|
|
}
|
|
|
|
return nodeArr.nodeJoin();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Adds combo(sort by combo)",otLangName:{chs:"队长技+C(按+C数排序)",cht:"隊長技+C(按+C數排序)"},
|
|
|
|
@@ -1207,103 +1223,110 @@ const specialSearchFunctions = (function() { |
|
|
|
});
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const value = getSkillAddCombo(card);
|
|
|
|
const searchTypeArray = [210];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return `+${value.bigNumberToString()}C${skill?`/十字`:""}`;
|
|
|
|
const value = getSkillAddCombo(card);
|
|
|
|
let nodeArr = [`+${value.bigNumberToString()}C`];
|
|
|
|
let skill;
|
|
|
|
if (skill = getCardLeaderSkill(card, [210])) {
|
|
|
|
nodeArr.push("/十字");
|
|
|
|
} else if (skill = getCardLeaderSkill(card, [235])) {
|
|
|
|
nodeArr.push("/");
|
|
|
|
nodeArr.push(createOrbsList(flags(skill.params[0])));
|
|
|
|
nodeArr.push(`×${skill.params[2]}`);
|
|
|
|
}
|
|
|
|
return nodeArr.nodeJoin();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"[7×6 board]",otLangName:{chs:"【7×6 版面】",cht:"【7×6 版面】"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchTypeArray = [162,186];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
const searchTypeArray = [162,186];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
})
|
|
|
|
},
|
|
|
|
{name:"[No skyfall]",otLangName:{chs:"【无天降版面】",cht:"【無天降版面】"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchTypeArray = [163,177];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
const searchTypeArray = [163,177];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
})
|
|
|
|
},
|
|
|
|
{name:"Move time changes(sort by time)",otLangName:{chs:"队长技加/减秒(按秒数排序)",cht:"隊長技加/減秒(按秒數排序)"},
|
|
|
|
function:cards=>{
|
|
|
|
const searchTypeArray = [15,185];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
const searchTypeArray = [15,185];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [15,185];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `${value > 0 ? "+" : ""}${value/100}s`;
|
|
|
|
const searchTypeArray = [15,185];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `${value > 0 ? "+" : ""}${value/100}s`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Fixed move time(sort by time)",otLangName:{chs:"固定操作时间(按时间排序)",cht:"固定操作時間(按時間排序)"},
|
|
|
|
function:cards=>{
|
|
|
|
const searchTypeArray = [178];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
const searchTypeArray = [178];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [178];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `固定${value}s`;
|
|
|
|
const searchTypeArray = [178];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `固定${value}s`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Bonus attack when matching Orbs(sort by rate)",otLangName:{chs:"消除宝珠时计算防御的追打(按追打比率排序)",cht:"消除寶珠時計算防禦的追打(按追打比率排序)"},
|
|
|
|
function:cards=>{
|
|
|
|
const searchTypeArray = [12];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
const searchTypeArray = [12];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [12];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `攻击×${(value/100).bigNumberToString()}倍`;
|
|
|
|
const searchTypeArray = [12];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `攻击×${(value/100).bigNumberToString()}倍`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Recovers HP when matching Orbs(sort by rate)",otLangName:{chs:"消除宝珠时回血(按回复比率排序)",cht:"消除寶珠時回血(按回複比率排序)"},
|
|
|
|
function:cards=>{
|
|
|
|
const searchTypeArray = [13];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
const searchTypeArray = [13];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [13];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `回复×${(value/100).bigNumberToString()}倍`;
|
|
|
|
const searchTypeArray = [13];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `回复×${(value/100).bigNumberToString()}倍`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Counterattack(sort by rate)",otLangName:{chs:"队长技受伤反击",cht:"隊長技受傷反擊"},
|
|
|
|
function:cards=>{
|
|
|
|
const searchTypeArray = [41];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray,1));
|
|
|
|
const searchTypeArray = [41];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray,1));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [41];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const sk = skill.params;
|
|
|
|
const fragment = document.createDocumentFragment();
|
|
|
|
fragment.appendChild(createOrbsList(sk[2] || 0));
|
|
|
|
fragment.appendChild(document.createTextNode(`×${(sk[1]/100).bigNumberToString()}倍`));
|
|
|
|
if (sk[0] < 100)fragment.appendChild(document.createTextNode(`(${sk[0]}%)`));
|
|
|
|
return fragment;
|
|
|
|
const searchTypeArray = [41];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const sk = skill.params;
|
|
|
|
const fragment = document.createDocumentFragment();
|
|
|
|
fragment.appendChild(createOrbsList(sk[2] || 0));
|
|
|
|
fragment.appendChild(document.createTextNode(`×${(sk[1]/100).bigNumberToString()}倍`));
|
|
|
|
if (sk[0] < 100) fragment.appendChild(document.createTextNode(`(${sk[0]}%)`));
|
|
|
|
return fragment;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Voids Poison dmg",otLangName:{chs:"毒无效",cht:"毒無效"},
|
|
|
|
@@ -1366,75 +1389,75 @@ const specialSearchFunctions = (function() { |
|
|
|
},
|
|
|
|
{name:"Unable to less match(sort by orbs need)",otLangName:{chs:"要求长串消除(按珠数排序)",cht:"要求長串消除(按珠數排序)"},
|
|
|
|
function:cards=>{
|
|
|
|
const searchTypeArray = [158];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
const searchTypeArray = [158];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [158];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `≥${value}珠`;
|
|
|
|
const searchTypeArray = [158];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `≥${value}珠`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Resolve",otLangName:{chs:"根性",cht:"根性"},
|
|
|
|
function:cards=>{
|
|
|
|
const searchTypeArray = [14];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
const searchTypeArray = [14];
|
|
|
|
return cards.filter(card=>{
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [14];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
const searchTypeArray = [14];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const value = skill.params[0];
|
|
|
|
return `HP≥${value}%`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Designate member ID",otLangName:{chs:"指定队伍队员编号",cht:"指定隊伍隊員編號"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchTypeArray = [125];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
const searchTypeArray = [125];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
})
|
|
|
|
},
|
|
|
|
{name:"Designate collab ID",otLangName:{chs:"指定队伍队员合作编号",cht:"指定隊伍隊員合作編號"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchTypeArray = [175];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
const searchTypeArray = [175];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
})
|
|
|
|
},
|
|
|
|
{name:"Designate Evo type",otLangName:{chs:"指定队伍队员进化类型",cht:"指定隊伍隊員進化類型"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchTypeArray = [203];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
const searchTypeArray = [203];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
})
|
|
|
|
},
|
|
|
|
{name:"Floating rate based on the number of attrs/types",otLangName:{chs:"根据属性/类型个数浮动倍率",cht:"根據屬性/類型個數浮動倍率"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchTypeArray = [229];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
const searchTypeArray = [229];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
return skill;
|
|
|
|
})
|
|
|
|
},
|
|
|
|
{name:"Increase item drop rate(sort by 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));
|
|
|
|
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);
|
|
|
|
const sk = skill.params;
|
|
|
|
return `掉率x${sk[0]/100}`;
|
|
|
|
const searchTypeArray = [53];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const sk = skill.params;
|
|
|
|
return `掉率x${sk[0]/100}`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Increase coin rate(sort by rate)",otLangName:{chs:"增加金币掉落倍数(按增加倍率排序)",cht:"增加金幣掉落倍數(按增加倍率排序)"},
|
|
|
|
@@ -1446,10 +1469,10 @@ const specialSearchFunctions = (function() { |
|
|
|
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
|
|
|
|
},
|
|
|
|
addition:card=>{
|
|
|
|
const searchTypeArray = [54];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const sk = skill.params;
|
|
|
|
return `金币x${sk[0]/100}`;
|
|
|
|
const searchTypeArray = [54];
|
|
|
|
const skill = getCardLeaderSkill(card, searchTypeArray);
|
|
|
|
const sk = skill.params;
|
|
|
|
return `金币x${sk[0]/100}`;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Increase Exp rate(sort by rate)",otLangName:{chs:"增加经验获取倍数(按增加倍率排序)",cht:"增加經驗獲取倍數(按增加倍率排序)"},
|
|
|
|
@@ -1956,21 +1979,9 @@ const specialSearchFunctions = (function() { |
|
|
|
const skill = getCardActiveSkill(card, searchTypeArray);
|
|
|
|
const sk = skill.params;
|
|
|
|
let str = '';
|
|
|
|
switch (sk[1]) {
|
|
|
|
case 1: {
|
|
|
|
str+="自身";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 2: {
|
|
|
|
str+="队长";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 8: {
|
|
|
|
str+="队员";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
str+=`${sk[2] / 100}倍×${sk[0]}T`;
|
|
|
|
const typeName = ['自身','左队长','右队长','队员'];
|
|
|
|
str += flags(sk[1]).map(n=>typeName[n]).join(',');
|
|
|
|
str +=`${sk[2] / 100}倍×${sk[0]}T`;
|
|
|
|
return str;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
@@ -1994,6 +2005,7 @@ const specialSearchFunctions = (function() { |
|
|
|
let str = "👆";
|
|
|
|
if (sk[1]) str += `${sk[1]>0?`+`:``}${sk[1]/10}S`;
|
|
|
|
if (sk[2]) str += `x${sk[2]/100}`;
|
|
|
|
str += `x${sk[0]}T`;
|
|
|
|
return str;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
@@ -2275,7 +2287,7 @@ const specialSearchFunctions = (function() { |
|
|
|
const searchTypeArray = [218];
|
|
|
|
const skill = getCardActiveSkill(card, searchTypeArray);
|
|
|
|
const sk = skill.params;
|
|
|
|
return document.createTextNode(`坐下${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}`);
|
|
|
|
return document.createTextNode(`坐下${sk[0]}${sk[1] && sk[0]!=sk[1]?`~${sk[1]}`:""}`);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{name:"Change Leader",otLangName:{chs:"更换队长",cht:"更換隊長"},
|
|
|
|
@@ -3205,13 +3217,15 @@ const specialSearchFunctions = (function() { |
|
|
|
]},
|
|
|
|
{group:true,name:"======Evo type======",otLangName:{chs:"======进化类型======",cht:"======進化類型======"}, functions: [
|
|
|
|
{name:"No Henshin",otLangName:{chs:"非变身",cht:"非變身"},
|
|
|
|
function:cards=>cards.filter(card=>!card.henshinFrom && !card.henshinTo)
|
|
|
|
function:cards=>cards.filter(card=>
|
|
|
|
!Array.isArray(card.henshinFrom) &&
|
|
|
|
!Array.isArray(card.henshinTo))
|
|
|
|
},
|
|
|
|
{name:"Before Henshin",otLangName:{chs:"变身前",cht:"變身前"},
|
|
|
|
function:cards=>cards.filter(card=>card.henshinTo)
|
|
|
|
function:cards=>cards.filter(card=>Array.isArray(card.henshinTo))
|
|
|
|
},
|
|
|
|
{name:"After Henshin",otLangName:{chs:"变身后",cht:"變身後"},
|
|
|
|
function:cards=>cards.filter(card=>card.henshinFrom)
|
|
|
|
function:cards=>cards.filter(card=>Array.isArray(card.henshinFrom))
|
|
|
|
},
|
|
|
|
{name:"Pixel Evo",otLangName:{chs:"像素进化",cht:"像素進化"},
|
|
|
|
function:cards=>cards.filter(card=>card.evoMaterials.includes(3826))
|
|
|
|
@@ -3227,30 +3241,6 @@ const specialSearchFunctions = (function() { |
|
|
|
{name:"Super Ult Evo",otLangName:{chs:"超究极进化",cht:"超究極進化"},
|
|
|
|
function:cards=>cards.filter(card=>card.is8Latent && card.isUltEvo && !card.awakenings.includes(49))
|
|
|
|
},
|
|
|
|
/*{name:"",otLangName:{chs:"变身前",cht:"變身前"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchType = 202;
|
|
|
|
const skill = Skills[card.activeSkillId];
|
|
|
|
if (skill.type == searchType)
|
|
|
|
return true;
|
|
|
|
else if (skill.type == 116 || skill.type == 118){
|
|
|
|
const subskills = skill.params.map(id=>Skills[id]);
|
|
|
|
return subskills.some(subskill=>subskill.type == searchType);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
{name:"",otLangName:{chs:"变身前后队长技保持不变",cht:"變身前後隊長技保持不變"},
|
|
|
|
function:cards=>cards.filter(card=>{
|
|
|
|
const searchType = 202;
|
|
|
|
const skill = Skills[card.activeSkillId];
|
|
|
|
if (skill.type == searchType && card.leaderSkillId == Cards[skill.params[0]].leaderSkillId)
|
|
|
|
return true;
|
|
|
|
else if (skill.type == 116 || skill.type == 118){
|
|
|
|
const subskills = skill.params.map(id=>Skills[id]);
|
|
|
|
return subskills.some(subskill=>subskill.type == searchType && card.leaderSkillId == Cards[subskill.params[0]].leaderSkillId);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},*/
|
|
|
|
{name:"Evo from Weapon",otLangName:{chs:"由武器进化而来",cht:"由武器進化而來"},
|
|
|
|
function:cards=>cards.filter(card=>card.isUltEvo && Cards[card.evoBaseId].awakenings.includes(49))
|
|
|
|
},
|
|
|
|
|