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