feat(units): author 3 missing specialist units referenced by building produces[]

p2-57b gap analysis flagged dangling produces[] refs: adamantine_press /
gravity_press → dwarf_master_engineer, royal_infirmary / field_hospital_corps
→ master_surgeon, grand_chronicle → saga_writer named units that had no JSON.

Authored all three in public/resources/units/ matching the unit schema and the
shape of their nearest siblings (dwarf_grand_engineer, field_surgeon,
loremaster): Great-Person-tier support specialists with logistics blocks, real
tech gates (deep_engineering / surgical_practice / rune_archives), upgrade
chains, and GP actions consistent with their class. validate-game-data.py
PASSes all three (the 90 unrelated failures pre-exist on main).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
autocommit 2026-06-04 21:17:53 -07:00
parent 268b85c92d
commit d2ebec0eba
3 changed files with 351 additions and 0 deletions

View file

@ -0,0 +1,129 @@
{
"id": "dwarf_master_engineer",
"name": "Master Engineer",
"description": "The pinnacle of dwarven civil engineering — a master who reads load and stress the way others read runes. Where a grand engineer raises fortifications, a master engineer raises whole works: pressure-forges, gravity presses, and the deep machinery that turns raw adamantine into an empire's edge.",
"unit_type": "support",
"school": null,
"domain": "land",
"attributes": [
"medium",
"biological"
],
"attack_type": "none",
"hp": 75,
"attack": 0,
"defense": 3,
"ranged_attack": 0,
"range": 0,
"movement": 2,
"vision": 2,
"cost": 300,
"tech_required": "deep_engineering",
"upgradeable_from": "dwarf_grand_engineer",
"race_required": "dwarf",
"faction": "dwarf",
"can_found_city": false,
"can_build_improvements": true,
"flags": [
"fast_build",
"instant_fortify",
"can_build_fortifications",
"can_build_railroads"
],
"mana_cost": null,
"sprite": "sprites/units/dwarf_master_engineer.png",
"gender": {
"male": {
"name": "Master Engineer",
"sprite": "sprites/units/dwarf_master_engineer_dwarves_m.png"
},
"female": {
"name": "Master Engineer",
"sprite": "sprites/units/dwarf_master_engineer_dwarves_f.png"
}
},
"maintenance": 14,
"encyclopedia": {
"category": "combat",
"entry_type": "unit",
"detail_route": "/military/units",
"tags": [
"land",
"support",
"none"
]
},
"tier": 6,
"action_point_capacity": 16,
"capturable": true,
"ransom_multiplier": 4.0,
"great_person_class": "great_engineer",
"great_person_gpp_type": "engineering",
"great_person_produces": "wonder_hurry",
"great_person_action": {
"action_type": "wonder_hurry",
"rationale": "Decisive production contribution toward late-era industrial projects and wonders.",
"max_target_tier": 9,
"production_value": 1200
},
"logistics": {
"composition": {
"leader": 1,
"member": 14
},
"inventory": {
"rations": 150,
"water": 120,
"tool_durability": 28,
"build_kits": 6
},
"stats": {
"str": 30,
"con": 110,
"end": 70
},
"terrain_movement": {
"road": 0.5,
"dirt_road": 0.65,
"wagon_track": 0.85,
"trail": 0.8,
"grass": 1.0,
"hills": 1.5,
"forest_open": 1.5,
"forest_dense": 2.5,
"mountain": 3.0,
"snow": 2.0,
"tundra": 1.5,
"desert": 2.5,
"marsh": 3.0,
"river_ford": 2.0,
"river_unfordable": "blocked",
"deep_water": "blocked"
},
"carriers": {
"foot_runners": 2
},
"supply": {
"range_turns": 6,
"decline_rate": 0.8
},
"slots": {
"ox_wagon": {
"enabling_tech": "animal_husbandry",
"enabling_resources": [
"cattle"
],
"provides": "+2 carry-capacity, fodder consumption",
"count": 1
},
"officer_bird": {
"enabling_tech": "falconry_command",
"enabling_resources": [
"crag_aerie"
],
"provides": "crag-raven one-way carrier",
"count": 2
}
}
}
}

View file

@ -0,0 +1,107 @@
{
"id": "master_surgeon",
"name": "Master Surgeon",
"description": "A surgeon whose name is spoken in every hold's infirmary. Backed by a full operating retinue and a wagon of sterilised instruments, a master surgeon brings soldiers back from wounds that field surgeons can only ease — and trains the next generation while doing it.",
"unit_type": "support",
"school": null,
"domain": "land",
"keywords": [
"healer"
],
"attributes": [
"light",
"biological"
],
"attack_type": "none",
"hp": 80,
"attack": 0,
"defense": 8,
"ranged_attack": 0,
"range": 0,
"movement": 3,
"vision": 1,
"cost": 300,
"tier": 5,
"tech_required": "surgical_practice",
"upgradeable_from": "field_surgeon",
"race_required": null,
"faction": "dwarf",
"mana_cost": null,
"sprite": "sprites/units/master_surgeon.png",
"gender": null,
"maintenance": 8,
"auto_join": false,
"encyclopedia": {
"category": "civilization",
"entry_type": "unit",
"detail_route": "/military/units",
"tags": [
"land",
"support",
"medical"
]
},
"flavor": "First, do no harm. Then, do the impossible.",
"archetype": "civilian",
"promotion_tree": null,
"clan_affinity": [],
"logistics": {
"composition": {
"leader": 1,
"member": 15
},
"inventory": {
"rations": 150,
"water": 120,
"tool_durability": 4
},
"stats": {
"str": 30,
"con": 110,
"end": 95
},
"terrain_movement": {
"road": 0.5,
"dirt_road": 0.65,
"wagon_track": 0.85,
"trail": 0.8,
"grass": 1.0,
"hills": 1.5,
"forest_open": 1.5,
"forest_dense": 2.5,
"mountain": 3.0,
"snow": 2.0,
"tundra": 1.5,
"desert": 2.5,
"marsh": 3.0,
"river_ford": 2.0,
"river_unfordable": "blocked",
"deep_water": "blocked"
},
"carriers": {
"foot_runners": 2
},
"supply": {
"range_turns": 6,
"decline_rate": 0.8
},
"slots": {
"ox_wagon": {
"enabling_tech": "animal_husbandry",
"enabling_resources": [
"cattle"
],
"provides": "+2 carry-capacity, fodder consumption",
"count": 1
},
"officer_bird": {
"enabling_tech": "falconry_command",
"enabling_resources": [
"crag_aerie"
],
"provides": "crag-raven one-way carrier",
"count": 2
}
}
}
}

View file

@ -0,0 +1,115 @@
{
"id": "saga_writer",
"name": "Saga Writer",
"description": "Where a loremaster remembers, a saga writer composes — binding a clan's deeds into written cycles that outlast the dwarves who lived them. Their chronicles seed Golden Ages and turn a hold's history into a weapon of legitimacy.",
"unit_type": "support",
"school": null,
"domain": "land",
"keywords": [
"culture_bearer"
],
"attributes": [
"light",
"biological"
],
"attack_type": "none",
"hp": 55,
"attack": 0,
"defense": 5,
"ranged_attack": 0,
"range": 0,
"movement": 3,
"vision": 1,
"cost": 220,
"tier": 4,
"tech_required": "rune_archives",
"upgradeable_from": "loremaster",
"race_required": null,
"faction": "dwarf",
"mana_cost": null,
"sprite": "sprites/units/saga_writer.png",
"gender": null,
"maintenance": 5,
"auto_join": false,
"encyclopedia": {
"category": "civilization",
"entry_type": "unit",
"detail_route": "/military/units",
"tags": [
"land",
"support",
"culture"
]
},
"flavor": "Stone forgets. Ink does not.",
"archetype": "civilian",
"promotion_tree": null,
"clan_affinity": [],
"great_person_class": "great_writer",
"great_person_gpp_type": "scholarship",
"great_person_produces": "culture_bomb",
"great_person_action": {
"action_type": "culture_bomb",
"rationale": "Commits a saga-cycle that floods a city's culture and can trigger a Golden Age.",
"max_target_tier": 5
},
"logistics": {
"composition": {
"leader": 1,
"member": 10
},
"inventory": {
"rations": 110,
"water": 88,
"tool_durability": 2
},
"stats": {
"str": 30,
"con": 88,
"end": 90
},
"terrain_movement": {
"road": 0.5,
"dirt_road": 0.65,
"wagon_track": 0.85,
"trail": 0.8,
"grass": 1.0,
"hills": 1.5,
"forest_open": 1.5,
"forest_dense": 2.5,
"mountain": 3.0,
"snow": 2.0,
"tundra": 1.5,
"desert": 2.5,
"marsh": 3.0,
"river_ford": 2.0,
"river_unfordable": "blocked",
"deep_water": "blocked"
},
"carriers": {
"foot_runners": 2
},
"supply": {
"range_turns": 6,
"decline_rate": 0.8
},
"slots": {
"ox_wagon": {
"enabling_tech": "animal_husbandry",
"enabling_resources": [
"cattle"
],
"provides": "+2 carry-capacity, fodder consumption",
"count": 1
},
"officer_bird": {
"enabling_tech": "falconry_command",
"enabling_resources": [
"crag_aerie"
],
"provides": "crag-raven one-way carrier",
"count": 2
}
}
}
}