feat(@projects/@magic-civilization): add engineer and caravan master capture objectives

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-05-07 00:33:19 -07:00
parent 45e15c5339
commit 67ad075144
4 changed files with 119 additions and 2 deletions

View file

@ -5,9 +5,9 @@ priority: p2
status: partial
scope: game1
category: combat
owner:
owner: combat-dev
created: 2026-05-03
updated_at: 2026-05-03
updated_at: 2026-05-07
blocked_by: []
follow_ups: [p2-55a-engineer-capture, p2-55b-caravan-master-capture, p2-55c-freepeople-capture, p2-55d-ai-ransom-decision-hook, p2-55e-richer-ransom-events, p2-55f-ransom-duration-from-json]
---

View file

@ -0,0 +1,36 @@
---
id: p2-55a
title: "Engineer (Great Person) capture mechanics"
priority: p2
status: stub
scope: game1
category: combat
owner: combat-dev
created: 2026-05-07
updated_at: 2026-05-07
blocked_by: [p2-55]
follow_ups: []
---
## Context
Engineers (Great People) have distinct strategic value — multi-turn build actions per p2-53i — and warrant their own balance pass separate from the core civilian capture system (p2-55).
This objective extends the p2-55 capture mechanic to cover Great Engineer units with appropriate balance tuning.
## Out of scope from p2-55
From p2-55: "Engineers carry distinct strategic value (multi-turn build actions per p2-53i) and warrant their own balance pass."
## Acceptance
- [ ] Engineer unit type (great_engineer, forge_engineer, etc.) carries `"capturable": true` with a distinct `"ransom_multiplier"` tuned higher than workers (reflecting unique strategic value)
- [ ] Capture of an engineer mid-improvement-action: define what happens to the in-progress improvement (canceled? suspended? transferred?)
- [ ] AI scoring accounts for engineer's high build_cost × multiplier in `score_capture_postures`
- [ ] Tests cover engineer-specific capture edge cases
- [ ] `cargo test -p mc-combat -p mc-ai` green
## Notes
- Blocked on p2-55 (core capture infrastructure)
- Engineer action vocabulary defined in p2-53i

View file

@ -0,0 +1,40 @@
---
id: p2-55b
title: "Caravan master capture mechanics"
priority: p2
status: stub
scope: game1
category: combat
owner: combat-dev
created: 2026-05-07
updated_at: 2026-05-07
blocked_by: [p2-55]
follow_ups: []
---
## Context
Caravan master capture interacts with trade-route severance, gold-in-transit semantics, and post-capture reroute behaviour that don't yet have a model. Deferred from the core p2-55 civilian capture system.
## Out of scope from p2-55
From p2-55: "Caravan capture interacts with trade-route severance, gold-in-transit semantics, and post-capture reroute behaviour that don't yet have a model."
## Design questions to resolve before implementation
- What happens to gold-in-transit on an active trade route when the caravan is captured? (A: likely lost; B: held with ransom; C: partial payment)
- Does capturing a caravan sever its origin trade route? Does the capturing player inherit the route?
- Post-capture: captured caravan can be put to work on captor's routes? Or only ransomed?
## Acceptance
- [ ] Design questions answered and locked in this doc
- [ ] `caravan_master.json` carries `"capturable": true` with appropriate `"ransom_multiplier"` (reflecting trade-route value)
- [ ] Trade-route severance on capture wired in mc-economy or mc-turn
- [ ] Tests cover caravan capture + trade-route interaction
- [ ] `cargo test -p mc-combat -p mc-economy` green
## Notes
- Blocked on p2-55 (core capture infrastructure)
- Requires trade-route model to exist before implementation

View file

@ -0,0 +1,41 @@
---
id: p2-55c
title: "Freepeople capture mechanics"
priority: p2
status: stub
scope: game1
category: combat
owner: combat-dev
created: 2026-05-07
updated_at: 2026-05-07
blocked_by: [p2-55]
follow_ups: []
---
## Context
Freepeople have a distinct lifecycle (unlanded → settler → integration) that must be defined before capture rules can compose with it. Deferred from the core p2-55 civilian capture system.
## Out of scope from p2-55
From p2-55: "Freepeople have a distinct lifecycle (unlanded → settler → integration) that must be defined before capture rules can compose with it."
## Design questions to resolve before implementation
- What is the freepeople lifecycle? (unlanded → settler → integration — needs spec)
- Capturing an unlanded freepeople group: do they become labor slaves? Settlers for the captor? Ransomed as a group?
- Capturing an integrated freepeople: distinct from capturing the city they integrated into?
- Does freepeople capture interact with the population mechanic differently than worker capture?
## Acceptance
- [ ] Freepeople lifecycle spec finalized (referenced from p1-57 diplomacy or dedicated freepeople objective)
- [ ] Capture rules for each lifecycle stage defined and locked
- [ ] Freepeople unit(s) carry `"capturable": true` with lifecycle-appropriate `"ransom_multiplier"`
- [ ] Tests cover each capture scenario per lifecycle stage
- [ ] `cargo test -p mc-combat` green
## Notes
- Blocked on p2-55 (core capture infrastructure)
- Blocked on freepeople lifecycle spec (p1-57 or dedicated objective)