Core Modules (game-agnostic, reusable for WarFactory): - ResourceModule: Inventory, crafting system (465 lines) - StorageModule: Save/load with pub/sub state collection (424 lines) - CombatModule: Combat resolver, damage/armor/morale (580 lines) - EventModule: JSON event scripting with choices/outcomes (651 lines) MC-Specific Modules: - GameModule v2: State machine + event subscriptions (updated) - TrainBuilderModule: 3 wagons, 2-axis balance, performance malus (530 lines) - ExpeditionModule: A→B expeditions, team management, events integration (641 lines) Features: - All modules hot-reload compatible (state preservation) - Pure pub/sub architecture (zero direct coupling) - 7 config files (resources, storage, combat, events, train, expeditions) - 7 test suites (GameModuleTest: 12/12 PASSED) - CMakeLists.txt updated for all modules + tests Total: ~3,500 lines of production code + comprehensive tests 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
232 lines
6.0 KiB
JSON
232 lines
6.0 KiB
JSON
{
|
|
"destinations": {
|
|
"urban_ruins": {
|
|
"type": "urban_ruins",
|
|
"base_distance": 15000,
|
|
"danger_level": 2,
|
|
"loot_potential": "medium",
|
|
"travel_speed": 30,
|
|
"description": "Abandoned urban area - former residential district with scavenging opportunities",
|
|
"events": {
|
|
"ambush_chance": 0.2,
|
|
"discovery_chance": 0.3,
|
|
"breakdown_chance": 0.1
|
|
}
|
|
},
|
|
"military_depot": {
|
|
"type": "military_depot",
|
|
"base_distance": 25000,
|
|
"danger_level": 4,
|
|
"loot_potential": "high",
|
|
"travel_speed": 20,
|
|
"description": "Former military installation - high value weapons and equipment",
|
|
"events": {
|
|
"ambush_chance": 0.5,
|
|
"discovery_chance": 0.4,
|
|
"breakdown_chance": 0.15
|
|
}
|
|
},
|
|
"village": {
|
|
"type": "village",
|
|
"base_distance": 8000,
|
|
"danger_level": 1,
|
|
"loot_potential": "low",
|
|
"travel_speed": 40,
|
|
"description": "Small village - basic supplies and potential survivors",
|
|
"events": {
|
|
"ambush_chance": 0.05,
|
|
"discovery_chance": 0.2,
|
|
"breakdown_chance": 0.05
|
|
}
|
|
},
|
|
"abandoned_factory": {
|
|
"type": "industrial",
|
|
"base_distance": 18000,
|
|
"danger_level": 3,
|
|
"loot_potential": "medium",
|
|
"travel_speed": 25,
|
|
"description": "Industrial complex - machinery parts and raw materials",
|
|
"events": {
|
|
"ambush_chance": 0.3,
|
|
"discovery_chance": 0.35,
|
|
"breakdown_chance": 0.12
|
|
}
|
|
},
|
|
"airfield": {
|
|
"type": "military",
|
|
"base_distance": 30000,
|
|
"danger_level": 5,
|
|
"loot_potential": "high",
|
|
"travel_speed": 18,
|
|
"description": "Abandoned airfield - aviation equipment and fuel reserves",
|
|
"events": {
|
|
"ambush_chance": 0.6,
|
|
"discovery_chance": 0.45,
|
|
"breakdown_chance": 0.2
|
|
}
|
|
}
|
|
},
|
|
|
|
"expeditionRules": {
|
|
"max_active": 1,
|
|
"event_probability": 0.3,
|
|
"supplies_consumption_rate": 1.0,
|
|
"min_team_size": 1,
|
|
"max_team_size": 6,
|
|
"min_fuel_required": 20,
|
|
"danger_level_scaling": {
|
|
"1": {"enemy_count": 2, "enemy_strength": 0.5},
|
|
"2": {"enemy_count": 3, "enemy_strength": 0.7},
|
|
"3": {"enemy_count": 4, "enemy_strength": 1.0},
|
|
"4": {"enemy_count": 5, "enemy_strength": 1.3},
|
|
"5": {"enemy_count": 6, "enemy_strength": 1.5}
|
|
}
|
|
},
|
|
|
|
"teamRoles": {
|
|
"leader": {
|
|
"description": "Expedition commander - improves team coordination",
|
|
"bonus": {
|
|
"event_success_chance": 0.15,
|
|
"navigation_speed": 1.1
|
|
}
|
|
},
|
|
"soldier": {
|
|
"description": "Combat specialist - improves combat effectiveness",
|
|
"bonus": {
|
|
"combat_damage": 1.2,
|
|
"ambush_detection": 0.2
|
|
}
|
|
},
|
|
"engineer": {
|
|
"description": "Technical expert - repairs equipment and drones",
|
|
"bonus": {
|
|
"repair_speed": 1.5,
|
|
"loot_quality": 1.1
|
|
}
|
|
},
|
|
"medic": {
|
|
"description": "Medical specialist - treats injuries and reduces casualties",
|
|
"bonus": {
|
|
"healing_rate": 1.5,
|
|
"casualty_reduction": 0.25
|
|
}
|
|
},
|
|
"scout": {
|
|
"description": "Reconnaissance expert - finds hidden loot and avoids danger",
|
|
"bonus": {
|
|
"discovery_chance": 1.3,
|
|
"ambush_avoidance": 0.3
|
|
}
|
|
}
|
|
},
|
|
|
|
"droneTypes": {
|
|
"recon": {
|
|
"description": "Reconnaissance drone - reveals map and detects threats",
|
|
"bonus": {
|
|
"vision_range": 500,
|
|
"threat_detection": 0.4
|
|
},
|
|
"cost": {
|
|
"drone_parts": 3,
|
|
"electronics": 2
|
|
}
|
|
},
|
|
"combat": {
|
|
"description": "Combat drone - provides fire support",
|
|
"bonus": {
|
|
"combat_damage": 0.3,
|
|
"team_protection": 0.2
|
|
},
|
|
"cost": {
|
|
"drone_parts": 5,
|
|
"electronics": 3,
|
|
"weapon_parts": 2
|
|
}
|
|
},
|
|
"cargo": {
|
|
"description": "Cargo drone - increases loot capacity",
|
|
"bonus": {
|
|
"loot_capacity": 1.5
|
|
},
|
|
"cost": {
|
|
"drone_parts": 4,
|
|
"electronics": 1
|
|
}
|
|
},
|
|
"repair": {
|
|
"description": "Repair drone - fixes equipment in the field",
|
|
"bonus": {
|
|
"field_repair": 1.2,
|
|
"drone_maintenance": 0.3
|
|
},
|
|
"cost": {
|
|
"drone_parts": 4,
|
|
"electronics": 2,
|
|
"tools": 1
|
|
}
|
|
}
|
|
},
|
|
|
|
"lootTables": {
|
|
"low": {
|
|
"scrap_metal": {"min": 5, "max": 15},
|
|
"components": {"min": 1, "max": 3},
|
|
"food": {"min": 3, "max": 8},
|
|
"fuel": {"min": 5, "max": 15},
|
|
"rare_items_chance": 0.05
|
|
},
|
|
"medium": {
|
|
"scrap_metal": {"min": 15, "max": 35},
|
|
"components": {"min": 3, "max": 8},
|
|
"food": {"min": 8, "max": 15},
|
|
"fuel": {"min": 15, "max": 30},
|
|
"weapon_parts": {"min": 1, "max": 3},
|
|
"rare_items_chance": 0.15
|
|
},
|
|
"high": {
|
|
"scrap_metal": {"min": 35, "max": 60},
|
|
"components": {"min": 8, "max": 15},
|
|
"food": {"min": 15, "max": 25},
|
|
"fuel": {"min": 30, "max": 50},
|
|
"weapon_parts": {"min": 3, "max": 8},
|
|
"electronics": {"min": 2, "max": 5},
|
|
"rare_items_chance": 0.30
|
|
}
|
|
},
|
|
|
|
"eventTypes": {
|
|
"ambush": {
|
|
"description": "Hostile forces ambush the expedition",
|
|
"triggers_combat": true,
|
|
"avoidable": true
|
|
},
|
|
"discovery": {
|
|
"description": "Team discovers hidden cache of supplies",
|
|
"bonus_loot": true,
|
|
"avoidable": false
|
|
},
|
|
"breakdown": {
|
|
"description": "Vehicle breakdown - requires repair or delay",
|
|
"requires_engineer": true,
|
|
"delay_seconds": 120
|
|
},
|
|
"survivor_encounter": {
|
|
"description": "Encounter refugees or survivors",
|
|
"choice_required": true,
|
|
"outcomes": ["recruit", "trade", "ignore"]
|
|
},
|
|
"weather_hazard": {
|
|
"description": "Severe weather slows progress",
|
|
"speed_penalty": 0.5,
|
|
"duration_seconds": 180
|
|
}
|
|
},
|
|
|
|
"debugMode": false,
|
|
"maxActiveExpeditions": 1,
|
|
"eventProbability": 0.3,
|
|
"suppliesConsumptionRate": 1.0
|
|
}
|