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