Index: binaries/data/mods/public/simulation/components/AuraManager.js =================================================================== --- binaries/data/mods/public/simulation/components/AuraManager.js +++ binaries/data/mods/public/simulation/components/AuraManager.js @@ -247,6 +247,9 @@ AuraManager.prototype.OnGlobalOwnershipChanged = function(msg) { + if (msg.to == -1) + return; + for (let ent of this.globalAuraSources) { let cmpAuras = Engine.QueryInterface(ent, IID_Auras); Index: binaries/data/mods/public/simulation/components/Auras.js =================================================================== --- binaries/data/mods/public/simulation/components/Auras.js +++ binaries/data/mods/public/simulation/components/Auras.js @@ -244,7 +244,10 @@ var match = this.GetClasses(auraName); return entityList.filter(ent => { let cmpIdentity = Engine.QueryInterface(ent, IID_Identity); - return cmpIdentity && MatchesClassList(cmpIdentity.GetClassesList(), match); + // Don't apply or remove bonus for units which are destroyed. + let cmpOwnership = Engine.QueryInterface(ent, IID_Ownership); + return cmpIdentity && MatchesClassList(cmpIdentity.GetClassesList(), match) && + !(cmpOwnership && cmpOwnership.GetOwner() == -1); }); }; Index: binaries/data/mods/public/simulation/components/StatusBars.js =================================================================== --- binaries/data/mods/public/simulation/components/StatusBars.js +++ binaries/data/mods/public/simulation/components/StatusBars.js @@ -103,6 +103,9 @@ StatusBars.prototype.RegenerateSprites = function() { + let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership); + if (cmpOwnership.GetOwner() == -1) + error("Invalid owner"); let cmpOverlayRenderer = Engine.QueryInterface(this.entity, IID_OverlayRenderer); cmpOverlayRenderer.Reset();