Ejemplo n.º 1
0
        void OnPeriodic(AuraEffect aurEff)
        {
            Unit caster = GetCaster();

            if (!caster)
            {
                return;
            }
            //! HACK for self damage, is not blizz :/
            uint damage = (uint)caster.CountPctFromMaxHealth(aurEff.GetBaseAmount());

            Player modOwner = caster.GetSpellModOwner();

            if (modOwner)
            {
                modOwner.ApplySpellMod(GetId(), SpellModOp.Cost, ref damage);
            }

            SpellNonMeleeDamage damageInfo = new SpellNonMeleeDamage(caster, caster, GetSpellInfo(), GetAura().GetSpellVisual(), GetSpellInfo().SchoolMask, GetAura().GetCastGUID());

            damageInfo.periodicLog = true;
            damageInfo.damage      = damage;
            caster.DealSpellDamage(damageInfo, false);
            caster.SendSpellNonMeleeDamageLog(damageInfo);
        }
Ejemplo n.º 2
0
        void HandleUpdatePeriodic(AuraEffect aurEff)
        {
            Player playerTarget = GetUnitOwner().ToPlayer();

            if (playerTarget)
            {
                int baseAmount = aurEff.GetBaseAmount();
                int amount     = playerTarget.IsMoving() ?
                                 playerTarget.CalculateSpellDamage(playerTarget, GetSpellInfo(), aurEff.GetEffIndex(), baseAmount) :
                                 aurEff.GetAmount() - 1;
                aurEff.SetAmount(amount);
            }
        }
Ejemplo n.º 3
0
 void HandlePeriodic(AuraEffect aurEff)
 {
     PreventDefaultAction();
     if (aurEff.GetAmount() <= 0)
     {
         uint spellId = SpellIds.SniperTrainingBuffR1 + GetId() - SpellIds.SniperTrainingR1;
         Unit target  = GetTarget();
         target.CastSpell(target, spellId, true, null, aurEff);
         Player playerTarget = GetUnitOwner().ToPlayer();
         if (playerTarget)
         {
             int baseAmount = aurEff.GetBaseAmount();
             int amount     = playerTarget.CalculateSpellDamage(playerTarget, GetSpellInfo(), aurEff.GetEffIndex(), baseAmount);
             GetEffect(0).SetAmount(amount);
         }
     }
 }