Core/Misc: Exclude most of WorldSession::HandleAreaTriggerOpcode from being called when leaving the areatrigger

Port From (https://github.com/TrinityCore/TrinityCore/commit/f62b1d01909ca721647d32d9b52dbd599afc91e2)
This commit is contained in:
hondacrx
2023-06-24 09:16:37 -04:00
parent 3389b03b06
commit 206debd758
+14 -3
View File
@@ -187,7 +187,7 @@ namespace Game
if (Global.ScriptMgr.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
List<uint> quests = Global.ObjectMgr.GetQuestsForAreaTrigger(packet.AreaTriggerID);
@@ -236,10 +236,18 @@ namespace Game
if (Global.ObjectMgr.IsTavernAreaTrigger(packet.AreaTriggerID))
{
// set resting flag we are in the inn
player.GetRestMgr().SetRestFlag(RestFlag.Tavern, atEntry.Id);
if (packet.Entered)
player.GetRestMgr().SetRestFlag(RestFlag.Tavern, atEntry.Id);
else
player.GetRestMgr().RemoveRestFlag(RestFlag.Tavern);
if (Global.WorldMgr.IsFFAPvPRealm())
player.RemovePvpFlag(UnitPVPStateFlags.FFAPvp);
{
if (packet.Entered)
player.RemovePvpFlag(UnitPVPStateFlags.FFAPvp);
else
player.SetPvpFlag(UnitPVPStateFlags.FFAPvp);
}
return;
}
@@ -254,6 +262,9 @@ namespace Game
return;
}
if (!packet.Entered)
return;
AreaTriggerStruct at = Global.ObjectMgr.GetAreaTrigger(packet.AreaTriggerID);
if (at == null)
return;