feat(@projects/@magic-civilization): ✨ update victory science techs to natural sciences
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
490f37004a
commit
fd65808d57
3 changed files with 23 additions and 14 deletions
|
|
@ -2,12 +2,17 @@
|
|||
id: g2-05
|
||||
title: Tectonics + lithology — extend the existing prepass/terrain-evolution into a lithology axis
|
||||
priority: p2
|
||||
status: missing
|
||||
status: partial
|
||||
scope: game1
|
||||
updated_at: 2026-06-06
|
||||
updated_at: 2026-06-08
|
||||
evidence:
|
||||
- "src/simulator/crates/mc-mapgen/src/lithology.rs: Lithology enum (granite/basalt/limestone/sandstone/volcanic/metamorphic) + PlateType::derive (cratonic/passive_margin/active_margin/volcanic_arc/rift/hotspot, derived from plate_kind+boundary_kind+coast_proximity) + derive_lithology pure fn + assign_lithology grid pass; 9 unit tests green incl. assign_lithology_is_deterministic"
|
||||
- "src/simulator/crates/mc-core/src/grid/mod.rs: TileState.lithology u8 field, #[serde(default)] (old saves -> 0/Unassigned)"
|
||||
- "src/simulator/crates/mc-mapgen/src/lib.rs: assign_lithology wired into both worldgen pipelines as Stage 14, after tectonics+erosion"
|
||||
- "Determinism met by construction: lithology is a pure fn of prepass fields, draws no RNG, so no SeedDomain appended and cross_build_determinism DERIVE_GOLDEN stays frozen-green. Serialization exposure verified: mc-save 262 + mc-turn fifty_turn_golden_byte_identical + mc-state + mc-worldsim twenty_turn_determinism all byte-identical green on apricot release build"
|
||||
- "public/games/age-of-dwarves/docs/terrain/TECTONICS.md §10a Lithology axis documents PlateType + Lithology derivation tables. HANDOFFS (keep partial): deposits.rs lithology filtering + deposit JSON tagging (game-data), lab Tier-0 sliders + lithology-overlay proof screenshot (renderer/UI)"
|
||||
blocked_by: [p2-80]
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
The geological substrate of the worldsim is **partly built**:
|
||||
|
|
|
|||
|
|
@ -203,11 +203,11 @@ impl Default for VictoryConfig {
|
|||
gold_threshold: DEFAULT_GOLD_THRESHOLD,
|
||||
culture_threshold: DEFAULT_CULTURE_THRESHOLD,
|
||||
science_techs_required: vec![
|
||||
"mysticism".to_string(),
|
||||
"arcane_lore".to_string(),
|
||||
"elemental_theory".to_string(),
|
||||
"planar_studies".to_string(),
|
||||
"astral_projection".to_string(),
|
||||
"natural_philosophy".to_string(),
|
||||
"geophysics".to_string(),
|
||||
"oceanography".to_string(),
|
||||
"climatology".to_string(),
|
||||
"world_theory".to_string(),
|
||||
],
|
||||
science_cost_base: DEFAULT_SCIENCE_COST_BASE,
|
||||
domination_requires_all_capitals: true,
|
||||
|
|
|
|||
|
|
@ -103,13 +103,17 @@ fn test_victory_json_loads_with_all_six_conditions() {
|
|||
assert!(cfg.domination_requires_all_capitals);
|
||||
assert_eq!(cfg.min_domination_turn, 0);
|
||||
|
||||
// Science tech chain — all 5 required techs present in order.
|
||||
// Science tech chain — all 5 required Game-1 (mundane) techs present in
|
||||
// order. The chain is the natural-science research line; a previous
|
||||
// iteration used Game-2/3 magic techs (mysticism/arcane_lore/…) which do
|
||||
// not exist in the Age-of-Dwarves tech manifest and made science victory
|
||||
// unwinnable (p1-41d scope fix).
|
||||
let expected_techs = [
|
||||
"mysticism",
|
||||
"arcane_lore",
|
||||
"elemental_theory",
|
||||
"planar_studies",
|
||||
"astral_projection",
|
||||
"natural_philosophy",
|
||||
"geophysics",
|
||||
"oceanography",
|
||||
"climatology",
|
||||
"world_theory",
|
||||
];
|
||||
assert_eq!(cfg.science_techs_required.len(), 5, "must have exactly 5 science techs");
|
||||
for (i, id) in expected_techs.iter().enumerate() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue