From 4c41ecf66e3629c31386ef69543be4556ce7fe73 Mon Sep 17 00:00:00 2001 From: Natalie Date: Fri, 26 Jun 2026 21:04:30 -0400 Subject: [PATCH] =?UTF-8?q?feat(@projects/@magic-civilization):=20?= =?UTF-8?q?=E2=9A=94=EF=B8=8F=20p3-26=20B6b=20(1/3)=20=E2=80=94=20MapUnit.?= =?UTF-8?q?equipped=20(unit=20equipment=20state)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MapUnit += equipped: Vec (#[serde(default)]) — items a unit has equipped, to drive combat bonuses + charge consumption + loot-on-death. mc-state now deps mc-items (standalone crate, no cycle). Foundation for the combat-read (B6b/2) + Craft action (B6b/3). mc-state builds. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/simulator/crates/mc-state/Cargo.toml | 1 + src/simulator/crates/mc-state/src/game_state.rs | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/simulator/crates/mc-state/Cargo.toml b/src/simulator/crates/mc-state/Cargo.toml index a1ef9a3b..54d1dd4e 100644 --- a/src/simulator/crates/mc-state/Cargo.toml +++ b/src/simulator/crates/mc-state/Cargo.toml @@ -16,6 +16,7 @@ mc-city = { path = "../mc-city" } mc-culture = { path = "../mc-culture" } mc-civics = { path = "../mc-civics" } mc-combat = { path = "../mc-combat" } +mc-items = { path = "../mc-items" } mc-trade = { path = "../mc-trade" } mc-tech = { path = "../mc-tech" } mc-comms = { path = "../mc-comms" } diff --git a/src/simulator/crates/mc-state/src/game_state.rs b/src/simulator/crates/mc-state/src/game_state.rs index ccfc1771..2d79dd7d 100644 --- a/src/simulator/crates/mc-state/src/game_state.rs +++ b/src/simulator/crates/mc-state/src/game_state.rs @@ -1504,6 +1504,11 @@ pub struct MapUnit { /// into the captor's vec and clears this field. #[serde(default, skip_serializing_if = "Option::is_none")] pub captive_of: Option, + /// p3-26 B6b: items this unit has equipped (weapons / armor / tools). Drives + /// combat strength bonuses + per-combat charge consumption, and is dropped as + /// ground loot when the unit dies. Empty for units that never equipped gear. + #[serde(default)] + pub equipped: Vec, /// p2-67 Phase 9: cached base movement points (from the /// `UnitsCatalog::get(unit_id).base_moves` lookup at spawn). Lets /// `refresh_units` recharge `movement_remaining` without needing a