Update Healer Man server
This commit is contained in:
1 parent
4c768fbec6
commit
b16821e92e
330 files changed
+35406
-1760
No files matched your search
@@ -1,5 +1,14 @@
|
||||
import type { AbilityEffect } from "./abilityCatalog";
|
||||
import type { RomGeneratedAbilityLike } from "./romAbilitySemantics";
|
||||
import {
|
||||
isRomDruidRoguePair,
|
||||
romDruidRogueCorrosivePoisonEffect,
|
||||
romDruidRogueCooldownRider,
|
||||
} from "./romDruidRogueCurrentCoa";
|
||||
import {
|
||||
isRomMageDruidPair,
|
||||
romMageDruidGreenGuardianAuraEffect,
|
||||
} from "./romMageDruidGreenGuardianRuntime";
|
||||
|
||||
export const ROM_DRUID_GREEN_GUARDIAN_TAG = "rom-druid-green-guardian";
|
||||
export const ROM_DRUID_MOTHER_EARTH_PROTECTION_TAG = "rom-druid-mother-earth-protection";
|
||||
@@ -85,6 +94,22 @@ export function overrideRomDruidEffects(
|
||||
row: RomGeneratedAbilityLike,
|
||||
translated: readonly AbilityEffect[],
|
||||
): readonly AbilityEffect[] | null {
|
||||
if (isRomDruidRoguePair(row)) {
|
||||
if (row.sourceSkillId === 494024) return [romDruidRogueCorrosivePoisonEffect()];
|
||||
if (row.sourceSkillId === 494321) return [
|
||||
{ kind: "damage", coefficient: 3.297, school: "shadow" },
|
||||
{
|
||||
kind: "utility",
|
||||
action: "class-script",
|
||||
effectType: -1,
|
||||
auraType: -1,
|
||||
miscValue: 0,
|
||||
triggerSpellId: 494024,
|
||||
durationMs: 12_000,
|
||||
},
|
||||
];
|
||||
if (row.sourceSkillId === 494023) return [];
|
||||
}
|
||||
switch (row.sourceSkillId) {
|
||||
case 493533:
|
||||
case 493558: { // Both Mother Earth's Protection ranks can trigger Green Guardian on expiry.
|
||||
@@ -101,7 +126,9 @@ export function overrideRomDruidEffects(
|
||||
};
|
||||
});
|
||||
}
|
||||
case 494331: // Keep source HoT payloads on the learned passive for its expiry trigger.
|
||||
case 494331:
|
||||
if (isRomMageDruidPair(row)) return [romMageDruidGreenGuardianAuraEffect()];
|
||||
// Keep RuneWaker's legacy HoTs only for rows outside the current CoA pair.
|
||||
return [
|
||||
passiveState(494331, row.name, ROM_DRUID_GREEN_GUARDIAN_TAG),
|
||||
...translated.filter((effect) => effect.kind === "hot"),
|
||||
@@ -143,8 +170,8 @@ export function overrideRomDruidEffects(
|
||||
...effect,
|
||||
falloffPerJump: 0.7,
|
||||
}));
|
||||
case 494321: // Its root is supplied by the optional Knee Ulcer passive.
|
||||
return translated.filter((effect) => effect.kind !== "apply-aura" || effect.control?.kind !== "root");
|
||||
case 494321: // The CoA rework replaces RuneWaker's healing reduction and Knee Ulcer root.
|
||||
return translated.filter((effect) => effect.kind === "damage");
|
||||
case 494938: // 505938 supplies the 40-second lifetime; the tooltip states 4-second party pulses.
|
||||
return [spiritOfLifeHot(translated)];
|
||||
default:
|
||||
@@ -293,11 +320,23 @@ export function romDruidCastEffects(
|
||||
&& !(empowered && effect.kind === "resource" && effect.resource === "nature-power"));
|
||||
return [...selectedHits, ...selected, ...(empowered ? [naturePowerDrain()] : [])];
|
||||
}
|
||||
case 499956: { // Briar Technique unlocks this source row, with both DMG branches on distinct components.
|
||||
const selectedHits = empowered
|
||||
? [damage[1], damage[3]].filter((effect) => effect !== undefined)
|
||||
: [damage[0], damage[2]].filter((effect) => effect !== undefined);
|
||||
if (selectedHits.length !== 2) return effects;
|
||||
const selected = effects.filter((effect) => effect.kind !== "damage"
|
||||
&& !(empowered && effect.kind === "resource" && effect.resource === "nature-power"));
|
||||
return [...selectedHits, ...selected, ...(empowered ? [naturePowerDrain()] : [])];
|
||||
}
|
||||
case 494022: { // Poisonous Widow Embrace selects one damage component and refunds a spent point.
|
||||
const selectedDamage = damage[empowered ? 1 : 0];
|
||||
if (!selectedDamage) return effects;
|
||||
const selected = effects.filter((effect) => effect.kind !== "damage" || effect === selectedDamage);
|
||||
return empowered ? spendBeforeNaturePowerRefund(selected) : selected;
|
||||
const branch = empowered ? spendBeforeNaturePowerRefund(selected) : selected;
|
||||
return isRomDruidRoguePair(ability)
|
||||
? [...branch, romDruidRogueCooldownRider()]
|
||||
: branch;
|
||||
}
|
||||
case 493528: { // Extended Recovery's source-backed duration increase; proc chance is absent.
|
||||
if (!hasTag(passiveTags, "rom-druid-extended-recovery")) return effects;
|
||||
@@ -305,24 +344,13 @@ export function romDruidCastEffects(
|
||||
? { ...effect, ticks: effect.ticks + 3 }
|
||||
: effect);
|
||||
}
|
||||
case 494321: { // The passive's root is only emitted when Knee Ulcer is learned.
|
||||
if (!hasTag(passiveTags, "rom-druid-knee-ulcer")) return effects;
|
||||
return [...effects, {
|
||||
kind: "apply-aura",
|
||||
recipient: "ability-target",
|
||||
aura: {
|
||||
id: "rom-druid-knee-ulcer-root",
|
||||
name: "Knee Ulcer",
|
||||
disposition: "debuff",
|
||||
durationMs: 5_000,
|
||||
dispelCategory: "magic",
|
||||
},
|
||||
control: { kind: "root" },
|
||||
sourceEffectType: -1,
|
||||
sourceAuraType: -1,
|
||||
miscValue: 0,
|
||||
triggerSpellId: 499944,
|
||||
}];
|
||||
case 494321: { // CoA's current poison-gated channel replaces the old healing-reduction/root row.
|
||||
if (!isRomDruidRoguePair(ability)) return effects;
|
||||
return [
|
||||
...effects.filter((effect) => effect.kind === "damage" || (effect.kind === "utility"
|
||||
&& effect.action === "class-script" && effect.triggerSpellId === 494024)),
|
||||
romDruidRogueCooldownRider(),
|
||||
];
|
||||
}
|
||||
default:
|
||||
return effects;
|
||||
|
||||
Reference in new issue
Block a user