aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp19
1 files 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);
}