Update Healer Man server

This commit is contained in:
phenom committed 2026-10-02 10:38:12 -04:00
1 parent 4c768fbec6
commit b16821e92e
330 files changed
+35406 -1760

No files matched your search

+28 -1
View File
@@ -33,6 +33,7 @@ export interface Wow335ShamanMaelstromWeaponProfile {
readonly durationMs: number;
readonly maxStacks: number;
readonly castTimeReductionPerStackPercent: number;
readonly pvpDamageReductionPerStackPercent: number;
}
/**
@@ -55,8 +56,12 @@ export function wow335ShamanMaelstromWeaponProfile(
const castTimeReductionPerStackPercent = Number(rankDescription.match(/reduce the cast time .*? by (\d+)%/i)?.[1]);
const maxStacks = Number(rankDescription.match(/Stacks up to (\d+)/i)?.[1]);
const pvpDamageReductionPerStackPercent = Number(
rankDescription.match(/deal (\d+)% reduced damage in PvP combat per stack/i)?.[1],
);
if (!Number.isFinite(castTimeReductionPerStackPercent) || castTimeReductionPerStackPercent <= 0
|| !Number.isFinite(maxStacks) || maxStacks <= 0) return null;
|| !Number.isFinite(maxStacks) || maxStacks <= 0
|| !Number.isFinite(pvpDamageReductionPerStackPercent) || pvpDamageReductionPerStackPercent < 0) return null;
const procsPerMinute = WOW335_SHAMAN_MAELSTROM_WEAPON_PROCS_PER_MINUTE[safeRank - 1];
return {
@@ -69,6 +74,7 @@ export function wow335ShamanMaelstromWeaponProfile(
durationMs: WOW335_SHAMAN_MAELSTROM_WEAPON_DURATION_MS,
maxStacks,
castTimeReductionPerStackPercent,
pvpDamageReductionPerStackPercent,
};
}
@@ -82,3 +88,24 @@ export function wow335ShamanMaelstromWeaponCastTimeReductionPercent(
);
return Math.min(100, safeStacks * profile.castTimeReductionPerStackPercent);
}
/**
* Resolves the generated Maelstrom Weapon PvP damage penalty for an eligible
* damage spell. Lesser Healing Wave is eligible for the cast-time proc but is
* a heal, so this damage-only rider does not apply to it.
*/
export function wow335ShamanMaelstromWeaponPvpDamageReductionPercent(
rank: number,
consumedStacks: number,
spellName: string,
): number {
if (!WOW335_SHAMAN_MAELSTROM_WEAPON_ELIGIBLE_SPELLS.has(spellName)
|| spellName === "Lesser Healing Wave") return 0;
const profile = wow335ShamanMaelstromWeaponProfile(rank);
if (!profile) return 0;
const safeStacks = Math.min(
profile.maxStacks,
Math.max(0, Math.trunc(Number.isFinite(consumedStacks) ? consumedStacks : 0)),
);
return safeStacks * profile.pvpDamageReductionPerStackPercent;
}