Ticket #3792: aura_patch.5.diff

File aura_patch.5.diff, 84.5 KB (added by fatherbushido, 8 years ago)
  • binaries/data/mods/public/globalscripts/Templates.js

    function MatchesClassList(classes, match  
    6666}
    6767
    6868/**
    6969 * Get information about a template with or without technology modifications.
    7070 * @param template A valid template as returned by the template loader.
    71  * @param player An optional player id to get the technology modifications 
     71 * @param player An optional player id to get the technology modifications
    7272 *               of properties.
     73 * @param aurasTemplate An object in the form of {key: {auraName: "", auraDescription: ""}}
    7374 */
    74 function GetTemplateDataHelper(template, player)
     75function GetTemplateDataHelper(template, player, aurasTemplate)
    7576{
    7677    var ret = {};
    7778
    7879    var func;
    7980    if (player)
    function GetTemplateDataHelper(template,  
    118119    }
    119120
    120121    if (template.Auras)
    121122    {
    122123        ret.auras = {};
    123         for (let auraID in template.Auras)
     124        for (let auraID in aurasTemplate)
    124125        {
    125             let aura = template.Auras[auraID];
    126             if (aura.AuraName)
     126            let aura = aurasTemplate[auraID];
     127            if (aura.auraName)
    127128                ret.auras[auraID] = {
    128                     "name": aura.AuraName,
    129                     "description": aura.AuraDescription || null
     129                    "name": aura.auraName || null,
     130                    "description": aura.auraDescription || null
    130131                };
    131132        }
    132133    }
    133134
    134135    if (template.BuildRestrictions)
  • binaries/data/mods/public/simulation/components/Auras.js

     
    11function Auras() {}
    22
    3 var modificationSchema =
    4     "<element name='Modifications' a:help='Modification list'>" +
    5         "<oneOrMore>" +
    6             "<element a:help='Name of the value to modify'>" +
    7                 "<anyName/>" +
    8                 "<choice>" +
    9                     "<element name='Add'>" +
    10                         "<data type='decimal'/>" +
    11                     "</element>" +
    12                     "<element name='Multiply'>" +
    13                         "<data type='decimal'/>" +
    14                     "</element>" +
    15                 "</choice>" +
    16             "</element>" +
    17         "</oneOrMore>" +
    18     "</element>";
    19 
    203Auras.prototype.Schema =
    21     "<oneOrMore>" +
    22         "<element a:help='Any name you want'>" +
    23             "<anyName/>" +
    24             "<interleave>" +
    25                 "<optional>" +
    26                     "<element name='Radius' a:help='Define the radius this aura affects, if it is a range aura'>" +
    27                         "<data type='nonNegativeInteger'/>" +
    28                     "</element>" +
    29                 "</optional>" +
    30                 "<element name='Type' a:help='Controls how this aura affects nearby units'>" +
    31                     "<choice>" +
    32                         "<value a:help='Affects units in the same formation'>formation</value>" +
    33                         "<value a:help='Affects units in a certain range'>range</value>" +
    34                         "<value a:help='Affects the structure or unit this unit is garrisoned in'>garrison</value>" +
    35                         "<value a:help='Affects the units that are garrisoned on a certain structure'>garrisonedUnits</value>" +
    36                         "<value a:help='Affects all units while this unit is alive'>global</value>" +
    37                     "</choice>" +
    38                 "</element>" +
    39                 modificationSchema +
    40                 "<optional>" +
    41                     "<element name='AuraName' a:help='name to display in the GUI'>" +
    42                         "<text/>" +
    43                     "</element>" +
    44                 "</optional>" +
    45                 "<optional>" +
    46                     "<element name='AuraDescription' a:help='description to display in the GUI, requires a name'>" +
    47                         "<text/>" +
    48                     "</element>" +
    49                 "</optional>" +
    50                 "<optional>" +
    51                     "<element name='OverlayIcon' a:help='Icon to show on the entities affected by this aura'>" +
    52                         "<text/>" +
    53                     "</element>" +
    54                 "</optional>" +
    55                 "<element name='Affects' a:help='Affected classes'>" +
    56                     "<text/>" +
    57                 "</element>" +
    58                 "<optional>" +
    59                     "<element name='AffectedPlayers' a:help='Affected players'>" +
    60                         "<text/>" +
    61                     "</element>" +
    62                 "</optional>" +
    63             "</interleave>" +
    64         "</element>" +
    65     "</oneOrMore>";
     4            "<attribute name='datatype'>" +
     5                "<value>tokens</value>" +
     6            "</attribute>" +
     7            "<text/>";
    668
    679Auras.prototype.Init = function()
    6810{
    69     var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
    70     this.templateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
     11    let cmpTechnologyTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TechnologyTemplateManager);
    7112    this.auras = {};
    7213    this.affectedPlayers = {};
    73     for (var name in this.template)
     14    let auraNames = this.GetAuraNames();
     15    for (let name of auraNames)
    7416    {
    75         this.affectedPlayers[name] = []; // will be calculated on ownership change
    76         var aura = {};
    77         aura.affects = this.template[name].Affects;
    78         if (this.template[name].AffectedPlayers)
    79             aura.affectedPlayers = this.template[name].AffectedPlayers.split(/\s+/);
    80         this.auras[name] = aura;
     17        this.affectedPlayers[name] = [];
     18        this.auras[name] = cmpTechnologyTemplateManager.GetAuraTemplate(name);
    8119    }
    82     // In case of autogarrisoning, this component can be called before ownership is set.
    83     // So it needs to be completely initialised from the start.
     20    // In case of autogarrisoning, this component can be called before ownership is set.
     21    // So it needs to be completely initialised from the start.
    8422    this.Clean();
    8523};
    8624
    87 Auras.prototype.GetModifierIdentifier = function(name, mod)
     25// We can modify identifier if we want stackable auras in some case.
     26Auras.prototype.GetModifierIdentifier = function(name)
    8827{
    89         return this.templateName + "/" + name + "/" + mod.value;
     28        return name;
    9029};
    9130
    9231Auras.prototype.GetDescriptions = function()
    9332{
     33    let auraNames = this.GetAuraNames();
    9434    var ret = {};
    95     for (let name in this.template)
     35    for (let name of auraNames)
    9636    {
    97         let aura = this.template[name];
    98         if (aura.AuraName)
    99             ret[aura.AuraName] = aura.AuraDescription || null;
     37        let aura = this.auras[name];
     38        if (aura.auraName)
     39            ret[aura.auraName] = aura.auraDescription || null;
    10040    }
    10141    return ret;
    10242};
    10343
    10444Auras.prototype.GetAuraNames = function()
    10545{
    106     return Object.keys(this.template);
     46    return this.template._string.split(/\s+/);
    10747};
    10848
    10949Auras.prototype.GetOverlayIcon = function(name)
    11050{
    111     return this.template[name].OverlayIcon || "";
     51    return this.auras[name].overlayIcon || "";
    11252};
    11353
    11454Auras.prototype.GetAffectedEntities = function(name)
    11555{
    11656    return this[name].targetUnits;
    Auras.prototype.GetRange = function(name  
    12060{
    12161    if (!this.IsRangeAura(name))
    12262        return undefined;
    12363    if (this.IsGlobalAura(name))
    12464        return -1; // -1 is infinite range
    125     return +this.template[name].Radius;
     65    return +this.auras[name].radius;
    12666};
    12767
    12868Auras.prototype.GetClasses = function(name)
    12969{
    13070    return this.auras[name].affects;
    Auras.prototype.CalculateAffectedPlayers  
    161101            }
    162102        }
    163103    }
    164104};
    165105
     106Auras.prototype.CanApply = function(name)
     107{
     108    if (!this.auras[name].requiredTechnology)
     109        return true;
     110    let cmpTechnologyManager = QueryOwnerInterface(this.entity, IID_TechnologyManager);
     111    if (!cmpTechnologyManager || !cmpTechnologyManager.IsTechnologyResearched(this.auras[name].requiredTechnology))
     112        return false;
     113    return true;
     114};
     115
    166116Auras.prototype.HasFormationAura = function()
    167117{
    168118    return this.GetAuraNames().some(n => this.IsFormationAura(n));
    169119};
    170120
    Auras.prototype.HasGarrisonedUnitsAura =  
    178128    return this.GetAuraNames().some(n => this.IsGarrisonedUnitsAura(n));
    179129};
    180130
    181131Auras.prototype.GetType = function(name)
    182132{
    183     return this.template[name].Type;
     133    return this.auras[name].type;
    184134};
    185135
    186136Auras.prototype.IsFormationAura = function(name)
    187137{
    188138    return this.GetType(name) == "formation";
    Auras.prototype.Clean = function()  
    234184
    235185        if (this[name].rangeQuery)
    236186            cmpRangeManager.DestroyActiveQuery(this[name].rangeQuery);
    237187    }
    238188
    239     for (let name in this.template)
    240     {
    241         let modifications = [];
    242         for (let value in this.template[name].Modifications)
    243         {
    244             let mod = {};
    245             mod.value = value.replace(/\./g, "/").replace(/\/\//g, ".");
    246             let templateModifications = this.template[name].Modifications[value];
    247             if (templateModifications.Add)
    248                 mod.add = ApplyValueModificationsToEntity("Auras/"+name+"/Modifications/"+mod.value+"/Add",
    249                     +templateModifications.Add, this.entity);
    250             else if (templateModifications.Multiply)
    251                 mod.multiply = ApplyValueModificationsToEntity("Auras/"+name+"/Modifications/"+mod.value+"/Multiply",
    252                     +templateModifications.Multiply, this.entity);
    253             modifications.push(mod);
    254         }
    255         this.auras[name].modifications = modifications;
    256     }
    257 
    258189    for (let name of auraNames)
    259190    {
    260191        // only calculate the affected players on re-applying the bonuses
    261192        // this makes sure the template bonuses are removed from the correct players
    262193        this.CalculateAffectedPlayers(name);
    Auras.prototype.ApplyGarrisonBonus = fun  
    341272        this.ApplyBonus(name, [structure]);
    342273};
    343274
    344275Auras.prototype.ApplyTemplateBonus = function(name, players)
    345276{
     277    if (!this.CanApply(name))
     278        return;
     279
    346280    if (!this.IsGlobalAura(name))
    347281        return;
    348282    var modifications = this.GetModifications(name);
    349283    var cmpAuraManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AuraManager);
    350284    var classes = this.GetClasses(name);
    351285
    352286    for (let mod of modifications)
    353287        for (let player of players)
    354             cmpAuraManager.ApplyTemplateBonus(mod.value, player, classes, mod, this.GetModifierIdentifier(name, mod));
     288            cmpAuraManager.ApplyTemplateBonus(mod.value, player, classes, mod, this.GetModifierIdentifier(name));
    355289};
    356290
    357291Auras.prototype.RemoveFormationBonus = function(memberList)
    358292{
    359293    var auraNames = this.GetAuraNames().filter(n => this.IsFormationAura(n));
    Auras.prototype.RemoveGarrisonBonus = fu  
    368302        this.RemoveBonus(name, [structure]);
    369303};
    370304
    371305Auras.prototype.RemoveTemplateBonus = function(name)
    372306{
     307    if (!this.CanApply(name))
     308        return;
    373309    if (!this.IsGlobalAura(name))
    374310        return;
    375311
    376312    var modifications = this.GetModifications(name);
    377313    var cmpAuraManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AuraManager);
    378314    var classes = this.GetClasses(name);
    379315    var players = this.GetAffectedPlayers(name);
    380316
    381317    for (let mod of modifications)
    382318        for (let player of players)
    383             cmpAuraManager.RemoveTemplateBonus(mod.value, player, classes, this.GetModifierIdentifier(name, mod));
     319            cmpAuraManager.RemoveTemplateBonus(mod.value, player, classes, this.GetModifierIdentifier(name));
    384320};
    385321
    386322Auras.prototype.ApplyBonus = function(name, ents)
    387323{
    388324    var validEnts = this.GiveMembersWithValidClass(name, ents);
    389325    if (!validEnts.length)
    390326        return;
    391327
    392328    this[name].targetUnits = this[name].targetUnits.concat(validEnts);
     329
     330    if (!this.CanApply(name))
     331        return;
     332
    393333    var modifications = this.GetModifications(name);
    394334    var cmpAuraManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AuraManager);
    395335
    396336    for (let mod of modifications)
    397         cmpAuraManager.ApplyBonus(mod.value, validEnts, mod, this.GetModifierIdentifier(name, mod));
    398 
     337        cmpAuraManager.ApplyBonus(mod.value, validEnts, mod, this.GetModifierIdentifier(name));
    399338    // update status bars if this has an icon
    400339    if (!this.GetOverlayIcon(name))
    401340        return;
    402341
    403342    for (let ent of validEnts)
    Auras.prototype.RemoveBonus = function(n  
    413352    var validEnts = this.GiveMembersWithValidClass(name, ents);
    414353    if (!validEnts.length)
    415354        return;
    416355
    417356    this[name].targetUnits = this[name].targetUnits.filter(v => validEnts.indexOf(v) == -1);
     357
     358    if (!this.CanApply(name))
     359        return;
     360
    418361    var modifications = this.GetModifications(name);
    419362    var cmpAuraManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AuraManager);
    420363
    421364    for (let mod of modifications)
    422         cmpAuraManager.RemoveBonus(mod.value, validEnts, this.GetModifierIdentifier(name, mod));
     365        cmpAuraManager.RemoveBonus(mod.value, validEnts, this.GetModifierIdentifier(name));
    423366
    424367    // update status bars if this has an icon
    425368    if (!this.GetOverlayIcon(name))
    426369        return;
    427370
    Auras.prototype.OnDiplomacyChanged = fun  
    443386    var cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
    444387    if (cmpOwnership && cmpOwnership.GetOwner() == msg.player)
    445388        this.Clean();
    446389};
    447390
    448 Auras.prototype.OnValueModification = function(msg)
     391Auras.prototype.OnGlobalResearchFinished = function(msg)
    449392{
    450     if (msg.component == "Auras")
    451         this.Clean();
     393    let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
     394    if (!cmpOwnership || cmpOwnership.GetOwner() != msg.player)
     395        return;
     396    let auraNames = this.GetAuraNames();
     397    for (let name of auraNames)
     398    {
     399        if (this.auras[name].requiredTechnology === undefined)
     400            continue;
     401        if (this.auras[name].requiredTechnology == msg.tech)
     402            this.Clean();
     403    }
    452404};
    453405
    454406Engine.RegisterComponentType(IID_Auras, "Auras", Auras);
  • binaries/data/mods/public/simulation/components/GuiInterface.js

    GuiInterface.prototype.GetTemplateData =  
    574574    let template = cmpTemplateManager.GetTemplate(name);
    575575
    576576    if (!template)
    577577        return null;
    578578
    579     return GetTemplateDataHelper(template, player);
     579    let aurasTemplate = {};
     580
     581    if (!template.Auras)
     582        return GetTemplateDataHelper(template, player, aurasTemplate);
     583
     584    // Add aura name and description loaded from JSON file
     585    let auraNames = template.Auras._string.split(/\s+/);
     586    let cmpTechnologyTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TechnologyTemplateManager);
     587    for (let name of auraNames)
     588    {
     589        let auraTemplate = cmpTechnologyTemplateManager.GetAuraTemplate(name);
     590        if (!auraTemplate)
     591        {
     592            // the following warning is perhaps useless since it's yet done in TechnologyTemplateManager
     593            warn("Tried to get data for invalid aura: " + name);
     594            continue;
     595        }
     596        aurasTemplate[name] = {};
     597        aurasTemplate[name].auraName = auraTemplate.auraName || null;
     598        aurasTemplate[name].auraDescription = auraTemplate.auraDescription || null;
     599    }
     600    return GetTemplateDataHelper(template, player, aurasTemplate);
    580601};
    581602
    582603GuiInterface.prototype.GetTechnologyData = function(player, name)
    583604{
    584605    let cmpTechnologyTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TechnologyTemplateManager);
  • binaries/data/mods/public/simulation/components/TechnologyTemplateManager.js

     
    11/**
    2  * System component which loads the technology data files
     2 * System component which loads the technology and the aura data files
    33 */
    44function TechnologyTemplateManager() {}
    55
    66TechnologyTemplateManager.prototype.Schema =
    77    "<a:component type='system'/><empty/>";
  • binaries/data/mods/public/simulation/data/technologies/pop_wonder.json

     
    88        "ptol": "Peristyle",
    99        "rome": "Peristyle",
    1010        "pers": "Paradise"
    1111    },
    1212    "description": "The wonder attracts many more people to your civilization.",
    13     "cost": { "food": 3000, "wood": 3000, "stone": 500, "metal": 500 },
     13    "cost": { "food": 2000, "wood": 3000, "stone": 500, "metal": 500 },
    1414    "requirements": { "tech": "phase_city" },
    1515    "requirementsTooltip": "Unlocked in City Phase.",
    1616    "icon": "special_treasure.png",
    1717    "researchTime": 40,
    18     "tooltip": "+50 maximum population cap.",
    19     "modifications": [{ "value": "Player/MaxPopulation", "add": 50 }],
     18    "tooltip": "enable +50 wonder aura",
     19    "modifications": [],
    2020    "soundComplete": "interface/alarm/alarm_upgradearmory.xml"
    2121}
  • binaries/data/mods/public/simulation/helpers/ValueModification.js

    function ApplyValueModificationsToTempla  
    3030    if (cmpTechnologyManager)
    3131        value = cmpTechnologyManager.ApplyModificationsTemplate(tech_type, current_value, template);
    3232
    3333    let cmpAuraManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AuraManager);
    3434    if (!cmpAuraManager)
    35         return value; 
     35        return value;
    3636    return cmpAuraManager.ApplyTemplateModifications(tech_type, value, playerID, template);
    3737}
    3838
    3939Engine.RegisterGlobal("ApplyValueModificationsToEntity", ApplyValueModificationsToEntity);
    4040Engine.RegisterGlobal("ApplyValueModificationsToPlayer", ApplyValueModificationsToPlayer);
  • binaries/data/mods/public/simulation/templates/structures/athen_theatron.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Structure</Affects>
    7       <Modifications>
    8         <TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
    9       </Modifications>
    10     </Aura1>
    11   </Auras>
     3  <Auras datatype="tokens">theatron</Auras>
    124  <BuildRestrictions>
    135    <Category>Theater</Category>
    146  </BuildRestrictions>
    157  <Cost>
    168    <BuildTime>500</BuildTime>
  • binaries/data/mods/public/simulation/templates/structures/brit_rotarymill.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
     3  <Auras datatype="tokens">rotary_mill</Auras>
    34  <Cost>
    45    <BuildTime>100</BuildTime>
    56    <PopulationBonus>2</PopulationBonus>
    67    <Resources>
    78      <food>0</food>
    89      <wood>200</wood>
    910      <stone>100</stone>
    1011      <metal>0</metal>
    1112    </Resources>
    1213  </Cost>
    13   <Auras>
    14     <Aura1>
    15     <Type>range</Type>
    16       <Radius>60</Radius>
    17       <Affects>Worker</Affects>
    18       <Modifications>
    19         <ResourceGatherer.Rates.food..grain> <Multiply>1.25</Multiply> </ResourceGatherer.Rates.food..grain>
    20       </Modifications>
    21       <AuraName>Farming bonus</AuraName>
    22       <AuraDescription>Boosts nearby farming with +25% gathering rate.</AuraDescription>
    23       <OverlayIcon>art/textures/ui/session/auras/farming.png</OverlayIcon>
    24     </Aura1>
    25   </Auras>
    2614  <Footprint replace="">
    2715    <Circle radius="9.0"/>
    2816    <Height>6.0</Height>
    2917  </Footprint>
    3018  <GarrisonHolder disable=""/>
  • binaries/data/mods/public/simulation/templates/structures/cart_super_dock.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
    3   <Auras>
    4     <Aura1>
    5       <Type>garrisonedUnits</Type>
    6       <Affects>Ship</Affects>
    7       <Modifications>
    8         <Health.RegenRate> <Add>3</Add> </Health.RegenRate>
    9       </Modifications>
    10       <AuraName>Repairing ship Aura</AuraName>
    11       <AuraDescription>Heals garrisoned ship at 3 HP per second.</AuraDescription>
    12     </Aura1>
    13   </Auras>
     3  <Auras datatype="tokens">cart_super_dock_repair</Auras>
    144  <BuildRestrictions>
    155    <Territory>own ally neutral</Territory>
    166    <PlacementType>shore</PlacementType>
    177    <Category>Dock</Category>
    188  </BuildRestrictions>
  • binaries/data/mods/public/simulation/templates/structures/gaul_rotarymill.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
     3  <Auras datatype="tokens">rotary_mill</Auras>
    34  <Cost>
    45    <BuildTime>100</BuildTime>
    56    <PopulationBonus>2</PopulationBonus>
    67    <Resources>
    78      <food>0</food>
    89      <wood>200</wood>
    910      <stone>100</stone>
    1011      <metal>0</metal>
    1112    </Resources>
    1213  </Cost>
    13   <Auras>
    14     <Aura1>
    15     <Type>range</Type>
    16       <Radius>60</Radius>
    17       <Affects>Worker</Affects>
    18       <Modifications>
    19         <ResourceGatherer.Rates.food..grain> <Multiply>1.25</Multiply> </ResourceGatherer.Rates.food..grain>
    20       </Modifications>
    21       <AuraName>Farming bonus</AuraName>
    22       <AuraDescription>Boosts nearby farming with +25% gathering rate.</AuraDescription>
    23       <OverlayIcon>art/textures/ui/session/auras/farming.png</OverlayIcon>
    24     </Aura1>
    25   </Auras>
    2614  <Footprint replace="">
    2715    <Circle radius="9.0"/>
    2816    <Height>6.0</Height>
    2917  </Footprint>
    3018  <GarrisonHolder disable=""/>
  • binaries/data/mods/public/simulation/templates/structures/iber_monument.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>50</Radius>
    7       <Affects>Unit</Affects>
    8       <Modifications>
    9         <Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
    10         <Attack.Ranged.Pierce> <Add>3</Add> </Attack.Ranged.Pierce>
    11       </Modifications>
    12       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    13     </Aura1>
    14   </Auras>
     3  <Auras datatype="tokens">iber_monument</Auras>
    154  <BuildRestrictions>
    165    <Category>Monument</Category>
    176  </BuildRestrictions>
    187  <Cost>
    198    <BuildTime>120</BuildTime>
  • binaries/data/mods/public/simulation/templates/structures/mace_theatron.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Structure</Affects>
    7       <Modifications>
    8         <TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
    9       </Modifications>
    10     </Aura1>
    11   </Auras>
     3  <Auras datatype="tokens">theatron</Auras>
    124  <BuildRestrictions>
    135    <Category>Theater</Category>
    146  </BuildRestrictions>
    157  <Cost>
    168    <BuildTime>550</BuildTime>
  • binaries/data/mods/public/simulation/templates/structures/maur_pillar_ashoka.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>75</Radius>
    7       <Affects>Trader</Affects>
    8       <Modifications>
    9         <UnitMotion.WalkSpeed> <Multiply>1.20</Multiply> </UnitMotion.WalkSpeed>
    10       </Modifications>
    11       <AuraDescription>All traders in range +20% walk speed.</AuraDescription>
    12       <OverlayIcon>art/textures/ui/session/auras/build_bonus.png</OverlayIcon>
    13     </Aura1>
    14   </Auras>
     3  <Auras datatype="tokens">maur_pillar</Auras>
    154  <BuildRestrictions>
    165    <Category>Pillar</Category>
    176  </BuildRestrictions>
    187  <Cost>
    198    <BuildTime>80</BuildTime>
  • binaries/data/mods/public/simulation/templates/structures/spart_theatron.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Structure</Affects>
    7       <Modifications>
    8         <TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
    9       </Modifications>
    10     </Aura1>
    11   </Auras>
     3  <Auras datatype="tokens">theatron</Auras>
    124  <BuildRestrictions>
    135    <Category>Theater</Category>
    146  </BuildRestrictions>
    157  <Cost>
    168    <BuildTime>500</BuildTime>
  • binaries/data/mods/public/simulation/templates/structures/theb_theatron.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_special">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Structure</Affects>
    7       <Modifications>
    8         <TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
    9       </Modifications>
    10     </Aura1>
    11   </Auras>
     3  <Auras datatype="tokens">theatron</Auras>
    124  <BuildRestrictions>
    135    <Category>Theater</Category>
    146  </BuildRestrictions>
    157  <Cost>
    168    <BuildTime>500</BuildTime>
  • binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_structure_civic">
    3   <Auras>
    4     <heal>
    5       <Type>range</Type>
    6       <Radius>40</Radius>
    7       <Affects>Human</Affects>
    8       <Modifications>
    9         <Health.RegenRate> <Add>1</Add> </Health.RegenRate>
    10       </Modifications>
    11       <AuraName>Healing Aura</AuraName>
    12       <AuraDescription>Heals nearby units at 1 HP per second.</AuraDescription>
    13       <OverlayIcon>art/textures/ui/session/auras/heal.png</OverlayIcon>
    14     </heal>
    15   </Auras>
     3  <Auras datatype="tokens">temple_heal</Auras>
    164  <BuildRestrictions>
    175    <Category>Temple</Category>
    186  </BuildRestrictions>
    197  <Cost>
    208    <PopulationBonus>5</PopulationBonus>
  • binaries/data/mods/public/simulation/templates/template_structure_defense_wall_long.xml

     
    33  <Armour>
    44    <Hack>18.0</Hack>
    55    <Pierce>40.0</Pierce>
    66    <Crush>4.0</Crush>
    77  </Armour>
    8   <Auras>
    9     <Aura1>
    10       <Type>garrisonedUnits</Type>
    11       <Affects>Unit</Affects>
    12       <Modifications>
    13         <Armour.Pierce> <Add>3</Add> </Armour.Pierce>
    14         <Armour.Hack> <Add>3</Add> </Armour.Hack>
    15         <Armour.Crush> <Add>3</Add> </Armour.Crush>
    16         <Vision.Range> <Add>20</Add> </Vision.Range>
    17       </Modifications>
    18       <AuraName>Wall Protection</AuraName>
    19       <AuraDescription>Units on walls have 3 extra Armor levels</AuraDescription>
    20     </Aura1>
    21   </Auras>
     8  <Auras datatype="tokens">wall_garrisoned</Auras>
    229  <Cost>
    2310    <BuildTime>45</BuildTime>
    2411    <Resources>
    2512      <stone>28</stone>
    2613    </Resources>
  • binaries/data/mods/public/simulation/templates/template_structure_defense_wall_medium.xml

     
    33  <Armour>
    44    <Hack>18.0</Hack>
    55    <Pierce>40.0</Pierce>
    66    <Crush>4.0</Crush>
    77  </Armour>
    8   <Auras>
    9     <Aura1>
    10       <Type>garrisonedUnits</Type>
    11       <Affects>Unit</Affects>
    12       <Modifications>
    13         <Armour.Pierce> <Add>3</Add> </Armour.Pierce>
    14         <Armour.Hack> <Add>3</Add> </Armour.Hack>
    15         <Armour.Crush> <Add>3</Add> </Armour.Crush>
    16         <Vision.Range> <Add>20</Add> </Vision.Range>
    17       </Modifications>
    18       <AuraName>Wall Protection</AuraName>
    19       <AuraDescription>Units on walls have 3 extra Armor levels</AuraDescription>
    20     </Aura1>
    21   </Auras>
     8  <Auras datatype="tokens">wall_garrisoned</Auras>
    229  <Cost>
    2310    <BuildTime>30</BuildTime>
    2411    <Resources>
    2512      <stone>22</stone>
    2613    </Resources>
  • binaries/data/mods/public/simulation/templates/template_structure_wonder.xml

     
    88      <Hack>2</Hack>
    99      <Pierce>10</Pierce>
    1010      <Crush>2</Crush>
    1111    </Foundation>
    1212  </Armour>
     13  <Auras datatype="tokens">wonder_pop_1 wonder_pop_2</Auras>
    1314  <BuildRestrictions>
    1415    <Category>Wonder</Category>
    1516  </BuildRestrictions>
    1617  <Capturable>
    17     <CapturePoints>1500</CapturePoints>
     18    <CapturePoints>2000</CapturePoints>
    1819    <RegenRate>5.0</RegenRate>
    1920  </Capturable>
    2021  <Cost>
    2122    <BuildTime>1000</BuildTime>
    2223    <Resources>
    23       <food>0</food>
     24      <food>1000</food>
    2425      <wood>1000</wood>
    2526      <stone>1000</stone>
    2627      <metal>1000</metal>
    2728    </Resources>
    2829  </Cost>
  • binaries/data/mods/public/simulation/templates/template_unit_hero.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit">
    3   <Auras>
    4     <AuraA>
    5       <Type>garrison</Type>
    6       <Affects>Structure Mechanical</Affects>
    7       <Modifications>
    8         <Capturable.GarrisonRegenRate> <Add>2</Add> </Capturable.GarrisonRegenRate>
    9       </Modifications>
    10       <AuraName>Garrisoned Capture Aura</AuraName>
    11       <AuraDescription>When garrisoned in a structure or a siege, the hero gives it a bonus of +2 capture points recovery rate.</AuraDescription>
    12     </AuraA>   
    13   </Auras>
    143  <Attack>
    154    <Capture>
    165      <Value>15</Value>
    176      <MaxRange>4</MaxRange>
    187      <RepeatTime>1000</RepeatTime>
     
    2110  <Armour>
    2211    <Hack>10.0</Hack>
    2312    <Pierce>20.0</Pierce>
    2413    <Crush>15.0</Crush>
    2514  </Armour>
     15  <Auras datatype="tokens">hero_garrison</Auras>
    2616  <Cost>
    2717    <Population>2</Population>
    2818    <BuildTime>40</BuildTime>
    2919    <Resources>
    3020      <food>100</food>
  • binaries/data/mods/public/simulation/templates/template_unit_support_female_citizen.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_support">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>10</Radius>
    7       <Affects>Citizen+Soldier</Affects>
    8       <Modifications>
    9         <Builder.Rate> <Multiply>1.1</Multiply> </Builder.Rate>
    10         <ResourceGatherer.BaseSpeed> <Multiply>1.1</Multiply> </ResourceGatherer.BaseSpeed>
    11       </Modifications>
    12       <AuraName>Inspiration Aura</AuraName>
    13       <AuraDescription>Nearby males work 10% faster.</AuraDescription>
    14       <OverlayIcon>art/textures/ui/session/auras/buildgather_bonus.png</OverlayIcon>
    15     </Aura1>
    16   </Auras>
    173  <Attack>
    184    <Melee>
    195      <Hack>2.0</Hack>
    206      <Pierce>0</Pierce>
    217      <Crush>0.0</Crush>
     
    2814      <Pierce>0.0</Pierce>
    2915      <Crush>0.0</Crush>
    3016      <MaxRange>4.0</MaxRange>
    3117    </Slaughter>
    3218  </Attack>
     19  <Auras datatype="tokens">female_inspiration</Auras>
    3320  <Builder>
    3421    <Rate>1.0</Rate>
    3522    <Entities datatype="tokens">
    3623      structures/{civ}_house
    3724      structures/{civ}_storehouse
  • binaries/data/mods/public/simulation/templates/template_unit_support_healer.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_support">
     3  <Cost>
     4    <Resources>
     5      <food>250</food>
     6    </Resources>
     7  </Cost>
    38  <Heal>
    49    <Range>12</Range>
    510    <HP>5</HP>
    611    <Rate>2000</Rate>
    712    <UnhealableClasses datatype="tokens"/>
    813    <HealableClasses datatype="tokens">Human</HealableClasses>
    914  </Heal>
    10   <Cost>
    11     <Resources>
    12       <food>250</food>
    13     </Resources>
    14   </Cost>
    1515  <Health>
    1616    <Max>85</Max>
    1717  </Health>
    1818  <Identity>
    1919    <Classes datatype="tokens">Healer</Classes>
  • binaries/data/mods/public/simulation/templates/units/athen_hero_iphicrates.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_javelinist">
    3   <Auras>
    4     <Aura1>
    5       <Type>formation</Type>
    6       <Affects>Unit</Affects>
    7       <Modifications>
    8         <UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
    9         <Armour.Pierce> <Add>1</Add> </Armour.Pierce>
    10         <Armour.Hack>   <Add>1</Add> </Armour.Hack>
    11         <Armour.Crush>  <Add>1</Add> </Armour.Crush>
    12       </Modifications>
    13       <AuraName>Formation Reforms</AuraName>
    14       <AuraDescription>All units in his formation +15% speed and +1 armor.</AuraDescription>
    15     </Aura1>
    16     <Aura2>
    17       <Type>global</Type>
    18       <Affects>Javelin</Affects>
    19       <Modifications>
    20         <UnitMotion.WalkSpeed><Multiply>1.15</Multiply></UnitMotion.WalkSpeed>
    21       </Modifications>
    22       <AuraName>Peltast Reforms</AuraName>
    23       <AuraDescription>All Peltasts +15% speed.</AuraDescription>
    24     </Aura2>
    25   </Auras>
     3  <Auras datatype="tokens">athen_hero_iphicrates_1 athen_hero_iphicrates_2</Auras>
    264  <Identity>
    275    <Civ>athen</Civ>
    286    <Lang>greek</Lang>
    297    <GenericName>Iphicrates</GenericName>
    308    <SpecificName>Iphikratēs</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/athen_hero_pericles.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_spearman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Worker</Affects>
    8       <Modifications>
    9         <Builder.Rate> <Multiply>1.15</Multiply> </Builder.Rate>
    10       </Modifications>
    11       <AuraName>Builder Aura</AuraName>
    12       <AuraDescription>Buildings construct 15% faster within his vision.</AuraDescription>
    13       <OverlayIcon>art/textures/ui/session/auras/build_bonus.png</OverlayIcon>
    14     </Aura1>
    15     <Aura2>
    16       <Type>global</Type>
    17       <Affects>Temple</Affects>
    18       <Modifications>
    19         <Cost.Resources.stone> <Add>-50</Add> </Cost.Resources.stone>
    20       </Modifications>
    21       <AuraName>Acropolis Aura</AuraName>
    22       <AuraDescription>Temples are 50 stone cheaper during his lifetime.</AuraDescription>
    23     </Aura2>
    24   </Auras>
     3  <Auras datatype="tokens">athen_hero_pericles_1 athen_hero_pericles_2</Auras>
    254  <Identity>
    265    <Civ>athen</Civ>
    276    <Lang>greek</Lang>
    287    <GenericName>Pericles</GenericName>
    298    <SpecificName>Periklēs</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/athen_hero_themistocles.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>garrison</Type>
    6       <Affects>Ship</Affects>
    7       <AffectedPlayers>Player MutualAlly</AffectedPlayers>
    8       <Modifications>
    9         <UnitMotion.WalkSpeed> <Multiply>1.5</Multiply> </UnitMotion.WalkSpeed>
    10       </Modifications>
    11       <AuraName>Naval Commander Aura</AuraName>
    12       <AuraDescription>When garrisoned in a ship, his ship is +50% faster.</AuraDescription>
    13     </Aura1>
    14     <Aura2>
    15       <Type>global</Type>
    16       <Affects>Ship</Affects>
    17       <Modifications>
    18         <Cost.BuildTime> <Multiply>0.8</Multiply> </Cost.BuildTime>
    19       </Modifications>
    20       <AuraName>Naval Architect Aura</AuraName>
    21       <AuraDescription>-20% build time for ships during his lifespan.</AuraDescription>
    22     </Aura2>
    23   </Auras>
     3  <Auras datatype="tokens">athen_hero_themistocles_1 athen_hero_themistocles_2</Auras>
    244  <Identity>
    255    <Civ>athen</Civ>
    266    <Lang>greek</Lang>
    277    <GenericName>Themistocles</GenericName>
    288    <SpecificName>Themistoklês</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/brit_hero_boudicca.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_javelinist">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Champion</Affects>
    8       <Modifications>
    9         <UnitMotion.WalkSpeed> <Multiply>1.25</Multiply> </UnitMotion.WalkSpeed>
    10         <Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
    11         <Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
    12         <Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
    13       </Modifications>
    14       <AuraName>Champion Army</AuraName>
    15       <AuraDescription>+5 Attack, +2 Capture and +25% Speed for Champion Units.</AuraDescription>
    16       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    17     </Aura1>
    18   </Auras>
     3  <Auras datatype="tokens">brit_hero_boudicca</Auras>
    194  <Footprint replace="">
    205    <Square width="4.5" depth="9.0"/>
    216    <Height>5.0</Height>
    227  </Footprint>
    238  <Identity>
  • binaries/data/mods/public/simulation/templates/units/brit_hero_boudicca_sword.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Champion</Affects>
    7       <Modifications>
    8         <UnitMotion.WalkSpeed> <Multiply>1.25</Multiply> </UnitMotion.WalkSpeed>
    9         <Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
    10         <Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
    11         <Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
    12       </Modifications>
    13       <AuraName>Champion Army</AuraName>
    14       <AuraDescription>+5 Attack, +2 Capture and +25% Speed for Champion Units.</AuraDescription>
    15     </Aura1>
    16   </Auras>
     3  <Auras datatype="tokens">brit_hero_boudicca</Auras>
    174  <Identity>
    185    <Civ>brit</Civ>
    196    <Gender>female</Gender>
    207    <SpecificName>Boudicca</SpecificName>
    218    <GenericName>Heroine</GenericName>
  • binaries/data/mods/public/simulation/templates/units/brit_hero_caratacos.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Unit</Affects>
    7       <Modifications>
    8         <UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
    9       </Modifications>
    10       <AuraName>Hero Aura</AuraName>
    11       <AuraDescription>All Units +15% speed.</AuraDescription>
    12     </Aura1>
    13   </Auras>
     3  <Auras datatype="tokens">brit_hero_caratacos</Auras>
    144  <Identity>
    155    <Civ>brit</Civ>
    166    <SpecificName>Caratacos</SpecificName>
    177    <History>Caratacos's name is better known in its Romanized form, Caratacus. Under this name he is remembered as a fierce defender of Britain against the Romans after their invasion in 43 AD. Son of King Cunobelin of the Catuvellauni tribe, Caratacos fought for nine years against the Romans with little success, eventually fleeing to the tribes in Wales, where he was defeated decisively. Finally he entered Northern Britain, where was handed over to the Romans. Taken to Rome, Caratacos was allowed to live by the Emperor Claudius and died in Italy.</History>
    188    <Icon>units/celt_hero_caratacos.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/brit_hero_cunobelin.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Unit</Affects>
    8       <Modifications>
    9         <Health.RegenRate> <Add>1</Add> </Health.RegenRate>
    10       </Modifications>
    11       <AuraName>Hero Aura</AuraName>
    12       <AuraDescription>+1 HP per second healing rate for all units.</AuraDescription>
    13       <OverlayIcon>art/textures/ui/session/auras/heal.png</OverlayIcon>
    14     </Aura1>
    15   </Auras>
     3  <Auras datatype="tokens">brit_hero_cunobelin</Auras>
    164  <Identity>
    175    <Civ>brit</Civ>
    186    <SpecificName>Cunobelin</SpecificName>
    197    <History>Cunobelin was a powerful ruler centered in the territory around modern day London. Ruling the Catuvellauni from Camulodunum, he was a warrior king who conquered a neighboring tribe and was referred to by the Romans as the King of the Britons. Eventually Cunobelin retired to become the arch-druid of Siluria, but was taken to Rome with his son upon Caratacos's capture. According to legend, the Apostle Paul baptized Cunobelin into Christianity before he died in Italy.</History>
    208    <Icon>units/celt_hero_cunobelin.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/cart_hero_hamilcar.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Unit</Affects>
    7       <Modifications>
    8         <UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
    9       </Modifications>
    10       <AuraName>Lightning Aura</AuraName>
    11       <AuraDescription>All Units +15% speed.</AuraDescription>
    12     </Aura1>
    13   </Auras>
     3  <Auras datatype="tokens">cart_hero_hamilcar</Auras>
    144  <Identity>
    155    <Civ>cart</Civ>
    166    <SpecificName>Ḥimelqart Baraq</SpecificName>
    177    <GenericName>Hamilcar Barca</GenericName>
    188    <History>Father of Hannibal and virtual military dictator of Carthage. Hamilcar Barca was a soldier and politician who excelled along his entire career. Lived 275-228 BC. While overshadowed by his sons, Hamilcar was great general in his own right, earning the nickname Baraq or Barca for the "lightning" speed of his advance.</History>
  • binaries/data/mods/public/simulation/templates/units/cart_hero_hannibal.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_elephant_melee">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Unit</Affects>
    8       <AffectedPlayers>Player Ally</AffectedPlayers>
    9       <Modifications>
    10         <Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
    11         <Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
    12         <Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
    13       </Modifications>
    14       <AuraName>Tactician Aura</AuraName>
    15       <AuraDescription>All allied units +2 Attack and +1 Capture within his vision range.</AuraDescription>
    16       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    17     </Aura1>
    18   </Auras>
     3  <Auras datatype="tokens">cart_hero_hannibal</Auras>
    194  <Identity>
    205    <Civ>cart</Civ>
    216    <GenericName>Hannibal Barca</GenericName>
    227    <SpecificName>Ḥannibaʿal Baraq</SpecificName>
    238    <History>Carthage's most famous son. Hannibal Barca was the eldest son of Hamilcar Barca and proved an even greater commander than his father. Lived 247-182 BC. While he ultimately lost the Second Punic War, his victories at Trebia, Lake Trasimene, and Cannae, and the feat of crossing the Alps have secured his position as among the best tacticians and strategists in history.</History>
  • binaries/data/mods/public/simulation/templates/units/cart_hero_maharbal.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_spearman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Cavalry</Affects>
    8       <Modifications>
    9         <Attack.Charge.Hack> <Add>5</Add> </Attack.Charge.Hack>
    10       </Modifications>
    11       <AuraName>Commander Aura</AuraName>
    12       <AuraDescription> +5 Cavalry charge attack within vision range of him (currently useless).</AuraDescription>
    13     </Aura1>
    14   </Auras>
     3  <Auras datatype="tokens">cart_hero_maharbal</Auras>
    154  <Identity>
    165    <Civ>cart</Civ>
    176    <GenericName>Maharbal</GenericName>
    187    <SpecificName>Maharbaʿal</SpecificName>
    198    <History>Maharbal was Hannibal Barca's "brash young cavalry commander" during the 2nd Punic War. He is credited with turning the wing of the legions at Cannae resulting in defeat in which 30,000 of 50,000 Romans were lost, as well as significant contributions to the winning of many other battles during the 2nd Punic War. He is known for having said, after the battle of Cannae, "Hannibal, you know how to win the victory; just not what to do with it."</History>
  • binaries/data/mods/public/simulation/templates/units/gaul_hero_brennus.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Unit</Affects>
    7       <Modifications>
    8         <Looter.Resource.metal> <Add>10</Add> </Looter.Resource.metal>
    9       </Modifications>
    10       <AuraName>Hero Aura</AuraName>
    11       <AuraDescription>+10 Metal loot for every enemy unit killed.</AuraDescription>
    12     </Aura1>
    13   </Auras>
     3  <Auras datatype="tokens">gaul_hero_brennus</Auras>
    144  <Identity>
    155    <Civ>gaul</Civ>
    166    <SpecificName>Brennus</SpecificName>
    177    <History>Brennus is the name which the Roman historians give to the famous leader of the Gauls who took Rome in the time of Camillus. According to Geoffrey of Monmouth, the cleric who wrote “History of the Kings of Britain”, Brennus and his brother Belinus invaded Gaul and sacked Rome in 390 B.C., 'proving' that Britons had conquered Rome, the greatest civilization in the world, long before Rome conquered the Britons. We know from many ancient sources which predate Geoffrey that Rome was indeed sacked, but in 387 not 390, and that the raid was led by a man named Brennos (which was latinized to Brennus), but he and his invading horde were Gallic Senones, not British. In this episode several features of Geoffrey's editing method can be seen: he modified the historical Brennus/Brennos, created the brother Belinus, borrowed the Gallic invasion, but omitted the parts where the Celts seemed weak or foolish. His technique is both additive and subtractive. Like the tale of Trojan origin, the story of the sack of Rome is not pure fabrication; it is a creative rearrangement of the available facts, with details added as necessary. By virtue of their historical association, Beli and Bran are often muddled with the earlier brothers Belinus and Brennus (the sons of Dunvallo Molmutius) who contended for power in northern Britain in around 390 B.C., and were regarded as gods in old Celtic tradition.</History>
    188    <Icon>units/celt_hero_brennus.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/gaul_hero_britomartus.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_spearman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Worker</Affects>
    7       <Modifications>
    8         <ResourceGatherer.BaseSpeed> <Multiply>1.15</Multiply> </ResourceGatherer.BaseSpeed>
    9       </Modifications>
    10       <AuraName>Hero Aura</AuraName>
    11       <AuraDescription>Gathering rates increased with +15% during his lifetime.</AuraDescription>
    12     </Aura1>
    13   </Auras>
     3  <Auras datatype="tokens">gaul_hero_britomartus</Auras>
    144  <Identity>
    155    <Civ>gaul</Civ>
    166    <SpecificName>Britomartus</SpecificName>
    177    <History> The story of how Marcus Claudius Marcellus killed a Gallic leader at Clastidium (222 BC) is typical of such encounters. Advancing with a smallish army, Marcellus met a combined force of Insubrian Gauls and Gaesatae at Clastidium. The Gallic army advanced with the usual rush and terrifying cries, and their king, Britomartus, picking out Marcellus by means of his badges of rank, made for him, shouting a challenge and brandishing his spear. Britomartus was an outstanding figure not only for his size but also for his adornments; for he was resplendent in bright colors and his armor shone with gold and silver. This armor, thought Marcellus, would be a fitting offering to the gods. He charged the Gaul, pierced his bright breastplate and cast him to the ground. It was an easy task to kill Britomartus and strip him of his armor.</History>
    188    <Icon>units/celt_hero_britomartus.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/gaul_hero_vercingetorix.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Unit</Affects>
    8       <Modifications>
    9         <Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
    10         <Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
    11         <Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
    12       </Modifications>
    13       <AuraName>Hero Aura</AuraName>
    14       <AuraDescription>+2 Attack and +1 Capture for all units within his aura.</AuraDescription>
    15       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    16     </Aura1>
    17   </Auras>
     3  <Auras datatype="tokens">gaul_hero_vercingetorix</Auras>
    184  <Identity>
    195    <Civ>gaul</Civ>
    206    <SpecificName>Vercingetorix</SpecificName>
    217    <History>The most famous of all Celts, Vercingetorix lead the rebelling Gallic tribes against the might of Rome and Julius Caesar's veteran army in 54 BC. Although successful in defeating several Roman forces, Vercingetorix was unable to defeat Caesar, who eventually surrounded the Celtic leaders in the town of Alesia along with 100,000 men. When a relief army arrived to lift the epic siege, the Romans were out numbered 7 to 1 but still defeated the Celts. Vercingetorix surrendered and was executed.</History>
    228    <Icon>units/celt_hero_vercingetorix.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/iber_hero_caros.xml

     
    22<Entity parent="template_unit_hero_infantry_swordsman">
    33  <Identity>
    44    <Civ>iber</Civ>
    55    <SpecificName>Caros</SpecificName>
    66    <Icon>units/iber_hero_caros.png</Icon>
    7     <Tooltip>Hero Aura: "Tactica Guerilla." TBD.</Tooltip>
     7    <Tooltip>Hero Aura: "Tactica Guerilla." TBD.</Tooltip>
    88    <History>Caros was a chief of the Belli tribe located just east of the Celtiberi (Numantines at the center). Leading the confederated tribes of the meseta central (central upland plain) he concealed 20,000 foot and 5,000 mounted troops along a densely wooded track. Q. Fulvius Nobilior neglected proper reconnaissance and lead his army into the trap strung out in a long column. Some 10,000 of 15,000 Roman legionaries fell in the massive ambush that was sprung upon them. The date was 23 August of 153 BCE, the day when Rome celebrated the feast of Vulcan. By later Senatorial Decree it was ever thereafter known as dies ater, a 'sinister day', and Rome never again fought a battle on the 23rd of August. Caros was wounded in a small cavalry action the same evening and died soon thereafter, but he had carried off one of the most humiliating defeats that Rome ever suffered.</History>
    99  </Identity>
    1010  <VisualActor>
    1111    <Actor>units/iberians/hero_caros.xml</Actor>
    1212  </VisualActor>
  • binaries/data/mods/public/simulation/templates/units/iber_hero_indibil.xml

     
    22<Entity parent="template_unit_hero_cavalry_spearman">
    33  <Identity>
    44    <Civ>iber</Civ>
    55    <SpecificName>Indibil</SpecificName>
    66    <Icon>units/iber_hero_indibil.png</Icon>
    7     <Tooltip>Hero Aura: "Tactica Guerilla." TBD.</Tooltip>
     7    <Tooltip>Hero Aura: "Tactica Guerilla." TBD.</Tooltip>
    88    <History>Indibil was king of the Ilegetes, a large federation ranged principally along the Ebro River in the northwest of the Iberian Peninsula. During the Barcid expansion, from 212 BCE he had initially been talked into allying himself with the Carthaginians who hade taken control of a lot of territory to the south and west, however after loss and his capture in a major battle he was convinced, some say tricked, to switch to the Roman side by Scipio Africanus. But that alliance didn't last long, as Roman promises were hollow and the Romans acted more like conquerors than allies. So, while the Romans and their allies had ended Carthaginian presence in 'Hispania' in 206 BCE, Indibil and another tribal prince by the name of Mandonio, who may have been his brother, rose up in rebellion against the Romans. They were defeated in battle, but rose up in a 2nd even larger rebellion that had unified all the Ilergetes again in 205 BCE. Outnumbered and outarmed they were again defeated, Indibil losing his life in the final battle and Mandonio being captured then later put to death. From that date onward the Ilergetes remained a pacified tribe under Roman rule.</History>
    99  </Identity>
    1010  <VisualActor>
    1111    <Actor>units/iberians/hero_indibil_horse.xml</Actor>
    1212  </VisualActor>
  • binaries/data/mods/public/simulation/templates/units/iber_hero_viriato.xml

     
    22<Entity parent="template_unit_hero_infantry_swordsman">
    33  <Identity>
    44    <Civ>iber</Civ>
    55    <SpecificName>Viriato</SpecificName>
    66    <Icon>units/iber_hero_viriato.png</Icon>
    7     <Tooltip>Hero Aura: "Tactica Guerilla." TBD.</Tooltip>
     7    <Tooltip>Hero Aura: "Tactica Guerilla." TBD.</Tooltip>
    88    <History>Viriato, like Vercingentorix amongst the Gauls, was the most famous of the Iberian tribal war leaders, having conducted at least 7 campaigns against the Romans in the southern half of the peninsula during the 'Lusitani Wars' from 147 to 139 BCE. He surfaced as a survivor of the treacherous massacre of 9,000 men and the selling into slavery of 21,000 elderly, women, and children of the Lusitani. They had signed a treaty of peace with the Romans, conducted by Servius Sulpicius Galba, governor of Hispania Ulterior, as the 'final solution' to the Lusitani problem. He emerged from humble beginnings in 151 BCE to become war chief of the Lusitani. He was intelligent and a superior tactician, never really defeated in any encounter (though suffered losses in some requiring retreat). He succumbed instead to another treachery arranged by a later Roman commander, Q. Servilius Caepio, to have him assassinated by three comrades that were close to him.</History>
    99  </Identity>
    1010  <VisualActor>
    1111    <Actor>units/iberians/hero_viriato.xml</Actor>
    1212  </VisualActor>
  • binaries/data/mods/public/simulation/templates/units/mace_hero_alexander.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Structure</Affects>
    7       <Modifications>
    8         <TerritoryInfluence.Radius> <Multiply>1.10</Multiply> </TerritoryInfluence.Radius>
    9       </Modifications>
    10       <AuraName>Imperialism Aura</AuraName>
    11       <AuraDescription>+10% territory effect for all buildings while he lives.</AuraDescription>
    12     </Aura1>
    13   </Auras>
     3  <Auras datatype="tokens">mace_hero_alexander</Auras>
    144  <Attack>
    155    <Melee>
    166      <Bonuses>
    177        <Herocide>
    188          <Classes>Hero</Classes>
  • binaries/data/mods/public/simulation/templates/units/mace_hero_demetrius.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Siege</Affects>
    7       <Modifications>
    8         <Attack.Ranged.Crush> <Add>10</Add> </Attack.Ranged.Crush>
    9         <Attack.Melee.Crush> <Add>10</Add> </Attack.Melee.Crush>
    10         <Attack.Ranged.MaxRange> <Multiply>1.15</Multiply> </Attack.Ranged.MaxRange>
    11       </Modifications>
    12       <AuraName>Hero Aura</AuraName>
    13       <AuraDescription>+15% Range and +10 Crush Attack for Siege Engines.</AuraDescription>
    14       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    15     </Aura1>
    16   </Auras>
     3  <Auras datatype="tokens">mace_hero_demetrius</Auras>
    174  <Identity>
    185    <Civ>mace</Civ>
    196    <Lang>greek</Lang>
    207    <GenericName>Demetrius The Besieger</GenericName>
    218    <SpecificName>Dēmḗtrios Poliorkḗtēs</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/mace_hero_philip.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_spearman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Champion</Affects>
    8       <Modifications>
    9         <Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
    10         <Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
    11     <Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
    12       </Modifications>
    13       <AuraName>Hero Aura</AuraName>
    14       <AuraDescription>+5 Attack and +2 Capture for Champion Units.</AuraDescription>
    15       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    16     </Aura1>
    17   </Auras>
     3  <Auras datatype="tokens">mace_hero_philip</Auras>
    184  <Identity>
    195    <Civ>mace</Civ>
    206    <Lang>greek</Lang>
    217    <GenericName>Philip II of Macedon</GenericName>
    228    <SpecificName>Phílippos B' ho Makedṓn</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/maur_hero_ashoka.xml

     
    99    <GenericName>Ashoka the Great</GenericName>
    1010    <SpecificName>Aśoka Devānāmpriya</SpecificName>
    1111    <Classes datatype="tokens">Ashoka</Classes>
    1212    <VisibleClasses datatype="tokens">Chariot</VisibleClasses>
    1313    <Icon>units/maur_hero_ashoka.png</Icon>
    14     <Tooltip>Hero Aura: TBD.
    15 Hero Special: "Edicts of Ashoka" - Edict Pillars of Ashoka can be built during Ashoka's lifetime.</Tooltip>
     14    <Tooltip>Hero Special: "Edicts of Ashoka" - Edict Pillars of Ashoka can be built during Ashoka's lifetime.</Tooltip>
    1615    <History>TBD.</History>
    1716  </Identity>
    1817  <VisualActor>
    1918    <Actor>units/mauryans/hero_chariot.xml</Actor>
    2019  </VisualActor>
  • binaries/data/mods/public/simulation/templates/units/maur_hero_maurya.xml

     
    22<Entity parent="template_unit_hero_elephant_melee">
    33  <Identity>
    44    <Civ>maur</Civ>
    55    <GenericName>Chandragupta Maurya</GenericName>
    66    <SpecificName>Chandragupta Maurya</SpecificName>
    7     <Tooltip>Hero Aura: TBD.</Tooltip>
    87    <History>TBD.</History>
    98    <Icon>units/maur_hero_chandragupta.png</Icon>
    109  </Identity>
    1110  <ProductionQueue>
    1211    <BatchTimeModifier>0.7</BatchTimeModifier>
  • binaries/data/mods/public/simulation/templates/units/pers_hero_cyrus.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_spearman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Cavalry</Affects>
    8       <Modifications>
    9         <Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
    10         <Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
    11         <Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
    12       </Modifications>
    13       <AuraName>Lead from the Front Aura</AuraName>
    14       <AuraDescription>+2 Attack and +1 Capture for nearby cavalry units.</AuraDescription>
    15       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    16     </Aura1>
    17   </Auras>
     3  <Auras datatype="tokens">pers_hero_cyrus</Auras>
    184  <Identity>
    195    <Civ>pers</Civ>
    206    <GenericName>Cyrus II The Great</GenericName>
    217    <SpecificName>Kurush II</SpecificName>
    228    <Icon>units/pers_hero_cyrus.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/pers_hero_darius.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_archer">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Unit</Affects>
    7       <AffectedPlayers>Player</AffectedPlayers>
    8       <Modifications>
    9         <UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
    10       </Modifications>
    11       <AuraName>Leadership Aura</AuraName>
    12       <AuraDescription>+15% Movement Speed of all units.</AuraDescription>
    13     </Aura1>
    14   </Auras>
     3  <Auras datatype="tokens">pers_hero_darius</Auras>
    154  <Footprint replace="">
    165    <Square width="6.0" depth="12.0"/>
    176    <Height>5.0</Height>
    187  </Footprint>
    198  <Identity>
  • binaries/data/mods/public/simulation/templates/units/pers_hero_xerxes.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_archer">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Worker</Affects>
    8       <Modifications>
    9         <Builder.Rate> <Multiply>1.15</Multiply> </Builder.Rate>
    10         <ResourceGatherer.BaseSpeed> <Multiply>1.15</Multiply> </ResourceGatherer.BaseSpeed>
    11       </Modifications>
    12       <AuraName>Administrator Aura</AuraName>
    13       <AuraDescription> +15% Gather Rate and Build Rate of nearby units.</AuraDescription>
    14       <OverlayIcon>art/textures/ui/session/auras/buildgather_bonus.png</OverlayIcon>
    15     </Aura1>
    16   </Auras>
     3  <Auras datatype="tokens">pers_hero_xerxes</Auras>
    174  <Identity>
    185    <Civ>pers</Civ>
    196    <GenericName>Xerxes I</GenericName>
    207    <SpecificName>Xsayarsa I</SpecificName>
    218    <Icon>units/pers_hero_xerxes.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/pers_hero_xerxes_chariot.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_archer">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Worker</Affects>
    8       <Modifications>
    9         <Builder.Rate> <Multiply>1.15</Multiply> </Builder.Rate>
    10         <ResourceGatherer.BaseSpeed> <Multiply>1.15</Multiply> </ResourceGatherer.BaseSpeed>
    11       </Modifications>
    12       <AuraName>Administrator Aura</AuraName>
    13       <AuraDescription> +15% Gather Rate and Build Rate of nearby units.</AuraDescription>
    14       <OverlayIcon>art/textures/ui/session/auras/buildgather_bonus.png</OverlayIcon>
    15     </Aura1>
    16   </Auras>
     3  <Auras datatype="tokens">pers_hero_xerxes</Auras>
    174  <Footprint replace="">
    185    <Square width="6.0" depth="12.0"/>
    196    <Height>5.0</Height>
    207  </Footprint>
    218  <Identity>
  • binaries/data/mods/public/simulation/templates/units/ptol_hero_cleopatra.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_archer">
    3   <Auras>
    4     <unit_attack_speed_20>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Unit</Affects>
    8       <Modifications>
    9         <Attack.Melee.RepeatTime> <Multiply>0.8</Multiply> </Attack.Melee.RepeatTime>
    10         <Attack.Ranged.RepeatTime> <Multiply>0.8</Multiply> </Attack.Ranged.RepeatTime>
    11       </Modifications>
    12       <AuraName>Patriot Aura</AuraName>
    13       <AuraDescription>Egyptian units fight 25% faster in her vision range.</AuraDescription>
    14       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    15     </unit_attack_speed_20>
    16   </Auras>
     3  <Auras datatype="tokens">ptol_hero_cleopatra</Auras>
    174  <Identity>
    185    <Civ>ptol</Civ>
    196    <Gender>female</Gender>
    207    <GenericName>Cleopatra VII</GenericName>
    218    <SpecificName>Kleopatra H' Philopator</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/ptol_hero_ptolemy_I.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_elephant_melee">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>77</Radius>
    7       <Affects>Worker</Affects>
    8       <Modifications>
    9         <Builder.Rate> <Multiply>1.10</Multiply> </Builder.Rate>
    10       </Modifications>
    11       <AuraName>Construction Aura</AuraName>
    12       <AuraDescription>Buildings construct 10% faster within his vision.</AuraDescription>
    13       <OverlayIcon>art/textures/ui/session/auras/build_bonus.png</OverlayIcon>
    14     </Aura1>
    15     <Aura2>
    16       <Type>global</Type>
    17       <Affects>Mercenary</Affects>
    18       <Modifications>
    19         <Cost.Resources.food> <Multiply>0.5</Multiply> </Cost.Resources.food>
    20         <Cost.Resources.wood> <Multiply>0.5</Multiply> </Cost.Resources.wood>
    21         <Cost.Resources.stone> <Multiply>0.5</Multiply> </Cost.Resources.stone>
    22         <Cost.Resources.metal> <Multiply>0.5</Multiply> </Cost.Resources.metal>
    23       </Modifications>
    24       <AuraName>Mercenary Patron Aura</AuraName>
    25       <AuraDescription>Mercenaries cost -50% resources during his lifetime.</AuraDescription>
    26     </Aura2>
    27   </Auras>
     3  <Auras datatype="tokens">ptol_hero_ptolemy_I_1 ptol_hero_ptolemy_I_2</Auras>
    284  <Identity>
    295    <Civ>ptol</Civ>
    306    <GenericName>Ptolemy I "Savior"</GenericName>
    317    <SpecificName>Ptolemaios A' Soter</SpecificName>
    328    <History>Born in 367 BCE, Ptolemy I grew to become one of Alexander the Great's closest friends and generals. He was instrumental in Alexander's later campaigns in Bactria (modern Afghanistan) and India. After Alexander's death, Ptolemy took control of the Satrap of Egypt, and after the Battle of Ipsus became sole ruler of Egypt as "Pharaoh," founding the Ptolemy Dynasty that would rule Egypt for nearly 3 centuries. Ptolemaic Egypt reached the height of its territorial boundaries under his reign as he added Syria, Judea, Cyprus, and parts of Asia Minor to his realm. His reputation for bonhomie and liberality attached the floating soldier-class of Macedonians and Hellenes to his service, and was not insignificant; nor did he wholly neglect conciliation of the native Egyptians. He was a ready patron of letters, founding the Great Library of Alexandria. He himself wrote a history of Alexander's campaigns that has not survived. This used to be considered an objective work, distinguished by its straightforward honesty and sobriety. However, Ptolemy may have exaggerated his own role, and had propagandist aims in writing his History. Although now lost, it was a principal source for the surviving account by Arrian of Nicomedia. Ptolemy died in 283 BCE, the last of the Diodachoi, leaving a well-ordered and stable kingdom to his progeny.</History>
  • binaries/data/mods/public/simulation/templates/units/ptol_hero_ptolemy_IV.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Pike</Affects>
    7       <Modifications>
    8         <Health.Max> <Multiply>1.40</Multiply> </Health.Max>
    9       </Modifications>
    10       <AuraName>Raphia Aura</AuraName>
    11       <AuraDescription>Egyptian Pikemen have 40% greater health during his lifetime.</AuraDescription>
    12     </Aura1>
    13   </Auras>
     3  <Auras datatype="tokens">ptol_hero_ptolemy_IV</Auras>
    144  <Identity>
    155    <Civ>ptol</Civ>
    166    <GenericName>Ptolemy IV "Father Loving"</GenericName>
    177    <SpecificName>Ptolemaios D' Philopator</SpecificName>
    188    <Classes datatype="tokens">PtolemyIV</Classes>
  • binaries/data/mods/public/simulation/templates/units/rome_hero_marcellus.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Unit</Affects>
    8       <Modifications>
    9         <Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
    10         <Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
    11         <Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
    12       </Modifications>
    13       <AuraName>Sword of Rome Aura</AuraName>
    14       <AuraDescription>+5 Attack and +2 Capture for Roman units within his vision range.</AuraDescription>
    15       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    16     </Aura1>
    17   </Auras>
     3  <Auras datatype="tokens">rome_hero_marcellus</Auras>
    184  <Identity>
    195    <Civ>rome</Civ>
    206    <Lang>latin</Lang>
    217    <SpecificName>Marcus Claudius Marcellus</SpecificName>
    228    <Icon>units/rome_hero_marcellus.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/rome_hero_maximus.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Unit Structure</Affects>
    7       <Modifications>
    8         <Armour.Pierce> <Add>1</Add> </Armour.Pierce>
    9         <Armour.Hack> <Add>1</Add> </Armour.Hack>
    10         <Armour.Crush> <Add>1</Add> </Armour.Crush>
    11       </Modifications>
    12       <AuraName>Shield of Rome Aura</AuraName>
    13       <AuraDescription>+1 armour for all units and structures.</AuraDescription>
    14     </Aura1>
    15   </Auras>
     3  <Auras datatype="tokens">rome_hero_maximus</Auras>
    164  <Identity>
    175    <Civ>rome</Civ>
    186    <Lang>latin</Lang>
    197    <SpecificName>Quintus Fabius Maximus</SpecificName>
    208    <Icon>units/rome_hero_maximus.png</Icon>
  • binaries/data/mods/public/simulation/templates/units/sele_hero_antiochus_great.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_spearman">
    3   <Auras>
    4     <Aura1>
    5       <Type>global</Type>
    6       <Affects>Cavalry</Affects>
    7       <Modifications>
    8         <Armour.Pierce> <Add>2</Add> </Armour.Pierce>
    9         <Armour.Hack> <Add>2</Add> </Armour.Hack>
    10         <Armour.Crush> <Add>2</Add> </Armour.Crush>
    11       </Modifications>
    12       <AuraName>Ilarchès Aura</AuraName>
    13       <AuraDescription>All cavalry gains +2 levels of all armour types.</AuraDescription>
    14     </Aura1>
    15   </Auras>
     3  <Auras datatype="tokens">sele_hero_antiochus_great</Auras>
    164  <Identity>
    175    <Civ>sele</Civ>
    186    <Lang>greek</Lang>
    197    <GenericName>Antiochus III "The Great"</GenericName>
    208    <SpecificName>Antiokhos G' Mégās</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/sele_hero_antiochus_righteous.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_cavalry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>70</Radius>
    7       <AffectedPlayers>Enemy</AffectedPlayers>
    8       <Affects>Structure Mechanical</Affects>
    9       <Modifications>
    10         <Health.Max> <Multiply>0.8</Multiply> </Health.Max>
    11       </Modifications>
    12       <AuraName>Conquest Aura</AuraName>
    13       <AuraDescription>All nearby enemy buildings, siege engines, and ships have their health reduced by 20%.</AuraDescription>
    14       <OverlayIcon>art/textures/ui/session/auras/health_bonus.png</OverlayIcon>
    15     </Aura1>
    16   </Auras>
     3  <Auras datatype="tokens">sele_hero_antiochus_righteous</Auras>
    174  <Identity>
    185    <Civ>sele</Civ>
    196    <Lang>greek</Lang>
    207    <GenericName>Antiochus IV "The Righteous"</GenericName>
    218    <SpecificName>Antiokhos D' Epiphanes</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/sele_hero_seleucus_victor.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_elephant_melee">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>80</Radius>
    7       <Affects>Elephant</Affects>
    8       <Modifications>
    9         <UnitMotion.WalkSpeed> <Multiply>1.20</Multiply> </UnitMotion.WalkSpeed>
    10         <Attack.Melee.Hack> <Multiply>1.20</Multiply> </Attack.Melee.Hack>
    11         <Attack.Melee.Crush> <Multiply>1.20</Multiply> </Attack.Melee.Crush>
    12       </Modifications>
    13       <AuraName>Zooiarchos Aura</AuraName>
    14       <AuraDescription>Boosts War Elephant attack and speed +20% within his vision.</AuraDescription>
    15       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    16     </Aura1>
    17   </Auras>
     3  <Auras datatype="tokens">sele_hero_seleucus_victor</Auras>
    184  <Identity>
    195    <Civ>sele</Civ>
    206    <Lang>greek</Lang>
    217    <GenericName>Seleucus I "The Victor"</GenericName>
    228    <SpecificName>Seleukos A' Nikator</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/spart_hero_agis.xml

     
    66  <Identity>
    77    <Civ>spart</Civ>
    88    <Lang>greek</Lang>
    99    <GenericName>Agis III</GenericName>
    1010    <SpecificName>Agis</SpecificName>
    11     <Tooltip>No hero aura. Has 2x health of other infantry heroes. Basically a very tough hoplite.</Tooltip>
    1211    <History>Agis III was the 20th Spartan king of the Eurypontid lineage. Agis cobbled together an alliance of Southern Greek states to fight off Macedonian hegemony while Alexander the Great was away in Asia on his conquest march. After securing Crete as a Spartan tributary, Agis then moved to besiege the city of Megalopolis in the Peloponnese, who was an ally of Macedon. Antipater, the Macedonian regent, lead an army to stop this new uprising. In the Battle of Megalopolis, the Macedonians prevailed in a long and bloody battle. Much like Leonidas 150 years earlier, instead of surrendering, Agis made a heroic final stand in order to buy time for his troops to retreat.</History>
    1312    <Icon>units/spart_hero_agis.png</Icon>
    1413  </Identity>
    1514  <VisualActor>
    1615    <Actor>units/spartans/agis.xml</Actor>
  • binaries/data/mods/public/simulation/templates/units/spart_hero_brasidas.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_swordsman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>60</Radius>
    7       <Affects>Javelin</Affects>
    8       <Modifications>
    9         <Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
    10         <Armour.Pierce> <Add>1</Add> </Armour.Pierce>
    11         <Armour.Hack>   <Add>1</Add> </Armour.Hack>
    12         <Armour.Crush>  <Add>1</Add> </Armour.Crush>
    13       </Modifications>
    14       <AuraName>Helot Reforms</AuraName>
    15       <AuraDescription>Helot Skirmishers within sight of him gain +2 attack and +1 all armor types.</AuraDescription>
    16       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    17     </Aura1>
    18   </Auras>
     3  <Auras datatype="tokens">spart_hero_brasidas</Auras>
    194  <Identity>
    205    <Civ>spart</Civ>
    216    <Lang>greek</Lang>
    227    <GenericName>Brasidas</GenericName>
    238    <SpecificName>Brasidas</SpecificName>
  • binaries/data/mods/public/simulation/templates/units/spart_hero_leonidas.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<Entity parent="template_unit_hero_infantry_spearman">
    3   <Auras>
    4     <Aura1>
    5       <Type>range</Type>
    6       <Radius>30</Radius>
    7       <Affects>Spear</Affects>
    8       <Modifications>
    9         <Attack.Melee.Hack> <Multiply>1.20</Multiply> </Attack.Melee.Hack>
    10         <Attack.Melee.Pierce> <Multiply>1.20</Multiply> </Attack.Melee.Pierce>
    11         <Attack.Melee.Crush> <Multiply>1.20</Multiply> </Attack.Melee.Crush>
    12         <Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
    13       </Modifications>
    14       <AuraName>Last Stand Aura</AuraName>
    15       <AuraDescription>+20% Attack and +1 Capture for nearby Hoplites and Spartiates.</AuraDescription>
    16       <OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
    17     </Aura1>
    18   </Auras>
     3  <Auras datatype="tokens">spart_hero_leonidas</Auras>
    194  <Identity>
    205    <Civ>spart</Civ>
    216    <Lang>greek</Lang>
    227    <GenericName>Leonidas I</GenericName>
    238    <SpecificName>Leōnídēs</SpecificName>