diff options
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r-- | src/game/Spell.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index f352a9571d2..3dd11e105c3 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4158,9 +4158,6 @@ SpellCastResult Spell::CheckCast(bool strict) { switch(m_spellInfo->EffectMiscValueB[i]) { - case SUMMON_TYPE_POSESSED: - case SUMMON_TYPE_RACE_CONTROLLER: - case SUMMON_TYPE_STEAM_TONK: case SUMMON_TYPE_DEMON: case SUMMON_TYPE_SUMMON: { @@ -4172,6 +4169,21 @@ SpellCastResult Spell::CheckCast(bool strict) break; } } + SummonPropertiesEntry const *SummonProperties = sSummonPropertiesStore.LookupEntry(m_spellInfo->EffectMiscValueB[i]); + if(!SummonProperties) + break; + switch(SummonProperties->Group) + { + case SUMMON_TYPE_POSSESSED: + { + if(m_caster->GetPetGUID()) + return SPELL_FAILED_ALREADY_HAVE_SUMMON; + + if(m_caster->GetCharmGUID()) + return SPELL_FAILED_ALREADY_HAVE_CHARM; + break; + } + } break; } // Not used for summon? |