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

+23 -2
View File
@@ -1,6 +1,7 @@
import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog";
import type { AuraDefinition } from "./combatAuras";
import type { RomGeneratedAbilityLike } from "./romAbilitySemantics";
import { ROM_CHAMPION_FORGE_RANK_TWO_AURA } from "./romChampionForgeRuntime";
export const ROM_CHAMPION_FORGE_STACK_AURA: AuraDefinition = {
id: "rom-champion-forge-stack",
@@ -50,6 +51,7 @@ const ROM_CHAMPION_FORGE_ACTIVE_AURA: AuraDefinition = {
description: "For 5 minutes, normal attack hits build Forge stacks and restore Rage.",
disposition: "buff",
durationMs: 300_000,
exclusiveGroup: "rom-champion-forge-active",
utilityTags: ["rom-champion-forge-active"],
procs: [{
id: "rom-champion-forge-normal-hit",
@@ -275,6 +277,16 @@ export function romChampionCastEffects(
miscValue: 0,
triggerSpellId: 498524,
}];
case 498604: // Rank 2 Forge source component 621251 enables Chain Drive's attack proc.
return [{
kind: "apply-aura",
aura: ROM_CHAMPION_FORGE_RANK_TWO_AURA,
recipient: "caster",
sourceEffectType: 0,
sourceAuraType: 0,
miscValue: 0,
triggerSpellId: 498604,
}];
case 498572: // Rune Overload ends when its Rage drain reaches zero.
return effects.map((effect) => effect.kind === "apply-aura"
? {
@@ -296,9 +308,18 @@ export function romChampionCastEffects(
});
case 498535: // Chain Drive's proc chance and damage bonus are absent from the source payload.
return effects.filter((effect) => effect.kind !== "cooldown-reset");
case 498599: // Dark Energy Strike's cooldown proc chance is absent from the source payload.
case 498599: { // Source orders physical 621305, Darkness 621306, then a 15% reset group.
if (ability.secondaryClassId !== "rom-warlock") return effects;
return effects.filter((effect) => effect.kind !== "cooldown-reset");
const damageIndexes: number[] = [];
effects.forEach((effect, index) => {
if (effect.kind === "damage") damageIndexes.push(index);
});
if (damageIndexes.length !== 2) return effects.filter((effect) => effect.kind !== "cooldown-reset");
return effects.flatMap((effect, index): AbilityEffect[] => {
if (effect.kind !== "damage") return effect.kind === "cooldown-reset" ? [] : [effect];
return [{ ...effect, school: damageIndexes[0] === index ? "physical" : "shadow" }];
});
}
case 498651: // Heart Collection Rune explicitly resets Rune Siphon.
if (ability.secondaryClassId !== "rom-warlock") return effects;
return effects.map((effect) => effect.kind === "cooldown-reset"