SpellCastResult CheckTarget() { if (IsVampire(GetExplTargetUnit())) { SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_CANT_TARGET_VAMPIRES); return SPELL_FAILED_CUSTOM_ERROR; } return SPELL_CAST_OK; }
void OnCast() { if (GetCaster()->GetTypeId() != TYPEID_PLAYER) return; if (IsVampire(GetHitUnit())) { PreventHitDamage(); PreventHitDefaultEffect(EFFECT_1); Spell::SendCastResult(GetCaster()->ToPlayer(), GetSpellInfo(), 0, SPELL_FAILED_BAD_TARGETS); return; } SpellEntry const* spell = sSpellStore.LookupEntry(SPELL_FRENZIED_BLOODTHIRST); spell = sSpellMgr->GetSpellForDifficultyFromSpell(spell, GetCaster()); GetCaster()->RemoveAura(spell->Id, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL); GetCaster()->CastSpell(GetCaster(), SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR, true); // Presence of the Darkfallen buff on Blood-Queen if (GetCaster()->GetMap()->IsHeroic()) GetCaster()->CastSpell(GetCaster(), SPELL_PRESENCE_OF_THE_DARKFALLEN, true); // Shadowmourne questline if (GetCaster()->ToPlayer()->GetQuestStatus(QUEST_BLOOD_INFUSION) == QUEST_STATUS_INCOMPLETE) { if (Aura* aura = GetCaster()->GetAura(SPELL_GUSHING_WOUND)) { if (aura->GetStackAmount() == 3) { GetCaster()->CastSpell(GetCaster(), SPELL_THIRST_QUENCHED, true); GetCaster()->RemoveAura(aura); } else GetCaster()->CastSpell(GetCaster(), SPELL_GUSHING_WOUND, true); } } if (InstanceScript* instance = GetCaster()->GetInstanceScript()) if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL))) bloodQueen->AI()->SetGUID(GetHitUnit()->GetGUID(), GUID_VAMPIRE); }