void HandleScriptEffect(uint effIndex) { Unit caster = GetCaster(); Unit target = GetHitUnit(); if (target) { // Refresh corruption on target AuraEffect aurEff = target.GetAuraEffect(AuraType.PeriodicDamage, SpellFamilyNames.Warlock, new FlagArray128(0x2, 0, 0), caster.GetGUID()); if (aurEff != null) { uint damage = (uint)Math.Max(aurEff.GetAmount(), 0); Global.ScriptMgr.ModifyPeriodicDamageAurasTick(target, caster, ref damage); aurEff.SetDamage((int)(caster.SpellDamageBonusDone(target, aurEff.GetSpellInfo(), damage, DamageEffectType.DOT, GetEffectInfo(effIndex)) * aurEff.GetDonePct())); aurEff.CalculatePeriodic(caster, false, false); aurEff.GetBase().RefreshDuration(true); } } }