diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-10-24 19:42:12 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-10-24 19:42:12 +0200 |
commit | c672e27f27eda49230d87ec460539429251fefdc (patch) | |
tree | 2172dddf8e9d3b84ab752eaaae7bbaed2c4a9ed4 | |
parent | 9957b9b942f43d0eb112da15ac21cf27f85be801 (diff) |
Core/GameObjects: Add missing dynamic flag updates for chests
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.h | 2 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 03871de2908..caa65afa59e 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -995,7 +995,7 @@ void GameObject::Update(uint32 diff) m_personalLoot.clear(); m_unique_users.clear(); m_usetimes = 0; - AddToObjectUpdateIfNeeded(); + UpdateDynamicFlagsForNearbyPlayers(); break; default: m_lootState = GO_READY; // for other GOis same switched without delay to GO_READY @@ -1227,7 +1227,7 @@ void GameObject::Update(uint32 diff) m_personalLoot.clear(); m_unique_users.clear(); m_usetimes = 0; - AddToObjectUpdateIfNeeded(); + UpdateDynamicFlagsForNearbyPlayers(); } break; case GAMEOBJECT_TYPE_TRAP: @@ -1314,7 +1314,7 @@ void GameObject::Update(uint32 diff) // Start restock timer when the chest is fully looted m_restockTime = GameTime::GetGameTime() + GetGOInfo()->chest.chestRestockTime; SetLootState(GO_NOT_READY); - AddToObjectUpdateIfNeeded(); + UpdateDynamicFlagsForNearbyPlayers(); } else SetLootState(GO_READY); @@ -3902,12 +3902,10 @@ private: GameObject* _owner; }; -void GameObject::UpdateDynamicFlagsForNearbyPlayers() const +void GameObject::UpdateDynamicFlagsForNearbyPlayers() { - ValuesUpdateForPlayerWithMaskSender sender(this); - sender.ObjectMask.MarkChanged(&UF::ObjectData::DynamicFlags); - Trinity::MessageDistDeliverer<ValuesUpdateForPlayerWithMaskSender> deliverer(this, sender, GetVisibilityRange()); - Cell::VisitWorldObjects(this, deliverer, GetVisibilityRange()); + m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags); + AddToObjectUpdateIfNeeded(); } void GameObject::HandleCustomTypeCommand(GameObjectTypeBase::CustomCommand const& command) const diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 1e9d0fc3b0a..6800d3c9aed 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -389,7 +389,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject> std::string GetDebugInfo() const override; - void UpdateDynamicFlagsForNearbyPlayers() const; + void UpdateDynamicFlagsForNearbyPlayers(); void HandleCustomTypeCommand(GameObjectTypeBase::CustomCommand const& command) const; |