diff options
Diffstat (limited to 'src/game/SpellEffects.cpp')
-rw-r--r-- | src/game/SpellEffects.cpp | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index b5f0fe6ef47..961dd3aa9e9 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3367,23 +3367,9 @@ void Spell::EffectSummonType(uint32 i) case SUMMON_CATEGORY_PET: SummonGuardian(entry, properties); break; - case SUMMON_CATEGORY_POSSESSED: - { - if(m_caster->GetTypeId() != TYPEID_PLAYER) - return; - - float x, y, z; - m_caster->GetClosePoint(x, y, z, DEFAULT_WORLD_OBJECT_SIZE); - - int32 duration = GetSpellDuration(m_spellInfo); - - Pet* pet = ((Player*)m_caster)->SummonPet(entry, x, y, z, m_caster->GetOrientation(), POSSESSED_PET, duration); - if(!pet) - return; - - pet->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id); + case SUMMON_CATEGORY_PUPPET: + summon = m_caster->GetMap()->SummonCreature(entry, x, y, z, m_caster->GetOrientation(), properties, duration, m_originalCaster); break; - } case SUMMON_CATEGORY_VEHICLE: { float x, y, z; @@ -4877,6 +4863,21 @@ void Spell::EffectScriptEffect(uint32 effIndex) m_originalCaster->CastSpell(m_originalCaster, damage, false); break; } + // Summon Ghouls On Scarlet Crusade + case 51904: + { + if(!m_targets.HasDst()) + return; + + float x, y, z; + float radius = GetSpellRadius(m_spellInfo, effIndex, true); + for(uint32 i = 0; i < 15; ++i) + { + m_caster->GetRandomPoint(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ, radius, x, y, z); + m_caster->CastSpell(x, y, z, 54522, true); + } + break; + } // Death Gate case 52751: { |