diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs index 8453eb710..17a4593e5 100644 --- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs +++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs @@ -1555,7 +1555,7 @@ namespace Game.Entities public override ObjectGuid GetOwnerGUID() { return GetCasterGuid(); } public ObjectGuid GetCasterGuid() { return m_areaTriggerData.Caster; } - public bool HasSplines() { return !_spline.Empty(); } + public bool HasSplines() { return _spline != null && !_spline.Empty(); } public Spline GetSpline() { return _spline; } bool HasOrbit() { return m_areaTriggerData.PathData.Is(); } diff --git a/Source/Game/Entities/Object/Update/UpdateField.cs b/Source/Game/Entities/Object/Update/UpdateField.cs index 1ae4f2df9..56da13a55 100644 --- a/Source/Game/Entities/Object/Update/UpdateField.cs +++ b/Source/Game/Entities/Object/Update/UpdateField.cs @@ -353,15 +353,14 @@ namespace Game.Entities } } - public class VariantUpdateField(int blockBit, int bit, params Type[] types) + public class VariantUpdateField(int blockBit, int bit) { public object _value; - Type[] _types = types; public int BlockBit = blockBit; public int Bit = bit; - public bool Is() { return _types.Contains(typeof(T)); } + public bool Is() { return _value is T; } public T Get() where T : class, new() { @@ -466,7 +465,7 @@ namespace Game.Entities public void ClearChangesMask(VariantUpdateField field) { - if (typeof(IHasChangesMask).IsAssignableFrom(field._value.GetType())) + if (field._value != null && typeof(IHasChangesMask).IsAssignableFrom(field._value.GetType())) ((IHasChangesMask)field._value).ClearChangesMask(); } diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 2e8714b6f..f4a14c20e 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -856,7 +856,7 @@ namespace Game.Entities public void RemoveAreaTrigger(AuraEffect aurEff) { - foreach (AreaTrigger areaTrigger in m_areaTrigger) + foreach (AreaTrigger areaTrigger in m_areaTrigger.ToList()) { if (areaTrigger.GetAuraEffect() == aurEff) { @@ -868,7 +868,7 @@ namespace Game.Entities public void RemoveAllAreaTriggers(AreaTriggerRemoveReason reason = AreaTriggerRemoveReason.Default) { - foreach (AreaTrigger at in m_areaTrigger) + foreach (AreaTrigger at in m_areaTrigger.ToList()) { if (reason == AreaTriggerRemoveReason.UnitDespawn && at.GetTemplate().ActionSetFlags.HasFlag(AreaTriggerActionSetFlag.DontDespawnWithCreator)) continue;