aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormaximius <none@none>2009-11-17 19:28:36 -0800
committermaximius <none@none>2009-11-17 19:28:36 -0800
commitce0f37bed3d3a7a6b5a8415a247fad600b99b327 (patch)
tree13e7f9191abbbcd692936376ae72eee18a3e7539 /src
parent131b66c8b49a3dd4807bed5d29cdd8031fb7ac88 (diff)
*Correct Divine Storm heal, thanks lobuz
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellMgr.cpp5
-rw-r--r--src/game/Unit.cpp18
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