Add Fallout effects toggle to graphics settings ☢️ (#4313)

## Summary

Adds a **"Fallout effects"** toggle to the *Effects* section of the
graphics settings modal, letting players disable the nuclear fallout
visuals (useful for performance).

Fallout is rendered by two passes — the broiling green **bloom** on
irradiated territory and its additive **light** contribution in
day/night mode. The bloom pass was already gated by
`passEnabled.falloutBloom`, but the light pass had no gate. This adds a
`passEnabled.falloutLight` flag and a single user-facing
`passEnabled.fallout` graphics override that drives both together.

## Changes

- **`RenderSettings.ts` / `render-settings.json`** — new
`passEnabled.falloutLight` flag (default `true`).
- **`LightmapPass.ts`** — gate the fallout light pass behind
`passEnabled.falloutLight`.
- **`GraphicsOverrides.ts`** — add `fallout: z.boolean()` to the
`passEnabled` override group.
- **`RenderOverrides.ts`** — apply `passEnabled.fallout` to both
`falloutBloom` and `falloutLight`.
- **`GraphicsSettingsModal.ts`** — `currentFallout()` /
`onToggleFallout()` + a toggle button (mirrors the existing Special
Effects toggle).
- **`en.json`** — `graphics_setting.fallout_label` / `fallout_desc`.

## Testing

- `tsc --noEmit` passes; JSON files validated.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Evan
2026-06-16 18:56:07 -07:00
committed by GitHub
co-authored by Claude Opus 4.8
parent e6256e6269
commit bb464538d0
7 changed files with 46 additions and 1 deletions
@@ -487,6 +487,17 @@ export class GraphicsSettingsModal extends LitElement implements Controller {
this.patchPassEnabled({ fx: !this.currentSpecialEffects() });
}
private currentFallout(): boolean {
return (
this.userSettings.graphicsOverrides().passEnabled?.fallout ??
renderDefaults.passEnabled.falloutBloom
);
}
private onToggleFallout() {
this.patchPassEnabled({ fallout: !this.currentFallout() });
}
/** Whether colorblind mode is currently enabled. */
private currentColorblind(): boolean {
return (
@@ -1137,6 +1148,25 @@ export class GraphicsSettingsModal extends LitElement implements Controller {
</div>
</button>
<button
class="flex gap-3 items-center w-full text-left p-3 hover:bg-slate-700 rounded-sm text-white transition-colors"
@click=${this.onToggleFallout}
>
<div class="flex-1">
<div class="font-medium">
${translateText("graphics_setting.fallout_label")}
</div>
<div class="text-sm text-slate-400">
${translateText("graphics_setting.fallout_desc")}
</div>
</div>
<div class="text-sm text-slate-400">
${this.currentFallout()
? translateText("user_setting.on")
: translateText("user_setting.off")}
</div>
</button>
<div
class="px-3 py-1 text-xs font-semibold text-slate-400 uppercase tracking-wider mt-2"
>