aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/Spell.cpp22
-rw-r--r--src/game/SpellAuras.cpp9
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)