diff --git a/binaries/data/mods/public/simulation/components/ProductionQueue.js b/binaries/data/mods/public/simulation/components/ProductionQueue.js index 691672f198..14a0d7ae75 100644 --- a/binaries/data/mods/public/simulation/components/ProductionQueue.js +++ b/binaries/data/mods/public/simulation/components/ProductionQueue.js @@ -67,6 +67,10 @@ ProductionQueue.prototype.Init = function() this.spawnNotified = false; this.alertRaiser = undefined; + + // ATLAS HACK + var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); + cmpTimer.SetTimeout(this.entity, IID_ProductionQueue, "CalculateEntitiesList", 1, {}); }; ProductionQueue.prototype.PutUnderAlert = function(raiser) @@ -92,33 +96,33 @@ ProductionQueue.prototype.CalculateEntitiesList = function() this.entitiesList = []; if (!this.template.Entities) return; - + var string = this.template.Entities._string; if (!string) return; - + // Replace the "{civ}" codes with this entity's civ ID - var cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity); - if (cmpIdentity) - string = string.replace(/\{civ\}/g, cmpIdentity.GetCiv()); - - var entitiesList = string.split(/\s+/); - - // Remove disabled entities - var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player); + var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); + var cmpPlayer = QueryOwnerInterface(this.entity); + if (!cmpPlayer) + return; + + var entitiesList = string.replace(/\{civ\}/g, cmpPlayer.GetCiv()).split(/\s+/); + + // filter out disabled and invalid entities var disabledEntities = cmpPlayer.GetDisabledTemplates(); - - for (var i = entitiesList.length - 1; i >= 0; --i) - if (disabledEntities[entitiesList[i]]) - entitiesList.splice(i, 1); - + entitiesList = entitiesList.filter(function(v) + { + return !disabledEntities[v] && cmpTemplateManager.TemplateExists(v); + }); + // check if some templates need to show their advanced or elite version var upgradeTemplate = function(templateName) { var template = cmpTemplateManager.GetTemplate(templateName); while (template && template.Promotion !== undefined) { - var requiredXp = ApplyValueModificationsToTemplate("Promotion/RequiredXp", +template.Promotion.RequiredXp, playerID, template); + var requiredXp = ApplyValueModificationsToTemplate("Promotion/RequiredXp", +template.Promotion.RequiredXp, cmpPlayer.GetPlayerID(), template); if (requiredXp > 0) break; templateName = template.Promotion.Entity; @@ -127,15 +131,12 @@ ProductionQueue.prototype.CalculateEntitiesList = function() return templateName; }; - var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); - var playerID = cmpPlayer.GetPlayerID(); - for each (var templateName in entitiesList) + for (let templateName of entitiesList) this.entitiesList.push(upgradeTemplate(templateName)); - for each (var item in this.queue) - { + + for (let item of this.queue) if (item.unitTemplate) item.unitTemplate = upgradeTemplate(item.unitTemplate); - } }; /* @@ -154,13 +155,16 @@ ProductionQueue.prototype.GetTechnologiesList = function() if (!cmpTechnologyManager) return []; + var cmpPlayer = QueryOwnerInterface(this.entity); + var cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity); + if (!cmpPlayer || !cmpIdentity || cmpPlayer.GetCiv() != cmpIdentity.GetCiv()) + return []; + var techs = string.split(/\s+/); var techList = []; var superseded = {}; // Stores the tech which supersedes the key - var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player); - if (cmpPlayer) - var disabledTechnologies = cmpPlayer.GetDisabledTechnologies(); + var disabledTechnologies = cmpPlayer.GetDisabledTechnologies(); // Add any top level technologies to an array which corresponds to the displayed icons // Also store what a technology is superceded by in the superceded object {"tech1":"techWhichSupercedesTech1", ...} diff --git a/binaries/data/mods/public/simulation/templates/structures/athen_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/athen_civil_centre.xml index b559511fb2..3955757dc7 100644 --- a/binaries/data/mods/public/simulation/templates/structures/athen_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/athen_civil_centre.xml @@ -10,9 +10,9 @@ - units/athen_infantry_spearman_b - units/athen_infantry_slinger_b - units/athen_cavalry_javelinist_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_slinger_b + units/{civ}_cavalry_javelinist_b -phase_town_generic diff --git a/binaries/data/mods/public/simulation/templates/structures/brit_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/brit_civil_centre.xml index 31619d4c5e..75d5374705 100644 --- a/binaries/data/mods/public/simulation/templates/structures/brit_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/brit_civil_centre.xml @@ -17,9 +17,9 @@ - units/brit_infantry_spearman_b - units/brit_infantry_slinger_b - units/brit_cavalry_javelinist_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_slinger_b + units/{civ}_cavalry_javelinist_b diff --git a/binaries/data/mods/public/simulation/templates/structures/cart_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/cart_civil_centre.xml index b281e22840..730e4b4ab9 100644 --- a/binaries/data/mods/public/simulation/templates/structures/cart_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/cart_civil_centre.xml @@ -10,9 +10,9 @@ - units/cart_infantry_spearman_b - units/cart_infantry_archer_b - units/cart_cavalry_javelinist_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_archer_b + units/{civ}_cavalry_javelinist_b carthaginians/special_colonisation diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/gaul_civil_centre.xml index 2b9abe2a08..faa097e908 100644 --- a/binaries/data/mods/public/simulation/templates/structures/gaul_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/gaul_civil_centre.xml @@ -17,9 +17,9 @@ - units/gaul_infantry_spearman_b - units/gaul_infantry_javelinist_b - units/gaul_cavalry_javelinist_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_javelinist_b + units/{civ}_cavalry_javelinist_b diff --git a/binaries/data/mods/public/simulation/templates/structures/iber_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/iber_civil_centre.xml index d298398d1a..d26521c2b9 100644 --- a/binaries/data/mods/public/simulation/templates/structures/iber_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/iber_civil_centre.xml @@ -10,9 +10,9 @@ - units/iber_infantry_swordsman_b - units/iber_infantry_javelinist_b - units/iber_cavalry_javelinist_b + units/{civ}_infantry_swordsman_b + units/{civ}_infantry_javelinist_b + units/{civ}_cavalry_javelinist_b diff --git a/binaries/data/mods/public/simulation/templates/structures/mace_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/mace_civil_centre.xml index fb2150e18d..dd6b1ccc95 100644 --- a/binaries/data/mods/public/simulation/templates/structures/mace_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/mace_civil_centre.xml @@ -10,9 +10,9 @@ - units/mace_infantry_spearman_b - units/mace_infantry_javelinist_b - units/mace_cavalry_spearman_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_javelinist_b + units/{civ}_cavalry_spearman_b diff --git a/binaries/data/mods/public/simulation/templates/structures/maur_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/maur_civil_centre.xml index f1caa8be91..516121e2b0 100644 --- a/binaries/data/mods/public/simulation/templates/structures/maur_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/maur_civil_centre.xml @@ -17,10 +17,10 @@ - units/maur_infantry_spearman_b - units/maur_infantry_archer_b - units/maur_cavalry_javelinist_b - units/maur_support_elephant + units/{civ}_infantry_spearman_b + units/{civ}_infantry_archer_b + units/{civ}_cavalry_javelinist_b + units/{civ}_support_elephant diff --git a/binaries/data/mods/public/simulation/templates/structures/pers_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/pers_civil_centre.xml index 34ae8fce86..cb7d441e04 100644 --- a/binaries/data/mods/public/simulation/templates/structures/pers_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/pers_civil_centre.xml @@ -11,9 +11,9 @@ - units/pers_infantry_spearman_b - units/pers_infantry_archer_b - units/pers_cavalry_javelinist_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_archer_b + units/{civ}_cavalry_javelinist_b persians/persian_architecture diff --git a/binaries/data/mods/public/simulation/templates/structures/ptol_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/ptol_civil_centre.xml index 6b8ae56a48..2955a342e0 100644 --- a/binaries/data/mods/public/simulation/templates/structures/ptol_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/ptol_civil_centre.xml @@ -17,9 +17,9 @@ - units/ptol_infantry_spearman_b - units/ptol_infantry_archer_b - units/ptol_cavalry_archer_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_archer_b + units/{civ}_cavalry_archer_b diff --git a/binaries/data/mods/public/simulation/templates/structures/rome_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/rome_civil_centre.xml index b74ba26707..5e67522add 100644 --- a/binaries/data/mods/public/simulation/templates/structures/rome_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/rome_civil_centre.xml @@ -17,9 +17,9 @@ - units/rome_infantry_swordsman_b - units/rome_infantry_javelinist_b - units/rome_cavalry_spearman_b + units/{civ}_infantry_swordsman_b + units/{civ}_infantry_javelinist_b + units/{civ}_cavalry_spearman_b diff --git a/binaries/data/mods/public/simulation/templates/structures/sele_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/sele_civil_centre.xml index 8e090749b3..63bb725bce 100644 --- a/binaries/data/mods/public/simulation/templates/structures/sele_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/sele_civil_centre.xml @@ -10,12 +10,12 @@ - units/sele_infantry_spearman_2_b - units/sele_infantry_javelinist_b - units/sele_cavalry_javelinist - units/sele_hero_seleucus_victor - units/sele_hero_antiochus_great - units/sele_hero_antiochus_righteous + units/{civ}_infantry_spearman_2_b + units/{civ}_infantry_javelinist_b + units/{civ}_cavalry_javelinist + units/{civ}_hero_seleucus_victor + units/{civ}_hero_antiochus_great + units/{civ}_hero_antiochus_righteous diff --git a/binaries/data/mods/public/simulation/templates/structures/spart_civil_centre.xml b/binaries/data/mods/public/simulation/templates/structures/spart_civil_centre.xml index cd22f7e79b..11bd91abdf 100644 --- a/binaries/data/mods/public/simulation/templates/structures/spart_civil_centre.xml +++ b/binaries/data/mods/public/simulation/templates/structures/spart_civil_centre.xml @@ -10,9 +10,9 @@ - units/spart_infantry_spearman_b - units/spart_infantry_javelinist_b - units/spart_cavalry_javelinist_b + units/{civ}_infantry_spearman_b + units/{civ}_infantry_javelinist_b + units/{civ}_cavalry_javelinist_b diff --git a/binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_a.xml b/binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_a.xml similarity index 83% rename from binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_a.xml rename to binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_a.xml index 01785227db..501a8c8f3f 100644 --- a/binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_a.xml +++ b/binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_a.xml @@ -1,5 +1,5 @@ - + 2 2 @@ -18,7 +18,7 @@ Advanced - units/athen_infantry_archer_e + units/athen_infantry_marine_archer_e 0.75 diff --git a/binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_b.xml b/binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_b.xml similarity index 95% rename from binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_b.xml rename to binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_b.xml index c1a3e535c2..bc1164aefc 100644 --- a/binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_b.xml +++ b/binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_b.xml @@ -25,7 +25,7 @@ hellenes/special_iphicratean_reforms - units/athen_infantry_archer_a + units/athen_infantry_marine_archer_a units/macedonians/infantry_archer_b.xml diff --git a/binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_e.xml b/binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_e.xml similarity index 92% rename from binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_e.xml rename to binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_e.xml index eb70989380..78b432497b 100644 --- a/binaries/data/mods/public/simulation/templates/units/athen_infantry_archer_e.xml +++ b/binaries/data/mods/public/simulation/templates/units/athen_infantry_marine_archer_e.xml @@ -1,5 +1,5 @@ - + 3 3 diff --git a/binaries/data/mods/public/simulation/templates/units/athen_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/units/athen_ship_trireme.xml index 4494d1b864..e1e30aea7d 100644 --- a/binaries/data/mods/public/simulation/templates/units/athen_ship_trireme.xml +++ b/binaries/data/mods/public/simulation/templates/units/athen_ship_trireme.xml @@ -11,7 +11,7 @@ 0.7 units/athen_champion_marine - units/athen_infantry_archer_b + units/athen_infantry_marine_archer_b