diff options
3 files changed, 81 insertions, 0 deletions
diff --git a/sql/updates/world/master/2022_02_28_22_world_2020_10_11_01_world.sql b/sql/updates/world/master/2022_02_28_22_world_2020_10_11_01_world.sql new file mode 100644 index 00000000000..f00087afcbb --- /dev/null +++ b/sql/updates/world/master/2022_02_28_22_world_2020_10_11_01_world.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_utgarde_pinnacle_beast_mark'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(48876,'spell_utgarde_pinnacle_beast_mark'), +(59237,'spell_utgarde_pinnacle_beast_mark'); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.cpp new file mode 100644 index 00000000000..9047eca63f6 --- /dev/null +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.cpp @@ -0,0 +1,74 @@ +/* + * This file is part of the TrinityCore 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 General Public License as published by the + * Free Software Foundation; either version 2 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 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 <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "SpellInfo.h" +#include "SpellScript.h" +#include "Unit.h" +#include "utgarde_pinnacle.h" + +enum UtgardeSpells +{ + SPELL_BEAST_MARK_NORMAL = 59237, + SPELL_BEAST_MARK_DAMAGE_N = 48877, + SPELL_BEAST_MARK_DAMAGE_H = 48876 +}; + +// 48876 - Beast's Mark +// 59237 - Beast's Mark +class spell_utgarde_pinnacle_beast_mark : public AuraScript +{ + PrepareAuraScript(spell_utgarde_pinnacle_beast_mark); + + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo({ SPELL_BEAST_MARK_DAMAGE_N, SPELL_BEAST_MARK_DAMAGE_H }); + } + + bool CheckProc(ProcEventInfo& eventInfo) + { + if (DamageInfo* damageInfo = eventInfo.GetDamageInfo()) + { + Unit* attacker = damageInfo->GetAttacker(); + if (!attacker || !damageInfo->GetDamage()) + return false; + + return attacker->GetCreatureType() == CREATURE_TYPE_BEAST; + } + + return false; + } + + void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + Unit* target = GetTarget(); + uint32 spellId = (m_scriptSpellId == SPELL_BEAST_MARK_NORMAL) ? SPELL_BEAST_MARK_DAMAGE_N : SPELL_BEAST_MARK_DAMAGE_H; + target->CastSpell(target, spellId, aurEff); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_utgarde_pinnacle_beast_mark::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_utgarde_pinnacle_beast_mark::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + +void AddSC_utgarde_pinnacle() +{ + RegisterSpellScript(spell_utgarde_pinnacle_beast_mark); +} diff --git a/src/server/scripts/Northrend/northrend_script_loader.cpp b/src/server/scripts/Northrend/northrend_script_loader.cpp index 2ec9e55487d..954314d28e7 100644 --- a/src/server/scripts/Northrend/northrend_script_loader.cpp +++ b/src/server/scripts/Northrend/northrend_script_loader.cpp @@ -134,6 +134,7 @@ void AddSC_boss_palehoof(); void AddSC_boss_skadi(); void AddSC_boss_ymiron(); void AddSC_instance_utgarde_pinnacle(); +void AddSC_utgarde_pinnacle(); // Vault of Archavon void AddSC_boss_archavon(); void AddSC_boss_emalon(); @@ -328,6 +329,7 @@ void AddNorthrendScripts() AddSC_boss_skadi(); AddSC_boss_ymiron(); AddSC_instance_utgarde_pinnacle(); + AddSC_utgarde_pinnacle(); // Vault of Archavon AddSC_boss_archavon(); AddSC_boss_emalon(); |