Update class mechanics, stat rulesets, and CoA reference catalogs

This commit is contained in:
phenom committed 2026-10-04 12:56:30 -04:00
1 parent b16821e92e
commit 39458d5de6
221 files changed
+2584962 -568

No files matched your search

+32 -1
View File
@@ -1,4 +1,5 @@
import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog";
import type { ProcTrigger } from "./combatAuras";
export const ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS = 0.22;
export const ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND = 20;
@@ -46,6 +47,10 @@ export function romPriestChampionRageControlGain(
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_ID = "rom-priest-protection-rune-seal-reset";
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_ACTION_ID = "rom-priest-protection-rune-seal-reset-heart-rune";
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_AURA_ID = "rom-priest-protection-rune-seal-regenerate";
export const ROM_PRIEST_CHAMPION_PROTECTION_RUNE_SEAL_SPELL_ID = 498_613;
export const ROM_PRIEST_CHAMPION_REGENERATE_SPELL_ID = 490_269;
export const ROM_PRIEST_CHAMPION_HEART_RUNE_ENERGY_SPELL_ID = 498_612;
/** RuneWaker's exact passive tooltip supplies 8%; current CoA says only "slight chance." */
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_CHANCE = 0.08;
const ROM_PRIEST_REGENERATE_ABILITY_ID = "rom-priest-general-2";
@@ -66,6 +71,32 @@ const PROTECTION_RUNE_SEAL_REGENERATE_PROC_AURA = {
}],
};
export interface RomPriestChampionProtectionRuneSealProcContext {
readonly primaryClassId: string | null;
readonly secondaryClassId?: string | null;
readonly learnedPassiveSpellIds: readonly number[];
readonly trigger: ProcTrigger;
readonly triggeringAbilitySpellId?: number;
readonly healingAmount?: number;
}
/**
* Protection Rune Seal resets Heart Rune Energy only for a learned exact pair
* and a positive periodic heal from Regenerate. The chance roll is owned by
* the aura proc definition above.
*/
export function romPriestChampionProtectionRuneSealProcIsEligible(
context: RomPriestChampionProtectionRuneSealProcContext,
): boolean {
return context.primaryClassId === "rom-priest"
&& context.secondaryClassId === "rom-champion"
&& context.learnedPassiveSpellIds.includes(ROM_PRIEST_CHAMPION_PROTECTION_RUNE_SEAL_SPELL_ID)
&& context.trigger === "periodic"
&& context.triggeringAbilitySpellId === ROM_PRIEST_CHAMPION_REGENERATE_SPELL_ID
&& Number.isFinite(context.healingAmount)
&& (context.healingAmount ?? 0) > 0;
}
/**
* The local Infused Light Chain cooldown rider is not present in current CoA:
* ID 498610 is now Rage Control, so it no longer overrides Chain of Light.
@@ -86,7 +117,7 @@ export function romPriestChampionCastEffects(
if (ability.source === "runewaker"
&& ability.classId === "rom-priest"
&& ability.dbcSpellId === 490269
&& learnedPassiveSpellIds.includes(498613)) {
&& learnedPassiveSpellIds.includes(ROM_PRIEST_CHAMPION_PROTECTION_RUNE_SEAL_SPELL_ID)) {
return [{
kind: "apply-aura",
aura: PROTECTION_RUNE_SEAL_REGENERATE_PROC_AURA,