Release Healer Man 0.1.14

This commit is contained in:
phenom committed 2026-09-05 11:40:50 -04:00
1 parent 67d7a8ebe7
commit 7b41b102fa
147 files changed
+169892 -1342

No files matched your search

+44
View File
@@ -167,6 +167,7 @@ describe("generated dungeon campaign catalog", () => {
"Fear",
"Magic's Bane",
"Corrupt Soul",
"Soulstorm",
]);
expect(attackNames(culling!, "Mal'Ganis")).toEqual([
"Basic Attack",
@@ -204,6 +205,49 @@ describe("generated dungeon campaign catalog", () => {
});
});
it("compiles Archaedas's timed and health-based encounter mechanics", () => {
const uldaman = generated.definitions.find((dungeon) => dungeon.id === "uldaman")!;
const archaedas = Object.values(uldaman.entities).find(
(entity) => entity.name === "Archaedas",
) as unknown as {
readonly combat: {
readonly mechanicIds: readonly string[];
readonly attacks: ReadonlyArray<{
readonly id: string;
readonly initialCooldownMs?: readonly [number, number];
readonly repeatCooldownMs?: readonly [number, number];
readonly condition?: { readonly kind: string; readonly maximum?: number };
readonly effect?: { readonly kind: string; readonly creatureEntry?: number; readonly count?: number };
readonly telegraph?: { readonly shape: string; readonly anchor: string; readonly radius?: number };
}>;
};
};
expect(archaedas.combat.mechanicIds).toEqual([
"archaedas-awaken-earthen-custodian",
"archaedas-ground-tremor",
"archaedas-awaken-earthen-guardians",
"archaedas-awaken-vault-warders",
]);
expect(archaedas.combat.attacks.find((attack) => attack.id === "archaedas-ground-tremor"))
.toMatchObject({
initialCooldownMs: [0, 10_000],
repeatCooldownMs: [14_000, 20_000],
telegraph: { shape: "circle", anchor: "source", radius: 18 },
});
expect(archaedas.combat.attacks.find(
(attack) => attack.id === "archaedas-awaken-earthen-guardians",
)).toMatchObject({
condition: { kind: "self-health-percent", maximum: 70 },
effect: { kind: "summon", creatureEntry: 7076, count: 6 },
});
expect(archaedas.combat.attacks.find(
(attack) => attack.id === "archaedas-awaken-vault-warders",
)).toMatchObject({
condition: { kind: "self-health-percent", maximum: 40 },
effect: { kind: "summon", creatureEntry: 10120, count: 2 },
});
});
it("does not leak outdoor zones, arenas, or raids into the dungeon browser", () => {
const ids = new Set(generated.definitions.map((dungeon) => dungeon.id));
for (const excluded of [