Index: ps/trunk/binaries/data/mods/public/simulation/components/Foundation.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/Foundation.js +++ ps/trunk/binaries/data/mods/public/simulation/components/Foundation.js @@ -1,7 +1,9 @@ function Foundation() {} Foundation.prototype.Schema = - ""; + "" + + "" + + ""; Foundation.prototype.Init = function() { @@ -15,7 +17,8 @@ this.builders = new Map(); // Map of builder entities to their work per second this.totalBuilderRate = 0; // Total amount of work the builders do each second this.buildMultiplier = 1; // Multiplier for the amount of work builders do - this.buildTimePenalty = 0.7; // Penalty for having multiple builders + + this.buildTimeModifier = +this.template.BuildTimeModifier; this.previewEntity = INVALID_ENTITY; }; @@ -220,7 +223,7 @@ Foundation.prototype.CalculateBuildMultiplier = function(num) { // Avoid division by zero, in particular 0/0 = NaN which isn't reliably serialized - return num < 2 ? 1 : Math.pow(num, this.buildTimePenalty) / num; + return num < 2 ? 1 : Math.pow(num, this.buildTimeModifier) / num; }; Foundation.prototype.SetBuildMultiplier = function() Index: ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Foundation.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Foundation.js +++ ps/trunk/binaries/data/mods/public/simulation/components/tests/test_Foundation.js @@ -139,7 +139,9 @@ TS_ASSERT_EQUALS(template, "construction|" + finalTemplate); return previewEnt; }; - cmpFoundation = ConstructComponent(foundationEnt, "Foundation", {}); + cmpFoundation = ConstructComponent(foundationEnt, "Foundation", { + "BuildTimeModifier": "0.7" + }); cmpFoundation.InitialiseConstruction(finalTemplate); TS_ASSERT_EQUALS(cmpFoundation.finalTemplateName, finalTemplate); @@ -149,8 +151,8 @@ // BUILDER COUNT, BUILD RATE, TIME REMAINING AddMock(10, IID_Builder, { "GetRate": () => 1.0 }); AddMock(11, IID_Builder, { "GetRate": () => 1.0 }); - let twoBuilderMultiplier = Math.pow(2, cmpFoundation.buildTimePenalty) / 2; - let threeBuilderMultiplier = Math.pow(3, cmpFoundation.buildTimePenalty) / 3; + let twoBuilderMultiplier = Math.pow(2, cmpFoundation.buildTimeModifier) / 2; + let threeBuilderMultiplier = Math.pow(3, cmpFoundation.buildTimeModifier) / 3; TS_ASSERT_EQUALS(cmpFoundation.CalculateBuildMultiplier(1), 1); TS_ASSERT_EQUALS(cmpFoundation.CalculateBuildMultiplier(2), twoBuilderMultiplier); Index: ps/trunk/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml @@ -8,7 +8,9 @@ - + + 0.7 + 1