From 90bb10aa3a490fc701e6f98b32310687af80dea5 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) --- 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 ac85cd613a6..30d86862dd4 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1421,11 +1421,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->SendObjectDeSpawnAnim(obj->GetGUID()); + } + } + 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