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", }]; }