diff --git a/binaries/data/mods/_test.sim/simulation/templates/special/filter/foundation.xml b/binaries/data/mods/_test.sim/simulation/templates/special/filter/foundation.xml index faa98018a1..4d78bee929 100644 --- a/binaries/data/mods/_test.sim/simulation/templates/special/filter/foundation.xml +++ b/binaries/data/mods/_test.sim/simulation/templates/special/filter/foundation.xml @@ -2,10 +2,7 @@ - - - 0 - + 1 @@ -23,6 +20,10 @@ + + + 0 + diff --git a/binaries/data/mods/public/globalscripts/Templates.js b/binaries/data/mods/public/globalscripts/Templates.js index 7e980a8816..39ca7847f1 100644 --- a/binaries/data/mods/public/globalscripts/Templates.js +++ b/binaries/data/mods/public/globalscripts/Templates.js @@ -304,9 +304,6 @@ function GetTemplateDataHelper(template, player, auraTemplates, modifiers = {}) if (template.Cost.Population) ret.cost.population = getEntityValue("Cost/Population"); - if (template.Cost.PopulationBonus) - ret.cost.populationBonus = getEntityValue("Cost/PopulationBonus"); - if (template.Cost.BuildTime) ret.cost.time = getEntityValue("Cost/BuildTime"); } @@ -407,6 +404,11 @@ function GetTemplateDataHelper(template, player, auraTemplates, modifiers = {}) "time": getEntityValue("Pack/Time"), }; + if (template.Population && template.Population.Bonus) + ret.population = { + "bonus": getEntityValue("Population/Bonus") + }; + if (template.Health) ret.health = Math.round(getEntityValue("Health/Max")); diff --git a/binaries/data/mods/public/gui/common/tooltips.js b/binaries/data/mods/public/gui/common/tooltips.js index d53a7ecf25..6cc6edefaa 100644 --- a/binaries/data/mods/public/gui/common/tooltips.js +++ b/binaries/data/mods/public/gui/common/tooltips.js @@ -24,7 +24,7 @@ var g_AlwaysDisplayFriendlyFire = false; function getCostTypes() { - return g_ResourceData.GetCodes().concat(["population", "populationBonus", "time"]); + return g_ResourceData.GetCodes().concat(["population", "time"]); } function resourceIcon(resource) @@ -663,8 +663,7 @@ function getEntityCostComponentsTooltipString(template, entity, buildingsCountTo let costs = []; for (let type of getCostTypes()) - // Population bonus is shown in the tooltip - if (type != "populationBonus" && totalCosts[type]) + if (totalCosts[type]) costs.push(sprintf(translate("%(component)s %(cost)s"), { "component": resourceIcon(type), "cost": totalCosts[type] @@ -857,13 +856,13 @@ function getRequiredTechnologyTooltip(technologyEnabled, requiredTechnology, civ */ function getPopulationBonusTooltip(template) { - let popBonus = ""; - if (template.cost && template.cost.populationBonus) - popBonus = sprintf(translate("%(label)s %(populationBonus)s"), { - "label": headerFont(translate("Population Bonus:")), - "populationBonus": template.cost.populationBonus - }); - return popBonus; + if (!template.population || !template.population.bonus) + return ""; + + return sprintf(translate("%(label)s %(bonus)s"), { + "label": headerFont(translate("Population Bonus:")), + "bonus": template.population.bonus + }); } /** diff --git a/binaries/data/mods/public/gui/credits/texts/programming.json b/binaries/data/mods/public/gui/credits/texts/programming.json index 8749b28632..e7d3a23939 100644 --- a/binaries/data/mods/public/gui/credits/texts/programming.json +++ b/binaries/data/mods/public/gui/credits/texts/programming.json @@ -144,6 +144,7 @@ { "nick": "Link Mauve", "name": "Emmanuel Gil Peyrot" }, { "nick": "LittleDev" }, { "nick": "livingaftermidnight", "name": "Will Dull" }, + { "nick": "lonehawk", "name": "Vignesh Krishnan" }, { "nick": "Louhike" }, { "nick": "lsdh" }, { "nick": "Ludovic", "name": "Ludovic Rousseau" }, diff --git a/binaries/data/mods/public/gui/session/selection_details.js b/binaries/data/mods/public/gui/session/selection_details.js index 02b6219ca5..cc5146c737 100644 --- a/binaries/data/mods/public/gui/session/selection_details.js +++ b/binaries/data/mods/public/gui/session/selection_details.js @@ -321,6 +321,7 @@ function displaySingle(entState) getGatherTooltip, getSpeedTooltip, getGarrisonTooltip, + getPopulationBonusTooltip, getProjectilesTooltip, getResourceTrickleTooltip, getLootTooltip diff --git a/binaries/data/mods/public/maps/random/fortress.js b/binaries/data/mods/public/maps/random/fortress.js index f3df7bc5f3..7ec3dddc77 100644 --- a/binaries/data/mods/public/maps/random/fortress.js +++ b/binaries/data/mods/public/maps/random/fortress.js @@ -109,7 +109,7 @@ for (let i = 0; i < numPlayers; ++i) // Fortress // To take into account houses that offer a lower population bonus - if (Engine.GetTemplate("structures/" + civ + "/house").Cost.PopulationBonus <= 5) + if (Engine.GetTemplate("structures/" + civ + "/house").Population.Bonus <= 5) { var wall = ["gate", "tower", "long", "cornerIn", "long", "barracks", "tower", "long", "tower", "house", "long", diff --git a/binaries/data/mods/public/simulation/ai/common-api/entity.js b/binaries/data/mods/public/simulation/ai/common-api/entity.js index 6fda9d5e31..cdddae22c4 100644 --- a/binaries/data/mods/public/simulation/ai/common-api/entity.js +++ b/binaries/data/mods/public/simulation/ai/common-api/entity.js @@ -194,7 +194,7 @@ m.Template = m.Class({ "isRepairable": function() { return this.get("Repairable") !== undefined; }, - "getPopulationBonus": function() { return +this.get("Cost/PopulationBonus"); }, + "getPopulationBonus": function() { return +this.get("Population/Bonus"); }, "resistanceStrengths": function() { let resistanceTypes = this.get("Resistance"); diff --git a/binaries/data/mods/public/simulation/ai/petra/researchManager.js b/binaries/data/mods/public/simulation/ai/petra/researchManager.js index 00d8275261..8d8f5eeb3c 100644 --- a/binaries/data/mods/public/simulation/ai/petra/researchManager.js +++ b/binaries/data/mods/public/simulation/ai/petra/researchManager.js @@ -46,7 +46,7 @@ PETRA.ResearchManager.prototype.researchPopulationBonus = function(gameState, qu if (!tech[1]._template.modifications) continue; // TODO may-be loop on all modifs and check if the effect if positive ? - if (tech[1]._template.modifications[0].value !== "Cost/PopulationBonus") + if (tech[1]._template.modifications[0].value !== "Population/Bonus") continue; queues.minorTech.addPlan(new PETRA.ResearchPlan(gameState, tech[0])); break; diff --git a/binaries/data/mods/public/simulation/components/AIInterface.js b/binaries/data/mods/public/simulation/components/AIInterface.js index db3bbd7235..ec0b1950eb 100644 --- a/binaries/data/mods/public/simulation/components/AIInterface.js +++ b/binaries/data/mods/public/simulation/components/AIInterface.js @@ -256,7 +256,7 @@ AIInterface.prototype.OnTemplateModification = function(msg) let newValue = ApplyValueModificationsToTemplate(valName, oldValue, msg.player, template); // Apply the same roundings as in the components if (valName === "Player/MaxPopulation" || valName === "Cost/Population" || - valName === "Cost/PopulationBonus") + valName === "Population/Bonus") newValue = Math.round(newValue); // TODO in some cases, we can have two opposite changes which bring us to the old value, // and we should keep it. But how to distinguish it ? @@ -305,7 +305,7 @@ AIInterface.prototype.OnGlobalValueModification = function(msg) let newValue = ApplyValueModificationsToEntity(valName, oldValue, ent); // Apply the same roundings as in the components if (valName === "Player/MaxPopulation" || valName === "Cost/Population" || - valName === "Cost/PopulationBonus") + valName === "Population/Bonus") newValue = Math.round(newValue); // TODO in some cases, we can have two opposite changes which bring us to the old value, // and we should keep it. But how to distinguish it ? diff --git a/binaries/data/mods/public/simulation/components/Cost.js b/binaries/data/mods/public/simulation/components/Cost.js index 98aef1c3e2..87622943f9 100644 --- a/binaries/data/mods/public/simulation/components/Cost.js +++ b/binaries/data/mods/public/simulation/components/Cost.js @@ -4,7 +4,6 @@ Cost.prototype.Schema = "Specifies the construction/training costs of this entity." + "" + "1" + - "15" + "20.0" + "" + "50" + @@ -16,9 +15,6 @@ Cost.prototype.Schema = "" + "" + "" + - "" + - "" + - "" + "" + "" + "" + @@ -29,7 +25,6 @@ Cost.prototype.Schema = Cost.prototype.Init = function() { this.populationCost = +this.template.Population; - this.populationBonus = +this.template.PopulationBonus; }; Cost.prototype.GetPopCost = function() @@ -37,10 +32,6 @@ Cost.prototype.GetPopCost = function() return this.populationCost; }; -Cost.prototype.GetPopBonus = function() -{ - return this.populationBonus; -}; Cost.prototype.GetBuildTime = function() { @@ -69,28 +60,13 @@ Cost.prototype.GetResourceCosts = function(owner) return costs; }; -Cost.prototype.OnOwnershipChanged = function(msg) -{ - if (msg.from != INVALID_PLAYER) - { - let cmpPlayer = QueryPlayerIDInterface(msg.from); - if (cmpPlayer) - cmpPlayer.AddPopulationBonuses(-this.GetPopBonus()); - } - if (msg.to != INVALID_PLAYER) - { - 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 + // Foundations shouldn't have a pop cost. var cmpFoundation = Engine.QueryInterface(this.entity, IID_Foundation); if (cmpFoundation) return; @@ -100,18 +76,11 @@ Cost.prototype.OnValueModification = function(msg) 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); diff --git a/binaries/data/mods/public/simulation/components/GuiInterface.js b/binaries/data/mods/public/simulation/components/GuiInterface.js index dc0cdd656d..0bc4ada6d3 100644 --- a/binaries/data/mods/public/simulation/components/GuiInterface.js +++ b/binaries/data/mods/public/simulation/components/GuiInterface.js @@ -304,6 +304,12 @@ GuiInterface.prototype.GetEntityState = function(player, ent) "progress": cmpPack.GetProgress() }; + let cmpPopulation = Engine.QueryInterface(ent, IID_Population); + if (cmpPopulation) + ret.population = { + "bonus": cmpPopulation.GetPopBonus() + }; + let cmpUpgrade = Engine.QueryInterface(ent, IID_Upgrade); if (cmpUpgrade) ret.upgrade = { @@ -1190,7 +1196,6 @@ GuiInterface.prototype.SetBuildingPlacementPreview = function(player, cmd) * 'stone': ..., * 'metal': ..., * 'population': ..., - * 'populationBonus': ..., * } * } * @@ -1342,7 +1347,7 @@ GuiInterface.prototype.SetWallPlacementPreview = function(player, cmd) let result = { "pieces": [], - "cost": { "population": 0, "populationBonus": 0, "time": 0 } + "cost": { "population": 0, "time": 0 } }; for (let res of Resources.GetCodes()) result.cost[res] = 0; @@ -1619,7 +1624,7 @@ GuiInterface.prototype.SetWallPlacementPreview = function(player, cmd) // copied over, so we need to fetch it from the template instead). // TODO: We should really use a Cost object or at least some utility functions for this, this is mindless // boilerplate that's probably duplicated in tons of places. - for (let res of Resources.GetCodes().concat(["population", "populationBonus", "time"])) + for (let res of Resources.GetCodes().concat(["population", "time"])) result.cost[res] += tplData.cost[res]; } diff --git a/binaries/data/mods/public/simulation/components/Population.js b/binaries/data/mods/public/simulation/components/Population.js new file mode 100644 index 0000000000..74d0d09a64 --- /dev/null +++ b/binaries/data/mods/public/simulation/components/Population.js @@ -0,0 +1,67 @@ +function Population() {} + +Population.prototype.Schema = + "Specifies the Population cap increase generated by this entity." + + "" + + "15" + + "" + + "" + + "" + + ""; + +Population.prototype.Init = function() +{ + this.bonus = +this.template.Bonus; +}; + +/** + * @return {number} - The population space provided by this entity. + */ +Population.prototype.GetPopBonus = function() +{ + return this.bonus; +}; + +Population.prototype.RecalculateValues = function() +{ + this.bonus = Math.round(ApplyValueModificationsToEntity("Population/Bonus", +this.template.Bonus, this.entity)); +}; + +Population.prototype.OnOwnershipChanged = function(msg) +{ + if (msg.from != INVALID_PLAYER) + { + let cmpPlayer = QueryPlayerIDInterface(msg.from); + if (cmpPlayer) + cmpPlayer.AddPopulationBonuses(-this.bonus); + } + if (msg.to != INVALID_PLAYER) + { + this.RecalculateValues(); + let cmpPlayer = QueryPlayerIDInterface(msg.to); + if (cmpPlayer) + cmpPlayer.AddPopulationBonuses(this.bonus); + } +}; + +Population.prototype.OnValueModification = function(msg) +{ + if (msg.component != "Population") + return; + + // Foundations shouldn't give a pop bonus. + if (Engine.QueryInterface(this.entity, IID_Foundation)) + return; + + let oldPopBonus = this.bonus; + this.RecalculateValues(); + let popDifference = this.bonus - oldPopBonus; + + if (!popDifference) + return; + let cmpPlayer = QueryOwnerInterface(this.entity); + if (cmpPlayer) + cmpPlayer.AddPopulationBonuses(popDifference); +}; + +Engine.RegisterComponentType(IID_Population, "Population", Population); diff --git a/binaries/data/mods/public/simulation/components/interfaces/Population.js b/binaries/data/mods/public/simulation/components/interfaces/Population.js new file mode 100644 index 0000000000..aea2c85e1a --- /dev/null +++ b/binaries/data/mods/public/simulation/components/interfaces/Population.js @@ -0,0 +1 @@ +Engine.RegisterInterface("Population"); diff --git a/binaries/data/mods/public/simulation/components/tests/test_Foundation.js b/binaries/data/mods/public/simulation/components/tests/test_Foundation.js index e3c534095d..cf7c57974b 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_Foundation.js +++ b/binaries/data/mods/public/simulation/components/tests/test_Foundation.js @@ -6,6 +6,7 @@ Engine.LoadComponentScript("interfaces/Cost.js"); Engine.LoadComponentScript("interfaces/Foundation.js"); Engine.LoadComponentScript("interfaces/Health.js"); Engine.LoadComponentScript("interfaces/ModifiersManager.js"); +Engine.LoadComponentScript("interfaces/Population.js"); Engine.LoadComponentScript("interfaces/StatisticsTracker.js"); Engine.LoadComponentScript("interfaces/TerritoryDecay.js"); Engine.LoadComponentScript("interfaces/Trigger.js"); diff --git a/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js b/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js index 6d1e72f181..574097ae93 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js +++ b/binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js @@ -20,6 +20,7 @@ Engine.LoadComponentScript("interfaces/Health.js"); Engine.LoadComponentScript("interfaces/Loot.js"); Engine.LoadComponentScript("interfaces/Market.js"); Engine.LoadComponentScript("interfaces/Pack.js"); +Engine.LoadComponentScript("interfaces/Population.js"); Engine.LoadComponentScript("interfaces/ProductionQueue.js"); Engine.LoadComponentScript("interfaces/Promotion.js"); Engine.LoadComponentScript("interfaces/Repairable.js"); diff --git a/binaries/data/mods/public/simulation/components/tests/test_Population.js b/binaries/data/mods/public/simulation/components/tests/test_Population.js new file mode 100644 index 0000000000..4876cc0055 --- /dev/null +++ b/binaries/data/mods/public/simulation/components/tests/test_Population.js @@ -0,0 +1,111 @@ +Engine.LoadHelperScript("Player.js"); +Engine.LoadComponentScript("interfaces/Foundation.js"); +Engine.LoadComponentScript("interfaces/Player.js"); +Engine.LoadComponentScript("interfaces/Population.js"); +Engine.LoadComponentScript("Population.js"); + +const player = 1; +const entity = 11; +let entPopBonus = 5; + +Engine.RegisterGlobal("ApplyValueModificationsToEntity", + (valueName, currentValue, entity) => currentValue +); + +AddMock(SYSTEM_ENTITY, IID_PlayerManager, { + "GetPlayerByID": () => player +}); + +let cmpPopulation = ConstructComponent(entity, "Population", { + "Bonus": entPopBonus +}); + +// Test ownership change adds bonus. +let cmpPlayer = AddMock(player, IID_Player, { + "AddPopulationBonuses": bonus => TS_ASSERT_EQUALS(bonus, entPopBonus) +}); +let spy = new Spy(cmpPlayer, "AddPopulationBonuses"); +cmpPopulation.OnOwnershipChanged({ "from": INVALID_PLAYER, "to": player }); +TS_ASSERT_EQUALS(spy._called, 1); + +// Test ownership change removes bonus. +cmpPlayer = AddMock(player, IID_Player, { + "AddPopulationBonuses": bonus => TS_ASSERT_EQUALS(bonus, -entPopBonus) +}); +spy = new Spy(cmpPlayer, "AddPopulationBonuses"); +cmpPopulation.OnOwnershipChanged({ "from": player, "to": INVALID_PLAYER }); +TS_ASSERT_EQUALS(spy._called, 1); + + +// Test value modifications. +// Test no change. +Engine.RegisterGlobal("ApplyValueModificationsToEntity", + (valueName, currentValue, entity) => currentValue +); + +cmpPlayer = AddMock(player, IID_Player, { + "AddPopulationBonuses": () => TS_ASSERT(false) +}); +cmpPopulation.OnValueModification({ "component": "bogus" }); +cmpPopulation.OnValueModification({ "component": "Population" }); + +// Test changes. +AddMock(entity, IID_Ownership, { + "GetOwner": () => player +}); +let difference = 3; +Engine.RegisterGlobal("ApplyValueModificationsToEntity", + (valueName, currentValue, entity) => currentValue + difference +); + +cmpPlayer = AddMock(player, IID_Player, { + "AddPopulationBonuses": bonus => TS_ASSERT_EQUALS(bonus, difference) +}); +spy = new Spy(cmpPlayer, "AddPopulationBonuses"); + +// Foundations don't count yet. +AddMock(entity, IID_Foundation, {}); +cmpPopulation.OnValueModification({ "component": "Population" }); +TS_ASSERT_EQUALS(spy._called, 0); +DeleteMock(entity, IID_Foundation); + +cmpPopulation.OnValueModification({ "component": "Population" }); +TS_ASSERT_EQUALS(spy._called, 1); + +// Reset to no bonus. +cmpPlayer = AddMock(player, IID_Player, { + "AddPopulationBonuses": bonus => TS_ASSERT_EQUALS(bonus, -3) +}); +difference = 0 +Engine.RegisterGlobal("ApplyValueModificationsToEntity", + (valueName, currentValue, entity) => currentValue + difference +); +spy = new Spy(cmpPlayer, "AddPopulationBonuses"); +cmpPopulation.OnValueModification({ "component": "Population" }); +TS_ASSERT_EQUALS(spy._called, 1); + +// Test negative change. +difference = -2; +Engine.RegisterGlobal("ApplyValueModificationsToEntity", + (valueName, currentValue, entity) => currentValue + difference +); + +cmpPlayer = AddMock(player, IID_Player, { + "AddPopulationBonuses": bonus => TS_ASSERT_EQUALS(bonus, difference) +}); +spy = new Spy(cmpPlayer, "AddPopulationBonuses"); + +cmpPopulation.OnValueModification({ "component": "Population" }); +TS_ASSERT_EQUALS(spy._called, 1); + +// Test newly created entities also get affected by modifications. +difference = 3; +Engine.RegisterGlobal("ApplyValueModificationsToEntity", + (valueName, currentValue, entity) => currentValue + difference +); +cmpPlayer = AddMock(player, IID_Player, { + "AddPopulationBonuses": bonus => TS_ASSERT_EQUALS(bonus, entPopBonus + difference) +}); +spy = new Spy(cmpPlayer, "AddPopulationBonuses"); +cmpPopulation.OnOwnershipChanged({ "from": INVALID_PLAYER, "to": player }); +TS_ASSERT_EQUALS(spy._called, 1); diff --git a/binaries/data/mods/public/simulation/data/technologies/pop_house_01.json b/binaries/data/mods/public/simulation/data/technologies/pop_house_01.json index ace2c77ce7..92d8090952 100644 --- a/binaries/data/mods/public/simulation/data/technologies/pop_house_01.json +++ b/binaries/data/mods/public/simulation/data/technologies/pop_house_01.json @@ -17,7 +17,7 @@ "researchTime": 40, "tooltip": "Houses +20% population cap bonus.", "modifications": [ - { "value": "Cost/PopulationBonus", "multiply": 1.2 } + { "value": "Population/Bonus", "multiply": 1.2 } ], "affects": ["House"], "soundComplete": "interface/alarm/alarm_upgradearmory.xml" diff --git a/binaries/data/mods/public/simulation/data/technologies/pop_house_02.json b/binaries/data/mods/public/simulation/data/technologies/pop_house_02.json index c6a34cd009..5e473c6f81 100644 --- a/binaries/data/mods/public/simulation/data/technologies/pop_house_02.json +++ b/binaries/data/mods/public/simulation/data/technologies/pop_house_02.json @@ -12,7 +12,7 @@ "researchTime": 40, "tooltip": "Houses +20% population cap bonus.", "modifications": [ - { "value": "Cost/PopulationBonus", "multiply": 1.2 } + { "value": "Population/Bonus", "multiply": 1.2 } ], "affects": ["House"], "soundComplete": "interface/alarm/alarm_upgradearmory.xml" diff --git a/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml b/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml index a3de65f0a8..d3bb75b454 100644 --- a/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml +++ b/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml @@ -3,10 +3,7 @@ - - - 0 - + @@ -25,6 +22,10 @@ + + + 0 + diff --git a/binaries/data/mods/public/simulation/templates/special/spy.xml b/binaries/data/mods/public/simulation/templates/special/spy.xml index 246a9091cf..cbf11352c3 100644 --- a/binaries/data/mods/public/simulation/templates/special/spy.xml +++ b/binaries/data/mods/public/simulation/templates/special/spy.xml @@ -2,7 +2,6 @@ 0 - 0 0 0 diff --git a/binaries/data/mods/public/simulation/templates/structures/brit/barracks.xml b/binaries/data/mods/public/simulation/templates/structures/brit/barracks.xml index 2352add183..e3549031dc 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit/barracks.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit/barracks.xml @@ -1,7 +1,6 @@ - 4 300 0 @@ -22,6 +21,9 @@ 60 0 + + 4 + diff --git a/binaries/data/mods/public/simulation/templates/structures/brit/dock.xml b/binaries/data/mods/public/simulation/templates/structures/brit/dock.xml index dce2fe8344..9d62f2c24d 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit/dock.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit/dock.xml @@ -1,8 +1,5 @@ - - 2 - 8.0 @@ -14,6 +11,9 @@ brit Counos + + 2 + diff --git a/binaries/data/mods/public/simulation/templates/structures/brit/farmstead.xml b/binaries/data/mods/public/simulation/templates/structures/brit/farmstead.xml index bcc4f352c2..0d741ba7a7 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit/farmstead.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit/farmstead.xml @@ -1,8 +1,5 @@ - - 2 - @@ -16,6 +13,9 @@ + + 2 + structures/britons/farmstead.xml structures/fndn_3x3.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/brit/forge.xml b/binaries/data/mods/public/simulation/templates/structures/brit/forge.xml index c2a774ec79..202b0997f0 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit/forge.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit/forge.xml @@ -1,12 +1,12 @@ - - 2 - brit Gobanion + + 2 + structures/britons/blacksmith.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/brit/fortress.xml b/binaries/data/mods/public/simulation/templates/structures/brit/fortress.xml index bbcc25878e..fe5aadab18 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit/fortress.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit/fortress.xml @@ -1,8 +1,5 @@ - - 12 - 18.0 @@ -17,6 +14,9 @@ + + 12 + units/{civ}/champion_infantry diff --git a/binaries/data/mods/public/simulation/templates/structures/brit/market.xml b/binaries/data/mods/public/simulation/templates/structures/brit/market.xml index 24415c4fef..1238704dd6 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit/market.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit/market.xml @@ -1,8 +1,5 @@ - - 5 - 8.0 @@ -17,6 +14,9 @@ + + 5 + structures/britons/market.xml structures/fndn_6x6.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/brit/storehouse.xml b/binaries/data/mods/public/simulation/templates/structures/brit/storehouse.xml index 13d417603d..bb428eb893 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit/storehouse.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit/storehouse.xml @@ -1,8 +1,5 @@ - - 2 - @@ -10,6 +7,9 @@ brit Capanon + + 2 + diff --git a/binaries/data/mods/public/simulation/templates/structures/cart/apartment.xml b/binaries/data/mods/public/simulation/templates/structures/cart/apartment.xml index 02de808291..cead317c73 100644 --- a/binaries/data/mods/public/simulation/templates/structures/cart/apartment.xml +++ b/binaries/data/mods/public/simulation/templates/structures/cart/apartment.xml @@ -1,7 +1,6 @@ - 15 75 225 @@ -19,6 +18,9 @@ 45 + + 15 + structures/carthaginians/apartment.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/cart/super_dock.xml b/binaries/data/mods/public/simulation/templates/structures/cart/super_dock.xml index 03f5bcf471..f9744423bd 100644 --- a/binaries/data/mods/public/simulation/templates/structures/cart/super_dock.xml +++ b/binaries/data/mods/public/simulation/templates/structures/cart/super_dock.xml @@ -13,7 +13,6 @@ 10 - 10 500 300 @@ -52,6 +51,9 @@ + + 10 + true 0.0 diff --git a/binaries/data/mods/public/simulation/templates/structures/celt_hut.xml b/binaries/data/mods/public/simulation/templates/structures/celt_hut.xml index 949487d4bd..21dece2c50 100644 --- a/binaries/data/mods/public/simulation/templates/structures/celt_hut.xml +++ b/binaries/data/mods/public/simulation/templates/structures/celt_hut.xml @@ -1,7 +1,6 @@ - 2 0 50 @@ -23,6 +22,9 @@ + + 2 + 7.0 diff --git a/binaries/data/mods/public/simulation/templates/structures/celt_longhouse.xml b/binaries/data/mods/public/simulation/templates/structures/celt_longhouse.xml index 770451d331..a5594144a0 100644 --- a/binaries/data/mods/public/simulation/templates/structures/celt_longhouse.xml +++ b/binaries/data/mods/public/simulation/templates/structures/celt_longhouse.xml @@ -1,7 +1,6 @@ - 10 300 0 @@ -23,6 +22,9 @@ + + 10 + structures/celts/longhouse.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/barracks.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/barracks.xml index 154eb3db1a..98703384bf 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/barracks.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/barracks.xml @@ -1,7 +1,6 @@ - 4 300 0 @@ -25,6 +24,9 @@ + + 4 + structures/celts/barracks.xml structures/fndn_6x6.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/dock.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/dock.xml index fcd42ac83b..97930d2785 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/dock.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/dock.xml @@ -1,8 +1,5 @@ - - 2 - 8.0 @@ -17,6 +14,9 @@ + + 2 + structures/celts/dock.xml structures/fndn_celt_dock.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/farmstead.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/farmstead.xml index 8bf44d9d84..7389241580 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/farmstead.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/farmstead.xml @@ -1,8 +1,5 @@ - - 2 - @@ -13,6 +10,9 @@ + + 2 + structures/gauls/farmstead.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/forge.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/forge.xml index 00e6ed2520..6668475319 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/forge.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/forge.xml @@ -1,12 +1,12 @@ - - 2 - gaul Gobanion + + 2 + structures/gauls/blacksmith.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/fortress.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/fortress.xml index 29296446d0..aaf1eeae6c 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/fortress.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/fortress.xml @@ -1,12 +1,12 @@ - - 12 - gaul Dunon + + 12 + units/{civ}/champion_infantry diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/market.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/market.xml index fa72c244a8..8ad329f2bd 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/market.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/market.xml @@ -1,8 +1,5 @@ - - 5 - 8.0 @@ -17,6 +14,9 @@ + + 5 + structures/gauls/market.xml structures/fndn_6x6.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/storehouse.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/storehouse.xml index 748ac04005..2c52472648 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/storehouse.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/storehouse.xml @@ -1,8 +1,5 @@ - - 2 - @@ -13,6 +10,9 @@ + + 2 + structures/gauls/storehouse.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/tavern.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/tavern.xml index eae8d395c9..a8d48bb608 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul/tavern.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul/tavern.xml @@ -1,7 +1,6 @@ - 10 200 100 @@ -32,6 +31,9 @@ + + 10 + 0.7 diff --git a/binaries/data/mods/public/simulation/templates/structures/hellenic_propylaea.xml b/binaries/data/mods/public/simulation/templates/structures/hellenic_propylaea.xml index 2942fce3ee..1c42648ade 100644 --- a/binaries/data/mods/public/simulation/templates/structures/hellenic_propylaea.xml +++ b/binaries/data/mods/public/simulation/templates/structures/hellenic_propylaea.xml @@ -1,7 +1,6 @@ - 10 200 0 @@ -29,6 +28,9 @@ + + 10 + false diff --git a/binaries/data/mods/public/simulation/templates/structures/hellenic_stoa.xml b/binaries/data/mods/public/simulation/templates/structures/hellenic_stoa.xml index 87f200ac20..2d8cecd76f 100644 --- a/binaries/data/mods/public/simulation/templates/structures/hellenic_stoa.xml +++ b/binaries/data/mods/public/simulation/templates/structures/hellenic_stoa.xml @@ -4,7 +4,6 @@ Stoa - 10 110 0 @@ -32,6 +31,9 @@ + + 10 + diff --git a/binaries/data/mods/public/simulation/templates/structures/iber/defense_tower.xml b/binaries/data/mods/public/simulation/templates/structures/iber/defense_tower.xml index 856e441042..406000a6a1 100644 --- a/binaries/data/mods/public/simulation/templates/structures/iber/defense_tower.xml +++ b/binaries/data/mods/public/simulation/templates/structures/iber/defense_tower.xml @@ -9,7 +9,6 @@ 2 - 5 200 50 @@ -38,6 +37,9 @@ + + 5 + 17.0 diff --git a/binaries/data/mods/public/simulation/templates/structures/iber/fortress.xml b/binaries/data/mods/public/simulation/templates/structures/iber/fortress.xml index 83e22ce1f4..efc20c0317 100644 --- a/binaries/data/mods/public/simulation/templates/structures/iber/fortress.xml +++ b/binaries/data/mods/public/simulation/templates/structures/iber/fortress.xml @@ -1,7 +1,6 @@ - 15 1.5 1200 @@ -20,6 +19,9 @@ + + 15 + units/{civ}/champion_infantry diff --git a/binaries/data/mods/public/simulation/templates/structures/kush/temple_amun.xml b/binaries/data/mods/public/simulation/templates/structures/kush/temple_amun.xml index bdb59c4517..c8843ade67 100644 --- a/binaries/data/mods/public/simulation/templates/structures/kush/temple_amun.xml +++ b/binaries/data/mods/public/simulation/templates/structures/kush/temple_amun.xml @@ -7,7 +7,6 @@ TempleOfAmun - 10 300 500 @@ -38,6 +37,9 @@ + + 10 + units/{civ}/champion_infantry_amun diff --git a/binaries/data/mods/public/simulation/templates/structures/maur/palace.xml b/binaries/data/mods/public/simulation/templates/structures/maur/palace.xml index 3e3a6cc466..692d6080a3 100644 --- a/binaries/data/mods/public/simulation/templates/structures/maur/palace.xml +++ b/binaries/data/mods/public/simulation/templates/structures/maur/palace.xml @@ -2,7 +2,6 @@ 200 - 10 200 200 @@ -30,6 +29,9 @@ + + 10 + 0.7 diff --git a/binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml b/binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml index 00a36fa035..bacbce1d78 100644 --- a/binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml +++ b/binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml @@ -5,7 +5,6 @@ 300 - 10 300 200 @@ -38,6 +37,9 @@ + + 10 + 0.8 diff --git a/binaries/data/mods/public/simulation/templates/structures/pers/apartment_block.xml b/binaries/data/mods/public/simulation/templates/structures/pers/apartment_block.xml index 04682f6206..ebb9e2810b 100644 --- a/binaries/data/mods/public/simulation/templates/structures/pers/apartment_block.xml +++ b/binaries/data/mods/public/simulation/templates/structures/pers/apartment_block.xml @@ -1,8 +1,5 @@ - - 15 - 10.0 @@ -17,6 +14,9 @@ + + 15 + 25 diff --git a/binaries/data/mods/public/simulation/templates/structures/pers/house_b.xml b/binaries/data/mods/public/simulation/templates/structures/pers/house_b.xml index 7c8842cbe8..4a2c7cf7c5 100644 --- a/binaries/data/mods/public/simulation/templates/structures/pers/house_b.xml +++ b/binaries/data/mods/public/simulation/templates/structures/pers/house_b.xml @@ -1,8 +1,5 @@ - - 10 - 10.0 @@ -17,6 +14,9 @@ + + 10 + props/structures/persians/alt_building_05.xml diff --git a/binaries/data/mods/public/simulation/templates/structures/pers/inn.xml b/binaries/data/mods/public/simulation/templates/structures/pers/inn.xml index a201b9e8f0..c5d1261c03 100644 --- a/binaries/data/mods/public/simulation/templates/structures/pers/inn.xml +++ b/binaries/data/mods/public/simulation/templates/structures/pers/inn.xml @@ -1,8 +1,5 @@ - - 15 - 10.0 @@ -17,6 +14,9 @@ + + 15 + 26 diff --git a/binaries/data/mods/public/simulation/templates/structures/pers/tacara.xml b/binaries/data/mods/public/simulation/templates/structures/pers/tacara.xml index e53f01d8c9..b582031fa8 100644 --- a/binaries/data/mods/public/simulation/templates/structures/pers/tacara.xml +++ b/binaries/data/mods/public/simulation/templates/structures/pers/tacara.xml @@ -2,7 +2,6 @@ 300 - 10 200 400 @@ -34,6 +33,9 @@ + + 10 + diff --git a/binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml b/binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml index bbc3df7908..3b47f2ff8c 100644 --- a/binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml +++ b/binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml @@ -47,7 +47,6 @@ 3.0 - 5 250 500 @@ -82,6 +81,9 @@ + + 5 + 0.7 diff --git a/binaries/data/mods/public/simulation/templates/template_structure.xml b/binaries/data/mods/public/simulation/templates/template_structure.xml index 52ce032669..43a0b8cbff 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure.xml @@ -13,7 +13,6 @@ 0 - 0 10 0 diff --git a/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml b/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml index 207117897d..cb8abda756 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml @@ -52,7 +52,6 @@ 5.0 - 20 500 500 @@ -92,6 +91,9 @@ + + 20 + 0.8 diff --git a/binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml b/binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml index be5d63bc99..ffba489f08 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml @@ -5,7 +5,6 @@ 4.0 - 5 30 75 @@ -40,6 +39,9 @@ + + 5 + units/{civ}/support_female_citizen_house diff --git a/binaries/data/mods/public/simulation/templates/template_structure_civic_house_big.xml b/binaries/data/mods/public/simulation/templates/template_structure_civic_house_big.xml index 85c1702b2b..bd39f9219d 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_civic_house_big.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_civic_house_big.xml @@ -1,7 +1,6 @@ - 10 50 150 @@ -23,6 +22,9 @@ + + 10 + 20 40000 diff --git a/binaries/data/mods/public/simulation/templates/template_structure_civic_stoa.xml b/binaries/data/mods/public/simulation/templates/template_structure_civic_stoa.xml index eaf7d2c7ad..7d3d187587 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_civic_stoa.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_civic_stoa.xml @@ -4,7 +4,6 @@ Stoa - 10 150 100 @@ -42,6 +41,9 @@ + + 10 + 0.7 diff --git a/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml b/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml index d4473f5417..211fe9efcf 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml @@ -4,7 +4,6 @@ structures/temple_heal - 5 200 300 @@ -40,6 +39,9 @@ + + 5 + 0.8 diff --git a/binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml b/binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml index 5263ce8c5f..69dcd60118 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml @@ -6,7 +6,6 @@ Dock - 5 150 200 @@ -38,6 +37,9 @@ + + 5 + true 0.0 diff --git a/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml b/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml index 4fa6c912be..6966626d95 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml @@ -45,7 +45,6 @@ 10.0 - 10 500 1000 @@ -80,6 +79,9 @@ + + 10 + 0.8 diff --git a/binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml b/binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml index 7ebb8bf1ab..44e21a0c1c 100644 --- a/binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml +++ b/binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml @@ -5,7 +5,6 @@ 100 - 2 200 100 @@ -32,6 +31,9 @@ + + 2 + diff --git a/binaries/data/mods/public/simulation/templates/template_unit.xml b/binaries/data/mods/public/simulation/templates/template_unit.xml index 547cb4ae7d..4b7de91c69 100644 --- a/binaries/data/mods/public/simulation/templates/template_unit.xml +++ b/binaries/data/mods/public/simulation/templates/template_unit.xml @@ -3,7 +3,6 @@ 1 - 0 1 0