Core/AreaTriggers: Handle exit areatrigger on player map change

Port From (https://github.com/TrinityCore/TrinityCore/commit/26fc14419142e3188370035ce4144cdb125bec05)
This commit is contained in:
Hondacrx
2025-09-05 21:14:36 -04:00
parent 217bccde02
commit dbf160fbdf
5 changed files with 86 additions and 38 deletions
+1
View File
@@ -101,6 +101,7 @@ namespace Game.Entities
DiminishingReturn[] m_Diminishing = new DiminishingReturn[(int)DiminishingGroup.Max];
protected List<GameObject> m_gameObj = new();
List<AreaTrigger> m_areaTrigger = new();
List<AreaTrigger> m_insideAreaTriggers = new();
protected List<DynamicObject> m_dynObj = new();
protected float[] CreateStats = new float[(int)Stats.Max];
float[] m_floatStatPosBuff = new float[(int)Stats.Max];
+18
View File
@@ -877,6 +877,24 @@ namespace Game.Entities
}
}
public void EnterAreaTrigger(AreaTrigger areaTrigger)
{
m_insideAreaTriggers.Add(areaTrigger);
}
public void ExitAreaTrigger(AreaTrigger areaTrigger)
{
m_insideAreaTriggers.Remove(areaTrigger);
}
public void ExitAllAreaTriggers()
{
foreach (AreaTrigger at in m_insideAreaTriggers.ToList())
at.HandleUnitExit(this);
}
public List<AreaTrigger> GetInsideAreaTriggers() { return m_insideAreaTriggers; }
public NPCFlags GetNpcFlags() { return (NPCFlags)m_unitData.NpcFlags.GetValue(); }
public bool HasNpcFlag(NPCFlags flags) { return (m_unitData.NpcFlags & (uint)flags) != 0; }
public void SetNpcFlag(NPCFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.NpcFlags), (uint)flags); }