diff --git a/binaries/data/mods/public/simulation/components/GarrisonHolder.js b/binaries/data/mods/public/simulation/components/GarrisonHolder.js
index 78535a31a7..c1743f4b94 100644
--- a/binaries/data/mods/public/simulation/components/GarrisonHolder.js
+++ b/binaries/data/mods/public/simulation/components/GarrisonHolder.js
@@ -12,7 +12,10 @@ GarrisonHolder.prototype.Schema =
"" +
"" +
"" +
- "" +
+ "" +
+ "" +
+ "" +
+ "" +
"" +
"" +
"" +
@@ -74,6 +77,13 @@ GarrisonHolder.prototype.GetHealRate = function()
return ApplyTechModificationsToEntity("GarrisonHolder/BuffHeal", +this.template.BuffHeal, this.entity);
};
+GarrisonHolder.prototype.EjectEntitiesOnDestroy = function()
+{
+ if (this.template.EjectEntitiesOnDestroy == "true")
+ return true;
+ return false;
+}
+
/**
* Get number of garrisoned units capable of shooting arrows
* Not necessarily archers
@@ -337,15 +347,12 @@ GarrisonHolder.prototype.OnHealthChanged = function(msg)
{
if (!this.HasEnoughHealth())
{
- // We have to be careful of our passability
- // ships: not land passable, so assume units have drowned in a shipwreck
- // building: land passable, so units can be ejected freely
- var classes = (Engine.QueryInterface(this.entity, IID_Identity)).GetClassesList();
var cmpPosition = Engine.QueryInterface(this.entity, IID_Position);
- // Destroy the garrisoned units if the holder is a ship or is not in the
- // world (generally means this holder is inside a ship which has sunk).
- if (classes.indexOf("Ship") != -1 || !cmpPosition.IsInWorld())
+ // Destroy the garrisoned units if the holder kill his entities on destroy or
+ // is not in the world (generally means this holder is inside
+ // a holder which kills its entities which has sunk).
+ if (!this.EjectEntitiesOnDestroy() || !cmpPosition.IsInWorld())
{
for each (var entity in this.entities)
{
diff --git a/binaries/data/mods/public/simulation/templates/structures/athen_wonder.xml b/binaries/data/mods/public/simulation/templates/structures/athen_wonder.xml
index 6c6d6805de..a24feeaac2 100644
--- a/binaries/data/mods/public/simulation/templates/structures/athen_wonder.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/athen_wonder.xml
@@ -7,6 +7,7 @@
30
0.1
+ true
Support Infantry Cavalry
3
2
diff --git a/binaries/data/mods/public/simulation/templates/structures/rome_tent.xml b/binaries/data/mods/public/simulation/templates/structures/rome_tent.xml
index 1f42b047ec..17b75edfec 100644
--- a/binaries/data/mods/public/simulation/templates/structures/rome_tent.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/rome_tent.xml
@@ -16,6 +16,7 @@
5
0.1
+ true
Support Infantry
0
2
diff --git a/binaries/data/mods/public/simulation/templates/structures/rome_wonder.xml b/binaries/data/mods/public/simulation/templates/structures/rome_wonder.xml
index 647d1fca87..46b99b7780 100644
--- a/binaries/data/mods/public/simulation/templates/structures/rome_wonder.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/rome_wonder.xml
@@ -7,6 +7,7 @@
30
0.1
+ true
Support Infantry Cavalry
3
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml b/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml
index 32f38bc3a3..45aae5ee71 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml
@@ -42,6 +42,7 @@
20
0.1
+ true
Support Infantry Cavalry
1
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml b/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml
index db9aede6ea..6a850e9833 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml
@@ -23,6 +23,7 @@
20
0.1
+ true
Support Infantry Cavalry
3
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_defense_defense_tower.xml b/binaries/data/mods/public/simulation/templates/template_structure_defense_defense_tower.xml
index fc74e7ced6..bcacfaa9bf 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_defense_defense_tower.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_defense_defense_tower.xml
@@ -34,7 +34,8 @@
5
- 0.1
+ 0.1
+ true
Support Infantry
0
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_defense_outpost.xml b/binaries/data/mods/public/simulation/templates/template_structure_defense_outpost.xml
index 44f994a22e..6774c8838c 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_defense_outpost.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_defense_outpost.xml
@@ -44,6 +44,7 @@
1
0.1
+ true
Support Infantry
0
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_defense_wall_tower.xml b/binaries/data/mods/public/simulation/templates/template_structure_defense_wall_tower.xml
index cc10471848..cab9ae4bfc 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_defense_wall_tower.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_defense_wall_tower.xml
@@ -34,6 +34,7 @@
5
0.1
+ true
Support Infantry
0
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml b/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml
index 211f64f480..d4a377b728 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml
@@ -16,6 +16,7 @@
10
0.1
+ true
Infantry Cavalry
0
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml b/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml
index 4a3e791610..f8ccaa8c8d 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml
@@ -35,6 +35,7 @@
20
0.075
+ true
Support Infantry Cavalry Siege
0
6
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml b/binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml
index 5960074656..25a969e592 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml
@@ -13,6 +13,7 @@
10
0.1
+ true
Animal
1
2
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_special.xml b/binaries/data/mods/public/simulation/templates/template_structure_special.xml
index 152844e12b..0ea162f041 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_special.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_special.xml
@@ -29,6 +29,7 @@
5
0.1
+ true
Support Infantry Cavalry
1
2
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml
index b5d8077817..955ffd7c04 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml
@@ -33,6 +33,7 @@
20
0
+ false
Support Infantry Cavalry
1
10
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml
index 0a87fc6031..3438614298 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fishing.xml
@@ -22,6 +22,7 @@
1
0
+ false
Support Infantry
1
10
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml
index ba33475ddc..7ac4ccc653 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_merchant.xml
@@ -14,6 +14,7 @@
15
0
+ false
Support Infantry Cavalry
1
10
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml
index 87aa9cc962..5073d73b3a 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml
@@ -33,6 +33,7 @@
50
0
+ false
Support Infantry Cavalry Siege
1
10
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml
index 4961f3686e..4053d5c2a3 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml
@@ -33,6 +33,7 @@
30
0
+ false
Support Infantry Cavalry Siege
1
10
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml
index c8cf7b8fe2..b936c9a68f 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_ram.xml
@@ -56,6 +56,7 @@
5
0.1
+ true
Support Infantry
1
2
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml
index 5f0e3c7fd2..82aca12eed 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_siege_tower.xml
@@ -38,6 +38,7 @@
20
0.1
+ true
Support Infantry
1
2