Complete RoM pair elite mechanics and creature family rules
This commit is contained in:
1 parent
c8b3a3d95a
commit
0206fda9e2
21 files changed
+1082
-134
No files matched your search
@@ -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",
|
||||
}];
|
||||
}
|
||||
Reference in new issue
Block a user