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

+37 -1
View File
@@ -55,7 +55,39 @@ export function normalizeDeathKnightRunes(
now: number,
): readonly DeathKnightRuneState[] {
return Object.freeze(runes.map((rune) => {
if (rune.deathRuneExpiresAt === undefined || rune.deathRuneExpiresAt > now) return rune;
if (rune.deathRuneConversions !== undefined) {
const activeConversions = rune.deathRuneConversions.filter((conversion) => (
Number.isFinite(conversion.expiresAt) && conversion.expiresAt > now
));
if (activeConversions.length > 0) {
const latestExpiry = Math.max(...activeConversions.map((conversion) => conversion.expiresAt));
if (rune.type === "death"
&& rune.deathRuneExpiresAt === latestExpiry
&& activeConversions.length === rune.deathRuneConversions.length) return rune;
return Object.freeze({
...rune,
type: "death",
deathRuneExpiresAt: latestExpiry,
deathRuneConversions: Object.freeze(activeConversions),
});
}
const { deathRuneExpiresAt: _legacyExpiry, deathRuneConversions: _conversions, ...baseRune } = rune;
void _legacyExpiry;
void _conversions;
return Object.freeze({ ...baseRune, type: rune.baseType });
}
if (rune.deathRuneExpiresAt === undefined) return rune;
if (rune.deathRuneExpiresAt > now) {
// Older snapshots only stored Blood Tap's latest expiration. Treat that
// legacy shape as a Blood Tap owner before any newer conversion touches it.
return Object.freeze({
...rune,
deathRuneConversions: Object.freeze([{
source: "blood-tap" as const,
expiresAt: rune.deathRuneExpiresAt,
}]),
});
}
const { deathRuneExpiresAt: _expiredAt, ...baseRune } = rune;
void _expiredAt;
return Object.freeze({ ...baseRune, type: rune.baseType });
@@ -86,6 +118,10 @@ export function activateDeathKnightBloodTapRune(
type: "death" as const,
readyAt: Math.min(rune.readyAt, now),
deathRuneExpiresAt: now + Math.max(1, durationMs),
deathRuneConversions: Object.freeze([{
source: "blood-tap" as const,
expiresAt: now + Math.max(1, durationMs),
}]),
})
: rune));
}