Browse Source

调整技能筛选顺序

tags/v22.0
枫谷剑仙 4 years ago
parent
commit
681eeee126
1 changed files with 226 additions and 269 deletions
  1. +226
    -269
      script-json_data.js

+ 226
- 269
script-json_data.js View File

@@ -973,6 +973,19 @@ const specialSearchFunctions = (function() {
fragment.appendChild(createOrbsList(colors.flat()));
return fragment;
}
function numericalATK_Addition(card)
{
const searchTypeArray = [0,1,2,35,37,42,58,59,84,85,86,87,110,115,143,144];
const skill = getCardActiveSkill(card, searchTypeArray);
//const sk = skill.params;
const colors = [getCannonAttr(skill)];
const fragment = document.createDocumentFragment();
fragment.appendChild(document.createTextNode(`射`));
fragment.appendChild(createOrbsList(colors));
return fragment;
}
function healImmediately_Rate(card)
{
const searchTypeArray = [7, //宠物回复力
@@ -1197,21 +1210,7 @@ const specialSearchFunctions = (function() {
const functions = [
{name:"No Filter",otLangName:{chs:"不做筛选",cht:"不做篩選"},function:cards=>cards},
{group:true,name:"======Very commonly used=====",otLangName:{chs:"======非常常用======",cht:"======非常常用======"}, functions: [
{name:"↑Increase skills charge(sort by turns)",otLangName:{chs:"【溜】减少CD(按回合排序)",cht:"【溜】減少CD(按回合排序)"},
function:cards=>{
const searchTypeArray = [146];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
},
addition:card=>{
const searchTypeArray = [146];
const skill = getCardActiveSkill(card, searchTypeArray);
const sk = skill.params;
return document.createTextNode(`${sk[0]}${sk[0]!=sk[1]?`~${sk[1]}`:""}溜`);
}
},
/*
{name:"Voids both absorption(sort by turns)",otLangName:{chs:"双破吸 buff(按破吸回合排序)",cht:"雙破吸 buff(按破吸回合排序)"},
function:cards=>{
const searchTypeArray = [173];
@@ -1272,136 +1271,11 @@ const specialSearchFunctions = (function() {
return document.createTextNode(`${value == 9999 ? "全" : value + "T"}解禁消`);
}
},
{name:"Fixed damage inflicts(sort by damage)",otLangName:{chs:"队长技固伤追击(按伤害排序)",cht:"隊長技固傷追擊(按傷害排序)"},
function:cards=>{
return cards.filter(card=>{
return getSkillFixedDamage(card) > 0;
}).sort((a,b)=>{
let a_pC = getSkillFixedDamage(a),b_pC = getSkillFixedDamage(b);
return a_pC - b_pC;
});
},
addition:card=>{
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數排序)"},
function:cards=>{
return cards.filter(card=>{
return getSkillAddCombo(card) > 0;
}).sort((a,b)=>{
let a_pC = getSkillAddCombo(a),b_pC = getSkillAddCombo(b);
return a_pC - b_pC;
});
},
addition:card=>{
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:"8 latent grids",otLangName:{chs:"8格潜觉",cht:"8格潛覺"},
function:cards=>cards.filter(card=>card.is8Latent)
},
},*/
]},
{group:true,name:"======Active Skill======",otLangName:{chs:"======主动技======",cht:"======主動技======"}, functions: [
{name:"1 CD",otLangName:{chs:"1 CD",cht:"1 CD"},
function:cards=>cards.filter(card=>{
if (card.activeSkillId == 0) return false;
const skill = Skills[card.activeSkillId];
return skill.initialCooldown - (skill.maxLevel - 1) <= 1;
})
},
{name:"Less than 4 can be cycled use(Inaccurate)",otLangName:{chs:"除 1 CD 外,4 个以下能永动开(可能不精确)",cht:"除 1 CD 外,4 個以下能永動開(可能不精確)"},
function:cards=>cards.filter(card=>{
if (card.activeSkillId == 0) return false;
const skill = Skills[card.activeSkillId];
const minCD = skill.initialCooldown - (skill.maxLevel - 1); //主动技最小的CD
let realCD = minCD;
const searchTypeArray = [14];
const subSkill = getCardLeaderSkill(card, searchTypeArray);
if (subSkill)
{
realCD -= subSkill.params[0] * 3;
}
return minCD > 1 && realCD <= 4;
})
},
{name:"Time pause(sort by time)",otLangName:{chs:"时间暂停(按停止时间排序)",cht:"時間暫停(按停止時間排序)"},
function:cards=>{
const searchTypeArray = [5];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
},
addition:card=>{
const searchTypeArray = [5];
const skill = getCardActiveSkill(card, searchTypeArray);
const value = skill.params[0];
return `时停${value}s`;
}
},
{
name:"Random effect active",otLangName:{chs:"随机效果技能",cht:"隨機效果技能"},
function:cards=>cards.filter(card=>Skills[card.activeSkillId].type == 118)
},
{
name:"Evolved active",otLangName:{chs:"进化类技能",cht:"進化類技能"},
function:cards=>cards.filter(card=>{
let skType = Skills[card.activeSkillId].type;
return skType == 232 || skType == 233;
})
},
{name:"Enable require HP range",otLangName:{chs:"技能使用血线要求",cht:"技能使用血線要求"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [225];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}),
addition:card=>{
const searchTypeArray = [225];
const skill = getCardActiveSkill(card, searchTypeArray);
const sk = skill.params;
let strArr = [];
if (sk[0]) strArr.push(`≥${sk[0]}%`);
if (sk[1]) strArr.push(`≤${sk[1]}%`);
return `HP ${strArr.join(" ")}`;
}
},
{name:"Enable require Dungeon Stage",otLangName:{chs:"技能使用地下城层数要求",cht:"技能使用地下城層數要求"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [234];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}),
addition:card=>{
const searchTypeArray = [234];
const skill = getCardActiveSkill(card, searchTypeArray);
const sk = skill.params;
let strArr = [];
if (sk[0]) strArr.push(`≥${sk[0]}`);
if (sk[1]) strArr.push(`≤${sk[1]}`);
return `层 ${strArr.join(" ")}`;
}
},
]},
{group:true,name:"-----Voids Absorption-----",otLangName:{chs:"-----破吸类-----",cht:"-----破吸類-----"}, functions: [
{name:"Voids attribute absorption(sort by turns)",otLangName:{chs:"破属吸 buff(按破吸回合排序)",cht:"破屬吸 buff(按破吸回合排序)"},
@@ -1700,24 +1574,6 @@ const specialSearchFunctions = (function() {
return `无↓×${sk[0]}T`;
}
},
{name:"Creates Roulette Orb",otLangName:{chs:"生成变换位(转转珠)",cht:"生成變換位(轉轉珠)"},
function:cards=>{
const searchTypeArray = [207];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
},
addition:card=>{
const searchTypeArray = [207];
const skill = getCardActiveSkill(card, searchTypeArray);
const sk = skill.params;
if (sk[7])
return `${sk[7]}个×${sk[0]}T`;
else
return `特殊形状×${sk[0]}T`;
}
},
{name:"Adds combo(sort by combo)",otLangName:{chs:"加C buff(按C数排列)",cht:"加C buff(按C數排列)"},
function:cards=>{
const searchTypeArray = [160];
@@ -1828,6 +1684,24 @@ const specialSearchFunctions = (function() {
return `全体×${sk[0]}T`;
}
},
{name:"Creates Roulette Orb",otLangName:{chs:"生成变换位(转转珠)",cht:"生成變換位(轉轉珠)"},
function:cards=>{
const searchTypeArray = [207];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
},
addition:card=>{
const searchTypeArray = [207];
const skill = getCardActiveSkill(card, searchTypeArray);
const sk = skill.params;
if (sk[7])
return `${sk[7]}个×${sk[0]}T`;
else
return `特殊形状×${sk[0]}T`;
}
},
]},
{group:true,name:"-----For Enemy-----",otLangName:{chs:"-----对敌 buff 类-----",cht:"-----對敵 buff 類-----"}, functions: [
{name:"Menace(sort by turns)",otLangName:{chs:"威吓(按推迟回合排序)",cht:"威嚇(按推遲迴合排序)"},
@@ -2246,19 +2120,20 @@ const specialSearchFunctions = (function() {
{group:true,name:"-----Damage Enemy - Numerical damage-----",otLangName:{chs:"-----对敌直接伤害类-大炮-----",cht:"-----對敵直接傷害類-大炮-----"}, functions: [
{name:"Numerical ATK - Target - Single",otLangName:{chs:"大炮-对象-敌方单体",cht:"大炮-對象-敵方單體"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [2,35,37,59,84,86,110,115,144];
function isSingle(skill)
{
if (skill.type == 110)
return Boolean(skill.params[0]);
else if (skill.type == 144)
return Boolean(skill.params[2]);
else
return true;
}
const skill = getCardActiveSkill(card, searchTypeArray);
return skill && isSingle(skill);
})
const searchTypeArray = [2,35,37,59,84,86,110,115,144];
function isSingle(skill)
{
if (skill.type == 110)
return Boolean(skill.params[0]);
else if (skill.type == 144)
return Boolean(skill.params[2]);
else
return true;
}
const skill = getCardActiveSkill(card, searchTypeArray);
return skill && isSingle(skill);
}),
addition: numericalATK_Addition
},
{name:"Numerical ATK - Target - Mass",otLangName:{chs:"大炮-对象-敌方全体",cht:"大炮-對象-敵方全體"},
function:cards=>cards.filter(card=>{
@@ -2274,7 +2149,8 @@ const specialSearchFunctions = (function() {
}
const skill = getCardActiveSkill(card, searchTypeArray);
return skill && skill.id!=0 && isAll(skill);
})
}),
addition: numericalATK_Addition
},
{name:"Numerical ATK - Target - Designate Attr",otLangName:{chs:"大炮-对象-指定属性敌人",cht:"大炮-對象-指定屬性敵人"},
function:cards=>cards.filter(card=>{
@@ -2283,125 +2159,110 @@ const specialSearchFunctions = (function() {
return skill;
})
},
{name:"Numerical ATK - Attr - Any",otLangName:{chs:"大炮-属性-不限",cht:"大炮-屬性-不限"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [0,1,2,35,37,42,58,59,84,85,86,87,110,115,143,144];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill && skill.id!=0;
}),
addition:card=>{
const searchTypeArray = [0,1,2,35,37,42,58,59,84,85,86,87,110,115,143,144];
const skill = getCardActiveSkill(card, searchTypeArray);
//const sk = skill.params;
const colors = [getCannonAttr(skill)];
const fragment = document.createDocumentFragment();
fragment.appendChild(document.createTextNode(`射`));
fragment.appendChild(createOrbsList(colors));
return fragment;
}
},
{name:"Numerical ATK - Attr - Actors self",otLangName:{chs:"大炮-属性-释放者自身",cht:"大炮-屬性-釋放者自身"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [2,35];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
const searchTypeArray = [2,35];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
})
},
{name:"Numerical ATK - Damage - Rate by Actors self ATK(sort by rate)",otLangName:{chs:"大炮-伤害-自身攻击倍率(按倍率排序,范围取小)",cht:"大炮-傷害-自身攻擊倍率(按倍率排序,範圍取小)"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [0,2,35,37,58,59,84,85,115];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill && skill.id!=0;
}).sort((a,b)=>{
const searchTypeArray = [0,2,35,37,58,59,84,85,115];
const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray);
function getNumber(skill)
{
const sk = skill.params;
switch(skill.type)
const searchTypeArray = [0,2,35,37,58,59,84,85,115];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill && skill.id!=0;
}).sort((a,b)=>{
const searchTypeArray = [0,2,35,37,58,59,84,85,115];
const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray);
function getNumber(skill)
{
case 0:
case 37:
case 58:
case 59:
case 84:
case 85:
case 115:
return sk[1];
case 2:
case 35:
return sk[0];
default:
return 0;
const sk = skill.params;
switch(skill.type)
{
case 0:
case 37:
case 58:
case 59:
case 84:
case 85:
case 115:
return sk[1];
case 2:
case 35:
return sk[0];
default:
return 0;
}
}
}
let a_pC = getNumber(a_s),b_pC = getNumber(b_s);
return a_pC - b_pC;
})
let a_pC = getNumber(a_s),b_pC = getNumber(b_s);
return a_pC - b_pC;
}),
addition: numericalATK_Addition
},
{name:"Numerical ATK - Damage - Fixed Attr Number (sort by number)",otLangName:{chs:"大炮-伤害-指定属性数值(按数值排序)",cht:"大炮-傷害-指定屬性數值(按數值排序)"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [1,42,86,87];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>{
const searchTypeArray = [1,42,86,87];
const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray);
function getNumber(skill)
{
const sk = skill.params;
switch(skill.type)
const searchTypeArray = [1,42,86,87];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>{
const searchTypeArray = [1,42,86,87];
const a_s = getCardActiveSkill(a, searchTypeArray), b_s = getCardActiveSkill(b, searchTypeArray);
function getNumber(skill)
{
case 1:
case 86:
case 87:
return sk[1];
case 42:
return sk[2];
default:
return 0;
const sk = skill.params;
switch(skill.type)
{
case 1:
case 86:
case 87:
return sk[1];
case 42:
return sk[2];
default:
return 0;
}
}
}
let a_pC = getNumber(a_s),b_pC = getNumber(b_s);
return a_pC - b_pC;
})
let a_pC = getNumber(a_s),b_pC = getNumber(b_s);
return a_pC - b_pC;
}),
addition: numericalATK_Addition
},
{name:"Numerical ATK - Damage - By remaining HP (sort by rate at HP 1)",otLangName:{chs:"大炮-伤害-根据剩余血量(按 1 HP 时倍率排序)",cht:"大炮-傷害-根據剩餘血量(按 1 HP 時倍率排序)"},
function:cards=>{
const searchTypeArray = [110];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray,3));
}
const searchTypeArray = [110];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray,3));
},
addition: numericalATK_Addition
},
{name:"Numerical ATK - Damage - Team total HP (sort by rate)",otLangName:{chs:"大炮-伤害-队伍总 HP(按倍率排序)",cht:"大炮-傷害-隊伍總 HP(按倍率排序)"},
function:cards=>{
const searchTypeArray = [143];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
}
const searchTypeArray = [143];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
},
addition: numericalATK_Addition
},
{name:"Numerical ATK - Damage - Team attrs ATK (sort by rate)",otLangName:{chs:"大炮-伤害-队伍某属性总攻击(按倍率排序)",cht:"大炮-傷害-隊伍某屬性總攻擊(按倍率排序)"},
function:cards=>{
const searchTypeArray = [144];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray,1));
}
const searchTypeArray = [144];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray,1));
},
addition: numericalATK_Addition
},
{name:"Numerical ATK - Special - Vampire",otLangName:{chs:"大炮-特殊-吸血",cht:"大炮-特殊-吸血"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [35,115];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
const searchTypeArray = [35,115];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
})
},
]},
@@ -2890,6 +2751,89 @@ const specialSearchFunctions = (function() {
})
},
]},
{group:true,name:"-----Others Active Skills-----",otLangName:{chs:"-----其他主动技-----",cht:"-----其他主動技-----"}, functions: [
{name:"1 CD",otLangName:{chs:"1 CD",cht:"1 CD"},
function:cards=>cards.filter(card=>{
if (card.activeSkillId == 0) return false;
const skill = Skills[card.activeSkillId];
return skill.initialCooldown - (skill.maxLevel - 1) <= 1;
})
},
{name:"Less than 4 can be cycled use(Inaccurate)",otLangName:{chs:"除 1 CD 外,4 个以下能永动开(可能不精确)",cht:"除 1 CD 外,4 個以下能永動開(可能不精確)"},
function:cards=>cards.filter(card=>{
if (card.activeSkillId == 0) return false;
const skill = Skills[card.activeSkillId];
const minCD = skill.initialCooldown - (skill.maxLevel - 1); //主动技最小的CD
let realCD = minCD;
const searchTypeArray = [14];
const subSkill = getCardLeaderSkill(card, searchTypeArray);
if (subSkill)
{
realCD -= subSkill.params[0] * 3;
}
return minCD > 1 && realCD <= 4;
})
},
{name:"Time pause(sort by time)",otLangName:{chs:"时间暂停(按停止时间排序)",cht:"時間暫停(按停止時間排序)"},
function:cards=>{
const searchTypeArray = [5];
return cards.filter(card=>{
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}).sort((a,b)=>sortByParams(a,b,searchTypeArray));
},
addition:card=>{
const searchTypeArray = [5];
const skill = getCardActiveSkill(card, searchTypeArray);
const value = skill.params[0];
return `时停${value}s`;
}
},
{
name:"Random effect active",otLangName:{chs:"随机效果技能",cht:"隨機效果技能"},
function:cards=>cards.filter(card=>Skills[card.activeSkillId].type == 118)
},
{
name:"Evolved active",otLangName:{chs:"进化类技能",cht:"進化類技能"},
function:cards=>cards.filter(card=>{
let skType = Skills[card.activeSkillId].type;
return skType == 232 || skType == 233;
})
},
{name:"Enable require HP range",otLangName:{chs:"技能使用血线要求",cht:"技能使用血線要求"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [225];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}),
addition:card=>{
const searchTypeArray = [225];
const skill = getCardActiveSkill(card, searchTypeArray);
const sk = skill.params;
let strArr = [];
if (sk[0]) strArr.push(`≥${sk[0]}%`);
if (sk[1]) strArr.push(`≤${sk[1]}%`);
return `HP ${strArr.join(" ")}`;
}
},
{name:"Enable require Dungeon Stage",otLangName:{chs:"技能使用地下城层数要求",cht:"技能使用地下城層數要求"},
function:cards=>cards.filter(card=>{
const searchTypeArray = [234];
const skill = getCardActiveSkill(card, searchTypeArray);
return skill;
}),
addition:card=>{
const searchTypeArray = [234];
const skill = getCardActiveSkill(card, searchTypeArray);
const sk = skill.params;
let strArr = [];
if (sk[0]) strArr.push(`≥${sk[0]}`);
if (sk[1]) strArr.push(`≤${sk[1]}`);
return `层 ${strArr.join(" ")}`;
}
},
]},
{group:true,name:"======Leader Skills=====",otLangName:{chs:"======队长技======",cht:"======隊長技======"}, functions: [
{name:"Fixed damage inflicts(sort by damage)",otLangName:{chs:"队长技固伤追击(按伤害排序)",cht:"隊長技固傷追擊(按傷害排序)"},
@@ -3360,9 +3304,6 @@ const specialSearchFunctions = (function() {
{name:"Pixel Evo",otLangName:{chs:"像素进化",cht:"像素進化"},
function:cards=>cards.filter(card=>card.evoMaterials.includes(3826))
},
{name:"8 latent grids",otLangName:{chs:"8格潜觉",cht:"8格潛覺"},
function:cards=>cards.filter(card=>card.is8Latent)
},
//{name:"",otLangName:{chs:"非8格潜觉",cht:"非8格潛覺"},function:cards=>cards.filter(card=>!card.is8Latent)},
{name:"Reincarnation/Super Re..",otLangName:{chs:"转生、超转生进化",cht:"轉生、超轉生進化"},
function:cards=>cards.filter(card=>isReincarnated(card))
@@ -3412,6 +3353,9 @@ const specialSearchFunctions = (function() {
},
]},
{group:true,name:"----- Awoken -----",otLangName:{chs:"-----觉醒类-----",cht:"-----覺醒類-----"}, functions: [
{name:"8 latent grids",otLangName:{chs:"8格潜觉",cht:"8格潛覺"},
function:cards=>cards.filter(card=>card.is8Latent)
},
{name:"Have 9 awokens",otLangName:{chs:"有9个觉醒",cht:"有9個覺醒"},
function:cards=>cards.filter(card=>card.awakenings.length>=9)
},
@@ -3505,5 +3449,18 @@ const specialSearchFunctions = (function() {
},*/
]},
];
//非常常用
let commonlyUsed = functions.find(g=>g.group && g.name.includes("commonly used"));
if (commonlyUsed) {
let list = [
functions.find(g=>g.group && g.name.includes("player team"))?.functions.find(f=>f.name.includes("skills charge")),
functions.find(g=>g.group && g.name.includes("For Enemy"))?.functions.find(f=>f.name.includes("Menace")),
functions.find(g=>g.group && g.name.includes("Awoken"))?.functions.find(f=>f.name.includes("8 latent")),
functions.find(g=>g.group && g.name.includes("Leader Skills"))?.functions.find(f=>f.name.includes("Fixed damage inflicts")),
functions.find(g=>g.group && g.name.includes("Leader Skills"))?.functions.find(f=>f.name.includes("Adds combo")),
].filter(Boolean);
commonlyUsed.functions.push(...list);
}
return functions;
})();

Loading…
Cancel
Save