Release Healer Man 0.1.9

This commit is contained in:
phenom committed 2026-08-30 14:16:56 -04:00
1 parent c245a199b6
commit d060296ade
74 files changed
+5901 -334

No files matched your search

+49 -2
View File
@@ -1,6 +1,13 @@
import { describe, expect, it } from "vitest";
import type { AuraDefinition } from "../game/combatAuras";
import { auraDefinitionDisplaysInStrip, auraDefinitionIcon } from "./AuraStrip";
import type { ActiveAura, AuraDefinition } from "../game/combatAuras";
import {
LONG_TERM_AURA_DURATION_MS,
auraDisplayName,
auraDefinitionDisplaysInStrip,
auraDefinitionIcon,
auraDefinitionIsLongTerm,
auraDescription,
} from "./AuraStrip";
function aura(overrides: Partial<AuraDefinition> = {}): AuraDefinition {
return {
@@ -12,6 +19,22 @@ function aura(overrides: Partial<AuraDefinition> = {}): AuraDefinition {
};
}
function activeAura(definition: AuraDefinition, remainingAbsorb = 0): ActiveAura {
return {
instanceId: "test-aura-instance",
definition,
sourceId: "source",
targetId: "target",
appliedAt: 1_000,
expiresAt: definition.durationMs === null ? null : 1_000 + definition.durationMs,
stacks: 1,
absorbs: remainingAbsorb > 0
? [{ id: "test-absorb", remaining: remainingAbsorb }]
: [],
procStates: [],
};
}
describe("aura strip visibility", () => {
it("shows ordinary auras and suppresses periodic shadow auras with dedicated timers", () => {
expect(auraDefinitionDisplaysInStrip(aura())).toBe(true);
@@ -24,4 +47,28 @@ describe("aura strip visibility", () => {
);
expect(auraDefinitionIcon(aura())).toBeNull();
});
it("removes internal DBC and aura identifiers from player-facing names", () => {
expect(auraDisplayName(aura({ name: "Power Word: Fortitude (DBC 1243, Aura 29)" }))).toBe(
"Power Word: Fortitude",
);
expect(auraDisplayName(aura({ name: "Arcane Intellect (Aura 13)" }))).toBe(
"Arcane Intellect",
);
});
it("classifies permanent and one-minute effects as long-term without using remaining time", () => {
expect(auraDefinitionIsLongTerm(aura({ durationMs: null }))).toBe(true);
expect(auraDefinitionIsLongTerm(aura({ durationMs: LONG_TERM_AURA_DURATION_MS }))).toBe(true);
expect(auraDefinitionIsLongTerm(aura({ durationMs: LONG_TERM_AURA_DURATION_MS - 1 }))).toBe(false);
});
it("prefers authored tooltip copy and explains absorb-only fallback auras", () => {
expect(auraDescription(activeAura(aura({ description: "Raises armor by 10%." })))).toBe(
"Raises armor by 10%.",
);
expect(auraDescription(activeAura(aura({
absorbs: [{ id: "test-absorb", amount: 250 }],
}), 175))).toBe("Absorbs up to 175 incoming damage.");
});
});