/// <summary>Removes auras based on their interrupt flag.</summary> /// <param name="interruptFlags">the interrupt flags to remove the auras by</param> public void RemoveByFlag(AuraInterruptFlags interruptFlags) { foreach (Aura visibleAura in this.m_visibleAuras) { if (visibleAura != null && (visibleAura.Spell.AuraInterruptFlags & interruptFlags) != AuraInterruptFlags.None) { visibleAura.Remove(false); } } }
/// <summary> /// Removes auras based on their interrupt flag. /// </summary> /// <param name="interruptFlags">the interrupt flags to remove the auras by</param> public void RemoveByFlag(AuraInterruptFlags interruptFlags) { //Aura[] auras = m_nonPassiveAuras.ToArray(); foreach (var aura in m_visibleAuras) { if (aura != null && (aura.Spell.AuraInterruptFlags & interruptFlags) != 0) { aura.Remove(false); } } }
internal void RemoveAurasWithInterrupt(AuraInterruptFlags flags) { if (!HasAuraAnyInterrupt(flags)) { return; } for (int i = 0; i < interruptableAuraApplications.Count; i++) { if (interruptableAuraApplications[i].Aura.AuraInfo.InterruptFlags.HasAnyFlag(flags)) { tempAuraApplications.Add(interruptableAuraApplications[i]); } } foreach (AuraApplication auraApplicationToRemove in tempAuraApplications) { RemoveAuraWithApplication(auraApplicationToRemove, AuraRemoveMode.Interrupt); } tempAuraApplications.Clear(); }
private void HandleInterruptableAura(AuraApplication auraApplication, bool added) { if (!auraApplication.Aura.AuraInfo.HasInterruptFlags) { return; } if (added) { interruptableAuraApplications.Add(auraApplication); auraInterruptFlags |= auraApplication.Aura.AuraInfo.InterruptFlags; } else { interruptableAuraApplications.Remove(auraApplication); auraInterruptFlags = 0; foreach (AuraApplication interruptableAura in interruptableAuraApplications) { auraInterruptFlags |= interruptableAura.Aura.AuraInfo.InterruptFlags; } } }
internal bool HasAuraAnyInterrupt(AuraInterruptFlags flag) => auraInterruptFlags.HasAnyFlag(flag);
public static bool HasAnyFlag(this AuraInterruptFlags baseFlags, AuraInterruptFlags flag) { return((baseFlags & flag) != 0); }
public static bool HasTargetFlag(this AuraInterruptFlags baseFlags, AuraInterruptFlags flag) { return((baseFlags & flag) == flag); }
/// <summary> /// Removes auras based on their interrupt flag. /// </summary> /// <param name="interruptFlags">the interrupt flags to remove the auras by</param> public void RemoveByFlag(AuraInterruptFlags interruptFlags) { //Aura[] auras = m_nonPassiveAuras.ToArray(); foreach (var aura in m_visibleAuras) { if (aura != null && (aura.Spell.AuraInterruptFlags & interruptFlags) != 0) { aura.Remove(true); } } }