Пример #1
0
        private void AddUnitToAura(Unit unit)
        {
            tempUpdatedTargets.Add(unit);

            if (applicationsByTargetId.ContainsKey(unit.Id) || unit.IsImmuneToAura(AuraInfo, Caster))
            {
                return;
            }

            // check effect for immunity
            int auraEffectMask = 0;

            for (int i = 0; i < effectInfos.Count; i++)
            {
                if (!unit.IsImmuneToAuraEffect(effectInfos[i], Caster))
                {
                    auraEffectMask = auraEffectMask.SetBit(i);
                }
            }

            if (auraEffectMask == 0)
            {
                return;
            }

            // check for non stackable auras
            if (unit != Owner)
            {
                for (int i = 0; i < unit.AuraApplications.Count; i++)
                {
                    if (!CanStackWith(unit.AuraApplications[i].Aura))
                    {
                        return;
                    }
                }
            }

            unit.Auras.ApplyAuraApplication(new AuraApplication(unit, this, auraEffectMask));
        }