diff --git a/data/sql/updates/pending_db_world/rev_1664723236445660400.sql b/data/sql/updates/pending_db_world/rev_1664723236445660400.sql new file mode 100644 index 000000000..6d0283f91 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1664723236445660400.sql @@ -0,0 +1,8 @@ +-- +UPDATE `spell_dbc` SET `MaxTargets`=0 WHERE `id`=24019; + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=24071; + +DELETE FROM `spell_script_names` WHERE `spell_id`=24019; +INSERT INTO `spell_script_names` VALUES +(24019,'spell_axe_flurry'); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp new file mode 100644 index 000000000..b8c390fe2 --- /dev/null +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp @@ -0,0 +1,58 @@ +/* + * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by the + * Free Software Foundation; either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "GridNotifiers.h" +#include "ScriptMgr.h" +#include "SpellScript.h" + +enum Spells +{ + SPELL_AXE_FLURRY_STUN = 24020 +}; + +class spell_axe_flurry : public SpellScript +{ + PrepareSpellScript(spell_axe_flurry); + + void FilterTargets(std::list& targets) + { + targets.remove_if(Acore::UnitAuraCheck(true, SPELL_AXE_FLURRY_STUN)); + Acore::Containers::RandomResize(targets, 1); + } + + void HandleEffect(SpellEffIndex /*effIndex*/) + { + if (Unit* caster = GetCaster()) + { + if (Unit* target = GetHitUnit()) + { + caster->CastSpell(target, SPELL_AXE_FLURRY_STUN, true); + } + } + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_axe_flurry::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_axe_flurry::HandleEffect, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +void AddSC_zulgurub() +{ + RegisterSpellScript(spell_axe_flurry); +} diff --git a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp index e8cf955c9..8bd3f42b9 100644 --- a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp +++ b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp @@ -141,6 +141,7 @@ void AddSC_boss_hazzarah(); void AddSC_boss_renataki(); void AddSC_boss_wushoolay(); void AddSC_instance_zulgurub(); +void AddSC_zulgurub(); // void AddSC_alterac_mountains(); void AddSC_arathi_highlands(); void AddSC_blasted_lands(); @@ -292,6 +293,7 @@ void AddEasternKingdomsScripts() AddSC_boss_renataki(); AddSC_boss_wushoolay(); AddSC_instance_zulgurub(); + AddSC_zulgurub(); //AddSC_alterac_mountains(); AddSC_arathi_highlands(); AddSC_blasted_lands();