test(simulator): Add comprehensive tests for caravan capture, engineer interactions, and PvP end-to-end validation in the simulator's mc-turn crate

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
autocommit 2026-06-04 16:30:36 -07:00
parent 01e190f406
commit 20509d2cce
3 changed files with 10 additions and 3 deletions

View file

@ -22,7 +22,7 @@ use mc_replay::TurnEvent;
use mc_turn::{
capture::CapturePosture, AttackRequest, GameState, MapUnit, PlayerState, TurnProcessor,
};
use mc_units::{UnitStats as CatalogUnitStats, UnitsCatalog};
use mc_units::{CombatStats, UnitStats as CatalogUnitStats, UnitsCatalog};
const CARAVAN_ID: u32 = 900;
const MERCHANT_ID: u32 = 901;
@ -38,6 +38,7 @@ fn build_trade_catalog() -> UnitsCatalog {
ransom_multiplier: 2.0,
build_cost: 0,
logistics: None,
combat: CombatStats::default(),
});
// merchant.json: tier-1 trade GP — premium ransom multiplier, modest cost.
cat.insert(CatalogUnitStats {
@ -49,6 +50,7 @@ fn build_trade_catalog() -> UnitsCatalog {
ransom_multiplier: 3.0,
build_cost: 80,
logistics: None,
combat: CombatStats::default(),
});
// caravan_master.json: tier-3 — higher cost AND higher multiplier.
cat.insert(CatalogUnitStats {
@ -60,6 +62,7 @@ fn build_trade_catalog() -> UnitsCatalog {
ransom_multiplier: 3.5,
build_cost: 160,
logistics: None,
combat: CombatStats::default(),
});
cat
}

View file

@ -27,7 +27,7 @@ use mc_replay::TurnEvent;
use mc_turn::{
capture::CapturePosture, AttackRequest, GameState, MapUnit, PlayerState, TurnProcessor,
};
use mc_units::{UnitStats as CatalogUnitStats, UnitsCatalog};
use mc_units::{CombatStats, UnitStats as CatalogUnitStats, UnitsCatalog};
const ENGINEER_ID: u32 = 800;
@ -42,6 +42,7 @@ fn build_engineer_catalog() -> UnitsCatalog {
ransom_multiplier: 2.0,
build_cost: 0,
logistics: None,
combat: CombatStats::default(),
});
// dwarf_engineer.json shape — capturable, premium ransom multiplier,
// AP capacity 6 (tier-1 specialist ladder).
@ -54,6 +55,7 @@ fn build_engineer_catalog() -> UnitsCatalog {
ransom_multiplier: 3.0,
build_cost: 70,
logistics: None,
combat: CombatStats::default(),
});
cat
}

View file

@ -43,7 +43,7 @@ use mc_replay::TurnEvent;
use mc_turn::{
capture::CapturePosture, AttackRequest, GameState, MapUnit, PlayerState, TurnProcessor,
};
use mc_units::{UnitStats as CatalogUnitStats, UnitsCatalog};
use mc_units::{CombatStats, UnitStats as CatalogUnitStats, UnitsCatalog};
fn build_capturable_catalog() -> UnitsCatalog {
let mut cat = UnitsCatalog::new();
@ -56,6 +56,7 @@ fn build_capturable_catalog() -> UnitsCatalog {
ransom_multiplier: 2.0,
build_cost: 0,
logistics: None,
combat: CombatStats::default(),
});
cat.insert(CatalogUnitStats {
id: "worker".into(),
@ -66,6 +67,7 @@ fn build_capturable_catalog() -> UnitsCatalog {
ransom_multiplier: 2.0,
build_cost: 70,
logistics: None,
combat: CombatStats::default(),
});
cat
}