fix(Core/Misc): Fixed radius of areatriggers in battlegrounds. (#12017)

* fix(Core/Misc): Fixed radius of areatriggers in battlegrounds.

Fixes #12004

* buildfix.
This commit is contained in:
UltraNix
2022-06-13 13:57:35 +02:00
committed by GitHub
parent 94b73fadaa
commit db41a0132e
4 changed files with 9 additions and 9 deletions

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;

View File

@@ -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);