Release Healer Man 0.1.32

This commit is contained in:
phenom committed 2026-09-12 11:07:25 -04:00
1 parent d3d6aaebdb
commit 6dcb1034e5
102 files changed
+10772 -788

No files matched your search

+25 -5
View File
@@ -56,7 +56,7 @@ import {
logoutOnlineSession,
refreshOnlineSession,
} from "./onlineAccountClient";
import { isGameMasterSession } from "../game/manastormAdminConfig";
import { sessionCanUseShelvedGmTools, SHELVED_MODES_ENABLED } from "./releaseFeatures";
import { useGameStore } from "../game/store";
import {
normalizeSpecializationId,
@@ -324,6 +324,10 @@ export const useShellStore = create<ShellState>((set, get) => ({
return true;
},
openManastorms: () => {
if (!SHELVED_MODES_ENABLED) {
set({ notice: "Manastorms are temporarily unavailable." });
return false;
}
const { session, selectedCharacterId, characters } = get();
if (!session || !selectedCharacterId || !characters.some((character) => character.id === selectedCharacterId)) {
set({ phase: session ? "characters" : "login", notice: "Select or create a character first." });
@@ -338,6 +342,10 @@ export const useShellStore = create<ShellState>((set, get) => ({
return true;
},
openArenas: () => {
if (!SHELVED_MODES_ENABLED) {
set({ notice: "Arenas are temporarily unavailable." });
return false;
}
const { session, selectedCharacterId, characters } = get();
if (!session || !selectedCharacterId || !characters.some((character) => character.id === selectedCharacterId)) {
set({ phase: session ? "characters" : "login", notice: "Select or create a character first." });
@@ -348,7 +356,7 @@ export const useShellStore = create<ShellState>((set, get) => ({
},
openGmAdmin: () => {
const { session, selectedCharacterId, characters } = get();
if (!isGameMasterSession(session)) {
if (!sessionCanUseShelvedGmTools(session)) {
set({ notice: "Game Master access is required." });
return false;
}
@@ -429,7 +437,7 @@ export const useShellStore = create<ShellState>((set, get) => ({
},
returnToMainMenu: () => {
useGameStore.setState({ activeGmReviewTarget: null, gmTestMode: false });
manastormShellRuntime()?.leaveActiveGame();
if (SHELVED_MODES_ENABLED) manastormShellRuntime()?.leaveActiveGame();
const { session, characters, activeCharacter, selectedCharacterId } = get();
if (!session) {
set({ phase: "login", activeCharacter: null });
@@ -449,13 +457,21 @@ export const useShellStore = create<ShellState>((set, get) => ({
return false;
},
enterManastorm: (requestedRole, requestedPartySize = 5, requestedStartingLevel) => {
if (!SHELVED_MODES_ENABLED) {
set({ notice: "Manastorms are temporarily unavailable." });
return false;
}
const runtime = manastormShellRuntime();
if (runtime) return runtime.enterManastorm(requestedRole, requestedPartySize, requestedStartingLevel);
set({ notice: "Manastorm data is still loading. Try again in a moment." });
return false;
},
abandonManastormRun: () => manastormShellRuntime()?.abandonRun(),
failActiveManastorm: () => manastormShellRuntime()?.failRun(),
abandonManastormRun: () => {
if (SHELVED_MODES_ENABLED) manastormShellRuntime()?.abandonRun();
},
failActiveManastorm: () => {
if (SHELVED_MODES_ENABLED) manastormShellRuntime()?.failRun();
},
enterWorld: () => get().enterDungeon(DEFAULT_DUNGEON_ID),
returnToCharacters: () => {
useGameStore.setState({ activeGmReviewTarget: null, gmTestMode: false });
@@ -594,6 +610,10 @@ export const useShellStore = create<ShellState>((set, get) => ({
}));
},
saveSelectedManastormLoadout: (loadout) => {
if (!SHELVED_MODES_ENABLED) {
set({ notice: "Manastorms are temporarily unavailable." });
return false;
}
const runtime = manastormShellRuntime();
if (runtime) return runtime.saveSelectedLoadout(loadout);
set({ notice: "Manastorm data is still loading. Try again in a moment." });