From 67ad0751440c366dcb67d7839e4fd91bc7b7044d Mon Sep 17 00:00:00 2001 From: Natalie Date: Thu, 7 May 2026 00:33:19 -0700 Subject: [PATCH] =?UTF-8?q?feat(@projects/@magic-civilization):=20?= =?UTF-8?q?=E2=9C=A8=20add=20engineer=20and=20caravan=20master=20capture?= =?UTF-8?q?=20objectives?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../p2-55-civilian-capture-system.md | 4 +- .../objectives/p2-55a-engineer-capture.md | 36 ++++++++++++++++ .../p2-55b-caravan-master-capture.md | 40 ++++++++++++++++++ .../objectives/p2-55c-freepeople-capture.md | 41 +++++++++++++++++++ 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 .project/objectives/p2-55a-engineer-capture.md create mode 100644 .project/objectives/p2-55b-caravan-master-capture.md create mode 100644 .project/objectives/p2-55c-freepeople-capture.md diff --git a/.project/objectives/p2-55-civilian-capture-system.md b/.project/objectives/p2-55-civilian-capture-system.md index 54bbaf1b..9a53dffb 100644 --- a/.project/objectives/p2-55-civilian-capture-system.md +++ b/.project/objectives/p2-55-civilian-capture-system.md @@ -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] --- diff --git a/.project/objectives/p2-55a-engineer-capture.md b/.project/objectives/p2-55a-engineer-capture.md new file mode 100644 index 00000000..07b523e4 --- /dev/null +++ b/.project/objectives/p2-55a-engineer-capture.md @@ -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 diff --git a/.project/objectives/p2-55b-caravan-master-capture.md b/.project/objectives/p2-55b-caravan-master-capture.md new file mode 100644 index 00000000..5e21a04b --- /dev/null +++ b/.project/objectives/p2-55b-caravan-master-capture.md @@ -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 diff --git a/.project/objectives/p2-55c-freepeople-capture.md b/.project/objectives/p2-55c-freepeople-capture.md new file mode 100644 index 00000000..e9411f86 --- /dev/null +++ b/.project/objectives/p2-55c-freepeople-capture.md @@ -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)