Example #1
0
            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));
                }
            }
Example #3
0
        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);
Example #6
0
 internal bool IsIgnoringAuraState(AuraStateType auraStateType) => (spellValue.IgnoredAuraStates & auraStateType.AsFlag()) != 0;