Index: binaries/data/mods/public/simulation/components/BuildRestrictions.js
===================================================================
--- binaries/data/mods/public/simulation/components/BuildRestrictions.js
+++ binaries/data/mods/public/simulation/components/BuildRestrictions.js
@@ -255,6 +255,13 @@
}
}
+ let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
+ if (!cmpTemplateManager)
+ return;
+ let templateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
+ templateName = templateName.substr(templateName.lastIndexOf("|") + 1);
+ let template = cmpTemplateManager.GetTemplate(templateName);
+
// Check distance restriction
if (this.template.Distance)
{
@@ -270,21 +277,22 @@
if (this.template.Distance.MinDistance)
{
- var dist = +this.template.Distance.MinDistance;
- var nearEnts = cmpRangeManager.ExecuteQuery(this.entity, 0, dist, [cmpPlayer.GetPlayerID()], IID_BuildRestrictions).filter(filter);
- if (nearEnts.length)
+
+ let minDist = ApplyValueModificationsToTemplate("BuildRestrictions/Distance/MinDistance", +this.template.Distance.MinDistance, cmpPlayer.GetPlayerID(), template);
+ cmpRangeManager = cmpRangeManager.ExecuteQuery(this.entity, 0, minDist, [cmpPlayer.GetPlayerID()], IID_BuildRestrictions).some(filter);
+ if (cmpRangeManager)
{
- var result = markForPluralTranslation(
+ let result = markForPluralTranslation(
"%(name)s too close to a %(category)s, must be at least %(distance)s meter away",
"%(name)s too close to a %(category)s, must be at least %(distance)s meters away",
- +this.template.Distance.MinDistance);
+ minDist);
result.success = false;
result.translateMessage = true;
result.parameters = {
"name": name,
"category": cat,
- "distance": this.template.Distance.MinDistance
+ "distance": minDist
};
result.translateParameters = ["name", "category"];
return result; // Fail
@@ -292,21 +300,21 @@
}
if (this.template.Distance.MaxDistance)
{
- var dist = +this.template.Distance.MaxDistance;
- var nearEnts = cmpRangeManager.ExecuteQuery(this.entity, 0, dist, [cmpPlayer.GetPlayerID()], IID_BuildRestrictions).filter(filter);
- if (!nearEnts.length)
+ let maxDist = ApplyValueModificationsToTemplate("BuildRestrictions/Distance/MaxDistance", +this.template.Distance.MaxDistance, cmpPlayer.GetPlayerID(), template);
+ cmpRangeManager = cmpRangeManager.ExecuteQuery(this.entity, 0, maxDist, [cmpPlayer.GetPlayerID()], IID_BuildRestrictions).some(filter);
+ if (!cmpRangeManager)
{
- var result = markForPluralTranslation(
+ let result = markForPluralTranslation(
"%(name)s too far from a %(category)s, must be within %(distance)s meter",
"%(name)s too far from a %(category)s, must be within %(distance)s meters",
- +this.template.Distance.MinDistance);
+ maxDist);
result.success = false;
result.translateMessage = true;
result.parameters = {
"name": name,
"category": cat,
- "distance": this.template.Distance.MaxDistance
+ "distance": maxDist
};
result.translateParameters = ["name", "category"];
return result; // Fail
Index: binaries/data/mods/public/simulation/data/auras/mace_hero_alexander_1.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/mace_hero_alexander_1.json
+++ binaries/data/mods/public/simulation/data/auras/mace_hero_alexander_1.json
@@ -0,0 +1,9 @@
+{
+ "type": "global",
+ "affects": ["Structure"],
+ "modifications": [
+ { "value": "TerritoryInfluence/Radius", "multiply": 1.1 }
+ ],
+ "auraName": "Imperialism Aura",
+ "auraDescription": "+10% territory influence for all buildings while he lives."
+}
Index: binaries/data/mods/public/simulation/data/auras/mace_hero_alexander_2.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/mace_hero_alexander_2.json
+++ binaries/data/mods/public/simulation/data/auras/mace_hero_alexander_2.json
@@ -0,0 +1,12 @@
+{
+ "type": "global",
+ "affects": ["Fortress", "CivilCentre"],
+ "modifications": [
+ { "value": "Cost/BuildTime", "multiply": 0.8 },
+ { "value": "Cost/Resources/wood", "multiply": 0.8 },
+ { "value": "Cost/Resources/stone", "multiply": 0.8 },
+ { "value": "Cost/Resources/metal", "multiply": 0.8 },
+ ],
+ "auraName": "Conqueror Aura",
+ "auraDescription": "-25% build time and resources cost for Fortresses and Civic Centers during his lifespan."
+}
Index: binaries/data/mods/public/simulation/templates/units/mace_hero_alexander.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/mace_hero_alexander.xml
+++ binaries/data/mods/public/simulation/templates/units/mace_hero_alexander.xml
@@ -10,7 +10,7 @@
- mace_hero_alexander
+ mace_hero_alexander_1 mace_hero_alexander_2
mace
greek