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