/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2 * Copyright (C) 2008-2016 TrinityCore * Copyright (C) 2005-2009 MaNGOS */ /* Blasted_Lands Quest support: 3628. Teleporter to Rise of the Defiler. */ #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" #include "SpellScript.h" #include "Player.h" #include "Group.h" /*##### # spell_razelikh_teleport_group #####*/ enum DeathlyUsher { SPELL_TELEPORT_SINGLE = 12885, SPELL_TELEPORT_SINGLE_IN_GROUP = 13142, SPELL_TELEPORT_GROUP = 27686 }; class spell_razelikh_teleport_group : public SpellScriptLoader { public: spell_razelikh_teleport_group() : SpellScriptLoader("spell_razelikh_teleport_group") { } class spell_razelikh_teleport_group_SpellScript : public SpellScript { PrepareSpellScript(spell_razelikh_teleport_group_SpellScript); bool Validate(SpellInfo const* /*spell*/) { if (!sSpellMgr->GetSpellInfo(SPELL_TELEPORT_SINGLE) && !sSpellMgr->GetSpellInfo(SPELL_TELEPORT_SINGLE_IN_GROUP)) return false; return true; } void HandleScriptEffect(SpellEffIndex /* effIndex */) { if (Player* player = GetHitPlayer()) { if (Group* group = player->GetGroup()) { for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) if (Player* member = itr->GetSource()) if (member->IsWithinDistInMap(player, 20.0f) && !member->isDead()) member->CastSpell(member, SPELL_TELEPORT_SINGLE_IN_GROUP, true); } else player->CastSpell(player, SPELL_TELEPORT_SINGLE, true); } } void Register() { OnEffectHitTarget += SpellEffectFn(spell_razelikh_teleport_group_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; SpellScript* GetSpellScript() const { return new spell_razelikh_teleport_group_SpellScript(); } }; void AddSC_blasted_lands() { new spell_razelikh_teleport_group(); }