diff options
| author | megamage <none@none> | 2009-07-01 17:30:01 -0500 |
|---|---|---|
| committer | megamage <none@none> | 2009-07-01 17:30:01 -0500 |
| commit | 177297973af60e2253e001c6babe825b63a3c3c6 (patch) | |
| tree | 8f1833ffe466233c58cf152b8faea7d00ba1a9a9 | |
| parent | 69f36d7af4724b68c7a3a104b2913d1e2743971b (diff) | |
*Fix a crash caused by charm spells.
--HG--
branch : trunk
| -rw-r--r-- | src/game/Spell.cpp | 22 | ||||
| -rw-r--r-- | src/game/SpellAuras.cpp | 9 |
2 files changed, 14 insertions, 17 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 214fc2cc0bc..2e7a0cd12d9 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4934,17 +4934,22 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_AURA_MOD_POSSESS: case SPELL_AURA_MOD_CHARM: - //case SPELL_AURA_MOD_POSSESS_PET: + case SPELL_AURA_MOD_POSSESS_PET: + case SPELL_AURA_AOE_CHARM: { - if(m_caster->GetPetGUID()) - return SPELL_FAILED_ALREADY_HAVE_SUMMON; - - if(m_caster->GetCharmGUID()) - return SPELL_FAILED_ALREADY_HAVE_CHARM; - if(m_caster->GetCharmerGUID()) return SPELL_FAILED_CHARMED; + if(m_spellInfo->EffectApplyAuraName[i] == SPELL_AURA_MOD_CHARM + || m_spellInfo->EffectApplyAuraName[i] == SPELL_AURA_MOD_POSSESS) + { + if(m_caster->GetPetGUID()) + return SPELL_FAILED_ALREADY_HAVE_SUMMON; + + if(m_caster->GetCharmGUID()) + return SPELL_FAILED_ALREADY_HAVE_CHARM; + } + Unit *target = m_targets.getUnitTarget(); if(!target || target->GetTypeId() == TYPEID_UNIT && ((Creature*)target)->isVehicle()) @@ -4953,7 +4958,8 @@ SpellCastResult Spell::CheckCast(bool strict) if(target->GetCharmerGUID()) return SPELL_FAILED_CHARMED; - if(int32(target->getLevel()) > CalculateDamage(i, target)) + int32 damage = CalculateDamage(i, target); + if(damage && int32(target->getLevel()) > damage) return SPELL_FAILED_HIGHLEVEL; break; diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index f364f9d9d6b..e3f2b3df169 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -7233,9 +7233,6 @@ void AuraEffect::HandleModPossess(bool apply, bool Real, bool /*changeAmount*/) if(!Real) return; - if(m_target->getLevel() > m_amount) - return; - Unit* caster = GetCaster(); if(caster && caster->GetTypeId() == TYPEID_UNIT) { @@ -7285,9 +7282,6 @@ void AuraEffect::HandleModCharm(bool apply, bool Real, bool /*changeAmount*/) Unit* caster = GetCaster(); - if(m_amount && int32(m_target->getLevel()) > m_amount) - return; - if(apply) m_target->SetCharmedBy(caster, CHARM_TYPE_CHARM); else @@ -7299,9 +7293,6 @@ void AuraEffect::HandleCharmConvert(bool apply, bool Real, bool /*changeAmount*/ if(!Real) return; - if(m_amount && int32(m_target->getLevel()) > m_amount) - return; - Unit* caster = GetCaster(); if(apply) |
