Release Healer Man 0.1.5

This commit is contained in:
phenom committed 2026-08-18 16:22:19 -04:00
1 parent f4c9cf356c
commit 55cfd43d66
62 files changed
+3030 -153

No files matched your search

+22 -1
View File
@@ -51,7 +51,9 @@ import {
activateOnlineSession,
hydrateOnlineSession,
logoutOnlineSession,
refreshOnlineSession,
} from "./onlineAccountClient";
import { isGameMasterSession } from "../game/manastormAdminConfig";
export interface ShellState {
phase: ShellPhase;
@@ -77,6 +79,7 @@ export interface ShellState {
openMainMenu: () => boolean;
openDungeons: () => boolean;
openManastorms: () => boolean;
openGmAdmin: () => boolean;
openClassHall: () => boolean;
chooseRomSecondaryClass: (classId: RomClassId) => boolean;
swapSelectedRomClasses: () => boolean;
@@ -294,6 +297,19 @@ export const useShellStore = create<ShellState>((set, get) => ({
set({ phase: "manastorms", activeCharacter: null, notice: "" });
return true;
},
openGmAdmin: () => {
const { session, selectedCharacterId, characters } = get();
if (!isGameMasterSession(session)) {
set({ notice: "Game Master access is required." });
return false;
}
if (!selectedCharacterId || !characters.some((character) => character.id === selectedCharacterId)) {
set({ phase: "characters", notice: "Select a character before opening GM Tools." });
return false;
}
set({ phase: "gm-admin", activeCharacter: null, notice: "" });
return true;
},
openClassHall: () => {
const { session, selectedCharacterId, characters } = get();
const character = characters.find((entry) => entry.id === selectedCharacterId);
@@ -500,10 +516,15 @@ export function selectedCharacter(state: ShellState): CharacterProfile | null {
if (restored.session?.accessToken) {
activateOnlineSession(restored.session);
void hydrateOnlineSession(restored.session).then((characters) => {
void Promise.all([
hydrateOnlineSession(restored.session),
refreshOnlineSession(restored.session),
]).then(([characters, refreshedSession]) => {
const current = useShellStore.getState().session;
if (current?.ownerId !== restored.session?.ownerId) return;
saveSession(refreshedSession);
useShellStore.setState({
session: refreshedSession,
characters,
selectedCharacterId: characters.some((character) => character.id === useShellStore.getState().selectedCharacterId)
? useShellStore.getState().selectedCharacterId