Files
healer-man/src/game/romWarlockWarriorEnragedCoaMechanics.ts
T
2026-10-02 10:38:12 -04:00

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