From 9b378447f854cd0cdca64381b996aa4665e7fbd5 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 2 Apr 2017 07:57:21 +0200 Subject: [PATCH] Core/Entities: GameObjectDespawn packet is only sent for GameObjects --- src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 1 - .../game/Entities/DynamicObject/DynamicObject.cpp | 1 - src/server/game/Entities/GameObject/GameObject.cpp | 12 ++++++++++-- src/server/game/Entities/GameObject/GameObject.h | 1 + src/server/game/Entities/Object/Object.cpp | 7 ------- src/server/game/Entities/Object/Object.h | 2 -- src/server/scripts/Commands/cs_go.cpp | 3 +-- src/server/scripts/Commands/cs_gobject.cpp | 2 +- 8 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index 31498084839..7700cd0b64b 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -100,7 +100,6 @@ void AreaTrigger::Remove() { if (IsInWorld()) { - SendObjectDeSpawnAnim(GetGUID()); RemoveFromWorld(); AddObjectToRemoveList(); } diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index de763517ead..97de2df6096 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -160,7 +160,6 @@ void DynamicObject::Remove() { if (IsInWorld()) { - SendObjectDeSpawnAnim(GetGUID()); RemoveFromWorld(); AddObjectToRemoveList(); } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 831d8301cac..5d6d0a601dd 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -707,7 +707,7 @@ void GameObject::Update(uint32 diff) //burning flags in some battlegrounds, if you find better condition, just add it if (GetGOInfo()->IsDespawnAtAction() || GetGoAnimProgress() > 0) { - SendObjectDeSpawnAnim(GetGUID()); + SendGameObjectDespawn(); //reset flags if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); @@ -758,7 +758,7 @@ void GameObject::Delete() SetLootState(GO_NOT_READY); RemoveFromOwner(); - SendObjectDeSpawnAnim(GetGUID()); + SendGameObjectDespawn(); SetGoState(GO_STATE_READY); @@ -772,6 +772,14 @@ void GameObject::Delete() AddObjectToRemoveList(); } +void GameObject::SendGameObjectDespawn() +{ + WorldPacket data(SMSG_GAMEOBJECT_DESPAWN_ANIM, 8); + data << uint64(guid); + SendMessageToSet(&data, true); +} + + void GameObject::getFishLoot(Loot* fishloot, Player* loot_owner) { fishloot->clear(); diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index a467b5a82e6..5f0bcc222c2 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -773,6 +773,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject uint32 GetRespawnDelay() const { return m_respawnDelayTime; } void Refresh(); void Delete(); + void SendGameObjectDespawn(); void getFishLoot(Loot* loot, Player* loot_owner); void getFishLootJunk(Loot* loot, Player* loot_owner); GameobjectTypes GetGoType() const { return GameobjectTypes(GetByteValue(GAMEOBJECT_BYTES_1, 1)); } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 70105f4e9c3..08240869736 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1975,13 +1975,6 @@ void WorldObject::SendMessageToSet(WorldPacket* data, Player const* skipped_rcvr VisitNearbyWorldObject(GetVisibilityRange(), notifier); } -void WorldObject::SendObjectDeSpawnAnim(ObjectGuid guid) -{ - WorldPacket data(SMSG_GAMEOBJECT_DESPAWN_ANIM, 8); - data << uint64(guid); - SendMessageToSet(&data, true); -} - void WorldObject::SetMap(Map* map) { ASSERT(map); diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 371e82c3853..38b87a7f36b 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -550,8 +550,6 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void PlayDirectSound(uint32 sound_id, Player* target = NULL); void PlayDirectMusic(uint32 music_id, Player* target = NULL); - void SendObjectDeSpawnAnim(ObjectGuid guid); - virtual void SaveRespawnTime() { } void AddObjectToRemoveList(); diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 19f9c073084..abac0e57387 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -49,7 +49,7 @@ public: { "zonexy", rbac::RBAC_PERM_COMMAND_GO_ZONEXY, false, &HandleGoZoneXYCommand, "" }, { "xyz", rbac::RBAC_PERM_COMMAND_GO_XYZ, false, &HandleGoXYZCommand, "" }, { "ticket", rbac::RBAC_PERM_COMMAND_GO_TICKET, false, &HandleGoTicketCommand, "" }, - { "offset", rbac::RBAC_PERM_COMMAND_GO_OFFSET, false, &HandleGoOffsetCommand, + { "offset", rbac::RBAC_PERM_COMMAND_GO_OFFSET, false, &HandleGoOffsetCommand, "" }, }; static std::vector commandTable = @@ -562,7 +562,6 @@ public: ticket->TeleportTo(player); return true; } -}; static bool HandleGoOffsetCommand(ChatHandler* handler, char const* args) { diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 19616d003b6..0ca002d2bab 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -644,7 +644,7 @@ public: if (objectType < 0) { if (objectType == -1) - object->SendObjectDeSpawnAnim(object->GetGUID()); + object->SendGameObjectDespawn(); else if (objectType == -2) return false; return true;