Complete RoM pair elite mechanics and creature family rules

This commit is contained in:
phenom committed 2026-09-23 19:38:13 -04:00
1 parent c8b3a3d95a
commit 0206fda9e2
21 files changed
+1082 -134

No files matched your search

+117 -1
View File
@@ -150,6 +150,7 @@ export function romPriestKnightCastEffects(
effects: readonly AbilityEffect[],
passiveTags: readonly string[] | ReadonlySet<string>,
casterMaxHealth: number,
targetTags: readonly string[] | ReadonlySet<string> = [],
): readonly AbilityEffect[] {
if (ability.source !== "runewaker" || casterMaxHealth <= 0) return effects;
switch (ability.dbcSpellId) {
@@ -202,12 +203,127 @@ export function romPriestKnightCastEffects(
triggerSpellId: 490066,
}];
case 491613: { // Evil Shackles halves duration on non-undead/demon targets.
if (!hasTag(passiveTags, "rom-evil-shackles") || hasTag(passiveTags, "rom-target-undead-demon")) return effects;
if (!hasTag(passiveTags, "rom-evil-shackles") || hasTag(targetTags, "rom-target-undead-demon")) return effects;
return effects.map((effect) => effect.kind === "apply-aura" && effect.control?.kind === "root"
? { ...effect, aura: { ...effect.aura, durationMs: Math.max(1_000, Math.round((effect.aura.durationMs ?? 10_000) / 2)) } }
: effect);
}
case 490273: // Source 499967 keeps Wave Armor's shield and adds heal component 623009.
if (!hasTag(passiveTags, "rom-splendor-ripple")) return effects;
return [...effects, {
kind: "heal",
recipient: "ability-target",
coefficient: 0,
basePoints: 106.25,
pointsPerLevel: 21.25,
sourceLevel: 1,
}];
case 499966: // Devotion Halo refreshes Light Guidance while the halo is active.
if (!hasTag(passiveTags, "rom-light-guidance")) return effects;
return [...effects, {
kind: "apply-aura",
recipient: "caster",
aura: {
id: "rom-pair-light-guidance-healing",
name: "Light Guidance",
disposition: "buff",
durationMs: 900_000,
modifiers: [{ kind: "healing", direction: "done", operation: "percent", value: 0.05 }],
dispelCategory: "magic",
},
sourceEffectType: -1,
sourceAuraType: 149,
miscValue: 5,
triggerSpellId: 623015,
}];
case 490434: // Source 499924 adds component 623167 to the base Blood Arrow.
if (!hasTag(passiveTags, "rom-blood-punishment")) return effects;
return [...effects, {
kind: "apply-aura",
recipient: "caster",
aura: {
id: "rom-pair-blood-arrow-healing-received",
name: "Blood Punishment",
disposition: "buff",
durationMs: 30_000,
modifiers: [{ kind: "healing", direction: "taken", operation: "percent", value: 0.5 }],
utilityTags: ["rom-blood-arrow-upgrade"],
dispelCategory: "magic",
},
sourceEffectType: -1,
sourceAuraType: 144,
miscValue: 50,
triggerSpellId: 623167,
}];
default:
return effects;
}
}
/** Source skill 499966 is granted by the level-70 Priest/Knight elite pair. */
export function romPriestKnightAdditionalAbilities(
catalog: readonly AbilityDefinition[],
): readonly AbilityDefinition[] {
const lightGuidance = catalog.find((ability) => ability.dbcSpellId === 499957
&& ability.classId === "rom-priest" && ability.secondaryClassId === "rom-knight");
if (!lightGuidance) return [];
const effects: readonly AbilityEffect[] = [{
kind: "apply-aura",
recipient: "caster",
scope: "party",
aura: {
id: "rom-pair-devotion-halo",
name: "Devotion Halo",
disposition: "buff",
durationMs: 900_000,
modifiers: [{ kind: "stat", stat: "wisdom", operation: "percent", value: 0.05 }],
dispelCategory: "magic",
},
sourceEffectType: -1,
sourceAuraType: 164,
miscValue: 5,
triggerSpellId: 623016,
}, {
kind: "apply-aura",
recipient: "caster",
scope: "party",
excludeCaster: true,
aura: {
id: "rom-pair-devotion-halo-mana",
name: "Devotion Halo Mana",
disposition: "buff",
durationMs: 900_000,
modifiers: [{ kind: "resource", resource: "mana", property: "cost", operation: "percent", value: -0.06 }],
dispelCategory: "magic",
},
sourceEffectType: -1,
sourceAuraType: 164,
miscValue: -6,
triggerSpellId: 623016,
}];
return [{
id: "rom-priest-rom-knight-elite-70-devotion-halo",
classId: "rom-priest",
secondaryClassId: "rom-knight",
dbcSpellId: 499966,
name: "Devotion Halo",
unlockLevel: 70,
icon: lightGuidance.icon,
sigil: "DH",
description: "Raises party Wisdom by 5% and lowers party mana costs by 6% for 15 minutes.",
target: "self",
range: { min: 0, max: 5 },
radius: 20,
castMode: "instant",
castTimeMs: 0,
cooldownMs: 0,
gcdMs: 1_500,
cost: { resource: "mana", amount: 0 },
costs: [],
effects,
passive: false,
source: "runewaker",
sourceUnlockLevel: 70,
romSkillGroup: "elite",
}];
}