private void HandleAuraEffects(AuraApplication auraApplication, bool added)
            {
                if (added)
                {
                    for (int i = 0; i < auraApplication.Aura.Effects.Count; i++)
                    {
                        if (auraApplication.EffectsToApply.HasBit(i) && !auraApplication.AppliedEffectMask.HasBit(i))
                        {
                            auraEffectsByAuraType.Insert(auraApplication.Aura.Effects[i].EffectInfo.AuraEffectType, auraApplication.Aura.Effects[i]);
                            tempAuraEffectsToHandle.Add(i);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < auraApplication.Aura.EffectsInfos.Count; i++)
                    {
                        if (auraApplication.AppliedEffectMask.HasBit(i))
                        {
                            auraEffectsByAuraType.Delete(auraApplication.Aura.Effects[i].EffectInfo.AuraEffectType, auraApplication.Aura.Effects[i]);
                            tempAuraEffectsToHandle.Add(i);
                        }
                    }
                }

                for (int i = 0; i < tempAuraEffectsToHandle.Count; i++)
                {
                    auraApplication.HandleEffect(tempAuraEffectsToHandle[i], added, tempAuraHandleGroups);
                }

                tempAuraEffectsToHandle.Clear();
                tempAuraHandleGroups.Clear();
            }
Пример #2
0
            private void HandleAuraEffects(AuraApplication auraApplication, bool added)
            {
                var auraEffectsToHandle = new List <int>();
                var auraHandleGroups    = new HashSet <AuraEffectHandleGroup>();

                if (added)
                {
                    for (int i = 0; i < auraApplication.Aura.Effects.Count; i++)
                    {
                        if (auraApplication.EffectsToApply.HasBit(i) && !auraApplication.AppliedEffectMask.HasBit(i))
                        {
                            auraEffectsByAuraType.Insert(auraApplication.Aura.Effects[i].EffectInfo.AuraEffectType, auraApplication.Aura.Effects[i]);
                            auraEffectsToHandle.Add(i);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < auraApplication.Aura.EffectsInfos.Count; i++)
                    {
                        if (auraApplication.AppliedEffectMask.HasBit(i))
                        {
                            auraEffectsByAuraType.Delete(auraApplication.Aura.Effects[i].EffectInfo.AuraEffectType, auraApplication.Aura.Effects[i]);
                            auraEffectsToHandle.Add(i);
                        }
                    }
                }

                for (int i = 0; i < auraEffectsToHandle.Count; i++)
                {
                    auraApplication.HandleEffect(auraEffectsToHandle[i], added, auraHandleGroups);
                }
            }