Files
code_of_conquest_dnd/client
Phillip Tarrant eba706b906 test: assert seed-log fields, not a fresh LogPlayer
The previous regression tests in test_entities.gd only constructed their
own LogPlayer and never touched the seed logs the real call sites build
— reverting main_window_shell.gd:124 to the broken 3-arg call still left
the whole suite green. Not a real regression guard.

Now assert against node._log.player in the shell test and against the
two dev-harness scenes' seed logs (narrate_harness, npc_harness — both
cheaply testable via instantiate + add_child_autofree, no scaffolding
needed). Proved the new shell assertion fails when the call site is
reverted to the 3-arg shape (226/227, one failure), then passes restored
(227/227). Removed a redundant ctor test from test_entities.gd; kept the
one that exercises the exact broken-shape call.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QYa9u7Kdxv5gX4AnwWexy8
2026-07-12 20:39:48 -05:00
..
2026-07-09 11:17:54 -05:00

/client — Godot 4.7 game client

GDScript. Holds ALL game state and ALL game rules (charter §2, §4). The AI never mutates state; the client validates and applies everything.

Open: Godot 4.7, import this folder as the project (project.godot).

Responsibilities

  • All state: stats, HP/MP, inventory, quest flags, Luck, disposition/approval (§8, §9)
  • All rules: deterministic combat, Luck branch-selection, move validation (§6, §7, §10)
  • The canon log — compact structured fact list, code-maintained, injected into every call (§11)
  • Talks to /api over HTTP. No API key, ever. Knows one base URL + role endpoints (§4)
  • Degrades to authored fallback text (from /content/fallback) when the API is down (§13)

Key rule — never do this (charter §2)

If an AI response directly sets a variable that persists, stop. Parse → validate → apply or discard.

See docs/ for scene structure, input model, and combat wiring.