internal bool HasAuraState(AuraStateType auraStateType, Unit caster = null, Spell spell = null) { if (auraApplicationsByAuraState.ContainsKey(auraStateType)) { return(true); } if (caster != null) { IReadOnlyList <AuraEffect> ignoreAuraEffects = caster.Auras.GetAuraEffects(AuraEffectType.IgnoreTargetAuraState); if (ignoreAuraEffects != null) { for (int i = 0; i < ignoreAuraEffects.Count; i++) { if (ignoreAuraEffects[i].EffectInfo is AuraEffectInfoIgnoreTargetAuraState ignoreInfo) { if (ignoreInfo.IgnoredState == auraStateType) { return(true); } } } } } if (spell != null && spell.IsIgnoringAuraState(auraStateType)) { return(true); } return(false); }
private void HandleStateContainingAura(AuraApplication auraApplication, bool added) { AuraStateType stateType = auraApplication.Aura.AuraInfo.StateType; if (stateType == AuraStateType.None) { return; } if (added) { auraApplicationsByAuraState.Insert(stateType, auraApplication); ModifyAuraState(stateType, true); } else { auraApplicationsByAuraState.Delete(stateType, auraApplication); ModifyAuraState(stateType, auraApplicationsByAuraState.ContainsKey(stateType)); } }
public static AuraStateFlags AsFlag(this AuraStateType auraStateType) { switch (auraStateType) { case AuraStateType.None: return(0); case AuraStateType.Frozen: return(AuraStateFlags.Frozen); case AuraStateType.Defense: return(AuraStateFlags.Defense); case AuraStateType.Berserking: return(AuraStateFlags.Berserking); case AuraStateType.Judgement: return(AuraStateFlags.Judgement); case AuraStateType.Conflagrate: return(AuraStateFlags.Conflagrate); case AuraStateType.Swiftmend: return(AuraStateFlags.Swiftmend); case AuraStateType.DeadlyPoison: return(AuraStateFlags.DeadlyPoison); case AuraStateType.Enrage: return(AuraStateFlags.Enrage); case AuraStateType.Bleeding: return(AuraStateFlags.Bleeding); default: throw new ArgumentOutOfRangeException(nameof(auraStateType), auraStateType, null); } }
private void ModifyAuraState(AuraStateType flag, bool apply) { }
internal bool HasAuraState(AuraStateType auraStateType) => auraApplicationsByAuraState.ContainsKey(auraStateType);
internal bool IsIgnoringAuraState(AuraStateType auraStateType) => (spellValue.IgnoredAuraStates & auraStateType.AsFlag()) != 0;