Add civ bonuses for Carth and differentiate embassies and their mercenaries.

This commit is contained in:
real_tabasco_sauce
2025-09-20 22:43:59 -07:00
committed by real_tabasco_sauce
parent 22ed1fcdef
commit 4ba618563c
24 changed files with 529 additions and 19 deletions
@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<actor version="1">
<castshadow/>
<group>
<variant frequency="1" name="Base">
<mesh>skeletal/new/m_tunic_short.dae</mesh>
<props>
<prop actor="props/units/heads/new/head_hele_a.xml" attachpoint="head"/>
<prop actor="props/units/shields/aspis_athen_a.xml" attachpoint="shield_arm"/>
<prop actor="props/units/weapons/spear_hoplite.xml" attachpoint="weapon_R"/>
</props>
</variant>
</group>
<group>
<variant frequency="1" name="Samnite-Attic-01">
<props>
<prop actor="props/units/helmets/hele_attic_a1.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-02">
<props>
<prop actor="props/units/helmets/hele_attic_a2.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-03">
<props>
<prop actor="props/units/helmets/hele_attic_a3.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-04">
<props>
<prop actor="props/units/helmets/hele_attic_a4.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Phrygian-01">
<props>
<prop actor="props/units/helmets/hele_phrygian_a11.xml" attachpoint="helmet"/>
</props>
</variant>
</group>
<group>
<variant frequency="1" name="cardiopylax_01_01">
<textures>
<texture file="skeletal/ital/cardiopylax_01_01.png" name="baseTex"/>
<texture file="skeletal/ital/cardiopylax_01_spec.png" name="specTex"/>
<texture file="default_norm.png" name="normTex"/>
</textures>
</variant>
<variant frequency="1" name="cardiopylax_01_02">
<textures>
<texture file="skeletal/ital/cardiopylax_01_02.png" name="baseTex"/>
<texture file="skeletal/ital/cardiopylax_01_spec.png" name="specTex"/>
<texture file="default_norm.png" name="normTex"/>
</textures>
</variant>
<variant frequency="1" name="cardiopylax_01_03">
<textures>
<texture file="skeletal/ital/cardiopylax_01_03.png" name="baseTex"/>
<texture file="skeletal/ital/cardiopylax_01_spec.png" name="specTex"/>
<texture file="default_norm.png" name="normTex"/>
</textures>
</variant>
</group>
<group>
<variant file="biped/base_hoplite.xml"/>
<variant file="biped/formations/phalanx_front.xml"/>
<variant file="biped/formations/phalanx_mid.xml"/>
<variant file="biped/formations/phalanx_back.xml"/>
<variant file="biped/carry_food.xml"/>
<variant file="biped/carry_meat.xml"/>
<variant file="biped/carry_wood.xml"/>
<variant file="biped/carry_stone.xml"/>
<variant file="biped/carry_metal.xml"/>
<variant file="biped/approach_tree.xml"/>
<variant file="biped/approach_grain.xml"/>
<variant file="biped/approach_fruit.xml"/>
<variant file="biped/approach_meat.xml"/>
<variant file="biped/approach_rock.xml"/>
<variant file="biped/approach_ore.xml"/>
<variant file="biped/approach_ruins.xml"/>
<variant file="biped/approach_praise.xml"/>
</group>
<group>
<variant frequency="1" name="Idle"/>
<variant file="biped/attack_capture.xml"/>
<variant file="biped/attack_slaughter.xml"/>
<variant file="biped/gather_tree.xml"/>
<variant file="biped/gather_grain.xml"/>
<variant file="biped/gather_fruit.xml"/>
<variant file="biped/gather_meat.xml"/>
<variant file="biped/gather_rock.xml"/>
<variant file="biped/gather_ore.xml"/>
<variant file="biped/gather_ruins.xml"/>
<variant file="biped/gather_praise.xml"/>
<variant file="biped/build.xml"/>
<variant file="biped/build_farm.xml"/>
<variant file="biped/death_infantry.xml"/>
</group>
<material>player_trans_norm_spec.xml</material>
</actor>
@@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<actor version="1">
<castshadow/>
<group>
<variant>
<mesh>skeletal/new/m_tunic_short.dae</mesh>
<props>
<prop actor="props/units/heads/new/head_hele_b.xml" attachpoint="head"/>
<prop actor="props/units/shields/aspis_kart_b.xml" attachpoint="shield_arm"/>
<prop actor="props/units/weapons/spear_hoplite.xml" attachpoint="weapon_R"/>
</props>
<textures>
<texture file="skeletal/ital/tunic_belt_spec.png" name="specTex"/>
<texture file="default_norm.png" name="normTex"/>
</textures>
</variant>
</group>
<group>
<variant frequency="1" name="Samnite-Attic-01">
<props>
<prop actor="props/units/helmets/hele_attic_b1.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-02">
<props>
<prop actor="props/units/helmets/hele_attic_b2.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-03">
<props>
<prop actor="props/units/helmets/hele_attic_b3.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-03">
<props>
<prop actor="props/units/helmets/hele_attic_b4.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Rome-Montefortino-01">
<props>
<prop actor="props/units/helmets/rome_helmet_montefortino.xml" attachpoint="helmet"/>
</props>
</variant>
</group>
<group>
<variant frequency="1" name="tunic_pattern_06_01">
<textures>
<texture file="skeletal/ital/tunic_pattern_06_01.png" name="baseTex"/>
</textures>
</variant>
<variant frequency="1" name="tunic_pattern_06_02">
<textures>
<texture file="skeletal/ital/tunic_pattern_06_02.png" name="baseTex"/>
</textures>
</variant>
<variant frequency="1" name="tunic_pattern_06_03">
<textures>
<texture file="skeletal/ital/tunic_pattern_06_03.png" name="baseTex"/>
</textures>
</variant>
</group>
<group>
<variant file="biped/base_hoplite.xml"/>
<variant file="biped/formations/phalanx_front.xml"/>
<variant file="biped/formations/phalanx_mid.xml"/>
<variant file="biped/formations/phalanx_back.xml"/>
<variant file="biped/carry_food.xml"/>
<variant file="biped/carry_meat.xml"/>
<variant file="biped/carry_wood.xml"/>
<variant file="biped/carry_stone.xml"/>
<variant file="biped/carry_metal.xml"/>
<variant file="biped/approach_tree.xml"/>
<variant file="biped/approach_grain.xml"/>
<variant file="biped/approach_fruit.xml"/>
<variant file="biped/approach_meat.xml"/>
<variant file="biped/approach_rock.xml"/>
<variant file="biped/approach_ore.xml"/>
<variant file="biped/approach_ruins.xml"/>
<variant file="biped/approach_praise.xml"/>
</group>
<group>
<variant frequency="1" name="Idle"/>
<variant file="biped/attack_capture.xml"/>
<variant file="biped/attack_slaughter.xml"/>
<variant file="biped/gather_tree.xml"/>
<variant file="biped/gather_grain.xml"/>
<variant file="biped/gather_fruit.xml"/>
<variant file="biped/gather_meat.xml"/>
<variant file="biped/gather_rock.xml"/>
<variant file="biped/gather_ore.xml"/>
<variant file="biped/gather_ruins.xml"/>
<variant file="biped/gather_praise.xml"/>
<variant file="biped/build.xml"/>
<variant file="biped/build_farm.xml"/>
<variant file="biped/death_infantry.xml"/>
</group>
<material>player_trans_norm_spec.xml</material>
</actor>
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<actor version="1">
<castshadow/>
<group>
<variant>
<mesh>skeletal/new/m_armor_tunic_short.dae</mesh>
<props>
<prop actor="props/units/weapons/xiphos.xml" attachpoint="weapon_R"/>
<prop actor="props/units/weapons/spear_hoplite.xml" attachpoint="weapon_R"/>
</props>
<textures>
<texture file="skeletal/hele/cuirass_02_spec.png" name="specTex"/>
<texture file="default_norm.png" name="normTex"/>
</textures>
</variant>
</group>
<group>
<variant frequency="1" name="Shield-01">
<props>
<prop actor="props/units/shields/aspis_kart_a.xml" attachpoint="shield_arm"/>
</props>
</variant>
<variant frequency="1" name="Shield-02">
<props>
<prop actor="props/units/shields/aspis_kart_e.xml" attachpoint="shield_arm"/>
</props>
</variant>
</group>
<group>
<variant frequency="1" name="Samnite-Attic-01">
<props>
<prop actor="props/units/helmets/hele_attic_e1.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-02">
<props>
<prop actor="props/units/helmets/hele_attic_e2.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-03">
<props>
<prop actor="props/units/helmets/hele_attic_e3.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Attic-04">
<props>
<prop actor="props/units/helmets/hele_attic_e4.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Samnite-Phrygian-01">
<props>
<prop actor="props/units/helmets/hele_phrygian_e11.xml" attachpoint="helmet"/>
</props>
</variant>
<variant frequency="1" name="Rome-Montefortino-01">
<props>
<prop actor="props/units/helmets/samnite_helmet_montefortino.xml" attachpoint="helmet"/>
</props>
</variant>
</group>
<group>
<variant frequency="1" name="cuirass_01_01">
<textures>
<texture file="skeletal/ital/cuirass_01_01.png" name="baseTex"/>
</textures>
</variant>
<variant frequency="1" name="cuirass_01_02">
<textures>
<texture file="skeletal/ital/cuirass_01_02.png" name="baseTex"/>
</textures>
</variant>
<variant frequency="1" name="cuirass_01_03">
<textures>
<texture file="skeletal/ital/cuirass_01_03.png" name="baseTex"/>
</textures>
</variant>
</group>
<group>
<variant file="biped/base_hoplite.xml"/>
<variant file="biped/formations/phalanx_front.xml"/>
<variant file="biped/formations/phalanx_mid.xml"/>
<variant file="biped/formations/phalanx_back.xml"/>
<variant file="biped/carry_food.xml"/>
<variant file="biped/carry_meat.xml"/>
<variant file="biped/carry_wood.xml"/>
<variant file="biped/carry_stone.xml"/>
<variant file="biped/carry_metal.xml"/>
<variant file="biped/approach_tree.xml"/>
<variant file="biped/approach_grain.xml"/>
<variant file="biped/approach_fruit.xml"/>
<variant file="biped/approach_meat.xml"/>
<variant file="biped/approach_rock.xml"/>
<variant file="biped/approach_ore.xml"/>
<variant file="biped/approach_ruins.xml"/>
<variant file="biped/approach_praise.xml"/>
</group>
<group>
<variant frequency="1" name="Idle"/>
<variant file="biped/attack_capture.xml"/>
<variant file="biped/attack_slaughter.xml"/>
<variant file="biped/gather_tree.xml"/>
<variant file="biped/gather_grain.xml"/>
<variant file="biped/gather_fruit.xml"/>
<variant file="biped/gather_meat.xml"/>
<variant file="biped/gather_rock.xml"/>
<variant file="biped/gather_ore.xml"/>
<variant file="biped/gather_ruins.xml"/>
<variant file="biped/gather_praise.xml"/>
<variant file="biped/build.xml"/>
<variant file="biped/build_farm.xml"/>
<variant file="biped/death_infantry.xml"/>
</group>
<material>player_trans_norm_spec.xml</material>
</actor>
@@ -21,14 +21,19 @@
],
"CivBonuses": [
{
"Name": "Commercial Acumen",
"History": "",
"Description": "Merchant Ships +25% trade gain."
"Name": "Trademasters",
"History": "The Carthaginians were broadly known for their extensive trade over the Mediterranean Sea.",
"Description": "Trade ships are available in the Village Phase."
},
{
"Name": "Desirable Products",
"History": "",
"Description": "Docks and Markets +10% international trade bonus."
"Name": "Mining Economy",
"History": "The Carthaginian economy was centered around mining, with stone comprising much of Carthage's structures.",
"Description": "Stone mining technologies are free and instant."
},
{
"Name": "Numidian Cavalry",
"History": "The Numidian cavalry's horses, ancestors of the Berber horse, were small compared with other horses of the era, and were well adapted for faster movement over long distances.",
"Description": "Cavalry Javelineers +10% walk speed."
}
],
"WallSets": [
@@ -0,0 +1,25 @@
{
"genericName": "Celtic Auxiliaries",
"description": "The Second Punic War, Celtic troops were mainly auxiliaries.",
"cost": {
"metal": 550
},
"requirements": {
"all": [
{ "tech": "phase_city" },
{ "civ": "cart" }
]
},
"requirementsTooltip": "Unlocked in City Phase.",
"icon": "handshake.png",
"researchTime": 45,
"tooltip": "Mercenaries 50% metal cost but +50 food cost.",
"modifications": [
{ "value": "Cost/Resources/metal", "multiply": 0.5 },
{ "value": "Cost/Resources/food", "add": 50 },
{ "value": "Loot/metal", "multiply": 0.5 },
{ "value": "Loot/food", "add": 5 }
],
"affects": ["Mercenary Swordsman"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}
@@ -0,0 +1,17 @@
{
"genericName": "Servants",
"autoResearch": true,
"description": "Hire servants to help quarry stone. Increases stone gathering rates.",
"requirements": {
"all": [
{ "tech": "phase_village" }
]
},
"icon": "mining_stone_01.png",
"tooltip": "Workers +25% stone gather rate.",
"modifications": [
{ "value": "ResourceGatherer/Rates/stone.rock", "multiply": 1.25 }
],
"affects": ["Worker"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}
@@ -0,0 +1,17 @@
{
"genericName": "Servants",
"autoResearch": true,
"description": "Hire servants to help quarry stone. Increases stone gathering rates.",
"requirements": {
"all": [
{ "tech": "phase_town" }
]
},
"icon": "mining_stone_02.png",
"tooltip": "Workers +25% stone gather rate.",
"modifications": [
{ "value": "ResourceGatherer/Rates/stone.rock", "multiply": 1.25 }
],
"affects": ["Worker"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}
@@ -0,0 +1,17 @@
{
"genericName": "Servants",
"autoResearch": true,
"description": "Hire servants to help quarry stone. Increases stone gathering rates.",
"requirements": {
"all": [
{ "tech": "phase_city" }
]
},
"icon": "mining_stone_03.png",
"tooltip": "Workers +25% stone gather rate.",
"modifications": [
{ "value": "ResourceGatherer/Rates/stone.rock", "multiply": 1.25 }
],
"affects": ["Worker"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}
@@ -3,7 +3,7 @@
"autoResearch": true,
"description": "Carthaginians built their city walls in three concentric circuits. These walls were never breached. Even when the city was taken by the Romans, it was via the city's harbor, not by storming its walls.",
"icon": "wall.png",
"tooltip": "City Walls +100% build time, +100% stone cost, and +200% health.",
"tooltip": "City Walls +200% health, but +100% build time and stone cost.",
"requirements": { "civ": "cart" },
"modifications": [
{ "value": "Cost/BuildTime", "multiply": 2 },
@@ -9,7 +9,12 @@
"stone": 200
},
"supersedes": "gather_mining_servants",
"requirements": { "tech": "phase_town" },
"requirements": {
"all": [
{ "tech": "phase_town" },
{ "notciv": "cart" }
]
},
"requirementsTooltip": "Unlocked in Town Phase.",
"icon": "mining_stone_02.png",
"researchTime": 50,
@@ -12,7 +12,12 @@
"food": 200,
"stone": 100
},
"requirements": { "tech": "phase_village" },
"requirements": {
"all": [
{ "tech": "phase_village" },
{ "notciv": "cart" }
]
},
"icon": "mining_stone_01.png",
"researchTime": 40,
"tooltip": "Workers +25% stone gather rate.",
@@ -14,7 +14,12 @@
"stone": 300
},
"supersedes": "gather_mining_serfs",
"requirements": { "tech": "phase_city" },
"requirements": {
"all": [
{ "tech": "phase_city" },
{ "notciv": "cart" }
]
},
"requirementsTooltip": "Unlocked in City Phase.",
"icon": "mining_stone_03.png",
"researchTime": 60,
@@ -25,6 +25,11 @@
<Obstruction>
<Static width="15.0" depth="12.0"/>
</Obstruction>
<Researcher>
<Technologies datatype="tokens">
celtic_auxiliaries
</Technologies>
</Researcher>
<Trainer>
<Entities datatype="tokens">
units/{native}/infantry_swordsman_gaul_b
@@ -2,7 +2,8 @@
<Entity parent="template_structure_military_embassy">
<Cost>
<Resources>
<stone>200</stone>
<wood>100</wood>
<stone>100</stone>
</Resources>
</Cost>
<Identity>
@@ -13,7 +14,8 @@
<Icon>structures/embassy_iberian.png</Icon>
</Identity>
<Loot>
<stone>40</stone>
<wood>20</wood>
<stone>20</stone>
</Loot>
<Obstruction>
<Static width="16.0" depth="16.0"/>
@@ -22,7 +24,6 @@
<Entities datatype="tokens">
units/{native}/infantry_javelineer_iber_b
units/{native}/infantry_slinger_iber_b
units/{native}/cavalry_swordsman_iber_b
</Entities>
</Trainer>
<VisualActor>
@@ -2,7 +2,8 @@
<Entity parent="template_structure_military_embassy">
<Cost>
<Resources>
<metal>200</metal>
<wood>100</wood>
<stone>100</stone>
</Resources>
</Cost>
<Footprint>
@@ -20,14 +21,15 @@
<Icon>structures/embassy_italic.png</Icon>
</Identity>
<Loot>
<metal>40</metal>
<wood>20</wood>
<stone>20</stone>
</Loot>
<Obstruction>
<Static width="11.0" depth="14.0"/>
</Obstruction>
<Trainer>
<Entities datatype="tokens">
units/{native}/infantry_swordsman_ital_b
units/{native}/infantry_spearman_ital_b
units/{native}/cavalry_spearman_ital_b
</Entities>
</Trainer>
@@ -10,6 +10,9 @@
<Promotion>
<Entity>units/cart/cavalry_javelineer_a</Entity>
</Promotion>
<UnitMotion>
<WalkSpeed op="mul">1.1</WalkSpeed>
</UnitMotion>
<VisualActor>
<Actor>units/carthaginians/cavalry_javelinist_b_m.xml</Actor>
</VisualActor>
@@ -7,6 +7,6 @@
<Entity>units/cart/infantry_javelineer_iber_e</Entity>
</Promotion>
<VisualActor>
<Actor>units/iberians/infantry_javelinist_a.xml</Actor>
<Actor>units/iberians/infantry_javelinist_a_fire.xml</Actor>
</VisualActor>
</Entity>
@@ -1,5 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="merc_inf|template_unit_infantry_ranged_javelineer">
<Attack>
<Ranged>
<ApplyStatus>
<Burning>
<Interval>3000</Interval>
<Damage>
<Fire>1</Fire>
</Damage>
<Stackability>Stack</Stackability>
<Duration>9000</Duration>
</Burning>
</ApplyStatus>
</Ranged>
</Attack>
<Builder>
<Entities datatype="tokens">
structures/{civ}/super_dock
@@ -8,6 +22,11 @@
structures/{civ}/embassy_italic
</Entities>
</Builder>
<Cost>
<Resources>
<metal>80</metal>
</Resources>
</Cost>
<Identity>
<Civ>cart</Civ>
<GenericName>Iberian Mercenary Skirmisher</GenericName>
@@ -18,10 +37,13 @@
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>
<metal>8</metal>
</Loot>
<Promotion>
<Entity>units/cart/infantry_javelineer_iber_a</Entity>
</Promotion>
<VisualActor>
<Actor>units/iberians/infantry_javelinist_b.xml</Actor>
<Actor>units/iberians/infantry_javelinist_b_fire.xml</Actor>
</VisualActor>
</Entity>
@@ -5,6 +5,6 @@
</Identity>
<Promotion disable=""/>
<VisualActor>
<Actor>units/iberians/infantry_javelinist_e.xml</Actor>
<Actor>units/iberians/infantry_javelinist_e_fire.xml</Actor>
</VisualActor>
</Entity>
@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="merc_inf|template_unit_infantry_ranged_slinger">
<Attack>
<Ranged>
<Damage>
<Pierce op="mul">1.15</Pierce>
</Damage>
<MaxRange>50</MaxRange>
<RepeatTime>1750</RepeatTime>
</Ranged>
</Attack>
<Builder>
<Entities datatype="tokens">
structures/{civ}/super_dock
@@ -8,6 +17,11 @@
structures/{civ}/embassy_italic
</Entities>
</Builder>
<Cost>
<Resources>
<metal>75</metal>
</Resources>
</Cost>
<Identity>
<Civ>cart</Civ>
<GenericName>Balearic Slinger</GenericName>
@@ -18,6 +32,9 @@
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>
<metal>7</metal>
</Loot>
<Promotion>
<Entity>units/cart/infantry_slinger_iber_a</Entity>
</Promotion>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="units/cart/infantry_spearman_ital_b">
<Identity>
<Rank>Advanced</Rank>
</Identity>
<Promotion>
<Entity>units/cart/infantry_spearman_ital_e</Entity>
</Promotion>
<VisualActor>
<Actor>units/carthaginians/infantry_spearman_a_m.xml</Actor>
</VisualActor>
</Entity>
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="merc_inf|hoplite|template_unit_infantry_melee_spearman">
<Builder>
<Entities datatype="tokens">
structures/{civ}/super_dock
structures/{civ}/embassy_celtic
structures/{civ}/embassy_iberian
structures/{civ}/embassy_italic
</Entities>
</Builder>
<Identity>
<Civ>cart</Civ>
<GenericName>Samnite Spearman</GenericName>
<SpecificName>Seḫīr Romaḥ</SpecificName>
<SelectionGroupName>units/cart/infantry_spearman_ital_b</SelectionGroupName>
<Icon>units/cart/infantry_spearman_2.png</Icon>
<Requirements>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>
<Entity>units/cart/infantry_spearman_ital_a</Entity>
</Promotion>
<VisualActor>
<Actor>units/carthaginians/infantry_spearman_b_m.xml</Actor>
</VisualActor>
</Entity>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="units/cart/infantry_spearman_ital_a">
<Identity>
<Rank>Elite</Rank>
</Identity>
<Promotion disable=""/>
<VisualActor>
<Actor>units/carthaginians/infantry_spearman_e_m.xml</Actor>
</VisualActor>
</Entity>