*Fix a crash caused by charm spells.
--HG-- branch : trunk
This commit is contained in:
+14
-8
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user