Release Healer Man 0.1.29

This commit is contained in:
phenom committed 2026-09-11 14:26:15 -04:00
1 parent 8c9809d3e0
commit 544c1bee91
120 files changed
+4363 -1036

No files matched your search

+11 -7
View File
@@ -123,13 +123,13 @@ function OptionsDialog({
const toggleOriginalMedia = () => {
if (combatMediaAction.kind === "downloading" || combatMediaAction.kind === "removing") return;
if (combatMediaInstalled && !presentationSettings.originalMediaEnabled) {
onPresentationChange({ originalMediaEnabled: true });
onPresentationChange({ originalMediaEnabled: true, vfxMode: "original" });
return;
}
if (combatMediaInstalled) {
setCombatMediaAction({ kind: "removing" });
void removeCombatMediaPack().then(() => {
onPresentationChange({ originalMediaEnabled: false, vfxMode: "generated" });
onPresentationChange({ originalMediaEnabled: false });
setCombatMediaAction({ kind: "idle" });
}).catch((error: unknown) => setCombatMediaAction({
kind: "error",
@@ -141,7 +141,7 @@ function OptionsDialog({
void downloadCombatMediaPack(({ completed, total }) => {
setCombatMediaAction({ kind: "downloading", completed, total });
}).then(() => {
onPresentationChange({ originalMediaEnabled: true });
onPresentationChange({ originalMediaEnabled: true, vfxMode: "original" });
setCombatMediaAction({ kind: "idle" });
}).catch((error: unknown) => setCombatMediaAction({
kind: "error",
@@ -164,6 +164,7 @@ function OptionsDialog({
previewFrameRate: nextFrameRateLimit(settings.previewFrameRate, PREVIEW_FRAME_RATE_LIMITS),
});
const actions = useMemo<MenuAction[]>(() => [
{ id: "option-keybinds", run: () => useGameStore.getState().openOverlay("keybinds") },
{ id: "option-gameplay-frame-rate", run: cycleGameplayFrameRate },
{ id: "option-preview-frame-rate", run: cyclePreviewFrameRate },
...TOGGLES.map((option) => ({
@@ -221,6 +222,9 @@ function OptionsDialog({
</header>
<div className="options-panel__list">
<div className="option-row"><span><strong>Keybinds</strong><small>View and change every PC and Controller action. Resolve conflicts or restore movement.</small></span>
{optionButton("option-keybinds", "Keybinds", () => useGameStore.getState().openOverlay("keybinds"))}
</div>
<h3 className="options-panel__section-title">Performance</h3>
<div className="option-row">
<span><strong>Gameplay frame rate</strong><small>Limit 3D gameplay rendering without changing combat or physics timing.</small></span>
@@ -286,10 +290,10 @@ function OptionsDialog({
<span>
<strong>Original spell effects &amp; sounds</strong>
<small>{originalMediaReady
? "Stored on this device. Original visuals and authentic combat sounds are available."
? "Stored on this device. Original spell effects and sounds are ready. Missing sounds stay silent."
: combatMediaInstalled
? "Stored on this device. Enable the pack to use original visuals and authentic combat sounds."
: "Not downloaded by default. Download this optional media pack to unlock original visuals and authentic combat sounds."}</small>
: "Original spell effects and sounds download automatically when enabled. Generated visuals cover missing effects; missing sounds stay silent."}</small>
{combatMediaAction.kind === "error"
? <small role="status">{combatMediaAction.message}</small>
: null}
@@ -305,9 +309,9 @@ function OptionsDialog({
<span>
<strong>Spell visual mode</strong>
<small>{!originalMediaReady
? "Generated effects are used until the optional original media pack is downloaded."
? "Original effects are preferred by default. Generated visuals are the backup while original media is unavailable."
: presentationSettings.vfxMode === "original"
? "Use only packaged original source effects. Unsupported spells show no visual effect."
? "Use original spell effects first, with generated visuals only when an original effect is unavailable."
: "Use the current generated combat effects."}</small>
</span>
{optionButton(