From 8bd54eef717d7ae52fd4d815e4e9aba62469dbfe Mon Sep 17 00:00:00 2001 From: Deiz Date: Thu, 13 Sep 2012 22:47:47 +0000 Subject: [PATCH] Handle nested garrison holder death properly. This was SVN commit r12672. --- .../mods/public/simulation/components/GarrisonHolder.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/binaries/data/mods/public/simulation/components/GarrisonHolder.js b/binaries/data/mods/public/simulation/components/GarrisonHolder.js index 7254aa3a7e..bc23605aab 100644 --- a/binaries/data/mods/public/simulation/components/GarrisonHolder.js +++ b/binaries/data/mods/public/simulation/components/GarrisonHolder.js @@ -333,8 +333,12 @@ GarrisonHolder.prototype.OnHealthChanged = function(msg) // 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(); - if (classes.indexOf("Ship") != -1) - { // Ship - kill all units + 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()) + { for each (var entity in this.entities) { var cmpHealth = Engine.QueryInterface(entity, IID_Health);