/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license, you may redistribute it and/or modify it under version 2 of the License, or (at your option), any later version. * Copyright (C) 2008-2016 TrinityCore * Copyright (C) 2005-2009 MaNGOS */ /* Blasted_Lands Quest support: 3628. Teleporter to Rise of the Defiler. */ #include "Group.h" #include "Player.h" #include "ScriptedCreature.h" #include "ScriptMgr.h" #include "SpellScript.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*/) override { return ValidateSpellInfo({ SPELL_TELEPORT_SINGLE, SPELL_TELEPORT_SINGLE_IN_GROUP }); } void HandleScriptEffect(SpellEffIndex /* effIndex */) { if (Player* player = GetHitPlayer()) { if (Group* group = player->GetGroup()) { for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; 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() override { OnEffectHitTarget += SpellEffectFn(spell_razelikh_teleport_group_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; SpellScript* GetSpellScript() const override { return new spell_razelikh_teleport_group_SpellScript(); } }; void AddSC_blasted_lands() { new spell_razelikh_teleport_group(); }