71 lines
2.7 KiB
TypeScript
71 lines
2.7 KiB
TypeScript
import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog";
|
|
|
|
/**
|
|
* Current CoA Warlock/Warrior Enraged. CoA lists it under Warrior General,
|
|
* level 60, on the Warlock/Warrior pair page:
|
|
* https://chroniclesofarcadia.com/en/wiki/skills/list/9-1
|
|
*/
|
|
export const ROM_COA_WARLOCK_WARRIOR_ENRAGED = Object.freeze({
|
|
spellId: 499_871,
|
|
localWarriorGeneralSpellId: 490_492,
|
|
unresolvedLocalChildSpellId: 499_869,
|
|
unlockLevel: 60,
|
|
cooldownMs: 40_000,
|
|
rage: 100,
|
|
focus: 35,
|
|
psi: 1,
|
|
} as const);
|
|
|
|
export const ROM_COA_WARLOCK_WARRIOR_ENRAGED_DESCRIPTION =
|
|
"Instant. Immediately recovers 100 Rage, 35 Focus, and 1 Psi. Cooldown: 40 seconds.";
|
|
|
|
export const ROM_COA_WARLOCK_WARRIOR_ENRAGED_EFFECTS: readonly AbilityEffect[] = Object.freeze([
|
|
{ kind: "resource", resource: "rage", amount: ROM_COA_WARLOCK_WARRIOR_ENRAGED.rage },
|
|
{ kind: "resource", resource: "focus", amount: ROM_COA_WARLOCK_WARRIOR_ENRAGED.focus },
|
|
{ kind: "resource", resource: "psi", amount: ROM_COA_WARLOCK_WARRIOR_ENRAGED.psi },
|
|
]);
|
|
|
|
/**
|
|
* Add the current CoA pair spell without rewriting RuneWaker's separate
|
|
* Warrior General Enraged (490492). Hidden local child 499869 also stays
|
|
* separate because neither the catalog nor CoA identifies it as this spell.
|
|
*/
|
|
export function romWarlockWarriorEnragedCoaAdditionalAbilities(
|
|
catalog: readonly AbilityDefinition[],
|
|
): readonly AbilityDefinition[] {
|
|
if (catalog.some((ability) => ability.dbcSpellId === ROM_COA_WARLOCK_WARRIOR_ENRAGED.spellId
|
|
&& ability.classId === "rom-warlock" && ability.secondaryClassId === "rom-warrior")) return [];
|
|
|
|
const localEnraged = catalog.find((ability) => ability.dbcSpellId
|
|
=== ROM_COA_WARLOCK_WARRIOR_ENRAGED.localWarriorGeneralSpellId
|
|
&& ability.classId === "rom-warrior" && ability.secondaryClassId === undefined);
|
|
if (!localEnraged) {
|
|
throw new Error("Cannot add CoA Warlock/Warrior Enraged without the separate RuneWaker Warrior General row");
|
|
}
|
|
|
|
return [{
|
|
id: "rom-warlock-rom-warrior-general-coa-499871",
|
|
classId: "rom-warlock",
|
|
secondaryClassId: "rom-warrior",
|
|
dbcSpellId: ROM_COA_WARLOCK_WARRIOR_ENRAGED.spellId,
|
|
name: "Enraged",
|
|
unlockLevel: ROM_COA_WARLOCK_WARRIOR_ENRAGED.unlockLevel,
|
|
icon: localEnraged.icon,
|
|
sigil: "EN",
|
|
description: ROM_COA_WARLOCK_WARRIOR_ENRAGED_DESCRIPTION,
|
|
target: "self",
|
|
range: { min: 0, max: 1 },
|
|
castMode: "instant",
|
|
castTimeMs: 0,
|
|
cooldownMs: ROM_COA_WARLOCK_WARRIOR_ENRAGED.cooldownMs,
|
|
gcdMs: 1_500,
|
|
cost: { resource: "mana", amount: 0 },
|
|
costs: [],
|
|
effects: ROM_COA_WARLOCK_WARRIOR_ENRAGED_EFFECTS,
|
|
passive: false,
|
|
source: "runewaker",
|
|
sourceUnlockLevel: ROM_COA_WARLOCK_WARRIOR_ENRAGED.unlockLevel,
|
|
romSkillGroup: "general",
|
|
}];
|
|
}
|