diff --git a/binaries/data/mods/public/maps/scripts/Conquest.js b/binaries/data/mods/public/maps/scripts/Conquest.js index 4e9533c8f7..9e3b6b15fe 100644 --- a/binaries/data/mods/public/maps/scripts/Conquest.js +++ b/binaries/data/mods/public/maps/scripts/Conquest.js @@ -1,12 +1,5 @@ { let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); cmpTrigger.conquestClassFilter = "ConquestCritical"; - cmpTrigger.conquestDefeatReason = markForTranslation("%(player)s has been defeated (lost all workers and structures)."); - - let data = { "enabled": true }; - cmpTrigger.RegisterTrigger("OnOwnershipChanged", "ConquestHandlerOwnerShipChanged", data); - cmpTrigger.RegisterTrigger("OnStructureBuilt", "ConquestAddStructure", data); - cmpTrigger.RegisterTrigger("OnTrainingFinished", "ConquestTrainingFinished", data); - - cmpTrigger.DoAfterDelay(0, "ConquestStartGameCount", null); + cmpTrigger.conquestDefeatReason = markForTranslation("%(player)s has been defeated (lost all critical units and structures)."); } diff --git a/binaries/data/mods/public/maps/scripts/ConquestCommon.js b/binaries/data/mods/public/maps/scripts/ConquestCommon.js index 8801bea08f..00bc07ac20 100644 --- a/binaries/data/mods/public/maps/scripts/ConquestCommon.js +++ b/binaries/data/mods/public/maps/scripts/ConquestCommon.js @@ -1,4 +1,4 @@ -Trigger.prototype.ConquestHandlerOwnerShipChanged = function(msg) +Trigger.prototype.ConquestOwnershipChanged = function(msg) { if (!this.conquestDataInit || !this.conquestClassFilter) return; @@ -6,25 +6,16 @@ Trigger.prototype.ConquestHandlerOwnerShipChanged = function(msg) if (!TriggerHelper.EntityMatchesClassList(msg.entity, this.conquestClassFilter)) return; - if (msg.from == -1) - return; - - if (msg.to > 0 && this.conquestEntitiesByPlayer[msg.to]) + if (msg.to > 0) this.conquestEntitiesByPlayer[msg.to].push(msg.entity); - if (!this.conquestEntitiesByPlayer[msg.from]) + if (msg.from > 0) { - if (msg.from) - warn("ConquestHandlerOwnerShipChanged: Unknow player " + msg.from); - return; - } + let entities = this.conquestEntitiesByPlayer[msg.from]; + let index = entities.indexOf(msg.entity); + if (index != -1) + entities.splice(index, 1); - let entities = this.conquestEntitiesByPlayer[msg.from]; - let index = entities.indexOf(msg.entity); - - if (index >= 0) - { - entities.splice(index, 1); if (!entities.length) { let cmpPlayer = QueryPlayerIDInterface(msg.from); @@ -34,46 +25,6 @@ Trigger.prototype.ConquestHandlerOwnerShipChanged = function(msg) } }; -Trigger.prototype.ConquestAddStructure = function(msg) -{ - if (!this.conquestClassFilter || !TriggerHelper.EntityMatchesClassList(msg.building, this.conquestClassFilter)) - return; - - let cmpOwnership = Engine.QueryInterface(msg.building, IID_Ownership); - if (!cmpOwnership) - { - warn("ConquestAddStructure: Structure without Owner"); - return; - } - - let player = cmpOwnership.GetOwner(); - if (!this.conquestEntitiesByPlayer[player]) - { - if (player != 0) - warn("ConquestAddStructure: Unknown player " + player); - return; - } - - if (this.conquestEntitiesByPlayer[player].indexOf(msg.building) >= 0) - return; - - this.conquestEntitiesByPlayer[player].push(msg.building); -}; - -Trigger.prototype.ConquestTrainingFinished = function(msg) -{ - if (msg.owner == 0 || !this.conquestClassFilter || !msg.entities.length || !msg.entities.every(elem => TriggerHelper.EntityMatchesClassList(elem, this.conquestClassFilter))) - return; - - let player = msg.owner; - if (!this.conquestEntitiesByPlayer[player]) - { - warn("ConquestTrainingFinished: Unknown player " + player); - return; - } - this.conquestEntitiesByPlayer[player].push(...msg.entities); -}; - Trigger.prototype.ConquestStartGameCount = function() { if (!this.conquestClassFilter) @@ -87,8 +38,7 @@ Trigger.prototype.ConquestStartGameCount = function() let numPlayers = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetNumPlayers(); for (let i = 1; i < numPlayers; ++i) { - let filterEntity = ent => TriggerHelper.EntityMatchesClassList(ent, this.conquestClassFilter) - && !Engine.QueryInterface(ent, IID_Foundation); + let filterEntity = ent => TriggerHelper.EntityMatchesClassList(ent, this.conquestClassFilter); this.conquestEntitiesByPlayer[i] = [...cmpRangeManager.GetEntitiesByPlayer(i).filter(filterEntity)]; } @@ -100,4 +50,6 @@ Trigger.prototype.ConquestStartGameCount = function() cmpTrigger.conquestEntitiesByPlayer = {}; cmpTrigger.conquestDataInit = false; cmpTrigger.conquestClassFilter = ""; + cmpTrigger.RegisterTrigger("OnOwnershipChanged", "ConquestOwnershipChanged", { "enabled": true }); + cmpTrigger.DoAfterDelay(0, "ConquestStartGameCount", null); } diff --git a/binaries/data/mods/public/maps/scripts/ConquestStructures.js b/binaries/data/mods/public/maps/scripts/ConquestStructures.js index a062fbedb2..db0e8a98b2 100644 --- a/binaries/data/mods/public/maps/scripts/ConquestStructures.js +++ b/binaries/data/mods/public/maps/scripts/ConquestStructures.js @@ -2,10 +2,4 @@ let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); cmpTrigger.conquestClassFilter = "Structure"; cmpTrigger.conquestDefeatReason = markForTranslation("%(player)s has been defeated (lost all structures)."); - - let data = { "enabled": true }; - cmpTrigger.RegisterTrigger("OnOwnershipChanged", "ConquestHandlerOwnerShipChanged", data); - cmpTrigger.RegisterTrigger("OnStructureBuilt", "ConquestAddStructure", data); - - cmpTrigger.DoAfterDelay(0, "ConquestStartGameCount", null); } diff --git a/binaries/data/mods/public/maps/scripts/ConquestUnits.js b/binaries/data/mods/public/maps/scripts/ConquestUnits.js index 9ba0331ec8..c9c00c3c6d 100644 --- a/binaries/data/mods/public/maps/scripts/ConquestUnits.js +++ b/binaries/data/mods/public/maps/scripts/ConquestUnits.js @@ -1,11 +1,5 @@ { let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); - cmpTrigger.conquestClassFilter = "Unit"; - cmpTrigger.conquestDefeatReason = markForTranslation("%(player)s has been defeated (lost all workers)."); - - let data = { "enabled": true }; - cmpTrigger.RegisterTrigger("OnOwnershipChanged", "ConquestHandlerOwnerShipChanged", data); - cmpTrigger.RegisterTrigger("OnTrainingFinished", "ConquestTrainingFinished", data); - - cmpTrigger.DoAfterDelay(0, "ConquestStartGameCount", null); + cmpTrigger.conquestClassFilter = "Unit+!Animal"; + cmpTrigger.conquestDefeatReason = markForTranslation("%(player)s has been defeated (lost all units)."); } 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 99b0e875de..9e29160971 100644 --- a/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml +++ b/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml @@ -17,6 +17,7 @@ + true