Skip to content

feat: add combat save/load and TUI combat display#7

Merged
amirna2 merged 1 commit intomainfrom
feat/combat-save-tui
Mar 2, 2026
Merged

feat: add combat save/load and TUI combat display#7
amirna2 merged 1 commit intomainfrom
feat/combat-save-tui

Conversation

@amirna2
Copy link
Owner

@amirna2 amirna2 commented Mar 2, 2026

Summary

  • Save/load combat state: CombatState and RNGPosition serialized in SaveData, RestoreRNG wired into CLI and TUI load paths. Backward compatible with old saves.
  • TUI combat display: Lipgloss bordered boxes for COMBAT (orange health bars), VICTORY (green), DEFEAT (red), and GAME OVER screens. Dynamic combat prompt, game over input blocking, combat-aware line coloring, HP in status bar.
  • Game content fixes: Goblin blade becomes takeable after defeat, added "use key on case" / "open case" armory rules, gold counter shown in inventory.

Plan

docs/design/combat-implementation.md — Phase 4, tasks 29-35 (all complete).

Files changed

File Change
engine/save/save.go Add Combat + RNGPosition to SaveData, Save(), ApplySave()
engine/save/save_test.go 3 round-trip tests (combat state, RNG position, old save compat)
engine/engine.go Gold in inventory display
cli/cli.go RestoreRNG after load, combat in /state, combat in /help
tui/combat.go NewhealthBar, renderCombatStatus, renderVictory, renderDefeat, renderGameOver, injectBorderTitle
tui/style.go New lineKind values + styles for combat/game-over/pre-styled
tui/tui.go Combat injection, dynamic prompt, game over blocking, combat-aware coloring
tui/status.go HP display in status bar
tui/tui_test.go TestHealthBar, TestInjectBorderTitle
games/lost_crown/enemies.lua Blade takeable on defeat via SetProp
games/lost_crown/rules.lua use_key_on_case, open_case_with_key rules
docs/design/combat-implementation.md Mark phases 1-4 complete

Test plan

  • go test ./... — all green
  • golangci-lint run — clean
  • Playtest: fight goblin → see health bars + orange text + combat prompt
  • Playtest: win → see VICTORY box with enemy at 0 HP
  • Playtest: die → see DEFEAT box + GAME OVER screen
  • Playtest: mid-combat /save/quit → relaunch → /load → combat resumes
  • Playtest: inventory shows gold after loot
  • Playtest: take blade works after goblin dies

🤖 Generated with Claude Code

Save/load combat state: CombatState and RNGPosition are now serialized
in SaveData, with RestoreRNG wired into both CLI and TUI load paths.
Old saves without combat fields load cleanly (zero-value defaults).

TUI combat display: lipgloss bordered boxes for COMBAT (health bars),
VICTORY (green, enemy at 0 HP), DEFEAT (red, player at 0 HP), and
GAME OVER screens. Dynamic combat prompt, game over input blocking,
combat-aware line coloring, HP in status bar.

Game content fixes: goblin blade becomes takeable after defeating the
goblin, added "use key on case" / "open case" rules for the armory
display case, gold counter shown in inventory output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@amirna2 amirna2 merged commit 3a2d15e into main Mar 2, 2026
7 checks passed
@amirna2 amirna2 deleted the feat/combat-save-tui branch March 2, 2026 07:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant