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 @@ -23,6 +23,38 @@ }; +/** + * @param {string} type - The type of queue to use. + * @param {string} templateName - The template to queue. + * @param {number} count - The amount of template to queue. Only applicable for type == "unit". + * + * @return {boolean} - Whether the item could be queued. + */ +ProductionQueue.prototype.Item.prototype.Queue = function(type, templateName, count) +{ + if (type == "unit") + { + if (!this.QueueEntity(templateName, count)) + return false; + } + else if (type == "technology") + { + if (!this.QueueTechnology(templateName)) + return false; + } + else + { + warn("Tried to add invalid item of type \"" + type + "\" and template \"" + templateName + "\" to a production queue (entity: " + this.producer + ")."); + return false; + } + return true; +}; + +/** + * @param {string} templateName - The name of the entity to queue. + * @param {number} count - The number of entities that should be produced. + * @return {boolean} - Whether the batch was successfully created. + */ ProductionQueue.prototype.Item.prototype.QueueEntity = function(templateName, count) { const cmpTrainer = Engine.QueryInterface(this.producer, IID_Trainer); @@ -40,16 +72,17 @@ return true; }; +/** + * @param {string} templateName - The name of the technology to queue. + * @return {boolean} - Whether the technology was successfully queued. + */ ProductionQueue.prototype.Item.prototype.QueueTechnology = function(templateName) { const cmpResearcher = Engine.QueryInterface(this.producer, IID_Researcher); if (!cmpResearcher) return false; this.technology = cmpResearcher.QueueTechnology(templateName, this.metadata); - if (this.technology == -1) - return false; - - return true; + return this.technology != -1; }; /** @@ -62,19 +95,11 @@ ProductionQueue.prototype.Item.prototype.Stop = function() { - if (this.entity) - { - const cmpTrainer = Engine.QueryInterface(this.producer, IID_Trainer); - if (cmpTrainer) - cmpTrainer.StopBatch(this.entity); - } + if (this.entity > 0) + Engine.QueryInterface(this.producer, IID_Trainer)?.StopBatch(this.entity); - if (this.technology) - { - const cmpResearcher = Engine.QueryInterface(this.producer, IID_Researcher); - if (cmpResearcher) - cmpResearcher.StopResearching(this.technology); - } + if (this.technology > 0) + Engine.QueryInterface(this.producer, IID_Researcher)?.StopResearching(this.technology); }; /** @@ -309,21 +334,8 @@ const item = new this.Item(); item.Init(this.entity, metadata); - if (type == "unit") - { - if (!item.QueueEntity(templateName, count)) - return false; - } - else if (type == "technology") - { - if (!item.QueueTechnology(templateName)) - return false; - } - else - { - warn("Tried to add invalid item of type \"" + type + "\" and template \"" + templateName + "\" to a production queue"); + if (!item.Queue(type, templateName, count)) return false; - } item.SetID(this.nextID++); if (pushFront) Index: binaries/data/mods/public/simulation/components/Researcher.js =================================================================== --- binaries/data/mods/public/simulation/components/Researcher.js +++ binaries/data/mods/public/simulation/components/Researcher.js @@ -221,8 +221,7 @@ if (!this.template.Technologies) return []; - let string = this.template.Technologies._string; - string = ApplyValueModificationsToEntity("Researcher/Technologies/_string", string, this.entity); + const string = ApplyValueModificationsToEntity("Researcher/Technologies/_string", this.template.Technologies._string, this.entity); if (!string) return []; Index: binaries/data/mods/public/simulation/templates/structures/athen/gymnasium.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/athen/gymnasium.xml +++ binaries/data/mods/public/simulation/templates/structures/athen/gymnasium.xml @@ -33,6 +33,7 @@ + Index: binaries/data/mods/public/simulation/templates/structures/athen/prytaneion.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/athen/prytaneion.xml +++ binaries/data/mods/public/simulation/templates/structures/athen/prytaneion.xml @@ -33,6 +33,7 @@ + long_walls Index: binaries/data/mods/public/simulation/templates/structures/gaul/assembly.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/gaul/assembly.xml +++ binaries/data/mods/public/simulation/templates/structures/gaul/assembly.xml @@ -38,6 +38,7 @@ + Index: binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml +++ binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml @@ -37,6 +37,7 @@ + immortals Index: binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml +++ binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml @@ -83,6 +83,7 @@ + Index: binaries/data/mods/public/simulation/templates/structures/spart/gerousia.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/spart/gerousia.xml +++ binaries/data/mods/public/simulation/templates/structures/spart/gerousia.xml @@ -33,6 +33,7 @@ + Index: binaries/data/mods/public/simulation/templates/structures/spart/syssiton.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/spart/syssiton.xml +++ binaries/data/mods/public/simulation/templates/structures/spart/syssiton.xml @@ -34,6 +34,7 @@ + agoge Index: binaries/data/mods/public/simulation/templates/template_structure.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure.xml +++ binaries/data/mods/public/simulation/templates/template_structure.xml @@ -77,7 +77,6 @@ 0 6 - special/rallypoint @@ -94,15 +93,6 @@ 2.0 - - - 1.0 - 1.0 - 1.0 - 1.0 - - - @@ -161,9 +151,6 @@ 20 neutral enemy - - 1.0 - true false Index: binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml +++ binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml @@ -90,6 +90,7 @@ 20 + phase_town_{civ} Index: binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml +++ binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml @@ -38,6 +38,7 @@ 5 + health_females_01 Index: binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml +++ binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml @@ -39,6 +39,7 @@ + heal_range Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_outpost.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_outpost.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_outpost.xml @@ -37,6 +37,7 @@ + outpost_vision Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml @@ -16,9 +16,7 @@ Palisade gaia/special_palisade.png - - @@ -34,5 +32,4 @@ interface/complete/building/complete_wall.xml - Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_artillery.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_artillery.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_artillery.xml @@ -60,6 +60,7 @@ + tower_health Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_bolt.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_bolt.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_bolt.xml @@ -57,6 +57,7 @@ + tower_health Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml @@ -38,6 +38,7 @@ + tower_watch Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_stone.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_stone.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_stone.xml @@ -37,6 +37,7 @@ + tower_watch Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_wall.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_wall.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_wall.xml @@ -19,11 +19,9 @@ - 4.5 - @@ -35,5 +33,4 @@ 20 65535 - Index: binaries/data/mods/public/simulation/templates/template_structure_economic_farmstead.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_economic_farmstead.xml +++ binaries/data/mods/public/simulation/templates/template_structure_economic_farmstead.xml @@ -34,6 +34,7 @@ 20 + Index: binaries/data/mods/public/simulation/templates/template_structure_economic_market.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_economic_market.xml +++ binaries/data/mods/public/simulation/templates/template_structure_economic_market.xml @@ -39,6 +39,7 @@ + trader_health Index: binaries/data/mods/public/simulation/templates/template_structure_economic_storehouse.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_economic_storehouse.xml +++ binaries/data/mods/public/simulation/templates/template_structure_economic_storehouse.xml @@ -35,6 +35,7 @@ + Index: binaries/data/mods/public/simulation/templates/template_structure_military_arsenal.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_arsenal.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_arsenal.xml @@ -35,6 +35,7 @@ + siege_attack Index: binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml @@ -37,6 +37,7 @@ + barracks_batch_training Index: binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml @@ -41,6 +41,7 @@ true 0.0 + ship Index: binaries/data/mods/public/simulation/templates/template_structure_military_elephant_stable.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_elephant_stable.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_elephant_stable.xml @@ -37,6 +37,7 @@ + interface/complete/building/complete_elephant_stable.xml Index: binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml @@ -27,6 +27,7 @@ + Index: binaries/data/mods/public/simulation/templates/template_structure_military_forge.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_forge.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_forge.xml @@ -33,6 +33,7 @@ + soldier_attack_melee_01 Index: binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml @@ -77,6 +77,7 @@ + attack_soldiers_will Index: binaries/data/mods/public/simulation/templates/template_structure_military_range.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_range.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_range.xml @@ -32,6 +32,7 @@ + interface/complete/building/complete_range.xml Index: binaries/data/mods/public/simulation/templates/template_structure_military_stable.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_stable.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_stable.xml @@ -37,6 +37,7 @@ + stable_batch_training Index: binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml +++ binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml @@ -28,6 +28,7 @@ + gather_animals_stockbreeding Index: binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml +++ binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml @@ -32,9 +32,7 @@ false false - - @@ -60,7 +58,6 @@ 8.0 - 0 Index: binaries/data/mods/public/simulation/templates/template_structure_special_amphitheater.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_special_amphitheater.xml +++ binaries/data/mods/public/simulation/templates/template_structure_special_amphitheater.xml @@ -27,6 +27,7 @@ + Index: binaries/data/mods/public/simulation/templates/template_structure_special_library.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_special_library.xml +++ binaries/data/mods/public/simulation/templates/template_structure_special_library.xml @@ -34,8 +34,6 @@ - - @@ -47,7 +45,6 @@ 50 40000 - 40 Index: binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml +++ binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml @@ -28,9 +28,7 @@ - - food true @@ -49,7 +47,6 @@ 32 40000 - 40 Index: binaries/data/mods/public/simulation/templates/template_structure_special_theater.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_special_theater.xml +++ binaries/data/mods/public/simulation/templates/template_structure_special_theater.xml @@ -35,8 +35,6 @@ - - @@ -48,7 +46,6 @@ 100 40000 - 40 Index: binaries/data/mods/public/simulation/templates/template_structure_wonder.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_wonder.xml +++ binaries/data/mods/public/simulation/templates/template_structure_wonder.xml @@ -50,6 +50,7 @@ + wonder_population_cap