Index: binaries/data/mods/public/gui/common/tooltips.js =================================================================== --- binaries/data/mods/public/gui/common/tooltips.js +++ binaries/data/mods/public/gui/common/tooltips.js @@ -587,16 +587,16 @@ /** * Returns the cost information to display in the specified entity's construction button tooltip. */ -function getEntityCostTooltip(template, entity, buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch) +function getEntityCostTooltip(template, entity, buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch, player) { // Entities with a wallset component are proxies for initiating wall placement and as such do not have a cost of // their own; the individual wall pieces within it do. if (template.wallSet) { - let templateLong = GetTemplateData(template.wallSet.templates.long); - let templateMedium = GetTemplateData(template.wallSet.templates.medium); - let templateShort = GetTemplateData(template.wallSet.templates.short); - let templateTower = GetTemplateData(template.wallSet.templates.tower); + let templateLong = GetTemplateData(template.wallSet.templates.long, player); + let templateMedium = GetTemplateData(template.wallSet.templates.medium, player); + let templateShort = GetTemplateData(template.wallSet.templates.short, player); + let templateTower = GetTemplateData(template.wallSet.templates.tower, player); let wallCosts = getWallPieceTooltip([templateShort, templateMedium, templateLong]); let towerCosts = getEntityCostComponentsTooltipString(templateTower); Index: binaries/data/mods/public/gui/session/selection_panels.js =================================================================== --- binaries/data/mods/public/gui/session/selection_panels.js +++ binaries/data/mods/public/gui/session/selection_panels.js @@ -932,7 +932,7 @@ }, "setupButton": function(data) { - let template = GetTemplateData(data.item); + let template = GetTemplateData(data.item, data.player); if (!template) return false; @@ -971,9 +971,8 @@ getVisibleEntityClassesFormatted(template), getAurasTooltip(template), getEntityTooltip(template), - getEntityCostTooltip(template, unitIds[0], buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch) + getEntityCostTooltip(template, unitIds[0], buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch, data.player) ]; - let limits = getEntityLimitAndCount(data.playerState, data.item); tooltips.push(formatLimitString(limits.entLimit, limits.entCount, limits.entLimitChangers)); Index: binaries/data/mods/public/gui/session/session.js =================================================================== --- binaries/data/mods/public/gui/session/session.js +++ binaries/data/mods/public/gui/session/session.js @@ -218,15 +218,14 @@ return g_EntityStates[entId]; } -function GetTemplateData(templateName) +function GetTemplateData(templateName, templatePlayer = undefined) { if (!(templateName in g_TemplateData)) { - let template = Engine.GuiInterfaceCall("GetTemplateData", templateName); + let template = Engine.GuiInterfaceCall("GetTemplateData", {"templateName": templateName, "templatePlayer": templatePlayer}); translateObjectKeys(template, ["specific", "generic", "tooltip"]); g_TemplateData[templateName] = deepfreeze(template); } - return g_TemplateData[templateName]; } Index: binaries/data/mods/public/simulation/components/GuiInterface.js =================================================================== --- binaries/data/mods/public/simulation/components/GuiInterface.js +++ binaries/data/mods/public/simulation/components/GuiInterface.js @@ -536,8 +536,11 @@ return cmpRangeManager.GetElevationAdaptedRange(pos, rot, range, elevationBonus, 2*Math.PI); }; -GuiInterface.prototype.GetTemplateData = function(player, templateName) +GuiInterface.prototype.GetTemplateData = function(player, data) { + let templateName = data.templateName; + let templatePlayer = data.templatePlayer; + let pl = !!templatePlayer ? templatePlayer : player; let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); let template = cmpTemplateManager.GetTemplate(templateName); @@ -547,14 +550,14 @@ let aurasTemplate = {}; if (!template.Auras) - return GetTemplateDataHelper(template, player, aurasTemplate, Resources, DamageTypes); + return GetTemplateDataHelper(template, pl, aurasTemplate, Resources, DamageTypes); let auraNames = template.Auras._string.split(/\s+/); for (let name of auraNames) aurasTemplate[name] = AuraTemplates.Get(name); - return GetTemplateDataHelper(template, player, aurasTemplate, Resources, DamageTypes); + return GetTemplateDataHelper(template, pl, aurasTemplate, Resources, DamageTypes); }; GuiInterface.prototype.IsTechnologyResearched = function(player, data)