Update Healer Man server
This commit is contained in:
1 parent
4c768fbec6
commit
b16821e92e
330 files changed
+35406
-1760
No files matched your search
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user