[8854] Implement heal back part of spell 48181.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>

I choice maybe less clear way store future heal amount, but with avoid use additional fields for auras.
This commit is contained in:
Astellar 2009-11-21 11:18:55 +03:00 committed by VladimirMangos
parent b9419c0605
commit aa759d8161
3 changed files with 26 additions and 3 deletions

View file

@ -992,6 +992,13 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
if (m_canTrigger && missInfo != SPELL_MISS_REFLECT) if (m_canTrigger && missInfo != SPELL_MISS_REFLECT)
caster->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, damageInfo.damage, m_attackType, m_spellInfo); caster->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, damageInfo.damage, m_attackType, m_spellInfo);
// Haunt (NOTE: for avoid use additional field damage stored in dummy value (replace unused 100%)
// apply before deal damage because aura can be removed at target kill
if (m_spellInfo->SpellFamilyName == SPELLFAMILY_WARLOCK && m_spellInfo->SpellIconID == 3172 &&
(m_spellInfo->SpellFamilyFlags & UI64LIT(0x0004000000000000)))
if(Aura* dummy = unitTarget->GetDummyAura(m_spellInfo->Id))
dummy->GetModifier()->m_amount = damageInfo.damage;
caster->DealSpellDamage(&damageInfo, true); caster->DealSpellDamage(&damageInfo, true);
} }
// Passive spell hits/misses or active spells only misses (only triggers) // Passive spell hits/misses or active spells only misses (only triggers)

View file

@ -2488,6 +2488,22 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
} }
case SPELLFAMILY_MAGE: case SPELLFAMILY_MAGE:
break; break;
case SPELLFAMILY_WARLOCK:
{
// Haunt
if (GetSpellProto()->SpellIconID == 3172 && (GetSpellProto()->SpellFamilyFlags & UI64LIT(0x0004000000000000)))
{
// NOTE: for avoid use additional field damage stored in dummy value (replace unused 100%
if (apply)
m_modifier.m_amount = 0; // use value as damage counter instead redundent 100% percent
else
{
int32 bp0 = m_modifier.m_amount;
caster->CastCustomSpell(caster,48210,&bp0,NULL,NULL,true);
}
}
break;
}
case SPELLFAMILY_PRIEST: case SPELLFAMILY_PRIEST:
{ {
// Pain and Suffering // Pain and Suffering
@ -2510,8 +2526,6 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
} }
break; break;
} }
case SPELLFAMILY_PALADIN:
break;
case SPELLFAMILY_DRUID: case SPELLFAMILY_DRUID:
{ {
switch(GetId()) switch(GetId())
@ -2642,6 +2656,8 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
} }
case SPELLFAMILY_HUNTER: case SPELLFAMILY_HUNTER:
break; break;
case SPELLFAMILY_PALADIN:
break;
case SPELLFAMILY_SHAMAN: case SPELLFAMILY_SHAMAN:
{ {
// Improved Weapon Totems // Improved Weapon Totems

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "8853" #define REVISION_NR "8854"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__