aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SpellHandler.cpp
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2016-02-06 18:14:28 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2016-02-06 18:16:11 +0100
commit3ac2ba721da344b2dda9b2e95d40a1faf36ddc6d (patch)
tree463db04add347639172498d472b1229e964f4324 /src/server/game/Handlers/SpellHandler.cpp
parentbc6326d71ff3678c3ef10e2caee7906c246c3285 (diff)
Core/Gossips: added some sanity checks to prevent duplicate interaction
(cherry picked from commit 8b6954e81b76f8d7c6700eaf1a8b942bebaa85a0) Scripts: addition to 8b6954e81b76f8d7c6700eaf1a8b942bebaa85a0 Closes #16466 (cherry picked from commit b259d5c2bc41a545aad978c286f21347c0ba51a2)
Diffstat (limited to 'src/server/game/Handlers/SpellHandler.cpp')
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index ef7c8a8e915..3ee24ef401e 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -216,11 +216,8 @@ void WorldSession::HandleOpenItemOpcode(WorldPackets::Spells::OpenItem& packet)
void WorldSession::HandleGameObjectUseOpcode(WorldPackets::GameObject::GameObjUse& packet)
{
- if (GameObject* obj = GetPlayer()->GetMap()->GetGameObject(packet.Guid))
+ if (GameObject* obj = GetPlayer()->GetGameObjectIfCanInteractWith(packet.Guid))
{
- if (!obj->IsWithinDistInMap(GetPlayer(), obj->GetInteractionDistance()))
- return;
-
// ignore for remote control state
if (GetPlayer()->m_mover != GetPlayer())
if (!(GetPlayer()->IsOnVehicle(GetPlayer()->m_mover) || GetPlayer()->IsMounted()) && !obj->GetGOInfo()->IsUsableMounted())
@@ -236,17 +233,13 @@ void WorldSession::HandleGameobjectReportUse(WorldPackets::GameObject::GameObjRe
if (_player->m_mover != _player)
return;
- GameObject* go = GetPlayer()->GetMap()->GetGameObject(packet.Guid);
- if (!go)
- return;
-
- if (!go->IsWithinDistInMap(_player, INTERACTION_DISTANCE))
- return;
-
- if (go->AI()->GossipHello(_player))
- return;
+ if (GameObject* go = GetPlayer()->GetGameObjectIfCanInteractWith(packet.Guid))
+ {
+ if (go->AI()->GossipHello(_player))
+ return;
- _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT, go->GetEntry());
+ _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT, go->GetEntry());
+ }
}
void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& cast)