docs(objective): record B6c headless promotion system (apply + combat effects)
Promotions were half-built headless (eligible + AI-picked but never consumed, combat read no modifier). Now closed: MapUnit.promotions, mc-turn consume phase, mc-combat effect registry + per-unit combat modifiers at both PvP sites. 9/18 effect types live (every combat-expressible one); 9 deferred on missing combat substrate (auras/multi-attack/splash/movement-waivers/status-on-attack) — flagged as separate combat-feature objectives for an owner scope call. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e24c1a03d2
commit
f0e483397d
1 changed files with 23 additions and 0 deletions
|
|
@ -128,6 +128,29 @@ PvP/siege/lair combat, climate physics+weather+effects, 3 event categories.
|
|||
- [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.
|
||||
- [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.
|
||||
- [~] **B6c unit promotions (apply + combat effects) — core DONE 2026-06-27** ✅ (c83b0bfb5
|
||||
registry+aggregator · c10727c7d consume-phase+combat-inject). Was HALF-BUILT: units became
|
||||
promotion-eligible (`check_promotion`) + the AI picked (`apply_promote` set
|
||||
`MapUnit.pending_promotion`) but the pick was **never consumed** and combat read **no** promotion
|
||||
modifier. Now closed: `MapUnit.promotions: Vec<String>` (applied ids); `mc-turn::
|
||||
consume_pending_promotions` phase validates (requires/excludes/dupes), folds `hp_bonus` →
|
||||
`max_hp`, `heal_on_promote` (clamped), records id, clears pick; `mc-combat` parses the embedded
|
||||
`promotions.json` `trees` into an effect registry (`{type,value,condition}` — replaced the stale
|
||||
`{stat,value}`) + `promotion_combat_modifiers(applied, ctx)`; `promotion_combat_bonus` injected
|
||||
into BOTH PvP combat sites with real terrain/target context (mirrors `equip_combat_bonus`).
|
||||
mc-combat 158/0, mc-turn 297/0.
|
||||
- **9/18 effect types LIVE** (every effect the headless combat engine can express): attack_percent,
|
||||
defense_percent, ranged_attack_percent, ranged_attack_flat, range_bonus, hp_bonus,
|
||||
movement_bonus, wall_damage_multiplier, xp_multiplier — all condition-gated (open_terrain/
|
||||
rough_terrain/in_city/vs_city/vs_fortified/vs_ranged).
|
||||
- **9/18 DEFERRED — blocked on missing combat-engine SUBSTRATE, not promotion work** (each parsed
|
||||
+ validated, inert-by-design, `// TRACKED:` no-op, never silent-zero): healing_aura/combat_aura
|
||||
(need per-turn adjacency-aura scan); attack_per_hp_lost (needs resolver-internal current-HP read);
|
||||
double_attack (needs multi-attack turn-flow); area_attack/splash_damage (need multi-target splash
|
||||
geometry); ignore_terrain_cost/ignore_terrain_movement (need per-unit movement-waiver substrate);
|
||||
debuff_on_attack (needs status-on-attack hook). **Owner note:** these are separate combat-feature
|
||||
objectives (multi-target combat, adjacency auras, multi-attack flow, status-on-attack) — building
|
||||
them is a much larger combat-engine expansion, surfaced for a scope call rather than auto-built.
|
||||
- [ ] **B7 Per-building queues** — dual-city-model unification (was gap 4).
|
||||
- [~] **B8 event categories — 9/12 live** ✅ wildfire/drought/volcanic/seismic/impact/tsunami/plague (terrain) + solar (global warming) + glacial (cold) via magic_heat_delta forcing (fc3db77c7). pandemic/ecological FAUNA handled by mc-ecology disease applier; marine ticks via process_step; magical→G3. Effectively complete.
|
||||
- [ ] **Biosphere cluster → see [[p3-27 ...]]** (ecology population + flora succession + marine).
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue