Index: binaries/data/mods/public/maps/random/survivalofthefittest.js
===================================================================
--- binaries/data/mods/public/maps/random/survivalofthefittest.js
+++ binaries/data/mods/public/maps/random/survivalofthefittest.js
@@ -188,7 +188,7 @@
var femaleLocation = getTIPIADBON([ix, iz], [mapSize / 2, mapSize / 2], [-3 , 3.5], 1, 3);
if (femaleLocation !== undefined)
{
- placeObject(femaleLocation[0], femaleLocation[1], "skirmish/units/default_support_female_citizen", id, playerAngle[i] + PI);
+ placeObject(femaleLocation[0], femaleLocation[1], "indestructable|skirmish/units/default_support_female_citizen", id, playerAngle[i] + PI);
addToClass(floor(femaleLocation[0]), floor(femaleLocation[1]), clWomen);
}
}
Index: binaries/data/mods/public/maps/random/survivalofthefittest_triggers.js
===================================================================
--- binaries/data/mods/public/maps/random/survivalofthefittest_triggers.js
+++ binaries/data/mods/public/maps/random/survivalofthefittest_triggers.js
@@ -168,18 +168,8 @@
let playerEntities = cmpRangeManager.GetEntitiesByPlayer(i); // Get all of each player's entities
for (let entity of playerEntities)
- {
if (TriggerHelper.EntityHasClass(entity, "CivilCentre"))
this.playerCivicCenter[i] = entity;
- else if (TriggerHelper.EntityHasClass(entity, "Female"))
- {
- let cmpDamageReceiver = Engine.QueryInterface(entity, IID_DamageReceiver);
- cmpDamageReceiver.SetInvulnerability(true);
-
- let cmpHealth = Engine.QueryInterface(entity, IID_Health);
- cmpHealth.SetUndeletable(true);
- }
- }
}
this.PlaceTreasures();
Index: binaries/data/mods/public/simulation/components/Armour.js
===================================================================
--- binaries/data/mods/public/simulation/components/Armour.js
+++ binaries/data/mods/public/simulation/components/Armour.js
@@ -17,6 +17,11 @@
"" +
"" +
"" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
"" +
"" +
"" +
@@ -34,7 +39,7 @@
Armour.prototype.Init = function()
{
- this.invulnerable = false;
+ this.invulnerable = this.template.Invincibility && this.template.Invincibility == "true";
};
Armour.prototype.SetInvulnerability = function(invulnerability)
Index: binaries/data/mods/public/simulation/components/SkirmishReplacer.js
===================================================================
--- binaries/data/mods/public/simulation/components/SkirmishReplacer.js
+++ binaries/data/mods/public/simulation/components/SkirmishReplacer.js
@@ -40,6 +40,15 @@
var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
var templateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
+ let specialFilter = "";
+ let specialFilterPos = templateName.lastIndexOf("|");
+
+ if (specialFilterPos != -1)
+ {
+ specialFilter = templateName.substr(0, specialFilterPos + 1);
+ templateName = templateName.substr(specialFilterPos);
+ }
+
if (templateName in replacementEntities)
templateName = replacementEntities[templateName];
else if (this.template && "general" in this.template)
@@ -53,7 +62,7 @@
return;
}
- templateName = templateName.replace(/\{civ\}/g, civ);
+ templateName = specialFilter + templateName.replace(/\{civ\}/g, civ);
var cmpCurPosition = Engine.QueryInterface(this.entity, IID_Position);
var replacement = Engine.AddEntity(templateName);
Index: binaries/data/mods/public/simulation/components/UnitAI.js
===================================================================
--- binaries/data/mods/public/simulation/components/UnitAI.js
+++ binaries/data/mods/public/simulation/components/UnitAI.js
@@ -3096,7 +3096,9 @@
"leave": function() {
this.StopTimer();
var cmpDamageReceiver = Engine.QueryInterface(this.entity, IID_DamageReceiver);
- cmpDamageReceiver.SetInvulnerability(false);
+ var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
+ var template = cmpTemplateManager.GetTemplate(cmpTemplateManager.GetCurrentTemplateName(this.entity));
+ cmpDamageReceiver.SetInvulnerability(template.Armour.Invincibility && template.Armour.Invincibility == "true");
},
"Timer": function(msg) {
Index: binaries/data/mods/public/simulation/templates/special_filter/indestructable.xml
===================================================================
--- /dev/null
+++ binaries/data/mods/public/simulation/templates/special_filter/indestructable.xml
@@ -0,0 +1,10 @@
+
+
+
+ true
+
+
+ true
+
+
+