From 7d63166ff3e819e3043f155b3df4007cccb81dee Mon Sep 17 00:00:00 2001 From: jackpoz Date: Thu, 17 Oct 2019 20:18:25 +0200 Subject: Core/GameObject: Fix battleground flags not showing burning animation Fix battleground flags not displaying the typical burning animation when they "despawn" (they don't actually despawn, they just change state) (cherry picked from commit 90bb10aa3a490fc701e6f98b32310687af80dea5) --- src/server/game/Battlegrounds/Battleground.cpp | 19 +++++++++++++++---- 1 file 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); } -- cgit v1.2.3