mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Misc: Exclude most of WorldSession::HandleAreaTriggerOpcode from being called when leaving the areatrigger
This commit is contained in:
@@ -511,7 +511,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge
|
||||
if (sScriptMgr->OnAreaTrigger(player, atEntry, packet.Entered))
|
||||
return;
|
||||
|
||||
if (player->IsAlive())
|
||||
if (player->IsAlive() && packet.Entered)
|
||||
{
|
||||
// not using Player::UpdateQuestObjectiveProgress, ObjectID in quest_objectives can be set to -1, areatrigger_involvedrelation then holds correct id
|
||||
if (std::unordered_set<uint32> const* quests = sObjectMgr->GetQuestsForAreaTrigger(packet.AreaTriggerID))
|
||||
@@ -559,10 +559,18 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge
|
||||
if (sObjectMgr->IsTavernAreaTrigger(packet.AreaTriggerID))
|
||||
{
|
||||
// set resting flag we are in the inn
|
||||
player->GetRestMgr().SetRestFlag(REST_FLAG_IN_TAVERN, atEntry->ID);
|
||||
if (packet.Entered)
|
||||
player->GetRestMgr().SetRestFlag(REST_FLAG_IN_TAVERN, atEntry->ID);
|
||||
else
|
||||
player->GetRestMgr().RemoveRestFlag(REST_FLAG_IN_TAVERN);
|
||||
|
||||
if (sWorld->IsFFAPvPRealm())
|
||||
player->RemovePvpFlag(UNIT_BYTE2_FLAG_FFA_PVP);
|
||||
{
|
||||
if (packet.Entered)
|
||||
player->RemovePvpFlag(UNIT_BYTE2_FLAG_FFA_PVP);
|
||||
else
|
||||
player->SetPvpFlag(UNIT_BYTE2_FLAG_FFA_PVP);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -574,6 +582,9 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge
|
||||
if (pvp->HandleAreaTrigger(_player, packet.AreaTriggerID, packet.Entered))
|
||||
return;
|
||||
|
||||
if (!packet.Entered)
|
||||
return;
|
||||
|
||||
AreaTriggerStruct const* at = sObjectMgr->GetAreaTrigger(packet.AreaTriggerID);
|
||||
if (!at)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user