aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/SpellEffects.cpp')
-rw-r--r--src/game/SpellEffects.cpp51
1 files changed, 44 insertions, 7 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 3efd29c6e69..edc17b35b19 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -703,6 +703,8 @@ void Spell::EffectDummy(uint32 i)
uint32 spell_id = 0;
int32 bp = 0;
+ bool triggered = true;
+ SpellCastTargets targets;
// selection by spell family
switch(m_spellInfo->SpellFamilyName)
@@ -1908,17 +1910,52 @@ void Spell::EffectDummy(uint32 i)
}
return;
}
+ // Hungering Cold
+ if (m_spellInfo->SpellFamilyFlags[1] & 0x1000)
+ {
+ unitTarget->CastSpell(m_caster, 51209, true);
+ return;
+ }
// Death Grip
if(m_spellInfo->Id == 49560)
{
unitTarget->CastSpell(m_caster, damage, true);
return;
}
- // Hungering Cold
- if (m_spellInfo->SpellFamilyFlags[1] & 0x1000)
+ else if(m_spellInfo->Id == 46584) // Raise dead
{
- unitTarget->CastSpell(m_caster, 51209, true);
- return;
+ if ( m_caster->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ // Do we have talent Master of Ghouls?
+ if(m_caster->HasAura(52143))
+ // summon as pet
+ bp = 52150;
+ else
+ // or guardian
+ bp = 46585;
+
+ if (m_targets.HasDst())
+ {
+ targets.setDestination(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ);
+ }
+ else
+ {
+ targets.setDestination(m_caster);
+ // Corpse not found - take reagents ( only not triggered cast can take them)
+ triggered = false;
+ }
+ // Remove cooldown - summon spellls have category
+ ((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id,true);
+ spell_id=48289;
+ }
+ // Raise dead - take reagents and trigger summon spells
+ else if (m_spellInfo->Id ==48289)
+ {
+ if (m_targets.HasDst())
+ targets.setDestination(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ);
+
+ spell_id = m_currentBasePoints[0];
}
break;
}
@@ -1934,10 +1971,9 @@ void Spell::EffectDummy(uint32 i)
return;
}
- Spell* spell = new Spell(m_caster, spellInfo, true, m_originalCasterGUID, NULL, true);
- if(bp) spell->m_currentBasePoints[0] = bp;
- SpellCastTargets targets;
targets.setUnitTarget(unitTarget);
+ Spell* spell = new Spell(m_caster, spellInfo, triggered, m_originalCasterGUID, NULL, true);
+ if(bp) spell->m_currentBasePoints[0] = bp;
spell->prepare(&targets);
}
@@ -5379,6 +5415,7 @@ void Spell::EffectScriptEffect(uint32 effIndex)
m_caster->CastSpell(unitTarget, 55095, true);
}
}
+ break;
}
}