SpellCastResult CheckCast() { Unit* caster = GetCaster(); if (caster->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_DONT_REPORT; if (!GetExplTargetUnit()) return SPELL_FAILED_BAD_IMPLICIT_TARGETS; if (Creature* target = GetExplTargetUnit()->ToCreature()) { if (target->getLevel() > caster->getLevel()) return SPELL_FAILED_HIGHLEVEL; // use SMSG_PET_TAME_FAILURE? if (!target->GetCreatureTemplate()->IsTameable(caster->ToPlayer()->CanTameExoticPets())) return SPELL_FAILED_BAD_TARGETS; if (caster->GetPetGUID()) return SPELL_FAILED_ALREADY_HAVE_SUMMON; if (caster->GetCharmGUID()) return SPELL_FAILED_ALREADY_HAVE_CHARM; } else return SPELL_FAILED_BAD_IMPLICIT_TARGETS; return SPELL_CAST_OK; }
SpellCastResult HandleCheckCast() { Unit *caster = GetCaster(); if (caster->GetPetGUID()) return SPELL_FAILED_ALREADY_HAVE_SUMMON; if (caster->GetCharmGUID()) return SPELL_FAILED_ALREADY_HAVE_CHARM; return SPELL_CAST_OK; }