forked from phenom/healer-man
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
@@ -1,5 +1,4 @@
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
import { DUNGEON_MANIFEST } from "./dungeonManifest";
|
||||
import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry";
|
||||
import { useCombatStore } from "./combatStore";
|
||||
import { respawnDefeatedPlayer } from "./deathRespawn";
|
||||
@@ -15,13 +14,22 @@ describe("death respawn", () => {
|
||||
useWailingEncounterStore.getState().reset();
|
||||
});
|
||||
|
||||
it("atomically restores the player and encounter at the Wailing Caverns entrance", () => {
|
||||
it("resets only the current pull and preserves cleared enemies and run progress", () => {
|
||||
const startingResource = useCombatStore.getState().maxResource;
|
||||
const checkpointSpawn = { footPosition: [4, -70, 12] as const, yaw: 0.25 };
|
||||
useGameStore.getState().relocatePlayer(checkpointSpawn, true);
|
||||
useGameStore.getState().updatePlayerSnapshot({ position: [10, -50, 20], yaw: 0.5, distanceDelta: 30 });
|
||||
useGameStore.getState().setCameraLookActive(true);
|
||||
|
||||
useCombatStore.getState().registerMob("respawn-pack:a", { name: "Ravager", maxHealth: 100 });
|
||||
useCombatStore.getState().registerMob("cleared-boss", { name: "Cleared Boss", maxHealth: 50, boss: true });
|
||||
useCombatStore.getState().registerMob("naralex-event:ravager:1", {
|
||||
name: "Event Ravager",
|
||||
maxHealth: 75,
|
||||
});
|
||||
setMobPosition("respawn-pack:a", [11, -50, 20]);
|
||||
useCombatStore.getState().damageMob("cleared-boss", 50, 900);
|
||||
useCombatStore.getState().damageMob("naralex-event:ravager:1", 75, 950);
|
||||
useCombatStore.getState().selectMob("respawn-pack:a");
|
||||
useCombatStore.getState().damageMob("respawn-pack:a", 1, 1000);
|
||||
expect(useCombatStore.getState().castAbility("priest-psychic-scream", [10, -50, 20], 2000).ok).toBe(true);
|
||||
@@ -30,14 +38,25 @@ describe("death respawn", () => {
|
||||
);
|
||||
|
||||
const revisionBefore = useGameStore.getState().resetRevision;
|
||||
useWailingEncounterStore.setState({ phase: "mutanus", phaseStartedAt: 5_000 });
|
||||
useWailingEncounterStore.setState({
|
||||
phase: "mutanus",
|
||||
phaseStartedAt: 5_000,
|
||||
flags: { "dungeon-complete": true },
|
||||
completedObjectiveIds: ["mutanus-spawn"],
|
||||
consumedActionIds: [
|
||||
"complete-mutanus-objective",
|
||||
"save-mutanus-checkpoint",
|
||||
"mark-wailing-complete",
|
||||
],
|
||||
checkpointId: "mutanus-spawn",
|
||||
});
|
||||
useCombatStore.getState().damagePlayer(useCombatStore.getState().maxHealth);
|
||||
expect(useCombatStore.getState().health).toBe(0);
|
||||
expect(respawnDefeatedPlayer()).toBe(true);
|
||||
|
||||
expect(useGameStore.getState()).toMatchObject({
|
||||
playerPosition: DUNGEON_MANIFEST.entrance.footPosition,
|
||||
cameraYaw: DUNGEON_MANIFEST.entrance.yaw,
|
||||
playerPosition: checkpointSpawn.footPosition,
|
||||
cameraYaw: checkpointSpawn.yaw,
|
||||
cameraLookActive: false,
|
||||
resetRevision: revisionBefore + 1,
|
||||
});
|
||||
@@ -45,16 +64,29 @@ describe("death respawn", () => {
|
||||
health: useCombatStore.getState().maxHealth,
|
||||
resource: startingResource,
|
||||
selectedTargetId: null,
|
||||
playerPosition: DUNGEON_MANIFEST.entrance.footPosition,
|
||||
playerPosition: checkpointSpawn.footPosition,
|
||||
});
|
||||
expect(useCombatStore.getState().mobs["respawn-pack:a"]).toMatchObject({
|
||||
health: 100,
|
||||
dead: false,
|
||||
engaged: false,
|
||||
});
|
||||
expect(useCombatStore.getState().mobs["cleared-boss"]).toMatchObject({
|
||||
health: 0,
|
||||
dead: true,
|
||||
engaged: false,
|
||||
});
|
||||
expect(useCombatStore.getState().mobs["naralex-event:ravager:1"]).toMatchObject({
|
||||
health: 75,
|
||||
dead: false,
|
||||
engaged: false,
|
||||
});
|
||||
expect(useWailingEncounterStore.getState()).toMatchObject({
|
||||
phase: "locked",
|
||||
phaseStartedAt: 0,
|
||||
flags: { "dungeon-complete": true },
|
||||
completedObjectiveIds: ["mutanus-spawn"],
|
||||
checkpointId: "mutanus-spawn",
|
||||
});
|
||||
|
||||
expect(respawnDefeatedPlayer()).toBe(false);
|
||||
|
||||
Reference in new issue
Block a user