Files
noname-shuying/tianshu/directDamage.js
T

29 lines
1.2 KiB
JavaScript

export const directDamageStorage = "shuYing_tianshu_directDamageSkills";
export function getDirectDamageOrigin(event, lib, get) {
if (!event || event.num <= 0 || event.unreal) return null;
if (typeof event.notLink == "function" && !event.notLink()) return null;
let current = event.getParent?.(1, true);
const visited = new Set();
while (current && !visited.has(current)) {
visited.add(current);
if (["useCard", "respond", "damage", "_lianhuan", "_lianhuan2"]
.includes(current.name) || current.name?.endsWith("_cost")) {
return null;
}
const skill = lib.skill[current.name] ? current.name : current.skill;
if (skill && lib.skill[skill]) {
return { skill: get.sourceSkillFor(skill), player: current.player };
}
current = current.getParent?.(1, true);
}
return null;
}
export function getDirectDamageSkillCount(player, skills, lib) {
const recorded = player?.storage?.[directDamageStorage];
if (!Array.isArray(recorded)) return 0;
return new Set(skills.filter(skill => recorded.includes(skill))
.map(skill => lib.translate[skill] || skill)).size;
}