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/Pack.js =================================================================== --- binaries/data/mods/public/simulation/components/Pack.js +++ binaries/data/mods/public/simulation/components/Pack.js @@ -128,6 +128,7 @@ this.CancelTimer(); this.packed = !this.packed; + this.packing = false; Engine.PostMessage(this.entity, MT_PackFinished, { "packed": this.packed }); 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(); Index: binaries/data/mods/public/simulation/components/tests/test_Pack.js =================================================================== --- binaries/data/mods/public/simulation/components/tests/test_Pack.js +++ binaries/data/mods/public/simulation/components/tests/test_Pack.js @@ -153,6 +153,6 @@ cmpPack.elapsedTime = 2100; cmpPack.PackProgress({}, 100); -TS_ASSERT(cmpPack.IsPacking()); // It should be reset? (See StatusBars) +TS_ASSERT(!cmpPack.IsPacking()); TS_ASSERT(!cmpPack.timer); TS_ASSERT(!timerActivated);