Release Healer Man 0.1.22
This commit is contained in:
1 parent
f6f2375145
commit
7f6001723a
144 files changed
+54107
-690
No files matched your search
@@ -0,0 +1,48 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { deriveDungeonEncounterCombatEvents } from "./dungeonEncounterCombatEvents";
|
||||
|
||||
describe("dungeon encounter combat event bridge", () => {
|
||||
it("emits stable engage, descending health, and death edges once", () => {
|
||||
const engaged = deriveDungeonEncounterCombatEvents({}, {
|
||||
boss: { engaged: true, dead: false, despawned: false, health: 1_000, maxHealth: 1_000 },
|
||||
}, 1);
|
||||
expect(engaged.events).toEqual([{ kind: "entity-engaged", entityId: "boss", now: 1 }]);
|
||||
|
||||
const damaged = deriveDungeonEncounterCombatEvents(engaged.cursor, {
|
||||
boss: { engaged: true, dead: false, despawned: false, health: 490, maxHealth: 1_000 },
|
||||
}, 2);
|
||||
expect(damaged.events).toEqual([{
|
||||
kind: "entity-health",
|
||||
entityId: "boss",
|
||||
healthPercent: 49,
|
||||
now: 2,
|
||||
}]);
|
||||
|
||||
const unchanged = deriveDungeonEncounterCombatEvents(damaged.cursor, {
|
||||
boss: { engaged: true, dead: false, despawned: false, health: 490, maxHealth: 1_000 },
|
||||
}, 3);
|
||||
expect(unchanged.events).toEqual([]);
|
||||
|
||||
const dead = deriveDungeonEncounterCombatEvents(unchanged.cursor, {
|
||||
boss: { engaged: false, dead: true, despawned: false, health: 0, maxHealth: 1_000 },
|
||||
}, 4);
|
||||
expect(dead.events).toEqual([{ kind: "entity-death", entityId: "boss", now: 4 }]);
|
||||
expect(deriveDungeonEncounterCombatEvents(dead.cursor, {
|
||||
boss: { engaged: false, dead: true, despawned: false, health: 0, maxHealth: 1_000 },
|
||||
}, 5).events).toEqual([]);
|
||||
});
|
||||
|
||||
it("does not treat scripted despawn as death and permits a later respawn edge", () => {
|
||||
const first = deriveDungeonEncounterCombatEvents({}, {
|
||||
add: { engaged: true, dead: false, despawned: false, health: 100, maxHealth: 100 },
|
||||
}, 1);
|
||||
const despawned = deriveDungeonEncounterCombatEvents(first.cursor, {
|
||||
add: { engaged: false, dead: false, despawned: true, health: 100, maxHealth: 100 },
|
||||
}, 2);
|
||||
expect(despawned.events).toEqual([]);
|
||||
expect(despawned.cursor).toEqual({});
|
||||
expect(deriveDungeonEncounterCombatEvents(despawned.cursor, {
|
||||
add: { engaged: true, dead: false, despawned: false, health: 100, maxHealth: 100 },
|
||||
}, 3).events).toEqual([{ kind: "entity-engaged", entityId: "add", now: 3 }]);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user