Cleanup of the Auras code in preparation of stackable auras. Implements auras being enabled by techs. Refs #3792. Patch by fatherbushido

This was SVN commit r17974.
This commit is contained in:
sanderd17 2016-04-04 18:55:44 +00:00
parent d7b62e0af7
commit 46ead523b8
101 changed files with 625 additions and 740 deletions

View File

@ -70,8 +70,9 @@ function MatchesClassList(classes, match)
* @param template A valid template as returned by the template loader.
* @param player An optional player id to get the technology modifications
* of properties.
* @param aurasTemplate An object in the form of {key: {auraName: "", auraDescription: ""}}
*/
function GetTemplateDataHelper(template, player)
function GetTemplateDataHelper(template, player, aurasTemplate)
{
var ret = {};
@ -120,13 +121,13 @@ function GetTemplateDataHelper(template, player)
if (template.Auras)
{
ret.auras = {};
for (let auraID in template.Auras)
for (let auraID in aurasTemplate)
{
let aura = template.Auras[auraID];
if (aura.AuraName)
let aura = aurasTemplate[auraID];
if (aura.auraName)
ret.auras[auraID] = {
"name": aura.AuraName,
"description": aura.AuraDescription || null
"name": aura.auraName || null,
"description": aura.auraDescription || null
};
}
}

View File

@ -1,114 +1,54 @@
function Auras() {}
var modificationSchema =
"<element name='Modifications' a:help='Modification list'>" +
"<oneOrMore>" +
"<element a:help='Name of the value to modify'>" +
"<anyName/>" +
"<choice>" +
"<element name='Add'>" +
"<data type='decimal'/>" +
"</element>" +
"<element name='Multiply'>" +
"<data type='decimal'/>" +
"</element>" +
"</choice>" +
"</element>" +
"</oneOrMore>" +
"</element>";
Auras.prototype.Schema =
"<oneOrMore>" +
"<element a:help='Any name you want'>" +
"<anyName/>" +
"<interleave>" +
"<optional>" +
"<element name='Radius' a:help='Define the radius this aura affects, if it is a range aura'>" +
"<data type='nonNegativeInteger'/>" +
"</element>" +
"</optional>" +
"<element name='Type' a:help='Controls how this aura affects nearby units'>" +
"<choice>" +
"<value a:help='Affects units in the same formation'>formation</value>" +
"<value a:help='Affects units in a certain range'>range</value>" +
"<value a:help='Affects the structure or unit this unit is garrisoned in'>garrison</value>" +
"<value a:help='Affects the units that are garrisoned on a certain structure'>garrisonedUnits</value>" +
"<value a:help='Affects all units while this unit is alive'>global</value>" +
"</choice>" +
"</element>" +
modificationSchema +
"<optional>" +
"<element name='AuraName' a:help='name to display in the GUI'>" +
"<text/>" +
"</element>" +
"</optional>" +
"<optional>" +
"<element name='AuraDescription' a:help='description to display in the GUI, requires a name'>" +
"<text/>" +
"</element>" +
"</optional>" +
"<optional>" +
"<element name='OverlayIcon' a:help='Icon to show on the entities affected by this aura'>" +
"<text/>" +
"</element>" +
"</optional>" +
"<element name='Affects' a:help='Affected classes'>" +
"<text/>" +
"</element>" +
"<optional>" +
"<element name='AffectedPlayers' a:help='Affected players'>" +
"<text/>" +
"</element>" +
"</optional>" +
"</interleave>" +
"</element>" +
"</oneOrMore>";
"<attribute name='datatype'>" +
"<value>tokens</value>" +
"</attribute>" +
"<text/>";
Auras.prototype.Init = function()
{
var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
this.templateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
let cmpTechnologyTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TechnologyTemplateManager);
this.auras = {};
this.affectedPlayers = {};
for (var name in this.template)
let auraNames = this.GetAuraNames();
for (let name of auraNames)
{
this.affectedPlayers[name] = []; // will be calculated on ownership change
var aura = {};
aura.affects = this.template[name].Affects;
if (this.template[name].AffectedPlayers)
aura.affectedPlayers = this.template[name].AffectedPlayers.split(/\s+/);
this.auras[name] = aura;
this.affectedPlayers[name] = [];
this.auras[name] = cmpTechnologyTemplateManager.GetAuraTemplate(name);
}
// In case of autogarrisoning, this component can be called before ownership is set.
// So it needs to be completely initialised from the start.
this.Clean();
};
Auras.prototype.GetModifierIdentifier = function(name, mod)
// We can modify identifier if we want stackable auras in some case.
Auras.prototype.GetModifierIdentifier = function(name)
{
return this.templateName + "/" + name + "/" + mod.value;
return name;
};
Auras.prototype.GetDescriptions = function()
{
let auraNames = this.GetAuraNames();
var ret = {};
for (let name in this.template)
for (let name of auraNames)
{
let aura = this.template[name];
if (aura.AuraName)
ret[aura.AuraName] = aura.AuraDescription || null;
let aura = this.auras[name];
if (aura.auraName)
ret[aura.auraName] = aura.auraDescription || null;
}
return ret;
};
Auras.prototype.GetAuraNames = function()
{
return Object.keys(this.template);
return this.template._string.split(/\s+/);
};
Auras.prototype.GetOverlayIcon = function(name)
{
return this.template[name].OverlayIcon || "";
return this.auras[name].overlayIcon || "";
};
Auras.prototype.GetAffectedEntities = function(name)
@ -122,7 +62,7 @@ Auras.prototype.GetRange = function(name)
return undefined;
if (this.IsGlobalAura(name))
return -1; // -1 is infinite range
return +this.template[name].Radius;
return +this.auras[name].radius;
};
Auras.prototype.GetClasses = function(name)
@ -163,6 +103,16 @@ Auras.prototype.CalculateAffectedPlayers = function(name)
}
};
Auras.prototype.CanApply = function(name)
{
if (!this.auras[name].requiredTechnology)
return true;
let cmpTechnologyManager = QueryOwnerInterface(this.entity, IID_TechnologyManager);
if (!cmpTechnologyManager || !cmpTechnologyManager.IsTechnologyResearched(this.auras[name].requiredTechnology))
return false;
return true;
};
Auras.prototype.HasFormationAura = function()
{
return this.GetAuraNames().some(n => this.IsFormationAura(n));
@ -180,7 +130,7 @@ Auras.prototype.HasGarrisonedUnitsAura = function()
Auras.prototype.GetType = function(name)
{
return this.template[name].Type;
return this.auras[name].type;
};
Auras.prototype.IsFormationAura = function(name)
@ -236,25 +186,6 @@ Auras.prototype.Clean = function()
cmpRangeManager.DestroyActiveQuery(this[name].rangeQuery);
}
for (let name in this.template)
{
let modifications = [];
for (let value in this.template[name].Modifications)
{
let mod = {};
mod.value = value.replace(/\./g, "/").replace(/\/\//g, ".");
let templateModifications = this.template[name].Modifications[value];
if (templateModifications.Add)
mod.add = ApplyValueModificationsToEntity("Auras/"+name+"/Modifications/"+mod.value+"/Add",
+templateModifications.Add, this.entity);
else if (templateModifications.Multiply)
mod.multiply = ApplyValueModificationsToEntity("Auras/"+name+"/Modifications/"+mod.value+"/Multiply",
+templateModifications.Multiply, this.entity);
modifications.push(mod);
}
this.auras[name].modifications = modifications;
}
for (let name of auraNames)
{
// only calculate the affected players on re-applying the bonuses
@ -343,6 +274,9 @@ Auras.prototype.ApplyGarrisonBonus = function(structure)
Auras.prototype.ApplyTemplateBonus = function(name, players)
{
if (!this.CanApply(name))
return;
if (!this.IsGlobalAura(name))
return;
var modifications = this.GetModifications(name);
@ -351,7 +285,7 @@ Auras.prototype.ApplyTemplateBonus = function(name, players)
for (let mod of modifications)
for (let player of players)
cmpAuraManager.ApplyTemplateBonus(mod.value, player, classes, mod, this.GetModifierIdentifier(name, mod));
cmpAuraManager.ApplyTemplateBonus(mod.value, player, classes, mod, this.GetModifierIdentifier(name));
};
Auras.prototype.RemoveFormationBonus = function(memberList)
@ -370,6 +304,8 @@ Auras.prototype.RemoveGarrisonBonus = function(structure)
Auras.prototype.RemoveTemplateBonus = function(name)
{
if (!this.CanApply(name))
return;
if (!this.IsGlobalAura(name))
return;
@ -380,7 +316,7 @@ Auras.prototype.RemoveTemplateBonus = function(name)
for (let mod of modifications)
for (let player of players)
cmpAuraManager.RemoveTemplateBonus(mod.value, player, classes, this.GetModifierIdentifier(name, mod));
cmpAuraManager.RemoveTemplateBonus(mod.value, player, classes, this.GetModifierIdentifier(name));
};
Auras.prototype.ApplyBonus = function(name, ents)
@ -390,12 +326,15 @@ Auras.prototype.ApplyBonus = function(name, ents)
return;
this[name].targetUnits = this[name].targetUnits.concat(validEnts);
if (!this.CanApply(name))
return;
var modifications = this.GetModifications(name);
var cmpAuraManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AuraManager);
for (let mod of modifications)
cmpAuraManager.ApplyBonus(mod.value, validEnts, mod, this.GetModifierIdentifier(name, mod));
cmpAuraManager.ApplyBonus(mod.value, validEnts, mod, this.GetModifierIdentifier(name));
// update status bars if this has an icon
if (!this.GetOverlayIcon(name))
return;
@ -415,11 +354,15 @@ Auras.prototype.RemoveBonus = function(name, ents)
return;
this[name].targetUnits = this[name].targetUnits.filter(v => validEnts.indexOf(v) == -1);
if (!this.CanApply(name))
return;
var modifications = this.GetModifications(name);
var cmpAuraManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AuraManager);
for (let mod of modifications)
cmpAuraManager.RemoveBonus(mod.value, validEnts, this.GetModifierIdentifier(name, mod));
cmpAuraManager.RemoveBonus(mod.value, validEnts, this.GetModifierIdentifier(name));
// update status bars if this has an icon
if (!this.GetOverlayIcon(name))
@ -445,9 +388,23 @@ Auras.prototype.OnDiplomacyChanged = function(msg)
this.Clean();
};
Auras.prototype.OnValueModification = function(msg)
Auras.prototype.OnGlobalResearchFinished = function(msg)
{
if (msg.component == "Auras")
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
if (!cmpOwnership || cmpOwnership.GetOwner() != msg.player)
return;
let auraNames = this.GetAuraNames();
let needsClean = false;
for (let name of auraNames)
{
let requiredTech = this.auras[name].requiredTechnology;
if (requiredTech && requiredTech == msg.tech)
{
needsClean = true;
break;
}
}
if (needsClean)
this.Clean();
};

View File

@ -576,7 +576,28 @@ GuiInterface.prototype.GetTemplateData = function(player, extendedName)
if (!template)
return null;
return GetTemplateDataHelper(template, player);
let aurasTemplate = {};
if (!template.Auras)
return GetTemplateDataHelper(template, player, aurasTemplate);
// Add aura name and description loaded from JSON file
let auraNames = template.Auras._string.split(/\s+/);
let cmpTechnologyTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TechnologyTemplateManager);
for (let name of auraNames)
{
let auraTemplate = cmpTechnologyTemplateManager.GetAuraTemplate(name);
if (!auraTemplate)
{
// the following warning is perhaps useless since it's yet done in TechnologyTemplateManager
warn("Tried to get data for invalid aura: " + name);
continue;
}
aurasTemplate[name] = {};
aurasTemplate[name].auraName = auraTemplate.auraName || null;
aurasTemplate[name].auraDescription = auraTemplate.auraDescription || null;
}
return GetTemplateDataHelper(template, player, aurasTemplate);
};
GuiInterface.prototype.GetTechnologyData = function(player, name)

View File

@ -1,5 +1,5 @@
/**
* System component which loads the technology data files
* System component which loads the technology and the aura data files
*/
function TechnologyTemplateManager() {}

View File

@ -0,0 +1,12 @@
{
"type": "formation",
"affects": ["Unit"],
"modifications": [
{ "value": "Armour/Pierce", "add": 1 },
{ "value": "Armour/Hack", "add": 1 },
{ "value": "Armour/Crush", "add": 1 },
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }
],
"auraName": "Formation Reforms",
"auraDescription": "All units in his formation +15% speed and +1 armor."
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Javelin"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed", "add": 1.15 }
],
"auraName": "Peltast Reforms",
"auraDescription": "All Peltasts +15% speed."
}

View File

@ -0,0 +1,11 @@
{
"type": "range",
"radius": 60,
"affects": ["Worker"],
"modifications": [
{ "value": "Builder/Rate", "multiply": 1.15 }
],
"auraName": "Builder Aura",
"auraDescription": "Buildings construct 15% faster within his vision.",
"overlayIcon": "art/textures/ui/session/auras/build_bonus.png"
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Temple"],
"modifications": [
{ "value": "Cost/Resources/stone", "add": -50 }
],
"auraName": "Acropolis Aura",
"auraDescription": "Temples are 50 stone cheaper during his lifetime."
}

View File

@ -0,0 +1,10 @@
{
"type": "garrison",
"affects": ["Ship"],
"affectedPlayers": ["Player", "MutualAlly"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.5 }
],
"auraName": "Naval Commander Aura",
"auraDescription": "When garrisoned in a ship, his ship is +50% faster."
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Ship"],
"modifications": [
{ "value": "Cost.BuildTime", "multiply": 0.8 }
],
"auraName": "Naval Architect Aura",
"auraDescription": "-20% build time for ships during his lifespan."
}

View File

@ -0,0 +1,14 @@
{
"type": "range",
"radius": 60,
"affects": ["Champion"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.25 },
{ "value": "Attack/Ranged/Pierce", "add": 5 },
{ "value": "Attack/Melee/Hack", "add": 5 },
{ "value": "Attack/Capture/Value", "add": 2 }
],
"auraName": "Champion Army",
"auraDescription": "+5 Attack, +2 Capture and +25% Speed for Champion Units.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Unit"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }
],
"auraName": "Hero Aura",
"auraDescription": "All Units +15% speed."
}

View File

@ -0,0 +1,11 @@
{
"type": "range",
"radius": 60,
"affects": ["Unit"],
"modifications": [
{ "value": "Health/RegenRate", "add": 1 }
],
"auraName": "Hero Aura",
"auraDescription": "+1 HP per second healing rate for all units.",
"overlayIcon": "art/textures/ui/session/auras/heal.png"
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Unit"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }
],
"auraName": "Lightning Aura",
"auraDescription": "All Units +15% speed."
}

View File

@ -0,0 +1,14 @@
{
"type": "range",
"radius": 60,
"affects": ["Unit"],
"affectedPlayers": ["Player", "Ally"],
"modifications": [
{ "value": "Attack/Ranged/Pierce", "add": 2 },
{ "value": "Attack/Melee/Hack", "add": 2 },
{ "value": "Attack/Capture/Value", "add": 1 }
],
"auraName": "Tactician Aura",
"auraDescription": "All allied units +2 Attack and +1 Capture within his vision range.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,10 @@
{
"type": "range",
"radius": 60,
"affects": ["Cavalry"],
"modifications": [
{ "value": "Attack/Charge/Hack", "add": 5}
],
"auraName": "Commander Aura",
"auraDescription": "+5 Cavalry charge attack within vision range of him (currently useless)."
}

View File

@ -0,0 +1,10 @@
{
"type": "garrisonedUnits",
"affects": ["Ship"],
"modifications": [
{ "value": "Health/RegenRate", "add": 3 }
],
"auraName": "Repairing Ship aura",
"auraDescription": "Heals garrisoned ship at 3 HP per second.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,12 @@
{
"type": "range",
"radius": 10,
"affects": ["Citizen Soldier"],
"modifications": [
{ "value": "Builder/Rate", "multiply": 1.1 },
{ "value": "ResourceGatherer/BaseSpeed", "multiply": 1.1 }
],
"auraName": "Inspiration Aura",
"auraDescription": "Nearby males work 10% faster.",
"overlayIcon": "art/textures/ui/session/auras/buildgather_bonus.png"
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Unit"],
"modifications": [
{ "value": "Looter/Resource/metal", "add": 10 }
],
"auraName": "Hero Aura",
"auraDescription": "+10 Metal loot for every enemy unit killed."
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Worker"],
"modifications": [
{ "value": "ResourceGatherer/BaseSpeed", "multiply": 1.15 }
],
"auraName": "Hero Aura",
"auraDescription": "Gathering rates increased with +15% during his lifetime."
}

View File

@ -0,0 +1,13 @@
{
"type": "range",
"radius": 60,
"affects": ["Unit"],
"modifications": [
{ "value": "Attack/Ranged/Pierce", "add": 2 },
{ "value": "Attack/Melee/Hack", "add": 2 },
{ "value": "Attack/Capture/Value", "add": 1 }
],
"auraName": "Hero Aura",
"auraDescription": "+2 Attack and +1 Capture for all units within his aura.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,9 @@
{
"type": "garrison",
"affects": ["Structure", "Mechanical"],
"modifications": [
{ "value": "Capturable/GarrisonRegenRate", "add": 2 }
],
"auraName": "Garrisoned Capture Aura",
"auraDescription": "When garrisoned in a structure or a siege, the hero gives it a bonus of +2 capture points recovery rate."
}

View File

@ -0,0 +1,10 @@
{
"type": "range",
"radius": 50,
"affects": ["Unit"],
"modifications": [
{ "value": "Attack/Melee/Hack", "add": 2 },
{"value": "Attack/Ranged/Pierce", "add": 3 }
],
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Structure"],
"modifications": [
{ "value": "TerritoryInfluence/Radius", "multiply": 1.1}
],
"auraName": "Imperialism Aura",
"auraDescription": "+10% territory effect for all buildings while he lives."
}

View File

@ -0,0 +1,12 @@
{
"type": "global",
"affects": ["Siege"],
"modifications": [
{ "value": "Attack/Melee/Crush", "add": 10 },
{ "value": "Attack/Ranged/Crush", "add": 10 },
{ "value": "Attack/Ranged/MaxRange", "multiply": 1.15 }
],
"auraName": "Hero Aura",
"auraDescription": "+15% Range and +10 Crush Attack for Siege Engines.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,13 @@
{
"type": "range",
"radius": 60,
"affects": ["Champion"],
"modifications": [
{ "value": "Attack/Ranged/Pierce", "add": 5},
{ "value": "Attack/Melee/Hack", "add": 5},
{ "value": "Attack/Capture/Value", "add": 2}
],
"auraName": "Hero Aura",
"auraDescription": "+5 Attack and +2 Capture for Champion Units.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,10 @@
{
"type": "range",
"radius": 75,
"affects": ["Trader"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.20 }
],
"auraDescription": "All traders in range +20% walk speed.",
"overlayIcon": "art/textures/ui/session/auras/build_bonus.png"
}

View File

@ -0,0 +1,13 @@
{
"type": "range",
"radius": 60,
"affects": ["Cavalry"],
"modifications": [
{ "value": "Attack/Ranged/Pierce", "add": 2 },
{ "value": "Attack/Melee/Hack", "add": 2 },
{ "value": "Attack/Capture/Value", "add": 1 }
],
"auraName": "Lead from the Front Aura",
"auraDescription": "+2 Attack and +1 Capture for nearby cavalry units.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,13 @@
{
"type": "global",
"affects": ["Unit"],
"affectedPlayers": ["Player"],
"modifications": [
{ "value": "Attack/Ranged/Pierce", "add": 5 },
{ "value": "Attack/Melee/Hack", "add": 5 },
{ "value": "Attack/Capture/Value", "add": 2 },
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.25 }
],
"auraName": "Champion Army",
"auraDescription": "+5 Attack, +2 Capture and +25% Speed for Champion Units."
}

View File

@ -0,0 +1,12 @@
{
"type": "range",
"radius": 60,
"affects": ["Worker"],
"modifications": [
{ "value": "Builder/Rate", "multiply": 1.15 },
{ "value": "ResourceGatherer/BaseSpeed", "multiply": 1.15 }
],
"auraName": "Administrator Aura",
"auraDescription": "+15% Gather Rate and Build Rate of nearby units.",
"overlayIcon": "art/textures/ui/session/auras/buildgather_bonus.png"
}

View File

@ -0,0 +1,12 @@
{
"type": "range",
"radius": 60,
"affects": ["Unit"],
"modifications": [
{ "value": "Attack/Melee/RepeatTime", "multiply": 0.8 },
{ "value": "Attack/Ranged/RepeatTime", "multiply": 0.8 }
],
"auraName": "Patriot Aura",
"auraDescription": "Egyptian units fight 25% faster in her vision range.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,9 @@
{
"type": "global",
"affects": ["Pike"],
"modifications": [
{ "value": "Health/Max", "multiply": 1.40}
],
"auraName": "Raphia Aura",
"auraDescription": "Egyptian Pikemen have 40% greater health during his lifetime."
}

View File

@ -0,0 +1,11 @@
{
"type": "range",
"radius": 77,
"affects": ["Worker"],
"modifications": [
{ "value": "Builder/Rate", "multiply": 1.10 }
],
"auraName": "Construction Aura",
"auraDescription": "Buildings construct 10% faster within his vision.",
"overlayIcon": "art/textures/ui/session/auras/build_bonus.png"
}

View File

@ -0,0 +1,12 @@
{
"type": "global",
"affects": ["Mercernary"],
"modifications": [
{ "value": "Cost/Resources/food", "multiply": 0.5 },
{ "value": "Cost/Resources/wood", "multiply": 0.5 },
{ "value": "Cost/Resources/stone", "multiply": 0.5 },
{ "value": "Cost/Resources/metal", "multiply": 0.5 }
],
"auraName": "Mercenary Patron Aura",
"auraDescription": "Mercenaries cost -50% resources during his lifetime."
}

View File

@ -0,0 +1,13 @@
{
"type": "range",
"radius": 60,
"affects": ["Unit"],
"modifications": [
{ "value": "Attack/Ranged/Pierce", "add": 5 },
{ "value": "Attack/Ranged/Hack", "add": 5 },
{ "value": "Attack/Capture/Value", "add": 2 }
],
"auraName": "Sword of Rome Aura",
"auraDescription": "+5 Attack and +2 Capture for Roman units within his vision range.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,11 @@
{
"type": "global",
"affects": ["Unit", "Structure"],
"modifications": [
{ "value": "Armour/Pierce", "add": 1 },
{ "value": "Armour/Hack", "add": 1 },
{ "value": "Armour/Crush", "add": 1 }
],
"auraName": "Shield of Rome Aura",
"auraDescription": "+1 armour for all units and structures."
}

View File

@ -0,0 +1,11 @@
{
"type": "range",
"radius": 60,
"affects": ["Worker"],
"modifications": [
{ "value": "ResourceGatherer/Rates/food.grain", "multiply": 1.25 }
],
"auraDescription" : "Boosts nearby farming with +25% gathering rate.",
"auraName": "Farming bonus",
"overlayIcon": "art/textures/ui/session/auras/farming.png"
}

View File

@ -0,0 +1,11 @@
{
"type": "global",
"affects": ["Cavalry"],
"modifications": [
{ "value": "Armour/Pierce", "add": 2 },
{ "value": "Armour/Hack", "add": 2 },
{ "value": "Armour/Crush", "add": 2 }
],
"auraName": "Ilarchès Aura",
"auraDescription": "All Cavalry gains +2 levels of all armour types."
}

View File

@ -0,0 +1,12 @@
{
"type": "range",
"radius": 70,
"affects": ["Structure", "Mechanical"],
"affectedPlayers": ["Enemy"],
"modifications": [
{ "value": "Health/Max", "multiply": 0.8 }
],
"auraName": "Conquest Aura",
"auraDescription": "All nearby enemy Buildings, Siege engines, and Ships have their health reduced by 20%.",
"overlayIcon": "art/textures/ui/session/auras/health_bonus.png"
}

View File

@ -0,0 +1,13 @@
{
"type": "range",
"radius": 80,
"affects": ["Elephant"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed>", "multiply": 1.2 },
{ "value": "Attack.Melee.Hack>", "multiply": 1.2 },
{ "value": "Attack.Melee.Crush>", "multiply": 1.2 }
],
"auraName": "Zooiarchos Aura",
"auraDescription": "Boosts War Elephant attack and speed +20% within his vision.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,14 @@
{
"type": "range",
"radius": 60,
"affects": ["Javelin"],
"modifications": [
{ "value": "Attack/Ranged/Pierce", "add": 2 },
{ "value": "Armour/Pierce", "add": 1 },
{ "value": "Armour/Hack", "add": 1 },
{ "value": "Armour/Crush", "add": 1 }
],
"auraName": "Helot Reforms",
"auraDescription": "Helot Skirmishers within sight of him gain +2 attack and +1 all armor types.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,14 @@
{
"type": "range",
"radius": 30,
"affects": ["Spear"],
"modifications": [
{ "value": "Attack/Melee/Hack", "multiply": 1.2 },
{ "value": "Attack/Melee/Pierce", "multiply": 1.2 },
{ "value": "Attack/Melee/Crush", "multiply": 1.2 },
{ "value": "Attack/Capture/Value", "add": 1 }
],
"auraName": "Last Stand Aura",
"auraDescription": "+20% Attack and +1 Capture for nearby Hoplites and Spartiates.",
"overlayIcon": "art/textures/ui/session/auras/attack_bonus.png"
}

View File

@ -0,0 +1,11 @@
{
"type": "range",
"radius": 40,
"affects": ["Human"],
"modifications": [
{ "value": "Health/RegenRate", "add": 1 }
],
"auraName": "Healing Aura",
"auraDescription": "Heals nearby units at 1 HP per second.",
"overlayIcon": "art/textures/ui/session/auras/heal.png"
}

View File

@ -0,0 +1,8 @@
{
"type": "global",
"affects": ["Structure"],
"modifications": [
{ "value": "TerritoryInfluence/Radius", "multiply": 1.20 }
],
"auraDescription": "Increase territory influence."
}

View File

@ -0,0 +1,12 @@
{
"type": "garrisonedUnits",
"affects": ["Unit"],
"modifications": [
{ "value": "Armour/Pierce", "add": 3 },
{ "value": "Armour/Hack", "add": 3 },
{ "value": "Armour/Crush", "add": 3 },
{ "value": "Vision/Range", "add": 20 }
],
"auraName": "Wall Protection",
"auraDescription": "Units on walls have 3 extra Armor levels and higher vision."
}

View File

@ -0,0 +1,7 @@
{
"type": "global",
"affects": ["Player"],
"modifications": [ { "value": "Player/MaxPopulation", "add": 10 } ],
"auraName": "Wonder Aura",
"auraDescription": "+10 max. population cap"
}

View File

@ -0,0 +1,8 @@
{
"type": "global",
"affects": ["Player"],
"modifications": [ { "value": "Player/MaxPopulation", "add": 40 } ],
"auraName": "Wonder Aura",
"auraDescription": "+40 extra max. population cap (requires \"Glorious Expansion\" tech)",
"requiredTechnology": "pop_wonder"
}

View File

@ -10,12 +10,12 @@
"pers": "Paradise"
},
"description": "The wonder attracts many more people to your civilization.",
"cost": { "food": 3000, "wood": 3000, "stone": 500, "metal": 500 },
"cost": { "food": 2000, "wood": 3000, "stone": 500, "metal": 500 },
"requirements": { "tech": "phase_city" },
"requirementsTooltip": "Unlocked in City Phase.",
"icon": "special_treasure.png",
"researchTime": 40,
"tooltip": "+50 maximum population cap.",
"modifications": [{ "value": "Player/MaxPopulation", "add": 50 }],
"tooltip": "enable +50 wonder aura",
"modifications": [],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}

View File

@ -1,14 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Structure</Affects>
<Modifications>
<TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
</Modifications>
</Aura1>
</Auras>
<Auras datatype="tokens">theatron</Auras>
<BuildRestrictions>
<Category>Theater</Category>
</BuildRestrictions>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras datatype="tokens">rotary_mill</Auras>
<Cost>
<BuildTime>100</BuildTime>
<PopulationBonus>2</PopulationBonus>
@ -10,19 +11,6 @@
<metal>0</metal>
</Resources>
</Cost>
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Worker</Affects>
<Modifications>
<ResourceGatherer.Rates.food..grain> <Multiply>1.25</Multiply> </ResourceGatherer.Rates.food..grain>
</Modifications>
<AuraName>Farming bonus</AuraName>
<AuraDescription>Boosts nearby farming with +25% gathering rate.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/farming.png</OverlayIcon>
</Aura1>
</Auras>
<Footprint replace="">
<Circle radius="9.0"/>
<Height>6.0</Height>

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras>
<Aura1>
<Type>garrisonedUnits</Type>
<Affects>Ship</Affects>
<Modifications>
<Health.RegenRate> <Add>3</Add> </Health.RegenRate>
</Modifications>
<AuraName>Repairing ship Aura</AuraName>
<AuraDescription>Heals garrisoned ship at 3 HP per second.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">cart_super_dock_repair</Auras>
<BuildRestrictions>
<Territory>own ally neutral</Territory>
<PlacementType>shore</PlacementType>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras datatype="tokens">rotary_mill</Auras>
<Cost>
<BuildTime>100</BuildTime>
<PopulationBonus>2</PopulationBonus>
@ -10,19 +11,6 @@
<metal>0</metal>
</Resources>
</Cost>
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Worker</Affects>
<Modifications>
<ResourceGatherer.Rates.food..grain> <Multiply>1.25</Multiply> </ResourceGatherer.Rates.food..grain>
</Modifications>
<AuraName>Farming bonus</AuraName>
<AuraDescription>Boosts nearby farming with +25% gathering rate.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/farming.png</OverlayIcon>
</Aura1>
</Auras>
<Footprint replace="">
<Circle radius="9.0"/>
<Height>6.0</Height>

View File

@ -1,17 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>50</Radius>
<Affects>Unit</Affects>
<Modifications>
<Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
<Attack.Ranged.Pierce> <Add>3</Add> </Attack.Ranged.Pierce>
</Modifications>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">iber_monument</Auras>
<BuildRestrictions>
<Category>Monument</Category>
</BuildRestrictions>

View File

@ -1,14 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Structure</Affects>
<Modifications>
<TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
</Modifications>
</Aura1>
</Auras>
<Auras datatype="tokens">theatron</Auras>
<BuildRestrictions>
<Category>Theater</Category>
</BuildRestrictions>

View File

@ -1,17 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>75</Radius>
<Affects>Trader</Affects>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.20</Multiply> </UnitMotion.WalkSpeed>
</Modifications>
<AuraDescription>All traders in range +20% walk speed.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/build_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">maur_pillar</Auras>
<BuildRestrictions>
<Category>Pillar</Category>
</BuildRestrictions>

View File

@ -1,14 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Structure</Affects>
<Modifications>
<TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
</Modifications>
</Aura1>
</Auras>
<Auras datatype="tokens">theatron</Auras>
<BuildRestrictions>
<Category>Theater</Category>
</BuildRestrictions>

View File

@ -1,14 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_special">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Structure</Affects>
<Modifications>
<TerritoryInfluence.Radius> <Multiply>1.2</Multiply> </TerritoryInfluence.Radius>
</Modifications>
</Aura1>
</Auras>
<Auras datatype="tokens">theatron</Auras>
<BuildRestrictions>
<Category>Theater</Category>
</BuildRestrictions>

View File

@ -1,18 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_civic">
<Auras>
<heal>
<Type>range</Type>
<Radius>40</Radius>
<Affects>Human</Affects>
<Modifications>
<Health.RegenRate> <Add>1</Add> </Health.RegenRate>
</Modifications>
<AuraName>Healing Aura</AuraName>
<AuraDescription>Heals nearby units at 1 HP per second.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/heal.png</OverlayIcon>
</heal>
</Auras>
<Auras datatype="tokens">temple_heal</Auras>
<BuildRestrictions>
<Category>Temple</Category>
</BuildRestrictions>

View File

@ -5,20 +5,7 @@
<Pierce>40.0</Pierce>
<Crush>4.0</Crush>
</Armour>
<Auras>
<Aura1>
<Type>garrisonedUnits</Type>
<Affects>Unit</Affects>
<Modifications>
<Armour.Pierce> <Add>3</Add> </Armour.Pierce>
<Armour.Hack> <Add>3</Add> </Armour.Hack>
<Armour.Crush> <Add>3</Add> </Armour.Crush>
<Vision.Range> <Add>20</Add> </Vision.Range>
</Modifications>
<AuraName>Wall Protection</AuraName>
<AuraDescription>Units on walls have 3 extra Armor levels</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">wall_garrisoned</Auras>
<Cost>
<BuildTime>45</BuildTime>
<Resources>

View File

@ -5,20 +5,7 @@
<Pierce>40.0</Pierce>
<Crush>4.0</Crush>
</Armour>
<Auras>
<Aura1>
<Type>garrisonedUnits</Type>
<Affects>Unit</Affects>
<Modifications>
<Armour.Pierce> <Add>3</Add> </Armour.Pierce>
<Armour.Hack> <Add>3</Add> </Armour.Hack>
<Armour.Crush> <Add>3</Add> </Armour.Crush>
<Vision.Range> <Add>20</Add> </Vision.Range>
</Modifications>
<AuraName>Wall Protection</AuraName>
<AuraDescription>Units on walls have 3 extra Armor levels</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">wall_garrisoned</Auras>
<Cost>
<BuildTime>30</BuildTime>
<Resources>

View File

@ -10,17 +10,18 @@
<Crush>2</Crush>
</Foundation>
</Armour>
<Auras datatype="tokens">wonder_pop_1 wonder_pop_2</Auras>
<BuildRestrictions>
<Category>Wonder</Category>
</BuildRestrictions>
<Capturable>
<CapturePoints>1500</CapturePoints>
<CapturePoints>2000</CapturePoints>
<RegenRate>5.0</RegenRate>
</Capturable>
<Cost>
<BuildTime>1000</BuildTime>
<Resources>
<food>0</food>
<food>1000</food>
<wood>1000</wood>
<stone>1000</stone>
<metal>1000</metal>

View File

@ -1,16 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit">
<Auras>
<AuraA>
<Type>garrison</Type>
<Affects>Structure Mechanical</Affects>
<Modifications>
<Capturable.GarrisonRegenRate> <Add>2</Add> </Capturable.GarrisonRegenRate>
</Modifications>
<AuraName>Garrisoned Capture Aura</AuraName>
<AuraDescription>When garrisoned in a structure or a siege, the hero gives it a bonus of +2 capture points recovery rate.</AuraDescription>
</AuraA>
</Auras>
<Attack>
<Capture>
<Value>15</Value>
@ -23,6 +12,7 @@
<Pierce>20.0</Pierce>
<Crush>15.0</Crush>
</Armour>
<Auras datatype="tokens">hero_garrison</Auras>
<Cost>
<Population>2</Population>
<BuildTime>40</BuildTime>

View File

@ -1,19 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_support">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>10</Radius>
<Affects>Citizen+Soldier</Affects>
<Modifications>
<Builder.Rate> <Multiply>1.1</Multiply> </Builder.Rate>
<ResourceGatherer.BaseSpeed> <Multiply>1.1</Multiply> </ResourceGatherer.BaseSpeed>
</Modifications>
<AuraName>Inspiration Aura</AuraName>
<AuraDescription>Nearby males work 10% faster.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/buildgather_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Attack>
<Melee>
<Hack>2.0</Hack>
@ -30,6 +16,7 @@
<MaxRange>4.0</MaxRange>
</Slaughter>
</Attack>
<Auras datatype="tokens">female_inspiration</Auras>
<Builder>
<Rate>1.0</Rate>
<Entities datatype="tokens">

View File

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_support">
<Cost>
<Resources>
<food>250</food>
</Resources>
</Cost>
<Heal>
<Range>12</Range>
<HP>5</HP>
@ -7,11 +12,6 @@
<UnhealableClasses datatype="tokens"/>
<HealableClasses datatype="tokens">Human</HealableClasses>
</Heal>
<Cost>
<Resources>
<food>250</food>
</Resources>
</Cost>
<Health>
<Max>85</Max>
</Health>

View File

@ -1,28 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_javelinist">
<Auras>
<Aura1>
<Type>formation</Type>
<Affects>Unit</Affects>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
<Armour.Pierce> <Add>1</Add> </Armour.Pierce>
<Armour.Hack> <Add>1</Add> </Armour.Hack>
<Armour.Crush> <Add>1</Add> </Armour.Crush>
</Modifications>
<AuraName>Formation Reforms</AuraName>
<AuraDescription>All units in his formation +15% speed and +1 armor.</AuraDescription>
</Aura1>
<Aura2>
<Type>global</Type>
<Affects>Javelin</Affects>
<Modifications>
<UnitMotion.WalkSpeed><Multiply>1.15</Multiply></UnitMotion.WalkSpeed>
</Modifications>
<AuraName>Peltast Reforms</AuraName>
<AuraDescription>All Peltasts +15% speed.</AuraDescription>
</Aura2>
</Auras>
<Auras datatype="tokens">athen_hero_iphicrates_1 athen_hero_iphicrates_2</Auras>
<Identity>
<Civ>athen</Civ>
<Lang>greek</Lang>

View File

@ -1,27 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_spearman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Worker</Affects>
<Modifications>
<Builder.Rate> <Multiply>1.15</Multiply> </Builder.Rate>
</Modifications>
<AuraName>Builder Aura</AuraName>
<AuraDescription>Buildings construct 15% faster within his vision.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/build_bonus.png</OverlayIcon>
</Aura1>
<Aura2>
<Type>global</Type>
<Affects>Temple</Affects>
<Modifications>
<Cost.Resources.stone> <Add>-50</Add> </Cost.Resources.stone>
</Modifications>
<AuraName>Acropolis Aura</AuraName>
<AuraDescription>Temples are 50 stone cheaper during his lifetime.</AuraDescription>
</Aura2>
</Auras>
<Auras datatype="tokens">athen_hero_pericles_1 athen_hero_pericles_2</Auras>
<Identity>
<Civ>athen</Civ>
<Lang>greek</Lang>

View File

@ -1,26 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Auras>
<Aura1>
<Type>garrison</Type>
<Affects>Ship</Affects>
<AffectedPlayers>Player MutualAlly</AffectedPlayers>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.5</Multiply> </UnitMotion.WalkSpeed>
</Modifications>
<AuraName>Naval Commander Aura</AuraName>
<AuraDescription>When garrisoned in a ship, his ship is +50% faster.</AuraDescription>
</Aura1>
<Aura2>
<Type>global</Type>
<Affects>Ship</Affects>
<Modifications>
<Cost.BuildTime> <Multiply>0.8</Multiply> </Cost.BuildTime>
</Modifications>
<AuraName>Naval Architect Aura</AuraName>
<AuraDescription>-20% build time for ships during his lifespan.</AuraDescription>
</Aura2>
</Auras>
<Auras datatype="tokens">athen_hero_themistocles_1 athen_hero_themistocles_2</Auras>
<Identity>
<Civ>athen</Civ>
<Lang>greek</Lang>

View File

@ -1,21 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_javelinist">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Champion</Affects>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.25</Multiply> </UnitMotion.WalkSpeed>
<Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
<Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
<Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Champion Army</AuraName>
<AuraDescription>+5 Attack, +2 Capture and +25% Speed for Champion Units.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">brit_hero_boudicca</Auras>
<Footprint replace="">
<Square width="4.5" depth="9.0"/>
<Height>5.0</Height>

View File

@ -1,19 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Champion</Affects>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.25</Multiply> </UnitMotion.WalkSpeed>
<Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
<Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
<Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Champion Army</AuraName>
<AuraDescription>+5 Attack, +2 Capture and +25% Speed for Champion Units.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">brit_hero_boudicca</Auras>
<Identity>
<Civ>brit</Civ>
<Gender>female</Gender>

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Unit</Affects>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
</Modifications>
<AuraName>Hero Aura</AuraName>
<AuraDescription>All Units +15% speed.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">brit_hero_caratacos</Auras>
<Identity>
<Civ>brit</Civ>
<SpecificName>Caratacos</SpecificName>

View File

@ -1,18 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Unit</Affects>
<Modifications>
<Health.RegenRate> <Add>1</Add> </Health.RegenRate>
</Modifications>
<AuraName>Hero Aura</AuraName>
<AuraDescription>+1 HP per second healing rate for all units.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/heal.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">brit_hero_cunobelin</Auras>
<Identity>
<Civ>brit</Civ>
<SpecificName>Cunobelin</SpecificName>

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Unit</Affects>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
</Modifications>
<AuraName>Lightning Aura</AuraName>
<AuraDescription>All Units +15% speed.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">cart_hero_hamilcar</Auras>
<Identity>
<Civ>cart</Civ>
<SpecificName>Ḥimelqart Baraq</SpecificName>

View File

@ -1,21 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_elephant_melee">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Unit</Affects>
<AffectedPlayers>Player Ally</AffectedPlayers>
<Modifications>
<Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
<Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
<Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Tactician Aura</AuraName>
<AuraDescription>All allied units +2 Attack and +1 Capture within his vision range.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">cart_hero_hannibal</Auras>
<Identity>
<Civ>cart</Civ>
<GenericName>Hannibal Barca</GenericName>

View File

@ -1,17 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_spearman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Cavalry</Affects>
<Modifications>
<Attack.Charge.Hack> <Add>5</Add> </Attack.Charge.Hack>
</Modifications>
<AuraName>Commander Aura</AuraName>
<AuraDescription> +5 Cavalry charge attack within vision range of him (currently useless).</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">cart_hero_maharbal</Auras>
<Identity>
<Civ>cart</Civ>
<GenericName>Maharbal</GenericName>

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Unit</Affects>
<Modifications>
<Looter.Resource.metal> <Add>10</Add> </Looter.Resource.metal>
</Modifications>
<AuraName>Hero Aura</AuraName>
<AuraDescription>+10 Metal loot for every enemy unit killed.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">gaul_hero_brennus</Auras>
<Identity>
<Civ>gaul</Civ>
<SpecificName>Brennus</SpecificName>

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_spearman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Worker</Affects>
<Modifications>
<ResourceGatherer.BaseSpeed> <Multiply>1.15</Multiply> </ResourceGatherer.BaseSpeed>
</Modifications>
<AuraName>Hero Aura</AuraName>
<AuraDescription>Gathering rates increased with +15% during his lifetime.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">gaul_hero_britomartus</Auras>
<Identity>
<Civ>gaul</Civ>
<SpecificName>Britomartus</SpecificName>

View File

@ -1,20 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Unit</Affects>
<Modifications>
<Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
<Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
<Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Hero Aura</AuraName>
<AuraDescription>+2 Attack and +1 Capture for all units within his aura.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">gaul_hero_vercingetorix</Auras>
<Identity>
<Civ>gaul</Civ>
<SpecificName>Vercingetorix</SpecificName>

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Structure</Affects>
<Modifications>
<TerritoryInfluence.Radius> <Multiply>1.10</Multiply> </TerritoryInfluence.Radius>
</Modifications>
<AuraName>Imperialism Aura</AuraName>
<AuraDescription>+10% territory effect for all buildings while he lives.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">mace_hero_alexander</Auras>
<Attack>
<Melee>
<Bonuses>

View File

@ -1,19 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Siege</Affects>
<Modifications>
<Attack.Ranged.Crush> <Add>10</Add> </Attack.Ranged.Crush>
<Attack.Melee.Crush> <Add>10</Add> </Attack.Melee.Crush>
<Attack.Ranged.MaxRange> <Multiply>1.15</Multiply> </Attack.Ranged.MaxRange>
</Modifications>
<AuraName>Hero Aura</AuraName>
<AuraDescription>+15% Range and +10 Crush Attack for Siege Engines.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">mace_hero_demetrius</Auras>
<Identity>
<Civ>mace</Civ>
<Lang>greek</Lang>

View File

@ -1,20 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_spearman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Champion</Affects>
<Modifications>
<Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
<Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
<Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Hero Aura</AuraName>
<AuraDescription>+5 Attack and +2 Capture for Champion Units.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">mace_hero_philip</Auras>
<Identity>
<Civ>mace</Civ>
<Lang>greek</Lang>

View File

@ -11,8 +11,7 @@
<Classes datatype="tokens">Ashoka</Classes>
<VisibleClasses datatype="tokens">Chariot</VisibleClasses>
<Icon>units/maur_hero_ashoka.png</Icon>
<Tooltip>Hero Aura: TBD.
Hero Special: "Edicts of Ashoka" - Edict Pillars of Ashoka can be built during Ashoka's lifetime.</Tooltip>
<Tooltip>Hero Special: "Edicts of Ashoka" - Edict Pillars of Ashoka can be built during Ashoka's lifetime.</Tooltip>
<History>TBD.</History>
</Identity>
<VisualActor>

View File

@ -4,7 +4,6 @@
<Civ>maur</Civ>
<GenericName>Chandragupta Maurya</GenericName>
<SpecificName>Chandragupta Maurya</SpecificName>
<Tooltip>Hero Aura: TBD.</Tooltip>
<History>TBD.</History>
<Icon>units/maur_hero_chandragupta.png</Icon>
</Identity>

View File

@ -1,20 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_spearman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Cavalry</Affects>
<Modifications>
<Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
<Attack.Melee.Hack> <Add>2</Add> </Attack.Melee.Hack>
<Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Lead from the Front Aura</AuraName>
<AuraDescription>+2 Attack and +1 Capture for nearby cavalry units.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">pers_hero_cyrus</Auras>
<Identity>
<Civ>pers</Civ>
<GenericName>Cyrus II The Great</GenericName>

View File

@ -1,17 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_archer">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Unit</Affects>
<AffectedPlayers>Player</AffectedPlayers>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.15</Multiply> </UnitMotion.WalkSpeed>
</Modifications>
<AuraName>Leadership Aura</AuraName>
<AuraDescription>+15% Movement Speed of all units.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">pers_hero_darius</Auras>
<Footprint replace="">
<Square width="6.0" depth="12.0"/>
<Height>5.0</Height>

View File

@ -1,19 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_archer">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Worker</Affects>
<Modifications>
<Builder.Rate> <Multiply>1.15</Multiply> </Builder.Rate>
<ResourceGatherer.BaseSpeed> <Multiply>1.15</Multiply> </ResourceGatherer.BaseSpeed>
</Modifications>
<AuraName>Administrator Aura</AuraName>
<AuraDescription> +15% Gather Rate and Build Rate of nearby units.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/buildgather_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">pers_hero_xerxes</Auras>
<Identity>
<Civ>pers</Civ>
<GenericName>Xerxes I</GenericName>

View File

@ -1,19 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_archer">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Worker</Affects>
<Modifications>
<Builder.Rate> <Multiply>1.15</Multiply> </Builder.Rate>
<ResourceGatherer.BaseSpeed> <Multiply>1.15</Multiply> </ResourceGatherer.BaseSpeed>
</Modifications>
<AuraName>Administrator Aura</AuraName>
<AuraDescription> +15% Gather Rate and Build Rate of nearby units.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/buildgather_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">pers_hero_xerxes</Auras>
<Footprint replace="">
<Square width="6.0" depth="12.0"/>
<Height>5.0</Height>

View File

@ -1,19 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_archer">
<Auras>
<unit_attack_speed_20>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Unit</Affects>
<Modifications>
<Attack.Melee.RepeatTime> <Multiply>0.8</Multiply> </Attack.Melee.RepeatTime>
<Attack.Ranged.RepeatTime> <Multiply>0.8</Multiply> </Attack.Ranged.RepeatTime>
</Modifications>
<AuraName>Patriot Aura</AuraName>
<AuraDescription>Egyptian units fight 25% faster in her vision range.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</unit_attack_speed_20>
</Auras>
<Auras datatype="tokens">ptol_hero_cleopatra</Auras>
<Identity>
<Civ>ptol</Civ>
<Gender>female</Gender>

View File

@ -1,30 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_elephant_melee">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>77</Radius>
<Affects>Worker</Affects>
<Modifications>
<Builder.Rate> <Multiply>1.10</Multiply> </Builder.Rate>
</Modifications>
<AuraName>Construction Aura</AuraName>
<AuraDescription>Buildings construct 10% faster within his vision.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/build_bonus.png</OverlayIcon>
</Aura1>
<Aura2>
<Type>global</Type>
<Affects>Mercenary</Affects>
<Modifications>
<Cost.Resources.food> <Multiply>0.5</Multiply> </Cost.Resources.food>
<Cost.Resources.wood> <Multiply>0.5</Multiply> </Cost.Resources.wood>
<Cost.Resources.stone> <Multiply>0.5</Multiply> </Cost.Resources.stone>
<Cost.Resources.metal> <Multiply>0.5</Multiply> </Cost.Resources.metal>
</Modifications>
<AuraName>Mercenary Patron Aura</AuraName>
<AuraDescription>Mercenaries cost -50% resources during his lifetime.</AuraDescription>
</Aura2>
</Auras>
<Auras datatype="tokens">ptol_hero_ptolemy_I_1 ptol_hero_ptolemy_I_2</Auras>
<Identity>
<Civ>ptol</Civ>
<GenericName>Ptolemy I "Savior"</GenericName>

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Pike</Affects>
<Modifications>
<Health.Max> <Multiply>1.40</Multiply> </Health.Max>
</Modifications>
<AuraName>Raphia Aura</AuraName>
<AuraDescription>Egyptian Pikemen have 40% greater health during his lifetime.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">ptol_hero_ptolemy_IV</Auras>
<Identity>
<Civ>ptol</Civ>
<GenericName>Ptolemy IV "Father Loving"</GenericName>

View File

@ -1,20 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Unit</Affects>
<Modifications>
<Attack.Ranged.Pierce> <Add>5</Add> </Attack.Ranged.Pierce>
<Attack.Melee.Hack> <Add>5</Add> </Attack.Melee.Hack>
<Attack.Capture.Value> <Add>2</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Sword of Rome Aura</AuraName>
<AuraDescription>+5 Attack and +2 Capture for Roman units within his vision range.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">rome_hero_marcellus</Auras>
<Identity>
<Civ>rome</Civ>
<Lang>latin</Lang>

View File

@ -1,18 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Unit Structure</Affects>
<Modifications>
<Armour.Pierce> <Add>1</Add> </Armour.Pierce>
<Armour.Hack> <Add>1</Add> </Armour.Hack>
<Armour.Crush> <Add>1</Add> </Armour.Crush>
</Modifications>
<AuraName>Shield of Rome Aura</AuraName>
<AuraDescription>+1 armour for all units and structures.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">rome_hero_maximus</Auras>
<Identity>
<Civ>rome</Civ>
<Lang>latin</Lang>

View File

@ -1,18 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_spearman">
<Auras>
<Aura1>
<Type>global</Type>
<Affects>Cavalry</Affects>
<Modifications>
<Armour.Pierce> <Add>2</Add> </Armour.Pierce>
<Armour.Hack> <Add>2</Add> </Armour.Hack>
<Armour.Crush> <Add>2</Add> </Armour.Crush>
</Modifications>
<AuraName>Ilarchès Aura</AuraName>
<AuraDescription>All cavalry gains +2 levels of all armour types.</AuraDescription>
</Aura1>
</Auras>
<Auras datatype="tokens">sele_hero_antiochus_great</Auras>
<Identity>
<Civ>sele</Civ>
<Lang>greek</Lang>

View File

@ -1,19 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_cavalry_swordsman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>70</Radius>
<AffectedPlayers>Enemy</AffectedPlayers>
<Affects>Structure Mechanical</Affects>
<Modifications>
<Health.Max> <Multiply>0.8</Multiply> </Health.Max>
</Modifications>
<AuraName>Conquest Aura</AuraName>
<AuraDescription>All nearby enemy buildings, siege engines, and ships have their health reduced by 20%.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/health_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">sele_hero_antiochus_righteous</Auras>
<Identity>
<Civ>sele</Civ>
<Lang>greek</Lang>

View File

@ -1,20 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_elephant_melee">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>80</Radius>
<Affects>Elephant</Affects>
<Modifications>
<UnitMotion.WalkSpeed> <Multiply>1.20</Multiply> </UnitMotion.WalkSpeed>
<Attack.Melee.Hack> <Multiply>1.20</Multiply> </Attack.Melee.Hack>
<Attack.Melee.Crush> <Multiply>1.20</Multiply> </Attack.Melee.Crush>
</Modifications>
<AuraName>Zooiarchos Aura</AuraName>
<AuraDescription>Boosts War Elephant attack and speed +20% within his vision.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">sele_hero_seleucus_victor</Auras>
<Identity>
<Civ>sele</Civ>
<Lang>greek</Lang>

View File

@ -8,7 +8,6 @@
<Lang>greek</Lang>
<GenericName>Agis III</GenericName>
<SpecificName>Agis</SpecificName>
<Tooltip>No hero aura. Has 2x health of other infantry heroes. Basically a very tough hoplite.</Tooltip>
<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>
<Icon>units/spart_hero_agis.png</Icon>
</Identity>

View File

@ -1,21 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_swordsman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>60</Radius>
<Affects>Javelin</Affects>
<Modifications>
<Attack.Ranged.Pierce> <Add>2</Add> </Attack.Ranged.Pierce>
<Armour.Pierce> <Add>1</Add> </Armour.Pierce>
<Armour.Hack> <Add>1</Add> </Armour.Hack>
<Armour.Crush> <Add>1</Add> </Armour.Crush>
</Modifications>
<AuraName>Helot Reforms</AuraName>
<AuraDescription>Helot Skirmishers within sight of him gain +2 attack and +1 all armor types.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">spart_hero_brasidas</Auras>
<Identity>
<Civ>spart</Civ>
<Lang>greek</Lang>

View File

@ -1,21 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_hero_infantry_spearman">
<Auras>
<Aura1>
<Type>range</Type>
<Radius>30</Radius>
<Affects>Spear</Affects>
<Modifications>
<Attack.Melee.Hack> <Multiply>1.20</Multiply> </Attack.Melee.Hack>
<Attack.Melee.Pierce> <Multiply>1.20</Multiply> </Attack.Melee.Pierce>
<Attack.Melee.Crush> <Multiply>1.20</Multiply> </Attack.Melee.Crush>
<Attack.Capture.Value> <Add>1</Add> </Attack.Capture.Value>
</Modifications>
<AuraName>Last Stand Aura</AuraName>
<AuraDescription>+20% Attack and +1 Capture for nearby Hoplites and Spartiates.</AuraDescription>
<OverlayIcon>art/textures/ui/session/auras/attack_bonus.png</OverlayIcon>
</Aura1>
</Auras>
<Auras datatype="tokens">spart_hero_leonidas</Auras>
<Identity>
<Civ>spart</Civ>
<Lang>greek</Lang>