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