Core/Spells: Implement Periodic mechanics

Change behaviour of single target periodic aura ticks to be more blizzlike
Also add some missing handling of SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE
Fixes Deep wounds and Chimera Shot Serpent
Remove an ancient hack with Drain Soul, spell id 100001 can now be deleted from spell_dbc table
Allows Rolling dot mechanics and allows DK's to roll diseases with pestilence,
see link for info:

http://forums.elitistjerks.com/topic/82503-frost-dps-in-333this-will-be-a-day-long-remembered/page-88
This commit is contained in:
Unholychick committed 2014-06-07 19:13:57 +02:00
1 parent 84d0094ffa
commit d4bbc26261
12 files changed
+457 -275

No files matched your search

+10 -3
View File
@@ -405,10 +405,17 @@ class spell_warl_everlasting_affliction : public SpellScriptLoader
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
{
if (Unit* unitTarget = GetHitUnit())
Unit* caster = GetCaster();
if (Unit* target = GetHitUnit())
// Refresh corruption on target
if (AuraEffect* aur = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x2, 0, 0, GetCaster()->GetGUID()))
aur->GetBase()->RefreshDuration();
if (AuraEffect* aur = target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x2, 0, 0, caster->GetGUID()))
{
uint32 damage = std::max(aur->GetAmount(), 0);
sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage);
aur->SetDamage(caster->SpellDamageBonusDone(target, aur->GetSpellInfo(), damage, DOT) * aur->GetDonePct());
aur->CalculatePeriodic(caster, false, false);
aur->GetBase()->RefreshDuration(true);
}
}
void Register() override