Index: binaries/data/mods/public/simulation/components/Cost.js =================================================================== --- binaries/data/mods/public/simulation/components/Cost.js +++ binaries/data/mods/public/simulation/components/Cost.js @@ -44,9 +44,7 @@ Cost.prototype.GetBuildTime = function() { - var cmpPlayer = QueryOwnerInterface(this.entity); - var buildTime = (+this.template.BuildTime) * cmpPlayer.cheatTimeMultiplier; - return ApplyValueModificationsToEntity("Cost/BuildTime", buildTime, this.entity); + return ApplyValueModificationsToEntity("Cost/BuildTime", +this.template.BuildTime, this.entity); }; Cost.prototype.GetResourceCosts = function(owner) Index: binaries/data/mods/public/simulation/components/Pack.js =================================================================== --- binaries/data/mods/public/simulation/components/Pack.js +++ binaries/data/mods/public/simulation/components/Pack.js @@ -98,8 +98,7 @@ { let cmpPlayer = QueryOwnerInterface(this.entity, IID_Player); - return ApplyValueModificationsToEntity("Pack/Time", +this.template.Time, this.entity) * - cmpPlayer.GetCheatTimeMultiplier(); + return ApplyValueModificationsToEntity("Pack/Time", +this.template.Time, this.entity); }; Pack.prototype.GetElapsedTime = function() Index: binaries/data/mods/public/simulation/components/Player.js =================================================================== --- binaries/data/mods/public/simulation/components/Player.js +++ binaries/data/mods/public/simulation/components/Player.js @@ -50,7 +50,6 @@ this.gatherRateMultiplier = 1; this.tradeRateMultiplier = 1; this.cheatsEnabled = false; - this.cheatTimeMultiplier = 1; this.panelEntities = []; this.resourceNames = {}; this.disabledTemplates = {}; @@ -795,16 +794,6 @@ return this.cheatsEnabled; }; -Player.prototype.SetCheatTimeMultiplier = function(time) -{ - this.cheatTimeMultiplier = time; -}; - -Player.prototype.GetCheatTimeMultiplier = function() -{ - return this.cheatTimeMultiplier; -}; - Player.prototype.TributeResource = function(player, amounts) { var cmpPlayer = QueryPlayerIDInterface(player); Index: binaries/data/mods/public/simulation/components/ProductionQueue.js =================================================================== --- binaries/data/mods/public/simulation/components/ProductionQueue.js +++ binaries/data/mods/public/simulation/components/ProductionQueue.js @@ -349,7 +349,7 @@ } let techCostMultiplier = this.GetTechCostMultiplier(); - let time = techCostMultiplier.time * template.researchTime * cmpPlayer.GetCheatTimeMultiplier(); + let time = techCostMultiplier.time * template.researchTime; let cost = {}; for (let res in template.cost) @@ -518,7 +518,7 @@ var batchTimeModifier = ApplyValueModificationsToEntity("ProductionQueue/BatchTimeModifier", +this.template.BatchTimeModifier, this.entity); // TODO: work out what equation we should use here. - return Math.pow(batchSize, batchTimeModifier) * cmpPlayer.GetCheatTimeMultiplier(); + return Math.pow(batchSize, batchTimeModifier); }; ProductionQueue.prototype.OnOwnershipChanged = function(msg) Index: binaries/data/mods/public/simulation/components/ResourceGatherer.js =================================================================== --- binaries/data/mods/public/simulation/components/ResourceGatherer.js +++ binaries/data/mods/public/simulation/components/ResourceGatherer.js @@ -248,10 +248,6 @@ if (rate == 0 && type.generic) rate = this.GetGatherRate(type.generic); - let cmpPlayer = QueryOwnerInterface(this.entity, IID_Player); - let cheatMultiplier = cmpPlayer ? cmpPlayer.GetCheatTimeMultiplier() : 1; - rate = rate / cheatMultiplier; - if ("Mirages" in cmpResourceSupply) return rate; Index: binaries/data/mods/public/simulation/components/Upgrade.js =================================================================== --- binaries/data/mods/public/simulation/components/Upgrade.js +++ binaries/data/mods/public/simulation/components/Upgrade.js @@ -275,8 +275,7 @@ return 0; let cmpPlayer = QueryPlayerIDInterface(this.owner, IID_Player); - return ApplyValueModificationsToEntity("Upgrade/Time", +this.template[choice].Time, this.entity) * - cmpPlayer.GetCheatTimeMultiplier(); + return ApplyValueModificationsToEntity("Upgrade/Time", +this.template[choice].Time, this.entity); }; Upgrade.prototype.GetElapsedTime = function() Index: binaries/data/mods/public/simulation/helpers/Cheat.js =================================================================== --- binaries/data/mods/public/simulation/helpers/Cheat.js +++ binaries/data/mods/public/simulation/helpers/Cheat.js @@ -69,7 +69,20 @@ cmpProductionQueue.SpawnUnits(input.templates[i % input.templates.length], 1, null); return; case "fastactions": - cmpPlayer.SetCheatTimeMultiplier((cmpPlayer.GetCheatTimeMultiplier() == 1) ? 0.01 : 1); + let cmpModificationsManager = Engine.QueryInterface(playerEnt, IID_ModificationsManager); + if (!cmpModificationsManager) + return; + if (cmpModificationsManager.HasAnyGlobalModificationWithID("cheat/fastactions")) + cmpModificationsManager.RemoveGlobalModifications("cheat/fastactions") + else + cmpModificationsManager.AddGlobalModifications("cheat/fastactions", 1000, { + "Cost/BuildTime" : {"affects": [["Structure"], ["Unit"]], "multiply": 0.01}, + "ResourceGatherer/BaseSpeed" : {"affects": [["Structure"], ["Unit"]], "multiply": 1000.0}, + "Pack/Time" : {"affects": [["Structure"], ["Unit"]], "multiply": 0.01}, + "Upgrade/Time" : {"affects": [["Structure"], ["Unit"]], "multiply": 0.01}, + "ProductionQueue/TechCostMultiplier/time" : {"affects": [["Structure"], ["Unit"]], "multiply": 0.01} + } + ); return; case "changespeed": cmpPlayer.SetCheatTimeMultiplier(input.parameter);