[c12612] Implement some spells for Black Temple

This commit is contained in:
Xfurry 2013-05-31 11:59:26 +01:00 committed by Antz
parent 8a3be45af0
commit a7a0dad043
4 changed files with 34 additions and 1 deletions

View file

@ -1672,6 +1672,10 @@ void Spell::SetTargetMap(SpellEffectIndex effIndex, uint32 targetMode, UnitList&
switch (targetMode)
{
case TARGET_RANDOM_NEARBY_LOC:
// special case for Fatal Attraction (BT, Mother Shahraz)
if (m_spellInfo->Id == 40869)
radius = 30.0f;
// Get a random point in circle. Use sqrt(rand) to correct distribution when converting polar to Cartesian coordinates.
radius *= sqrtf(rand_norm_f());
// no 'break' expected since we use code in case TARGET_RANDOM_CIRCUMFERENCE_POINT!!!
@ -7973,6 +7977,7 @@ void Spell::GetSpellRangeAndRadius(SpellEffectEntry const* spellEffect, float& r
case 30004: // Flame Wreath (Karazhan, Shade of Aran)
case 31298: // Sleep (Hyjal Summit, Anetheron)
case 39992: // Needle Spine Targeting (BT, Warlord Najentus)
case 40869: // Fatal Attraction (BT, Mother Shahraz)
case 41303: // Soul Drain (BT, Reliquary of Souls)
case 41376: // Spite (BT, Reliquary of Souls)
case 51904: // Summon Ghouls On Scarlet Crusade

View file

@ -1501,6 +1501,14 @@ void Spell::EffectDummy(SpellEffectEntry const* effect)
m_caster->CastSpell(unitTarget, 40932, true);
return;
}
case 40869: // Fatal Attraction
{
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
return;
m_caster->CastSpell(unitTarget, 41001, true);
return;
}
case 40962: // Blade's Edge Terrace Demon Boss Summon Branch
{
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
@ -1517,6 +1525,16 @@ void Spell::EffectDummy(SpellEffectEntry const* effect)
unitTarget->CastSpell(unitTarget, spell_id, true);
return;
}
case 41333: // Empyreal Equivalency
{
if (!unitTarget)
return;
// Equilize the health of all targets based on the corresponding health percent
float health_diff = (float)unitTarget->GetMaxHealth() / (float)m_caster->GetMaxHealth();
unitTarget->SetHealth(m_caster->GetHealth() * health_diff);
return;
}
case 42287: // Salvage Wreckage
{
if (m_caster->GetTypeId() != TYPEID_PLAYER)

View file

@ -2138,6 +2138,16 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
(spellInfo_2->Id == 23014 && spellInfo_1->Id == 19832))
return false;
// Shade Soul Channel and Akama Soul Channel
if ((spellInfo_1->Id == 40401 && spellInfo_2->Id == 40447) ||
(spellInfo_2->Id == 40401 && spellInfo_1->Id == 40447))
return false;
// Eye Blast visual and Eye Blast
if ((spellInfo_1->Id == 39908 && spellInfo_2->Id == 40017) ||
(spellInfo_2->Id == 39908 && spellInfo_1->Id == 40017))
return false;
break;
}
case SPELLFAMILY_MAGE:

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "12611"
#define REVISION_NR "12612"
#endif // __REVISION_NR_H__