Release Healer Man 0.1.37
This commit is contained in:
1 parent
03a4e3f51c
commit
361734bc41
41 files changed
+1714
-110
No files matched your search
@@ -6,6 +6,8 @@ import {
|
||||
registerPartyRuntimePosition,
|
||||
updatePartyRuntimeAttackCorridor,
|
||||
updatePartyRuntimeTargetVisibility,
|
||||
beginPartyRuntimeRejoin,
|
||||
finishPartyRuntimeRejoin,
|
||||
} from "./partyRuntimeRegistry";
|
||||
import {
|
||||
activePartyTargetId,
|
||||
@@ -47,6 +49,36 @@ describe("party combat runtime", () => {
|
||||
expect(activePartyTargetId(mobs, null)).toBe("pack:a");
|
||||
});
|
||||
|
||||
it("lets a resurrected tank rejoin independently instead of taunting or casting from its checkpoint", () => {
|
||||
registerEngagedMob();
|
||||
const tank = usePartyStore.getState().members.find((member) => member.role === "tank")!;
|
||||
for (const member of usePartyStore.getState().members) registerPartyRuntimePosition(member.id, [0, 0, 0]);
|
||||
beginPartyRuntimeRejoin(tank.id, [1_000, 0, 0]);
|
||||
const beforeHealth = useCombatStore.getState().mobs["pack:a"].health;
|
||||
advanceDungeonPartyCombat(1_000);
|
||||
expect(usePartyStore.getState().members.find((member) => member.id === tank.id))
|
||||
.toMatchObject({ status: "advancing", activeCast: null, activeCastTargetId: null });
|
||||
expect(usePartyStore.getState().memberTargetIds[tank.id]).toBeUndefined();
|
||||
expect(useCombatStore.getState().mobs["pack:a"].forcedTarget?.actorId).not.toBe(tank.id);
|
||||
expect(useCombatStore.getState().mobs["pack:a"].health).toBeLessThan(beforeHealth);
|
||||
finishPartyRuntimeRejoin(tank.id);
|
||||
registerPartyRuntimePosition(tank.id, [0, 0, 0]);
|
||||
advanceDungeonPartyCombat(2_000);
|
||||
expect(usePartyStore.getState().memberTargetIds[tank.id]).toBe("pack:a");
|
||||
});
|
||||
|
||||
it("keeps returning teammates advancing during Stop, then resumes the party order when they arrive", () => {
|
||||
const tank = usePartyStore.getState().members.find((member) => member.role === "tank")!;
|
||||
usePartyStore.getState().setCommand("stop");
|
||||
beginPartyRuntimeRejoin(tank.id, [0, 0, 0]);
|
||||
advanceDungeonPartyCombat(1_000);
|
||||
expect(usePartyStore.getState().members.find((member) => member.id === tank.id)?.status).toBe("advancing");
|
||||
finishPartyRuntimeRejoin(tank.id);
|
||||
advanceDungeonPartyCombat(2_000);
|
||||
expect(usePartyStore.getState().command).toBe("stop");
|
||||
expect(usePartyStore.getState().members.find((member) => member.id === tank.id)?.status).toBe("holding");
|
||||
});
|
||||
|
||||
it("has the tank taunt the active mob while all damage allies attack it", () => {
|
||||
registerEngagedMob();
|
||||
for (const member of usePartyStore.getState().members) {
|
||||
|
||||
Reference in new issue
Block a user