Add gat-description modal when a Pi-Rat earns a Gat

Mirrors the name modal: earning the Gat objective sets
Player.needs_gat_description, and GatModal.svelte (rendered by Dashboard
across all phases) prompts for a one-of-a-kind Gat description, stored in
Player.gat_description and shown on the character sheet. Like a stolen
Name, the Gat's description travels with it through Gat Tax transfers.

- Player.gat_description / needs_gat_description (+ migration)
- toggle_objective personal_1 sets/clears the prompt
- crud_challenge gat-tax paths move the description with the Gat
- set-gat-description route; CharacterSheet displays it

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 09:46:02 -07:00
parent 7825ad2cca
commit 44bbb88836
9 changed files with 155 additions and 1 deletions

View File

@@ -17,6 +17,7 @@
import GameOverPhase from '../components/GameOverPhase.svelte';
import EventLog from '../components/EventLog.svelte';
import NameModal from '../components/NameModal.svelte';
import GatModal from '../components/GatModal.svelte';
export let params = {};
let gameId = params.id;
@@ -212,6 +213,7 @@
<EventLog {state} />
<NameModal {state} />
<GatModal {state} />
{:else if !error}
<div class="loading-container">
<p>Loading game state...</p>