docs(@projects/@magic-civilization): p3-26 B6 DONE — equipment craft→equip→combat live; loot=B5 parity-optional

B6 complete: B6a (recipe refinement) + B6b core (MapUnit.equipped + combat-read + CraftEquipment
action). Full chain — refine raw→processed → craft (consume materials) → equip → unit fights
harder. Loot drop-on-death/decay (B5) is parity-optional (disabled in the live game too).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Natalie 2026-06-26 23:46:41 -04:00
parent 5288555bdb
commit 245a0af95a

View file

@ -80,10 +80,11 @@ PvP/siege/lair combat, climate physics+weather+effects, 3 event categories.
directly (unit tile → owning city via CityState.owned_tiles → push pending w/ build_turns); a
build-tick phase decrements + completes into city_improvements[ci]; FFI + harness boot. Full subsystem.
- [ ] **B4 Government/civics per-turn**`mc-civics`; (disabled in live too — stub).
- [ ] **B5 Loot decay**`mc-city` items; (disabled in live too).
- [~] **B5 Loot decay** — PARITY (disabled in the live game too; not a gap). mc-items::process_loot_decay exists; revive only if live re-enables loot.
- [~] **B6 Equipment/crafting — B6a DONE, B6b remaining**
- [x] **B6a resource-refinement** ✅ (178a3d5b8 + 7001d68f7): mc_city::recipes wired into the turn — recipe_phase loads strategic_ledger → ResourceStockpile, tick_recipes (consume raw → produce refined) over the player's buildings, writes back; recipes_json boot + FFI + harness. Real economic transform.
- [ ] **B6b equipment+combat+loot** (combat-spanning, inert without combat reading gear) — `mc-items` HAS item logic (EquippedItem, charges, drop_all_loot, process_loot_decay) but UNWIRED; `mc-city/recipes.rs` HAS resource refinement (Recipe consumes/produces, tick_recipe(&mut ResourceStockpile), QualityTier) but UNWIRED. Bench has NO ResourceStockpile (not on City/Player) and MapUnit carries NO `equipped` items; no Craft/Equip action; combat doesn't read gear. **5-step interlocking plan:** (1) CityState += ResourceStockpile fed by deposit/economy; (2) RecipeRegistry boot + recipe-tick phase → QualityTier products; (3) MapUnit += equipped + Craft/Equip actions; (4) mc-combat reads equipped (charges/bonuses); (5) wire process_loot_decay (closes B5). No clean sub-slice — pieces interlock across mc-state/city/items/combat/player-api.
- [x] **B6b equipment combat (core) DONE** ✅ (b22e98275 equipped state · 564a7ed4a combat-read · 10923f468 item-table boot · 70415b922 CraftEquipment): MapUnit.equipped + item_combat table; equip_combat_bonus injected into BOTH combat paths (attack/defense, safe — 0 for unequipped); CraftEquipment action consumes materials (B6a's refined outputs) → equips. Full chain: refine → craft → equip → fights harder. mc-player-api 138/0, mc-turn 284/0.
- [~] **Loot drop-on-death + decay** = B5 — **disabled in the live game too**, so headless-absent is PARITY not a gap (building it would gold-plate behavior the live game doesn't run). drop_all_loot/process_loot_decay exist in mc-items if ever revived; unit-death hook is scattered across combat sites. — `mc-items` HAS item logic (EquippedItem, charges, drop_all_loot, process_loot_decay) but UNWIRED; `mc-city/recipes.rs` HAS resource refinement (Recipe consumes/produces, tick_recipe(&mut ResourceStockpile), QualityTier) but UNWIRED. Bench has NO ResourceStockpile (not on City/Player) and MapUnit carries NO `equipped` items; no Craft/Equip action; combat doesn't read gear. **5-step interlocking plan:** (1) CityState += ResourceStockpile fed by deposit/economy; (2) RecipeRegistry boot + recipe-tick phase → QualityTier products; (3) MapUnit += equipped + Craft/Equip actions; (4) mc-combat reads equipped (charges/bonuses); (5) wire process_loot_decay (closes B5). No clean sub-slice — pieces interlock across mc-state/city/items/combat/player-api.
- [ ] **B7 Per-building queues** — dual-city-model unification (was gap 4).
- [~] **B8 event categories — 7/12 live** ✅ wildfire/drought/volcanic/seismic/impact/tsunami (a18e1394b) + plague terrain-blight (4be44db3a). Remaining: solar/glacial (need solar_forcing/glacial_forcing physics consumption); pandemic+marine fauna-side + the fauna disease mechanism itself (see [[p3-27-biosphere-headless]]); magical→G3.
- [ ] **Biosphere cluster → see [[p3-27 ...]]** (ecology population + flora succession + marine).