From f829ee0dc0e669a9d7ca20710dc2a9fcba48f80f Mon Sep 17 00:00:00 2001 From: QAston Date: Wed, 8 Jul 2009 22:26:46 +0200 Subject: *Correct target requirement for eyes of the beast and add some crash preventing checks to charm code. --HG-- branch : trunk --- src/game/Spell.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/game/Spell.cpp') diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index e5c0550d239..610e6af6b06 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4998,17 +4998,22 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_ALREADY_HAVE_CHARM; } - Unit *target = m_targets.getUnitTarget(); - if(!target || target->GetTypeId() == TYPEID_UNIT - && ((Creature*)target)->isVehicle()) - return SPELL_FAILED_BAD_IMPLICIT_TARGETS; + // Skip TARGET_UNIT_PET - pet is always valid + if (m_spellInfo->EffectImplicitTargetA[i] != TARGET_UNIT_PET + && m_spellInfo->EffectImplicitTargetB[i] != TARGET_UNIT_PET) + { + Unit *target = m_targets.getUnitTarget(); + if(!target || target->GetTypeId() == TYPEID_UNIT + && ((Creature*)target)->isVehicle()) + return SPELL_FAILED_BAD_IMPLICIT_TARGETS; - if(target->GetCharmerGUID()) - return SPELL_FAILED_CHARMED; + if(target->GetCharmerGUID()) + return SPELL_FAILED_CHARMED; - int32 damage = CalculateDamage(i, target); - if(damage && int32(target->getLevel()) > damage) - return SPELL_FAILED_HIGHLEVEL; + int32 damage = CalculateDamage(i, target); + if(damage && int32(target->getLevel()) > damage) + return SPELL_FAILED_HIGHLEVEL; + } break; } -- cgit v1.2.3