37ec1bb1bea37474b872d85e4adf7f5f4846e4e1
Money stops being a flat `coin` and becomes copper, stored as a single int, formatted only at the display edge. The approved model (1g = 100s = 10,000c, store everything in copper) said money should stay an inventory item under one `copper` id. It can't. §6 is what kills it: `give_item(x)` adds exactly 1 and carries no quantity, and `gifts_given` is a global one-shot keyed by item id — so a single `copper` id would be givable once, for one copper, for the whole campaign. So the purse is one int on GameState, and the three denominations are content items that exist only to let a bounded move name a unit — give_item(gold) is +10,000c. Three ids, not three buckets: the change-making problem never arises because there is only ever one number. A quantity arg on the move was rejected — it hands the model an unbounded integer to invent, which is the §2 line. Currency routes to the purse and never enters `inventory`, so it can't appear in an inventory grid by construction. No filter needed. Prices remain content and remain M8. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QYa9u7Kdxv5gX4AnwWexy8
coc-rpg
AI-driven single-player, party-based fantasy RPG. Godot 4 client, FastAPI proxy, AI as Dungeon Master.
Read CLAUDE.md first — project charter and working agreement. It is the source of truth. If code disagrees with it, the charter wins until the charter is changed.
The one rule
Code owns state. AI owns text. (charter §2)
Repo layout
/client Godot 4.7 game client (GDScript) — ALL game state, ALL game rules
/docs Client-specific docs (scenes, input, combat wiring)
/api FastAPI proxy — auth, metering, prompt routing, logging (charter §4)
/docs API-specific docs (endpoints, model routing, deploy)
/prompts Role prompts — source code, versioned, reviewed (charter §5, §16)
/content Authored game data — quests, NPC knowledge lists, fallback text
/quests Story skeletons and quest definitions
/npcs Per-NPC knowledge lists (charter §6 — "the whole design")
/fallback Authored degraded-DM text for every AI surface (charter §13)
/docs Cross-cutting docs — roadmap, ADRs, planning affecting both sides
/adr Architecture Decision Records
The three processes (charter §4)
client (GDScript) ──HTTP──▶ api (FastAPI) ──▶ Replicate / Ollama
The client holds no API key, ever. It knows one base URL and a set of role endpoints. It sends game state, receives text.
Description
Languages
Text
100%