diff options
author | maximius <none@none> | 2009-11-17 19:28:36 -0800 |
---|---|---|
committer | maximius <none@none> | 2009-11-17 19:28:36 -0800 |
commit | ce0f37bed3d3a7a6b5a8415a247fad600b99b327 (patch) | |
tree | 13e7f9191abbbcd692936376ae72eee18a3e7539 /src | |
parent | 131b66c8b49a3dd4807bed5d29cdd8031fb7ac88 (diff) |
*Correct Divine Storm heal, thanks lobuz
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellMgr.cpp | 5 | ||||
-rw-r--r-- | src/game/Unit.cpp | 18 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index b24888c10f2..8260bc7293a 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -3651,7 +3651,7 @@ void SpellMgr::LoadSpellCustomAttr() case 20335: case 20336: case 20337: - // Entries were not updated after spell effect change, we have to do that manually:/ + // Entries were not updated after spell effect change, we have to do that manually :/ spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_CAN_PROC_TRIGGERED; break; case 16007: // Draco-Incarcinatrix 900 @@ -3718,7 +3718,8 @@ void SpellMgr::LoadSpellCustomAttr() case 28542: // Life Drain - Sapphiron spellInfo->MaxAffectedTargets = 3; break; - case 38310: //Multi-Shot + case 38310: // Multi-Shot + case 53385: // Divine Storm (Damage) spellInfo->MaxAffectedTargets = 4; break; case 42005: // Bloodboil diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 3961e4601bf..260e3127011 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -650,6 +650,22 @@ void Unit::DealDamageMods(Unit *pVictim, uint32 &damage, uint32* absorb) uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellEntry const *spellProto, bool durabilityLoss) { + // if attacker is a player and spell is not empty/fail + if (GetTypeId() == TYPEID_PLAYER && spellProto) + { + // on divine storm dealed damage - heal + if (spellProto->SpellFamilyName == SPELLFAMILY_PALADIN && spellProto->SpellFamilyFlags[1] & 0x20000) + { + Unit *pRaidGrpMember = GetNextRandomRaidMemberOrPet(30.0f); + int32 divineDmg = damage / 4; + + if (!pRaidGrpMember) + pRaidGrpMember = this; + + CastCustomSpell(pRaidGrpMember, 54172, &divineDmg, 0, 0, true); + } + } + if(pVictim->GetTypeId() == TYPEID_UNIT && ((Creature*)pVictim)->IsAIEnabled) ((Creature*)pVictim)->AI()->DamageTaken(this, damage); @@ -6256,7 +6272,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger triggered_spell_id = 54203; break; } - switch(dummySpell->Id) + switch (dummySpell->Id) { // Heart of the Crusader case 20335: // rank 1 |