diff options
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 96b2b79884a..a7da1838393 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1527,11 +1527,22 @@ void Battleground::SpawnBGObject(uint32 type, uint32 respawntime) if (GameObject* obj = map->GetGameObject(BgObjects[type])) { if (respawntime) + { obj->SetLootState(GO_JUST_DEACTIVATED); - else - if (obj->getLootState() == GO_JUST_DEACTIVATED) - // Change state from GO_JUST_DEACTIVATED to GO_READY in case battleground is starting again - obj->SetLootState(GO_READY); + + if (GameObjectOverride const* goOverride = obj->GetGameObjectOverride()) + if (goOverride->Flags & GO_FLAG_NODESPAWN) + { + // This function should be called in GameObject::Update() but in case of + // GO_FLAG_NODESPAWN flag the function is never called, so we call it here + obj->SendGameObjectDespawn(); + } + } + else if (obj->getLootState() == GO_JUST_DEACTIVATED) + { + // Change state from GO_JUST_DEACTIVATED to GO_READY in case battleground is starting again + obj->SetLootState(GO_READY); + } obj->SetRespawnTime(respawntime); map->AddToMap(obj); } |