Index: binaries/data/mods/public/gui/credits/texts/programming.json =================================================================== --- binaries/data/mods/public/gui/credits/texts/programming.json +++ binaries/data/mods/public/gui/credits/texts/programming.json @@ -85,6 +85,7 @@ {"nick": "godlikeldh"}, {"nick": "greybeard", "name": "Joe Cocovich"}, {"nick": "grillaz"}, + {"nick": "Grugnas", "name": "Giuseppe Tranchese"}, {"nick": "gudo"}, {"nick": "Guuts", "name": "Matthew Guttag"}, {"name": "Samuel Guarnieri"}, 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,11 @@ } } + let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); + let templateName = cmpTemplateManager.GetCurrentTemplateName(this.entity); + templateName = templateName.substr(templateName.lastIndexOf("|") + 1); + let template = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager).GetTemplate(templateName); + // Check distance restriction if (this.template.Distance) { @@ -270,21 +275,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 dist = ApplyValueModificationsToTemplate("BuildRestrictions/Distance/MinDistance", +this.template.Distance.MinDistance, cmpPlayer.GetPlayerID(), template); + var nearEnts = cmpRangeManager.ExecuteQuery(this.entity, 0, dist, [cmpPlayer.GetPlayerID()], IID_BuildRestrictions).some(filter); + if (nearEnts) { var 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); + dist); result.success = false; result.translateMessage = true; result.parameters = { "name": name, "category": cat, - "distance": this.template.Distance.MinDistance + "distance": dist }; result.translateParameters = ["name", "category"]; return result; // Fail @@ -292,21 +298,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 dist = ApplyValueModificationsToTemplate("BuildRestrictions/Distance/MaxDistance", +this.template.Distance.MaxDistance, cmpPlayer.GetPlayerID(), template); + var nearEnts = cmpRangeManager.ExecuteQuery(this.entity, 0, dist, [cmpPlayer.GetPlayerID()], IID_BuildRestrictions).some(filter); + if (!nearEnts) { var 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); + dist); result.success = false; result.translateMessage = true; result.parameters = { "name": name, "category": cat, - "distance": this.template.Distance.MaxDistance + "distance": dist }; result.translateParameters = ["name", "category"]; return result; // Fail