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(); }
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); } }