Update Healer Man server
This commit is contained in:
1 parent
9d7e0e2f9e
commit
35dfdaed61
94 files changed
+17034
-418
No files matched your search
@@ -33,6 +33,8 @@ export function overrideRomPriestKnightEffects(
|
||||
return passiveState(499968, row.name, "rom-splendor-ripple");
|
||||
case 499957: // Light Guidance: activate healing bonus only with source state 499966.
|
||||
return passiveState(499957, row.name, "rom-light-guidance");
|
||||
case 492638: // Lightning Rod: Lightning shocks targets already afflicted by Bone Chill.
|
||||
return passiveState(492638, row.name, "rom-priest-mage-lightning-rod");
|
||||
case 491610: // Enhanced Holy Strike: improves Holy Strike weapon damage.
|
||||
return passiveState(491610, row.name, "rom-enhanced-holy-strike");
|
||||
case 490066: // Weaken Weapon Strength: Heavenly Arrow weakens target physical damage.
|
||||
@@ -151,8 +153,36 @@ export function romPriestKnightCastEffects(
|
||||
passiveTags: readonly string[] | ReadonlySet<string>,
|
||||
casterMaxHealth: number,
|
||||
targetTags: readonly string[] | ReadonlySet<string> = [],
|
||||
friendlyTargetHealthPercent = 1,
|
||||
learnedPassiveSpellIds: readonly number[] = [],
|
||||
): readonly AbilityEffect[] {
|
||||
if (ability.source !== "runewaker" || casterMaxHealth <= 0) return effects;
|
||||
if (ability.dbcSpellId === 490261
|
||||
&& learnedPassiveSpellIds.includes(493039)
|
||||
&& friendlyTargetHealthPercent < 0.3) {
|
||||
// Saint's Blessing's active source components grant +30 healing points and
|
||||
// +1% healing power for 10 seconds. Put the aura before Heal so the
|
||||
// triggering cast itself receives the sourced bonus as well.
|
||||
return [{
|
||||
kind: "apply-aura",
|
||||
recipient: "caster",
|
||||
aura: {
|
||||
id: "rom-priest-saints-blessing-healing",
|
||||
name: "Saint's Blessing",
|
||||
disposition: "buff",
|
||||
durationMs: 10_000,
|
||||
modifiers: [
|
||||
{ kind: "healing", direction: "done", operation: "flat", value: 30 },
|
||||
{ kind: "healing", direction: "done", operation: "percent", value: 0.01 },
|
||||
],
|
||||
dispelCategory: "magic",
|
||||
},
|
||||
sourceEffectType: -1,
|
||||
sourceAuraType: -1,
|
||||
miscValue: 0,
|
||||
triggerSpellId: 493039,
|
||||
}, ...effects];
|
||||
}
|
||||
switch (ability.dbcSpellId) {
|
||||
case 490290: // Enhanced Grace of Life mirrors source Grace's +50 and +1% HP as MP.
|
||||
if (!hasTag(passiveTags, "rom-enhanced-grace-of-life")) return effects;
|
||||
@@ -236,6 +266,28 @@ export function romPriestKnightCastEffects(
|
||||
miscValue: 5,
|
||||
triggerSpellId: 623015,
|
||||
}];
|
||||
case 490212: // Lightning Rod adds source child 502907 only while Bone Chill is on the target.
|
||||
if (!hasTag(passiveTags, "rom-priest-mage-lightning-rod")
|
||||
|| !hasTag(targetTags, "rom-491165-501548-0")) return effects;
|
||||
return [...effects, {
|
||||
kind: "apply-aura",
|
||||
recipient: "ability-target",
|
||||
aura: {
|
||||
id: "rom-priest-mage-lightning-rod-shock",
|
||||
name: "Electric Shock",
|
||||
disposition: "debuff",
|
||||
durationMs: 20_000,
|
||||
modifiers: [
|
||||
{ kind: "stat", stat: "resistance:frost", operation: "flat", value: -50 },
|
||||
{ kind: "stat", stat: "resistance:nature", operation: "flat", value: -50 },
|
||||
],
|
||||
utilityTags: ["rom-priest-mage-lightning-rod-shock"],
|
||||
},
|
||||
sourceEffectType: -1,
|
||||
sourceAuraType: -1,
|
||||
miscValue: 0,
|
||||
triggerSpellId: 502907,
|
||||
}];
|
||||
case 490434: // Source 499924 adds component 623167 to the base Blood Arrow.
|
||||
if (!hasTag(passiveTags, "rom-blood-punishment")) return effects;
|
||||
return [...effects, {
|
||||
@@ -260,6 +312,65 @@ export function romPriestKnightCastEffects(
|
||||
}
|
||||
}
|
||||
|
||||
/** Select the pair-specific payload branches that depend on target state. */
|
||||
export function romPriestKnightConditionalCastEffects(
|
||||
ability: AbilityDefinition,
|
||||
effects: readonly AbilityEffect[],
|
||||
sealStacks: number,
|
||||
targetIsCaster: boolean,
|
||||
): readonly AbilityEffect[] {
|
||||
if (ability.source !== "runewaker"
|
||||
|| ability.classId !== "rom-knight"
|
||||
|| ability.secondaryClassId !== "rom-priest") return effects;
|
||||
|
||||
if (ability.dbcSpellId === 490194) {
|
||||
const baseHit = effects.find((effect) => effect.kind === "damage");
|
||||
if (!baseHit) return effects;
|
||||
// The generated row carries a placeholder heal with no source-backed
|
||||
// amount; only the Holy Seal components grant healing.
|
||||
const nonDamage = effects.filter((effect) => effect.kind !== "damage" && effect.kind !== "heal");
|
||||
const seals = Math.min(4, Math.max(0, Math.trunc(sealStacks)));
|
||||
if (seals === 0) return [baseHit, ...nonDamage];
|
||||
const healPercent = Math.min(8, seals * 2) / 100;
|
||||
return [
|
||||
baseHit,
|
||||
...nonDamage,
|
||||
{ kind: "heal", coefficient: 0, percentMaxHealth: healPercent, recipient: "caster" },
|
||||
{
|
||||
kind: "heal",
|
||||
coefficient: 0,
|
||||
percentMaxHealth: healPercent,
|
||||
scope: "party",
|
||||
center: "caster",
|
||||
maximumTargets: 1,
|
||||
excludeCaster: true,
|
||||
},
|
||||
{ kind: "combo", amount: -seals },
|
||||
];
|
||||
}
|
||||
|
||||
if (ability.dbcSpellId === 491640) {
|
||||
const selectedThreatPolarity = targetIsCaster ? 1 : -1;
|
||||
const hasThreatPayload = effects.some((effect) => effect.kind === "apply-aura"
|
||||
&& effect.aura.modifiers?.some((modifier) => modifier.kind === "stat" && modifier.stat === "threat"));
|
||||
if (!hasThreatPayload) return effects;
|
||||
return effects.map((effect) => effect.kind === "apply-aura" && effect.aura.modifiers?.some((modifier) =>
|
||||
modifier.kind === "stat" && modifier.stat === "threat")
|
||||
? {
|
||||
...effect,
|
||||
aura: {
|
||||
...effect.aura,
|
||||
modifiers: effect.aura.modifiers?.map((modifier) => modifier.kind === "stat" && modifier.stat === "threat"
|
||||
? { ...modifier, value: Math.abs(modifier.value) * selectedThreatPolarity }
|
||||
: modifier),
|
||||
},
|
||||
}
|
||||
: effect);
|
||||
}
|
||||
|
||||
return effects;
|
||||
}
|
||||
|
||||
/** Source skill 499966 is granted by the level-70 Priest/Knight elite pair. */
|
||||
export function romPriestKnightAdditionalAbilities(
|
||||
catalog: readonly AbilityDefinition[],
|
||||
|
||||
Reference in new issue
Block a user