feat(@projects/@magic-civilization): ✨ add hybrid building system
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
7aea0031d3
commit
2442e93c23
20 changed files with 837 additions and 0 deletions
|
|
@ -42,6 +42,24 @@
|
|||
"upgrade_fee": { "type": ["number", "null"], "minimum": 0 },
|
||||
"stack_mode": { "type": "string", "enum": ["parallel", "amplify", "single"] },
|
||||
"produces": { "type": "array", "items": { "type": "string" } },
|
||||
"merge_requires": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"minItems": 2,
|
||||
"maxItems": 2,
|
||||
"description": "IDs of two co-located prerequisite buildings that must be merged to produce this hybrid structure (p1-59)."
|
||||
},
|
||||
"exclusive_units": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Unit IDs that can ONLY be produced by this hybrid (not by either prerequisite alone)."
|
||||
},
|
||||
"irreversible": { "type": "boolean", "description": "If true, building cannot be unmerged; demolish to reset." },
|
||||
"merged_grandmaster_cap": { "type": ["integer", "null"], "minimum": 0 },
|
||||
"requires_building": { "type": ["string", "null"] },
|
||||
"can_rally": { "type": "boolean" },
|
||||
"keywords": { "type": "array", "items": { "type": "string" } },
|
||||
"adjacency": { "type": "array" },
|
||||
"sprite": { "type": "string" },
|
||||
"flavor": { "type": "string" },
|
||||
"flags": { "type": "array", "items": { "type": "string" } },
|
||||
|
|
|
|||
51
public/resources/buildings/assault_citadel.json
Normal file
51
public/resources/buildings/assault_citadel.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"id": "assault_citadel",
|
||||
"name": "Assault Citadel",
|
||||
"description": "A hybrid stronghold merging the sword hall with the siege annex. Heavy melee shock troops train alongside breaching engineers under a single command roof.",
|
||||
"placement": "city",
|
||||
"category": "military",
|
||||
"school": null,
|
||||
"cost": 320,
|
||||
"upkeep": 5,
|
||||
"tech_required": "military_synthesis",
|
||||
"race_required": "dwarf",
|
||||
"wonder_type": null,
|
||||
"mana_generated": null,
|
||||
"tier": 7,
|
||||
"can_rally": true,
|
||||
"merge_requires": ["sword_hall", "siege_annex"],
|
||||
"exclusive_units": ["siege_breaker", "combat_engineer", "storm_trooper"],
|
||||
"irreversible": true,
|
||||
"effects": [
|
||||
{
|
||||
"type": "production",
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 30,
|
||||
"scope": "melee"
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 30,
|
||||
"scope": "siege"
|
||||
}
|
||||
],
|
||||
"sprite": "sprites/buildings/assault_citadel.png",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "building",
|
||||
"detail_route": "/buildings/buildings",
|
||||
"tags": [
|
||||
"military",
|
||||
"hybrid",
|
||||
"melee",
|
||||
"siege",
|
||||
"dwarven"
|
||||
]
|
||||
},
|
||||
"produces": ["siege_breaker", "combat_engineer", "storm_trooper"],
|
||||
"stack_mode": "single",
|
||||
"flavor": "The shield wall and the breaching ram now share a sergeant."
|
||||
}
|
||||
51
public/resources/buildings/barding_hall.json
Normal file
51
public/resources/buildings/barding_hall.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"id": "barding_hall",
|
||||
"name": "Barding Hall",
|
||||
"description": "Smithies and harness-rooms dedicated to armoring war boars and rams alongside their riders. The barding is fitted while the beast is still annoyed.",
|
||||
"placement": "city",
|
||||
"category": "military",
|
||||
"school": null,
|
||||
"cost": 110,
|
||||
"upkeep": 2,
|
||||
"tech_required": "hardened_plate",
|
||||
"race_required": "dwarf",
|
||||
"wonder_type": null,
|
||||
"mana_generated": null,
|
||||
"tier": 4,
|
||||
"can_rally": true,
|
||||
"effects": [
|
||||
{
|
||||
"type": "production",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"type": "unit_defense_bonus",
|
||||
"value": 2,
|
||||
"scope": "cavalry"
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 20,
|
||||
"scope": "cavalry"
|
||||
}
|
||||
],
|
||||
"requires_building": "stable",
|
||||
"sprite": "sprites/buildings/barding_hall.png",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "building",
|
||||
"detail_route": "/buildings/buildings",
|
||||
"tags": [
|
||||
"military",
|
||||
"cavalry",
|
||||
"dwarven"
|
||||
]
|
||||
},
|
||||
"produces": [
|
||||
"tusker_knight",
|
||||
"mounted_archer",
|
||||
"beast_scout"
|
||||
],
|
||||
"stack_mode": "parallel",
|
||||
"flavor": "The boar is angrier in armor. Take that as confirmation."
|
||||
}
|
||||
51
public/resources/buildings/cavalry_corps.json
Normal file
51
public/resources/buildings/cavalry_corps.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"id": "cavalry_corps",
|
||||
"name": "Cavalry Corps",
|
||||
"description": "A hybrid command merging the barding hall with the bolt range. Mounted skirmishers and ranged scouts train as a single doctrine.",
|
||||
"placement": "city",
|
||||
"category": "military",
|
||||
"school": null,
|
||||
"cost": 320,
|
||||
"upkeep": 5,
|
||||
"tech_required": "military_synthesis",
|
||||
"race_required": "dwarf",
|
||||
"wonder_type": null,
|
||||
"mana_generated": null,
|
||||
"tier": 7,
|
||||
"can_rally": true,
|
||||
"merge_requires": ["barding_hall", "bolt_range"],
|
||||
"exclusive_units": ["mounted_archer", "beast_scout", "ram_sniper"],
|
||||
"irreversible": true,
|
||||
"effects": [
|
||||
{
|
||||
"type": "production",
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 30,
|
||||
"scope": "cavalry"
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 25,
|
||||
"scope": "ranged"
|
||||
}
|
||||
],
|
||||
"sprite": "sprites/buildings/cavalry_corps.png",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "building",
|
||||
"detail_route": "/buildings/buildings",
|
||||
"tags": [
|
||||
"military",
|
||||
"hybrid",
|
||||
"cavalry",
|
||||
"ranged",
|
||||
"dwarven"
|
||||
]
|
||||
},
|
||||
"produces": ["mounted_archer", "beast_scout", "ram_sniper"],
|
||||
"stack_mode": "single",
|
||||
"flavor": "The bolt has the range. The boar has the speed. They now arrive together."
|
||||
}
|
||||
52
public/resources/buildings/gunnery_corps.json
Normal file
52
public/resources/buildings/gunnery_corps.json
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"id": "gunnery_corps",
|
||||
"name": "Gunnery Corps",
|
||||
"description": "A hybrid stronghold merging the rifle range with the powder annex. Combined gunpowder doctrine: mortars, gunners, and the artillery park share one parade ground.",
|
||||
"placement": "city",
|
||||
"category": "military",
|
||||
"school": null,
|
||||
"cost": 340,
|
||||
"upkeep": 6,
|
||||
"tech_required": "military_synthesis",
|
||||
"race_required": "dwarf",
|
||||
"wonder_type": null,
|
||||
"mana_generated": null,
|
||||
"tier": 7,
|
||||
"can_rally": true,
|
||||
"merge_requires": ["rifle_range", "powder_annex"],
|
||||
"exclusive_units": ["mortar_team", "assault_gunner", "field_artillery"],
|
||||
"irreversible": true,
|
||||
"effects": [
|
||||
{
|
||||
"type": "production",
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 30,
|
||||
"scope": "ranged"
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 30,
|
||||
"scope": "siege"
|
||||
}
|
||||
],
|
||||
"sprite": "sprites/buildings/gunnery_corps.png",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "building",
|
||||
"detail_route": "/buildings/buildings",
|
||||
"tags": [
|
||||
"military",
|
||||
"hybrid",
|
||||
"ranged",
|
||||
"siege",
|
||||
"industrial",
|
||||
"dwarven"
|
||||
]
|
||||
},
|
||||
"produces": ["mortar_team", "assault_gunner", "field_artillery"],
|
||||
"stack_mode": "single",
|
||||
"flavor": "The rifle decides the line. The mortar decides the angle. The gun decides the weight."
|
||||
}
|
||||
46
public/resources/buildings/powder_annex.json
Normal file
46
public/resources/buildings/powder_annex.json
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"id": "powder_annex",
|
||||
"name": "Powder Annex",
|
||||
"description": "An extension to the rifle range and powder works combining mortar pits, magazine vaults, and dedicated mortar-team training. The smell of sulphur is constant; the dwarves stop noticing.",
|
||||
"placement": "city",
|
||||
"category": "military",
|
||||
"school": null,
|
||||
"cost": 150,
|
||||
"upkeep": 3,
|
||||
"tech_required": "mechanized_warfare",
|
||||
"race_required": "dwarf",
|
||||
"wonder_type": null,
|
||||
"mana_generated": null,
|
||||
"tier": 6,
|
||||
"can_rally": true,
|
||||
"effects": [
|
||||
{
|
||||
"type": "production",
|
||||
"value": 3
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 25,
|
||||
"scope": "ranged"
|
||||
}
|
||||
],
|
||||
"requires_building": "powder_works",
|
||||
"sprite": "sprites/buildings/powder_annex.png",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "building",
|
||||
"detail_route": "/buildings/buildings",
|
||||
"tags": [
|
||||
"military",
|
||||
"ranged",
|
||||
"industrial",
|
||||
"dwarven"
|
||||
]
|
||||
},
|
||||
"produces": [
|
||||
"mortar_team",
|
||||
"mounted_rifleman"
|
||||
],
|
||||
"stack_mode": "parallel",
|
||||
"flavor": "The mortar arcs the shot the rifle cannot."
|
||||
}
|
||||
49
public/resources/buildings/siege_annex.json
Normal file
49
public/resources/buildings/siege_annex.json
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"id": "siege_annex",
|
||||
"name": "Siege Annex",
|
||||
"description": "An expanded wing attached to the siege workshop housing assault engineers, sapper crews, and the heavy ordnance that does not fit in the main hall.",
|
||||
"placement": "city",
|
||||
"category": "military",
|
||||
"school": null,
|
||||
"cost": 140,
|
||||
"upkeep": 3,
|
||||
"tech_required": "imperial_warfare",
|
||||
"race_required": "dwarf",
|
||||
"wonder_type": null,
|
||||
"mana_generated": null,
|
||||
"tier": 5,
|
||||
"can_rally": true,
|
||||
"effects": [
|
||||
{
|
||||
"type": "production",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"type": "siege_production_speed",
|
||||
"value": 0.25
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 20,
|
||||
"scope": "siege"
|
||||
}
|
||||
],
|
||||
"requires_building": "siege_workshop",
|
||||
"sprite": "sprites/buildings/siege_annex.png",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "building",
|
||||
"detail_route": "/buildings/buildings",
|
||||
"tags": [
|
||||
"military",
|
||||
"siege",
|
||||
"dwarven"
|
||||
]
|
||||
},
|
||||
"produces": [
|
||||
"combat_engineer",
|
||||
"siege_breaker"
|
||||
],
|
||||
"stack_mode": "parallel",
|
||||
"flavor": "The annex was built to hold the bigger machines. The bigger machines arrived first."
|
||||
}
|
||||
51
public/resources/buildings/war_academy.json
Normal file
51
public/resources/buildings/war_academy.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"id": "war_academy",
|
||||
"name": "War Academy",
|
||||
"description": "A unified hybrid structure merging the rifle range and the barding hall. Trains mixed cavalry-and-firearm doctrines that neither school can produce alone.",
|
||||
"placement": "city",
|
||||
"category": "military",
|
||||
"school": null,
|
||||
"cost": 320,
|
||||
"upkeep": 5,
|
||||
"tech_required": "military_synthesis",
|
||||
"race_required": "dwarf",
|
||||
"wonder_type": null,
|
||||
"mana_generated": null,
|
||||
"tier": 7,
|
||||
"can_rally": true,
|
||||
"merge_requires": ["rifle_range", "barding_hall"],
|
||||
"exclusive_units": ["dragoon", "mounted_rifleman", "assault_cavalry"],
|
||||
"irreversible": true,
|
||||
"effects": [
|
||||
{
|
||||
"type": "production",
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 30,
|
||||
"scope": "cavalry"
|
||||
},
|
||||
{
|
||||
"type": "free_xp",
|
||||
"value": 30,
|
||||
"scope": "ranged"
|
||||
}
|
||||
],
|
||||
"sprite": "sprites/buildings/war_academy.png",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "building",
|
||||
"detail_route": "/buildings/buildings",
|
||||
"tags": [
|
||||
"military",
|
||||
"hybrid",
|
||||
"cavalry",
|
||||
"ranged",
|
||||
"dwarven"
|
||||
]
|
||||
},
|
||||
"produces": ["dragoon", "mounted_rifleman", "assault_cavalry"],
|
||||
"stack_mode": "single",
|
||||
"flavor": "Two halls became one when nobody could decide which doctrine had won the argument."
|
||||
}
|
||||
|
|
@ -377,5 +377,54 @@
|
|||
"military"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "military_synthesis",
|
||||
"name": "Military Synthesis",
|
||||
"description": "Doctrine that fuses two co-located military structures into a single hybrid command. Unlocks the merge action and the four hybrid structures: War Academy, Assault Citadel, Cavalry Corps, Gunnery Corps.",
|
||||
"pillar": "military",
|
||||
"domain": "Military",
|
||||
"era": 7,
|
||||
"tier": 7,
|
||||
"cost": 220,
|
||||
"requires": [
|
||||
"mechanized_warfare",
|
||||
"imperial_warfare"
|
||||
],
|
||||
"unlocks": {
|
||||
"buildings": [
|
||||
"war_academy",
|
||||
"assault_citadel",
|
||||
"cavalry_corps",
|
||||
"gunnery_corps"
|
||||
],
|
||||
"units": [
|
||||
"dragoon",
|
||||
"assault_cavalry",
|
||||
"siege_breaker",
|
||||
"assault_gunner",
|
||||
"field_artillery"
|
||||
],
|
||||
"improvements": [],
|
||||
"mechanics": [
|
||||
{
|
||||
"key": "unlocks_merge",
|
||||
"label": "Hybrid Building Merge",
|
||||
"value": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"unlocks_merge": true,
|
||||
"flavor": "Two halls become one when neither doctrine has won the argument. The roof goes up regardless.",
|
||||
"encyclopedia": {
|
||||
"category": "civilization",
|
||||
"entry_type": "tech",
|
||||
"detail_route": "/research/tech-tree",
|
||||
"tags": [
|
||||
"military",
|
||||
"hybrid",
|
||||
"synthesis"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
38
public/resources/units/assault_cavalry.json
Normal file
38
public/resources/units/assault_cavalry.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "assault_cavalry",
|
||||
"name": "Assault Cavalry",
|
||||
"description": "Apex shock cavalry: armored tusker mounts, lance, breastplate, and an attached sapper charge for breaking fortified lines.",
|
||||
"unit_type": "melee",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["charge", "shock", "hybrid"],
|
||||
"attributes": ["heavy", "biological"],
|
||||
"attack_type": "trample",
|
||||
"hp": 200,
|
||||
"attack": 34,
|
||||
"defense": 24,
|
||||
"ranged_attack": 0,
|
||||
"range": 0,
|
||||
"movement": 4,
|
||||
"vision": 2,
|
||||
"cost": 290,
|
||||
"tier": 7,
|
||||
"tech_required": "military_synthesis",
|
||||
"upgradeable_from": "tusker_knight",
|
||||
"requires_resource": "iron_ore",
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/assault_cavalry.png",
|
||||
"maintenance": 9,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "trample", "cavalry", "shock", "hybrid", "era7", "dwarven"]
|
||||
},
|
||||
"flavor": "What arrives is no longer a charge. It is a structural decision.",
|
||||
"archetype": "cavalry_walker",
|
||||
"promotion_tree": "melee"
|
||||
}
|
||||
38
public/resources/units/assault_gunner.json
Normal file
38
public/resources/units/assault_gunner.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "assault_gunner",
|
||||
"name": "Assault Gunner",
|
||||
"description": "Hybrid heavy weapons dwarf carrying a crank-fed repeating gun. Suppresses lines and fortifications at short range.",
|
||||
"unit_type": "ranged",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["gunpowder", "suppress", "hybrid"],
|
||||
"attributes": ["heavy", "biological"],
|
||||
"attack_type": "piercing",
|
||||
"hp": 180,
|
||||
"attack": 16,
|
||||
"defense": 18,
|
||||
"ranged_attack": 36,
|
||||
"range": 2,
|
||||
"movement": 2,
|
||||
"vision": 2,
|
||||
"cost": 280,
|
||||
"tier": 7,
|
||||
"tech_required": "military_synthesis",
|
||||
"upgradeable_from": "rifleman",
|
||||
"requires_resource": "iron_ore",
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/assault_gunner.png",
|
||||
"maintenance": 8,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "piercing", "ranged", "gunpowder", "hybrid", "era7", "dwarven"]
|
||||
},
|
||||
"flavor": "The crank is the timing. The barrel is the rest.",
|
||||
"archetype": "infantry",
|
||||
"promotion_tree": "ranged"
|
||||
}
|
||||
38
public/resources/units/beast_scout.json
Normal file
38
public/resources/units/beast_scout.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "beast_scout",
|
||||
"name": "Beast Scout",
|
||||
"description": "Lightly equipped recon dwarf riding a trained mountain boar. Vision-focused; runs from heavy contact.",
|
||||
"unit_type": "melee",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["fast", "scout", "skirmish"],
|
||||
"attributes": ["light", "biological"],
|
||||
"attack_type": "blade",
|
||||
"hp": 90,
|
||||
"attack": 12,
|
||||
"defense": 8,
|
||||
"ranged_attack": 0,
|
||||
"range": 0,
|
||||
"movement": 5,
|
||||
"vision": 4,
|
||||
"cost": 110,
|
||||
"tier": 4,
|
||||
"tech_required": "hardened_plate",
|
||||
"upgradeable_from": "boar_scout",
|
||||
"requires_resource": null,
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/beast_scout.png",
|
||||
"maintenance": 4,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "blade", "cavalry", "scout", "era4", "dwarven"]
|
||||
},
|
||||
"flavor": "The boar sees in the fog. The dwarf takes notes.",
|
||||
"archetype": "cavalry_walker",
|
||||
"promotion_tree": "melee"
|
||||
}
|
||||
39
public/resources/units/combat_engineer.json
Normal file
39
public/resources/units/combat_engineer.json
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"id": "combat_engineer",
|
||||
"name": "Combat Engineer",
|
||||
"description": "Field-grade engineer trained to build fortifications under fire and demolish them under siege. Carries entrenching tools, breaching charges, and a service carbine.",
|
||||
"unit_type": "support",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["engineer", "siege"],
|
||||
"attributes": ["medium", "biological"],
|
||||
"attack_type": "blade",
|
||||
"hp": 130,
|
||||
"attack": 14,
|
||||
"defense": 14,
|
||||
"ranged_attack": 14,
|
||||
"range": 1,
|
||||
"movement": 2,
|
||||
"vision": 2,
|
||||
"cost": 200,
|
||||
"tier": 6,
|
||||
"tech_required": "mechanized_warfare",
|
||||
"upgradeable_from": "dwarf_sapper",
|
||||
"requires_resource": null,
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/combat_engineer.png",
|
||||
"can_build_improvements": true,
|
||||
"maintenance": 5,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "support", "engineer", "siege", "era6", "dwarven"]
|
||||
},
|
||||
"flavor": "Builds it. Breaks it. Same shift.",
|
||||
"archetype": "infantry",
|
||||
"promotion_tree": "support"
|
||||
}
|
||||
38
public/resources/units/dragoon.json
Normal file
38
public/resources/units/dragoon.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "dragoon",
|
||||
"name": "Dragoon",
|
||||
"description": "Hybrid mounted soldier: full plate, long pistol, and a heavy sabre. Equally lethal at point-blank and at the charge.",
|
||||
"unit_type": "melee",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["charge", "gunpowder", "hybrid"],
|
||||
"attributes": ["heavy", "biological"],
|
||||
"attack_type": "trample",
|
||||
"hp": 170,
|
||||
"attack": 28,
|
||||
"defense": 22,
|
||||
"ranged_attack": 18,
|
||||
"range": 1,
|
||||
"movement": 4,
|
||||
"vision": 2,
|
||||
"cost": 260,
|
||||
"tier": 7,
|
||||
"tech_required": "military_synthesis",
|
||||
"upgradeable_from": "tusker_knight",
|
||||
"requires_resource": "iron_ore",
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/dragoon.png",
|
||||
"maintenance": 8,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "trample", "cavalry", "gunpowder", "hybrid", "era7", "dwarven"]
|
||||
},
|
||||
"flavor": "The pistol opens the conversation. The sabre concludes it.",
|
||||
"archetype": "cavalry_walker",
|
||||
"promotion_tree": "melee"
|
||||
}
|
||||
38
public/resources/units/field_artillery.json
Normal file
38
public/resources/units/field_artillery.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "field_artillery",
|
||||
"name": "Field Artillery",
|
||||
"description": "Mobile gun-carriage crewed by trained dwarves. Heavy direct-fire shells, repositioned by tusker-team haulage between volleys.",
|
||||
"unit_type": "siege",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["gunpowder", "siege", "hybrid"],
|
||||
"attributes": ["heavy", "mechanical"],
|
||||
"attack_type": "explosive",
|
||||
"hp": 160,
|
||||
"attack": 12,
|
||||
"defense": 12,
|
||||
"ranged_attack": 42,
|
||||
"range": 3,
|
||||
"movement": 3,
|
||||
"vision": 2,
|
||||
"cost": 320,
|
||||
"tier": 7,
|
||||
"tech_required": "military_synthesis",
|
||||
"upgradeable_from": "cannon_crew",
|
||||
"requires_resource": "iron_ore",
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/field_artillery.png",
|
||||
"maintenance": 9,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "explosive", "siege", "ranged", "gunpowder", "hybrid", "era7", "dwarven"]
|
||||
},
|
||||
"flavor": "The carriage moves between volleys. The volley is what arrives first.",
|
||||
"archetype": "siege",
|
||||
"promotion_tree": "ranged"
|
||||
}
|
||||
38
public/resources/units/mortar_team.json
Normal file
38
public/resources/units/mortar_team.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "mortar_team",
|
||||
"name": "Mortar Team",
|
||||
"description": "Two-dwarf crew with a portable mortar tube. Lobs explosive shells over walls and into formations the rifle line cannot reach.",
|
||||
"unit_type": "siege",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["gunpowder", "indirect"],
|
||||
"attributes": ["medium", "biological"],
|
||||
"attack_type": "explosive",
|
||||
"hp": 110,
|
||||
"attack": 8,
|
||||
"defense": 8,
|
||||
"ranged_attack": 30,
|
||||
"range": 3,
|
||||
"movement": 2,
|
||||
"vision": 2,
|
||||
"cost": 200,
|
||||
"tier": 6,
|
||||
"tech_required": "mechanized_warfare",
|
||||
"upgradeable_from": "cannon_crew",
|
||||
"requires_resource": "iron_ore",
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/mortar_team.png",
|
||||
"maintenance": 6,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "explosive", "siege", "ranged", "gunpowder", "era6", "dwarven"]
|
||||
},
|
||||
"flavor": "The arc finds what the rifle cannot.",
|
||||
"archetype": "siege",
|
||||
"promotion_tree": "ranged"
|
||||
}
|
||||
38
public/resources/units/mounted_archer.json
Normal file
38
public/resources/units/mounted_archer.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "mounted_archer",
|
||||
"name": "Mounted Archer",
|
||||
"description": "Boar-mounted dwarf with a recurved short bow, trained for harassing fire on the move.",
|
||||
"unit_type": "ranged",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["fast", "skirmish"],
|
||||
"attributes": ["medium", "biological"],
|
||||
"attack_type": "piercing",
|
||||
"hp": 100,
|
||||
"attack": 14,
|
||||
"defense": 10,
|
||||
"ranged_attack": 18,
|
||||
"range": 2,
|
||||
"movement": 4,
|
||||
"vision": 2,
|
||||
"cost": 130,
|
||||
"tier": 4,
|
||||
"tech_required": "hardened_plate",
|
||||
"upgradeable_from": "ram_rider",
|
||||
"requires_resource": null,
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/mounted_archer.png",
|
||||
"maintenance": 4,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "piercing", "cavalry", "ranged", "era4", "dwarven"]
|
||||
},
|
||||
"flavor": "The boar runs the line. The dwarf runs the bow.",
|
||||
"archetype": "cavalry_walker",
|
||||
"promotion_tree": "ranged"
|
||||
}
|
||||
38
public/resources/units/mounted_rifleman.json
Normal file
38
public/resources/units/mounted_rifleman.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "mounted_rifleman",
|
||||
"name": "Mounted Rifleman",
|
||||
"description": "Boar-mounted dwarf with a short rifled carbine. Fires on the move at ranges that feel unfair to the receiving line.",
|
||||
"unit_type": "ranged",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["fast", "gunpowder"],
|
||||
"attributes": ["medium", "biological"],
|
||||
"attack_type": "piercing",
|
||||
"hp": 130,
|
||||
"attack": 14,
|
||||
"defense": 12,
|
||||
"ranged_attack": 32,
|
||||
"range": 2,
|
||||
"movement": 4,
|
||||
"vision": 2,
|
||||
"cost": 200,
|
||||
"tier": 6,
|
||||
"tech_required": "mechanized_warfare",
|
||||
"upgradeable_from": "mounted_archer",
|
||||
"requires_resource": null,
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/mounted_rifleman.png",
|
||||
"maintenance": 6,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "piercing", "cavalry", "ranged", "gunpowder", "era6", "dwarven"]
|
||||
},
|
||||
"flavor": "Iron arrives faster than infantry. The boar agrees.",
|
||||
"archetype": "cavalry_walker",
|
||||
"promotion_tree": "ranged"
|
||||
}
|
||||
38
public/resources/units/ram_sniper.json
Normal file
38
public/resources/units/ram_sniper.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "ram_sniper",
|
||||
"name": "Ram Sniper",
|
||||
"description": "Heavy crossbow specialist on a war ram. Dismounts to fire from elevated positions, remounts to relocate.",
|
||||
"unit_type": "ranged",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["mobile", "marksman"],
|
||||
"attributes": ["medium", "biological"],
|
||||
"attack_type": "piercing",
|
||||
"hp": 110,
|
||||
"attack": 12,
|
||||
"defense": 10,
|
||||
"ranged_attack": 28,
|
||||
"range": 3,
|
||||
"movement": 4,
|
||||
"vision": 3,
|
||||
"cost": 165,
|
||||
"tier": 5,
|
||||
"tech_required": "imperial_warfare",
|
||||
"upgradeable_from": "ram_rider",
|
||||
"requires_resource": null,
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/ram_sniper.png",
|
||||
"maintenance": 5,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "piercing", "cavalry", "ranged", "era5", "dwarven"]
|
||||
},
|
||||
"flavor": "The ram finds the high ground. The dwarf does the rest.",
|
||||
"archetype": "cavalry_walker",
|
||||
"promotion_tree": "ranged"
|
||||
}
|
||||
38
public/resources/units/siege_breaker.json
Normal file
38
public/resources/units/siege_breaker.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "siege_breaker",
|
||||
"name": "Siege Breaker",
|
||||
"description": "Hybrid heavy infantry trained both to assault walls and to break melee lines. Equipped with breaching charges, towershield, and warhammer.",
|
||||
"unit_type": "melee",
|
||||
"school": null,
|
||||
"domain": "land",
|
||||
"keywords": ["shock", "siege", "hybrid"],
|
||||
"attributes": ["heavy", "biological"],
|
||||
"attack_type": "blunt",
|
||||
"hp": 220,
|
||||
"attack": 32,
|
||||
"defense": 28,
|
||||
"ranged_attack": 0,
|
||||
"range": 0,
|
||||
"movement": 2,
|
||||
"vision": 2,
|
||||
"cost": 280,
|
||||
"tier": 7,
|
||||
"tech_required": "military_synthesis",
|
||||
"upgradeable_from": "dwarf_hammerguard",
|
||||
"requires_resource": "iron_ore",
|
||||
"race_required": "dwarf",
|
||||
"faction": "dwarf",
|
||||
"mana_cost": null,
|
||||
"sprite": "sprites/units/siege_breaker.png",
|
||||
"maintenance": 8,
|
||||
"auto_join": true,
|
||||
"encyclopedia": {
|
||||
"category": "combat",
|
||||
"entry_type": "unit",
|
||||
"detail_route": "/military/units",
|
||||
"tags": ["land", "military", "blunt", "melee", "siege", "hybrid", "era7", "dwarven"]
|
||||
},
|
||||
"flavor": "First the wall, then the line behind it. Same hammer.",
|
||||
"archetype": "infantry",
|
||||
"promotion_tree": "melee"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue