Generalize to arbitrary translatable attacknames in the GUI

Reviewed By: Nescio, Freagarach
Comments By: wraitii, elexis
Differential Revision: D2995
refs: #252

This was SVN commit r24209.
This commit is contained in:
bb committed 2020-11-18 21:34:33 +00:00
1 parent 2dd223af29
commit 85c9a48db0
96 files changed
+213 -4

No files matched your search

@@ -214,9 +214,13 @@ function GetTemplateDataHelper(template, player, auraTemplates, modifiers = {})
};
ret.attack[type] = {
"attackName": {
"name": template.Attack[type].AttackName._string || template.Attack[type].AttackName,
"context": template.Attack[type].AttackName["@context"]
},
"minRange": getAttackStat("MinRange"),
"maxRange": getAttackStat("MaxRange"),
"elevationBonus": getAttackStat("ElevationBonus"),
"elevationBonus": getAttackStat("ElevationBonus")
};
ret.attack[type].elevationAdaptedRange = Math.sqrt(ret.attack[type].maxRange *
@@ -420,10 +420,12 @@ function getAttackTooltip(template)
if (attackType == "Slaughter")
continue;
let attackLabel = sprintf(headerFont(translate("%(attackType)s")), {
"attackType": attackType
});
let attackTypeTemplate = template.attack[attackType];
let attackLabel = sprintf(headerFont(translate("%(attackType)s")), {
"attackType": attackTypeTemplate.attackName.context ?
translateWithContext(attackTypeTemplate.attackName.context || "Name of an attack, usually the weapon.", attackTypeTemplate.attackName.name) :
translate(attackTypeTemplate.attackName.name)
});
let projectiles;
// Use either current rate from simulation or default count if the sim is not running.
@@ -400,6 +400,9 @@
],
"options": {
"keywords": {
"AttackName": {
"customContext": "Name of an attack, usually the weapon."
},
"StatusName": {
"customContext": "status effect"
},
@@ -441,6 +444,9 @@
],
"options": {
"keywords": {
"AttackName": {
"customContext": "Name of an attack, usually the weapon."
},
"StatusName": {
"customContext": "status effect"
},
@@ -489,6 +495,9 @@
},
"options": {
"keywords": {
"AttackName": {
"customContext": "Name of an attack, usually the weapon."
},
"GenericName": {},
"SpecificName": {},
"History": {},
@@ -26,6 +26,7 @@ Attack.prototype.Schema =
"<a:help>Controls the attack abilities and strengths of the unit.</a:help>" +
"<a:example>" +
"<Melee>" +
"<AttackName>Spear</AttackName>" +
"<Damage>" +
"<Hack>10.0</Hack>" +
"<Pierce>0.0</Pierce>" +
@@ -48,6 +49,7 @@ Attack.prototype.Schema =
"<PreferredClasses datatype=\"tokens\">Cavalry Infantry</PreferredClasses>" +
"</Melee>" +
"<Ranged>" +
"<AttackName>Bow</AttackName>" +
"<Damage>" +
"<Hack>0.0</Hack>" +
"<Pierce>10.0</Pierce>" +
@@ -97,6 +99,14 @@ Attack.prototype.Schema =
"<optional>" +
"<element name='Melee'>" +
"<interleave>" +
"<element name='AttackName' a:help='Name of the attack, to be displayed in the GUI. Optionally includes a translate context attribute.'>" +
"<optional>" +
"<attribute name='context'>" +
"<text/>" +
"</attribute>" +
"</optional>" +
"<text/>" +
"</element>" +
Attacking.BuildAttackEffectsSchema() +
"<element name='MaxRange' a:help='Maximum attack range (in metres)'><ref name='nonNegativeDecimal'/></element>" +
"<element name='PrepareTime' a:help='Time from the start of the attack command until the attack actually occurs (in milliseconds). This value relative to RepeatTime should closely match the \"event\" point in the actor&apos;s attack animation'>" +
@@ -113,6 +123,14 @@ Attack.prototype.Schema =
"<optional>" +
"<element name='Ranged'>" +
"<interleave>" +
"<element name='AttackName' a:help='Name of the attack, to be displayed in the GUI. Optionally includes a translate context attribute.'>" +
"<optional>" +
"<attribute name='context'>" +
"<text/>" +
"</attribute>" +
"</optional>" +
"<text/>" +
"</element>" +
Attacking.BuildAttackEffectsSchema() +
"<element name='MaxRange' a:help='Maximum attack range (in metres)'><ref name='nonNegativeDecimal'/></element>" +
"<element name='MinRange' a:help='Minimum attack range (in metres)'><ref name='nonNegativeDecimal'/></element>" +
@@ -185,6 +203,14 @@ Attack.prototype.Schema =
"<optional>" +
"<element name='Capture'>" +
"<interleave>" +
"<element name='AttackName' a:help='Name of the attack, to be displayed in the GUI. Optionally includes a translate context attribute.'>" +
"<optional>" +
"<attribute name='context'>" +
"<text/>" +
"</attribute>" +
"</optional>" +
"<text/>" +
"</element>" +
Attacking.BuildAttackEffectsSchema() +
"<element name='MaxRange' a:help='Maximum attack range (in meters)'><ref name='nonNegativeDecimal'/></element>" +
"<element name='RepeatTime' a:help='Time between attacks (in milliseconds). The attack animation will be stretched to match this time'>" + // TODO: it shouldn't be stretched
@@ -198,6 +224,14 @@ Attack.prototype.Schema =
"<optional>" +
"<element name='Slaughter' a:help='A special attack to kill domestic animals'>" +
"<interleave>" +
"<element name='AttackName' a:help='Name of the attack, to be displayed in the GUI. Optionally includes a translate context attribute.'>" +
"<optional>" +
"<attribute name='context'>" +
"<text/>" +
"</attribute>" +
"</optional>" +
"<text/>" +
"</element>" +
Attacking.BuildAttackEffectsSchema() +
"<element name='MaxRange'><ref name='nonNegativeDecimal'/></element>" + // TODO: how do these work?
Attack.prototype.preferredClassesSchema +
@@ -403,6 +437,14 @@ Attack.prototype.CompareEntitiesByPreference = function(a, b)
return aPreference - bPreference;
};
Attack.prototype.GetAttackName = function(type)
{
return {
"name": this.template[type].AttackName._string || this.template[type].AttackName,
"context": this.template[type].AttackName["@context"]
};
};
Attack.prototype.GetRepeatTime = function(type)
{
let repeatTime = 1000;
@@ -423,6 +423,8 @@ GuiInterface.prototype.GetEntityState = function(player, ent)
Object.assign(ret.attack[type], cmpAttack.GetAttackEffectsData(type));
ret.attack[type].attackName = cmpAttack.GetAttackName(type);
ret.attack[type].splash = cmpAttack.GetSplashData(type);
if (ret.attack[type].splash)
Object.assign(ret.attack[type].splash, cmpAttack.GetAttackEffectsData(type, true));
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_hunt_aggressive">
<Attack>
<Melee>
<AttackName>Tusks</AttackName>
<Damage>
<Hack>12.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_wild_aggressive">
<Attack>
<Melee>
<AttackName>Teeth</AttackName>
<Damage>
<Hack>30.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_hunt_aggressive">
<Attack>
<Melee>
<AttackName>Tusks</AttackName>
<Damage>
<Hack>12</Hack>
<Pierce>12</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_wild_violent">
<Attack>
<Melee>
<AttackName>Paws</AttackName>
<Damage>
<Hack>20.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_hunt_aggressive">
<Attack>
<Melee>
<AttackName>Horn</AttackName>
<Damage>
<Hack>20.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_wild_violent">
<Attack>
<Melee>
<AttackName>Paws</AttackName>
<Damage>
<Hack>30.0</Hack>
<Pierce>20.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_hunt_defensive">
<Attack>
<Melee>
<AttackName>Tusks</AttackName>
<Damage>
<Hack>15.0</Hack>
<Pierce>10.0</Pierce>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_infantry_melee">
<Attack>
<Melee>
<AttackName>Melee</AttackName>
</Melee>
</Attack>
<Identity>
<Civ>skirm</Civ>
</Identity>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_infantry_ranged">
<Attack>
<Ranged>
<AttackName>Ranged</AttackName>
</Ranged>
</Attack>
<Identity>
<Civ>skirm</Civ>
</Identity>
@@ -2,6 +2,7 @@
<Entity parent="template_structure_special">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>25.0</Pierce>
@@ -8,6 +8,7 @@
</AlertRaiser>
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>12.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_structure_defensive">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_structure_defensive_tower">
<Attack>
<Ranged>
<AttackName>Stone</AttackName>
<Damage>
<Pierce>35</Pierce>
<Crush>25</Crush>
@@ -2,6 +2,7 @@
<Entity parent="template_structure_defensive_tower">
<Attack>
<Ranged>
<AttackName>Bolt</AttackName>
<Damage>
<Pierce>55</Pierce>
<Crush>5</Crush>
@@ -2,6 +2,7 @@
<Entity parent="template_structure_defensive_wall">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>8.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_structure_military">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>16.0</Pierce>
@@ -2,12 +2,14 @@
<Entity parent="template_unit">
<Attack>
<Capture>
<AttackName>Capture</AttackName>
<Capture>2.5</Capture>
<MaxRange>4</MaxRange>
<RepeatTime>1000</RepeatTime>
<RestrictedClasses datatype="tokens">Field Palisade Wall</RestrictedClasses>
</Capture>
<Slaughter>
<AttackName>Slaughter</AttackName>
<Damage>
<Hack>100.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_cavalry_melee">
<Attack>
<Melee>
<AttackName>Axe</AttackName>
<Damage>
<Hack>6.9</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_cavalry_melee">
<Attack>
<Melee>
<AttackName>Spear</AttackName>
<Damage>
<Hack>4</Hack>
<Pierce>3</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_cavalry_melee">
<Attack>
<Melee>
<AttackName context="Name of an attack using a double-edged sword.">Sword</AttackName>
<Damage>
<Hack>6.5</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_cavalry_ranged">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>7.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_cavalry_ranged">
<Attack>
<Ranged>
<AttackName>Javelin</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>18.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit">
<Attack>
<Capture>
<AttackName>Capture</AttackName>
<Capture>5</Capture>
<MaxRange>4</MaxRange>
<RepeatTime>1000</RepeatTime>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_cavalry">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>14.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_cavalry">
<Attack>
<Melee>
<AttackName>Axe</AttackName>
<Damage>
<Hack>13.8</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_cavalry">
<Attack>
<Ranged>
<AttackName>Javelin</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>36.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_cavalry">
<Attack>
<Melee>
<AttackName>Spear</AttackName>
<Damage>
<Hack>8</Hack>
<Pierce>6</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_cavalry">
<Attack>
<Melee>
<AttackName context="Name of an attack using a double-edged sword.">Sword</AttackName>
<Damage>
<Hack>13.0</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_elephant">
<Attack replace="">
<Melee>
<AttackName>Trunk</AttackName>
<Damage>
<Hack>20</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>6.5</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry">
<Attack>
<Melee>
<AttackName>Axe</AttackName>
<Damage>
<Hack>12</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry">
<Attack>
<Ranged>
<AttackName>Javelin</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>26.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry">
<Attack>
<Melee>
<AttackName>Mace</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry">
<Attack>
<Melee>
<AttackName>Pike</AttackName>
<Damage>
<Hack>2.0</Hack>
<Pierce>6.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry">
<Attack>
<Melee>
<AttackName>Spear</AttackName>
<Damage>
<Hack>6.0</Hack>
<Pierce>5.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry">
<Attack>
<Melee>
<AttackName context="Name of an attack using a double-edged sword.">Sword</AttackName>
<Damage>
<Hack>11.0</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit">
<Attack>
<Melee>
<AttackName>Fangs</AttackName>
<Damage>
<Hack>7</Hack>
<Pierce>2</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_hunt_aggressive">
<Attack>
<Melee>
<AttackName>Paws</AttackName>
<Damage>
<Hack>20</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_hunt_defensive">
<Attack>
<Melee>
<AttackName>Horns</AttackName>
<Damage>
<Hack>1</Hack>
<Pierce>5</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_hunt_defensive">
<Attack>
<Melee>
<AttackName>Trunk</AttackName>
<Damage>
<Hack>25.0</Hack>
<Pierce>10.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_wild_aggressive_wolf">
<Attack>
<Melee>
<AttackName>Fangs</AttackName>
<Damage>
<Hack>7</Hack>
<Pierce>2</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_wild_aggressive">
<Attack>
<Melee>
<AttackName>Fangs</AttackName>
<Damage>
<Hack>10.0</Hack>
<Pierce>10.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_fauna_wild_defensive">
<Attack>
<Melee>
<AttackName>Fangs</AttackName>
<Damage>
<Hack>2.5</Hack>
<Pierce>5.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit">
<Attack>
<Capture>
<AttackName>Capture</AttackName>
<Capture>10</Capture>
<MaxRange>4</MaxRange>
<RepeatTime>1000</RepeatTime>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_cavalry">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>35</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_cavalry">
<Attack>
<Melee>
<AttackName>Axe</AttackName>
<Damage>
<Hack>27.6</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_cavalry">
<Attack>
<Ranged>
<AttackName>Javelin</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>60.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_cavalry">
<Attack>
<Melee>
<AttackName>Spear</AttackName>
<Damage>
<Hack>16</Hack>
<Pierce>12</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_cavalry">
<Attack>
<Melee>
<AttackName context="Name of an attack using a double-edged sword.">Sword</AttackName>
<Damage>
<Hack>26.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero">
<Attack replace="">
<Melee>
<AttackName>Trunk</AttackName>
<Damage>
<Hack>20.0</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_infantry">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>8.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_infantry">
<Attack>
<Melee>
<AttackName>Axe</AttackName>
<Damage>
<Hack>24</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_infantry">
<Attack>
<Ranged>
<AttackName>Javelin</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>50.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_infantry">
<Attack>
<Melee>
<AttackName>Pike</AttackName>
<Damage>
<Hack>4.0</Hack>
<Pierce>20.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_infantry">
<Attack>
<Melee>
<AttackName>Spear</AttackName>
<Damage>
<Hack>12.0</Hack>
<Pierce>10.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_infantry">
<Attack>
<Melee>
<AttackName context="Name of an attack using a double-edged sword.">Sword</AttackName>
<Damage>
<Hack>22.0</Hack>
<Pierce>0</Pierce>
@@ -2,12 +2,14 @@
<Entity parent="template_unit">
<Attack>
<Capture>
<AttackName>Capture</AttackName>
<Capture>2.5</Capture>
<MaxRange>4</MaxRange>
<RepeatTime>1000</RepeatTime>
<RestrictedClasses datatype="tokens">Field Palisade Wall</RestrictedClasses>
</Capture>
<Slaughter>
<AttackName>Slaughter</AttackName>
<Damage>
<Hack>50.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_melee">
<Attack>
<Melee>
<AttackName>Axe</AttackName>
<Damage>
<Hack>6</Hack>
<Crush>2</Crush>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_melee">
<Attack>
<Melee>
<AttackName>Pike</AttackName>
<Damage>
<Hack>1</Hack>
<Pierce>3</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_melee">
<Attack>
<Melee>
<AttackName>Spear</AttackName>
<Damage>
<Hack>3.0</Hack>
<Pierce>2.5</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_melee">
<Attack>
<Melee>
<AttackName context="Name of an attack using a double-edged sword.">Sword</AttackName>
<Damage>
<Hack>5.5</Hack>
<Pierce>0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_ranged">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>6.7</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_ranged">
<Attack>
<Ranged>
<AttackName>Javelin</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>16.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_ranged">
<Attack>
<Ranged>
<AttackName>Sling</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>9.2</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_ship">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>35.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_ship">
<Attack>
<Melee>
<AttackName>Fire</AttackName>
<Damage>
<Hack>10.0</Hack>
<Pierce>10.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_ship">
<Attack>
<Melee>
<AttackName>Harpoon</AttackName>
<Damage>
<Hack>10.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_ship">
<Attack>
<Ranged>
<AttackName>Stone</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>10.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_ship">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>35.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_siege">
<Attack>
<Ranged>
<AttackName>Bolt</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>150.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_siege">
<Attack>
<Melee>
<AttackName>Ram</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>0.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_siege">
<Attack>
<Ranged>
<AttackName>Stone</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>10.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_siege">
<Attack>
<Ranged>
<AttackName>Bow</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>12.0</Pierce>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_support">
<Attack>
<Melee>
<AttackName>Dagger</AttackName>
<Damage>
<Hack>2.0</Hack>
<Pierce>0</Pierce>
@@ -12,6 +13,7 @@
<RepeatTime>1000</RepeatTime>
</Melee>
<Slaughter>
<AttackName>Slaughter</AttackName>
<Damage>
<Hack>25.0</Hack>
<Pierce>0.0</Pierce>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_cavalry_melee_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Identity>
<Civ>athen</Civ>
<Lang>greek</Lang>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_cavalry_melee_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Cost>
<Resources>
<food op="add">-25</food>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Auras datatype="tokens">
units/heroes/cart_hero_hamilcar_1
units/heroes/cart_hero_hamilcar_2
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_champion_infantry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Identity>
<Civ>iber</Civ>
<SpecificName>Leial Ezpatari</SpecificName>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_infantry_melee_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Builder>
<Entities datatype="tokens">
structures/iber_monument
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_champion_infantry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Identity>
<Civ>kush</Civ>
<Lang>napatan</Lang>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_infantry_melee_swordsman">
<Attack>
<Melee>
<AttackName>Mace</AttackName>
<Damage>
<Hack>3.0</Hack>
<Crush>2.5</Crush>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_champion_infantry_archer">
<Attack>
<Ranged>
<AttackName>Crossbow</AttackName>
<Damage>
<Hack>0</Hack>
<Pierce>6.5</Pierce>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_champion_infantry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a rhomphaia (ῥομφαία), a Thracian two-handed weapon capable of both thrusting and slashing.">Rhomphaia</AttackName>
</Melee>
</Attack>
<Identity>
<Civ>mace</Civ>
<Lang>greek</Lang>
@@ -2,6 +2,7 @@
<Entity parent="template_unit_hero_cavalry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
<Bonuses>
<Herocide>
<Classes>Hero</Classes>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Auras datatype="tokens">
units/heroes/mace_hero_craterus
</Auras>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Auras datatype="tokens">
units/heroes/mace_hero_demetrius
</Auras>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_infantry_melee_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
</Melee>
</Attack>
<Builder>
<Entities datatype="tokens">
structures/maur_elephant_stables
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_champion_infantry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a rhomphaia (ῥομφαία), a Thracian two-handed weapon capable of both thrusting and slashing.">Rhomphaia</AttackName>
</Melee>
</Attack>
<Identity>
<VisibleClasses datatype="tokens">Mercenary</VisibleClasses>
<Lang>greek</Lang>
@@ -2,6 +2,7 @@
<Entity parent="template_unit">
<Attack>
<Ranged>
<AttackName>Machine Guns</AttackName>
<Damage>
<Hack>0.0</Hack>
<Pierce>100.0</Pierce>
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_infantry_melee_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a rhomphaia (ῥομφαία), a Thracian two-handed weapon capable of both thrusting and slashing.">Rhomphaia</AttackName>
</Melee>
</Attack>
<Builder>
<Entities datatype="tokens">
structures/sele_library
@@ -2,6 +2,7 @@
<Entity parent="template_unit_siege">
<Attack>
<Ranged>
<AttackName>Fire</AttackName>
<Damage>
<Hack>50.0</Hack>
<Pierce>0.0</Pierce>