Index: ps/trunk/binaries/data/mods/public/simulation/components/Cost.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/Cost.js (revision 19603) +++ ps/trunk/binaries/data/mods/public/simulation/components/Cost.js (revision 19604) @@ -1,119 +1,119 @@ function Cost() {} Cost.prototype.Schema = "Specifies the construction/training costs of this entity." + "" + "1" + "15" + "20.0" + "" + "50" + "0" + "0" + "25" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + - Resources.BuildSchema("nonNegativeDecimal") + + Resources.BuildSchema("nonNegativeInteger") + ""; Cost.prototype.Init = function() { this.populationCost = +this.template.Population; this.populationBonus = +this.template.PopulationBonus; }; Cost.prototype.GetPopCost = function() { return this.populationCost; }; Cost.prototype.GetPopBonus = function() { return this.populationBonus; }; Cost.prototype.GetBuildTime = function() { var cmpPlayer = QueryOwnerInterface(this.entity); var buildTime = (+this.template.BuildTime) * cmpPlayer.cheatTimeMultiplier; return ApplyValueModificationsToEntity("Cost/BuildTime", buildTime, this.entity); }; Cost.prototype.GetResourceCosts = function(owner) { if (!owner) { let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership); if (!cmpOwnership) error("GetResourceCosts called without valid ownership"); else owner = cmpOwnership.GetOwner(); } let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); let entityTemplateName = cmpTemplateManager.GetCurrentTemplateName(this.entity); let entityTemplate = cmpTemplateManager.GetTemplate(entityTemplateName); let costs = {}; for (let res in this.template.Resources) costs[res] = ApplyValueModificationsToTemplate("Cost/Resources/"+res, +this.template.Resources[res], owner, entityTemplate); return costs; }; Cost.prototype.OnOwnershipChanged = function(msg) { if (msg.from != -1) { let cmpPlayer = QueryPlayerIDInterface(msg.from); if (cmpPlayer) cmpPlayer.AddPopulationBonuses(-this.GetPopBonus()); } if (msg.to != -1) { let cmpPlayer = QueryPlayerIDInterface(msg.to); if (cmpPlayer) cmpPlayer.AddPopulationBonuses(this.GetPopBonus()); } }; Cost.prototype.OnValueModification = function(msg) { if (msg.component != "Cost") return; // foundations shouldn't give a pop bonus and a pop cost var cmpFoundation = Engine.QueryInterface(this.entity, IID_Foundation); if (cmpFoundation) return; // update the population costs var newPopCost = Math.round(ApplyValueModificationsToEntity("Cost/Population", +this.template.Population, this.entity)); var popCostDifference = newPopCost - this.populationCost; this.populationCost = newPopCost; // update the population bonuses var newPopBonus = Math.round(ApplyValueModificationsToEntity("Cost/PopulationBonus", +this.template.PopulationBonus, this.entity)); var popDifference = newPopBonus - this.populationBonus; this.populationBonus = newPopBonus; var cmpPlayer = QueryOwnerInterface(this.entity); if (!cmpPlayer) return; if (popCostDifference) cmpPlayer.AddPopulation(popCostDifference); if (popDifference) cmpPlayer.AddPopulationBonuses(popDifference); }; Engine.RegisterComponentType(IID_Cost, "Cost", Cost);