Core/AreaTrigger: Implement AreaTriggerActionSetFlag::DontDespawnWithCreator

Port From (https://github.com/TrinityCore/TrinityCore/commit/c40b6e0b3f1882a9fce8dfd103be4291ca986851)
This commit is contained in:
Hondacrx
2025-08-14 20:21:10 -04:00
parent 10998036b2
commit 1b838e6d5a
2 changed files with 22 additions and 11 deletions
+6
View File
@@ -616,4 +616,10 @@ namespace Framework.Constants
CanSkin = 0x40, // previously UNIT_DYNFLAG_DEAD CanSkin = 0x40, // previously UNIT_DYNFLAG_DEAD
ReferAFriend = 0x80 ReferAFriend = 0x80
} }
public enum AreaTriggerRemoveReason
{
Default,
UnitDespawn
}
} }
+8 -3
View File
@@ -866,10 +866,15 @@ namespace Game.Entities
} }
} }
public void RemoveAllAreaTriggers() public void RemoveAllAreaTriggers(AreaTriggerRemoveReason reason = AreaTriggerRemoveReason.Default)
{ {
while (!m_areaTrigger.Empty()) foreach (AreaTrigger at in m_areaTrigger)
m_areaTrigger.Last()?.Remove(); {
if (reason == AreaTriggerRemoveReason.UnitDespawn && at.GetTemplate().ActionSetFlags.HasFlag(AreaTriggerActionSetFlag.DontDespawnWithCreator))
continue;
at.Remove();
}
} }
public NPCFlags GetNpcFlags() { return (NPCFlags)m_unitData.NpcFlags.GetValue(); } public NPCFlags GetNpcFlags() { return (NPCFlags)m_unitData.NpcFlags.GetValue(); }