From db41a0132e2f8c1e1ede0e8fdb064daac8140cc9 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 13 Jun 2022 13:57:35 +0200 Subject: [PATCH] fix(Core/Misc): Fixed radius of areatriggers in battlegrounds. (#12017) * fix(Core/Misc): Fixed radius of areatriggers in battlegrounds. Fixes #12004 * buildfix. --- src/server/game/Entities/Player/Player.cpp | 4 +--- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Entities/Player/PlayerUpdates.cpp | 7 ++++--- src/server/game/Handlers/MiscHandler.cpp | 5 +++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b73d8602c..7cd658988 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2139,10 +2139,8 @@ void Player::SetInWater(bool apply) getHostileRefMgr().updateThreatTables(); } -bool Player::IsInAreaTriggerRadius(const AreaTrigger* trigger) const +bool Player::IsInAreaTriggerRadius(AreaTrigger const* trigger, float delta) const { - static const float delta = 5.0f; - if (!trigger || GetMapId() != trigger->map) return false; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 4e8f21599..1ab612d5d 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1095,7 +1095,7 @@ public: [[nodiscard]] bool IsInWater() const override { return m_isInWater; } [[nodiscard]] bool IsFalling() const; - bool IsInAreaTriggerRadius(const AreaTrigger* trigger) const; + bool IsInAreaTriggerRadius(AreaTrigger const* trigger, float delta = 0.f) const; void SendInitialPacketsBeforeAddToMap(); void SendInitialPacketsAfterAddToMap(); diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index 86230835b..04f7fd011 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -277,10 +277,11 @@ void Player::Update(uint32 p_time) // supposed to be in one if (HasRestFlag(REST_FLAG_IN_TAVERN)) { - AreaTrigger const* atEntry = - sObjectMgr->GetAreaTrigger(GetInnTriggerId()); - if (!atEntry || !IsInAreaTriggerRadius(atEntry)) + AreaTrigger const* atEntry = sObjectMgr->GetAreaTrigger(GetInnTriggerId()); + if (!atEntry || !IsInAreaTriggerRadius(atEntry, 5.f)) + { RemoveRestFlag(REST_FLAG_IN_TAVERN); + } } uint32 newzone, newarea; diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 973cee758..dc5b48e68 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -731,7 +731,8 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket& recv_data) return; } - if (!player->IsInAreaTriggerRadius(atEntry)) + bool isTavernAreatrigger = sObjectMgr->IsTavernAreaTrigger(triggerId); + if (!player->IsInAreaTriggerRadius(atEntry, isTavernAreatrigger ? 5.f : 0.f)) { LOG_DEBUG("network", "HandleAreaTriggerOpcode: Player {} ({}) too far (trigger map: {} player map: {}), ignore Area Trigger ID: {}", player->GetName(), player->GetGUID().ToString(), atEntry->map, player->GetMapId(), triggerId); @@ -749,7 +750,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket& recv_data) if (player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) player->AreaExploredOrEventHappens(questId); - if (sObjectMgr->IsTavernAreaTrigger(triggerId)) + if (isTavernAreatrigger) { // set resting flag we are in the inn player->SetRestFlag(REST_FLAG_IN_TAVERN, atEntry->entry);