Release Healer Man 0.1.22

This commit is contained in:
phenom committed 2026-09-09 11:21:33 -04:00
1 parent f6f2375145
commit 7f6001723a
144 files changed
+54107 -690

No files matched your search

+18 -2
View File
@@ -9,8 +9,13 @@ import { useManastormStore } from "./manastormStore";
import {
activateDungeonEncounterDefinitions,
advanceDungeonEncounters,
dispatchActiveDungeonEntityEvent,
resetDungeonEncounters,
} from "./dungeonEncounterRuntime";
import {
deriveDungeonEncounterCombatEvents,
type DungeonEncounterMobCursor,
} from "./dungeonEncounterCombatEvents";
import { requireDungeonDefinition } from "./dungeonRegistry";
import {
onlineSessionIsActive,
@@ -27,9 +32,11 @@ export function CombatBridge() {
const character = useShellStore((state) => state.activeCharacter);
const gameMode = useGameStore((state) => state.gameMode);
const activeDungeonId = useGameStore((state) => state.activeDungeonId);
const activeDifficultyId = useGameStore((state) => state.activeDifficultyId);
const activeRole = useShellStore((state) => state.activeDungeonRole);
const encounterResetRevision = useGameStore((state) => state.encounterResetRevision);
const mountedResetRevision = useRef(encounterResetRevision);
const encounterMobCursor = useRef<DungeonEncounterMobCursor>({});
useEffect(() => {
if (!character) return;
@@ -44,12 +51,14 @@ export function CombatBridge() {
useEffect(() => {
const definition = requireDungeonDefinition(activeDungeonId);
activateDungeonEncounterDefinitions(activeDungeonId, definition.encounters ?? []);
}, [activeDungeonId]);
encounterMobCursor.current = {};
activateDungeonEncounterDefinitions(activeDungeonId, definition.encounters ?? [], activeDifficultyId);
}, [activeDifficultyId, activeDungeonId]);
useEffect(() => {
if (mountedResetRevision.current === encounterResetRevision) return;
mountedResetRevision.current = encounterResetRevision;
encounterMobCursor.current = {};
useCombatStore.getState().resetEncounter();
resetDungeonEncounters("dungeon", useGameStore.getState().activeDungeonId);
}, [encounterResetRevision]);
@@ -126,6 +135,13 @@ export function CombatBridge() {
useCombatStore.getState().synchronizeActors();
if (onlineSessionOwnsWorldSimulation() && game.gameMode === "dungeon") {
const mobs = useCombatStore.getState().mobs;
const combatEvents = deriveDungeonEncounterCombatEvents(
encounterMobCursor.current,
mobs,
epochNow,
);
encounterMobCursor.current = combatEvents.cursor;
for (const event of combatEvents.events) dispatchActiveDungeonEntityEvent(event);
const registeredEntityIds = Object.keys(mobs);
advanceDungeonEncounters(game.activeDungeonId, {
kind: "tick",