Index: ps/trunk/binaries/data/mods/public/maps/scripts/Conquest.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/scripts/Conquest.js (revision 20470) +++ ps/trunk/binaries/data/mods/public/maps/scripts/Conquest.js (revision 20471) @@ -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)."); } Index: ps/trunk/binaries/data/mods/public/maps/scripts/ConquestCommon.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/scripts/ConquestCommon.js (revision 20470) +++ ps/trunk/binaries/data/mods/public/maps/scripts/ConquestCommon.js (revision 20471) @@ -1,103 +1,55 @@ -Trigger.prototype.ConquestHandlerOwnerShipChanged = function(msg) +Trigger.prototype.ConquestOwnershipChanged = function(msg) { if (!this.conquestDataInit || !this.conquestClassFilter) return; 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); if (cmpPlayer) cmpPlayer.SetState("defeated", this.conquestDefeatReason); } } }; -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) { warn("ConquestStartGameCount: conquestClassFilter undefined"); return; } let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); 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)]; } this.conquestDataInit = true; }; { let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger); cmpTrigger.conquestEntitiesByPlayer = {}; cmpTrigger.conquestDataInit = false; cmpTrigger.conquestClassFilter = ""; + cmpTrigger.RegisterTrigger("OnOwnershipChanged", "ConquestOwnershipChanged", { "enabled": true }); + cmpTrigger.DoAfterDelay(0, "ConquestStartGameCount", null); } Index: ps/trunk/binaries/data/mods/public/maps/scripts/ConquestStructures.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/scripts/ConquestStructures.js (revision 20470) +++ ps/trunk/binaries/data/mods/public/maps/scripts/ConquestStructures.js (revision 20471) @@ -1,11 +1,5 @@ { 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); } Index: ps/trunk/binaries/data/mods/public/maps/scripts/ConquestUnits.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/scripts/ConquestUnits.js (revision 20470) +++ ps/trunk/binaries/data/mods/public/maps/scripts/ConquestUnits.js (revision 20471) @@ -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)."); } 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 (revision 20470) +++ ps/trunk/binaries/data/mods/public/simulation/templates/special/filter/foundation.xml (revision 20471) @@ -1,44 +1,45 @@ 0 1 + true true 0 false