Index: binaries/data/mods/public/simulation/components/Promotion.js =================================================================== --- binaries/data/mods/public/simulation/components/Promotion.js +++ binaries/data/mods/public/simulation/components/Promotion.js @@ -76,9 +76,9 @@ var cmpCurrentUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); var cmpPromotedUnitAI = Engine.QueryInterface(promotedUnitEntity, IID_UnitAI); - var pos = cmpCurrentUnitAI.GetHeldPosition(); - if (pos) - cmpPromotedUnitAI.SetHeldPosition(pos.x, pos.z); + var heldPos = cmpCurrentUnitAI.GetHeldPosition(); + if (heldPos) + cmpPromotedUnitAI.SetHeldPosition(heldPos.x, heldPos.z); if (cmpCurrentUnitAI.GetStanceName()) cmpPromotedUnitAI.SwitchToStance(cmpCurrentUnitAI.GetStanceName()); @@ -123,6 +123,8 @@ Engine.BroadcastMessage(MT_EntityRenamed, { entity: this.entity, newentity: promotedUnitEntity }); // Destroy current entity + if (cmpCurrentUnitPosition && cmpCurrentUnitPosition.IsInWorld()) + cmpCurrentUnitPosition.MoveOutOfWorld(); Engine.DestroyEntity(this.entity); // save the entity id this.promotedUnitEntity = promotedUnitEntity; Index: binaries/data/mods/public/simulation/helpers/Transform.js =================================================================== --- binaries/data/mods/public/simulation/helpers/Transform.js +++ binaries/data/mods/public/simulation/helpers/Transform.js @@ -97,6 +97,8 @@ Engine.BroadcastMessage(MT_EntityRenamed, { "entity": oldEnt, "newentity": newEnt }); + if (cmpPosition && cmpPosition.IsInWorld()) + cmpPosition.MoveOutOfWorld(); Engine.DestroyEntity(oldEnt); return newEnt;