diff options
-rw-r--r-- | sql/updates/world/master/2024_05_02_00_world.sql | 15 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_evoker.cpp | 89 |
2 files changed, 92 insertions, 12 deletions
diff --git a/sql/updates/world/master/2024_05_02_00_world.sql b/sql/updates/world/master/2024_05_02_00_world.sql new file mode 100644 index 00000000000..b36daf7053f --- /dev/null +++ b/sql/updates/world/master/2024_05_02_00_world.sql @@ -0,0 +1,15 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_evo_blessing_of_the_bronze'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(381732, 'spell_evo_blessing_of_the_bronze'), +(381741, 'spell_evo_blessing_of_the_bronze'), +(381746, 'spell_evo_blessing_of_the_bronze'), +(381748, 'spell_evo_blessing_of_the_bronze'), +(381749, 'spell_evo_blessing_of_the_bronze'), +(381750, 'spell_evo_blessing_of_the_bronze'), +(381751, 'spell_evo_blessing_of_the_bronze'), +(381752, 'spell_evo_blessing_of_the_bronze'), +(381753, 'spell_evo_blessing_of_the_bronze'), +(381754, 'spell_evo_blessing_of_the_bronze'), +(381756, 'spell_evo_blessing_of_the_bronze'), +(381757, 'spell_evo_blessing_of_the_bronze'), +(381758, 'spell_evo_blessing_of_the_bronze'); diff --git a/src/server/scripts/Spells/spell_evoker.cpp b/src/server/scripts/Spells/spell_evoker.cpp index adb1794a7bc..485c082a1ee 100644 --- a/src/server/scripts/Spells/spell_evoker.cpp +++ b/src/server/scripts/Spells/spell_evoker.cpp @@ -32,18 +32,31 @@ enum EvokerSpells { - SPELL_EVOKER_BLAST_FURNACE = 375510, - SPELL_EVOKER_ENERGIZING_FLAME = 400006, - SPELL_EVOKER_FIRE_BREATH_DAMAGE = 357209, - SPELL_EVOKER_GLIDE_KNOCKBACK = 358736, - SPELL_EVOKER_HOVER = 358267, - SPELL_EVOKER_LIVING_FLAME = 361469, - SPELL_EVOKER_LIVING_FLAME_DAMAGE = 361500, - SPELL_EVOKER_LIVING_FLAME_HEAL = 361509, - SPELL_EVOKER_PERMEATING_CHILL_TALENT = 370897, - SPELL_EVOKER_PYRE_DAMAGE = 357212, - SPELL_EVOKER_SCOURING_FLAME = 378438, - SPELL_EVOKER_SOAR_RACIAL = 369536 + SPELL_EVOKER_BLAST_FURNACE = 375510, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DK = 381732, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DH = 381741, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DRUID = 381746, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_EVOKER = 381748, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_HUNTER = 381749, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_MAGE = 381750, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_MONK = 381751, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_PALADIN = 381752, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_PRIEST = 381753, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_ROGUE = 381754, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_SHAMAN = 381756, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_WARLOCK = 381757, + SPELL_EVOKER_BLESSING_OF_THE_BRONZE_WARRIOR = 381758, + SPELL_EVOKER_ENERGIZING_FLAME = 400006, + SPELL_EVOKER_FIRE_BREATH_DAMAGE = 357209, + SPELL_EVOKER_GLIDE_KNOCKBACK = 358736, + SPELL_EVOKER_HOVER = 358267, + SPELL_EVOKER_LIVING_FLAME = 361469, + SPELL_EVOKER_LIVING_FLAME_DAMAGE = 361500, + SPELL_EVOKER_LIVING_FLAME_HEAL = 361509, + SPELL_EVOKER_PERMEATING_CHILL_TALENT = 370897, + SPELL_EVOKER_PYRE_DAMAGE = 357212, + SPELL_EVOKER_SCOURING_FLAME = 378438, + SPELL_EVOKER_SOAR_RACIAL = 369536 }; enum EvokerSpellLabels @@ -67,6 +80,57 @@ class spell_evo_azure_strike : public SpellScript } }; +// 381732 - Blessing of the Bronze (Bronze) +// 381741 - Blessing of the Bronze (Bronze) +// 381746 - Blessing of the Bronze (Bronze) +// 381748 - Blessing of the Bronze (Bronze) +// 381749 - Blessing of the Bronze (Bronze) +// 381750 - Blessing of the Bronze (Bronze) +// 381751 - Blessing of the Bronze (Bronze) +// 381752 - Blessing of the Bronze (Bronze) +// 381753 - Blessing of the Bronze (Bronze) +// 381754 - Blessing of the Bronze (Bronze) +// 381756 - Blessing of the Bronze (Bronze) +// 381757 - Blessing of the Bronze (Bronze) +// 381758 - Blessing of the Bronze (Bronze) +class spell_evo_blessing_of_the_bronze : public SpellScript +{ + void RemoveInvalidTargets(std::list<WorldObject*>& targets) const + { + targets.remove_if([&](WorldObject const* target) + { + Unit const* unitTarget = target->ToUnit(); + if (!unitTarget) + return true; + + switch (GetSpellInfo()->Id) + { + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DK: return unitTarget->GetClass() != CLASS_DEATH_KNIGHT; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DH: return unitTarget->GetClass() != CLASS_DEMON_HUNTER; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_DRUID: return unitTarget->GetClass() != CLASS_DRUID; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_EVOKER: return unitTarget->GetClass() != CLASS_EVOKER; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_HUNTER: return unitTarget->GetClass() != CLASS_HUNTER; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_MAGE: return unitTarget->GetClass() != CLASS_MAGE; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_MONK: return unitTarget->GetClass() != CLASS_MONK; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_PALADIN: return unitTarget->GetClass() != CLASS_PALADIN; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_PRIEST: return unitTarget->GetClass() != CLASS_PRIEST; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_ROGUE: return unitTarget->GetClass() != CLASS_ROGUE; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_SHAMAN: return unitTarget->GetClass() != CLASS_SHAMAN; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_WARLOCK: return unitTarget->GetClass() != CLASS_WARLOCK; + case SPELL_EVOKER_BLESSING_OF_THE_BRONZE_WARRIOR: return unitTarget->GetClass() != CLASS_WARRIOR; + default: + break; + } + return true; + }); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_evo_blessing_of_the_bronze::RemoveInvalidTargets, EFFECT_ALL, TARGET_UNIT_CASTER_AREA_RAID); + } +}; + // 370455 - Charged Blast class spell_evo_charged_blast : public AuraScript { @@ -302,6 +366,7 @@ class spell_evo_scouring_flame : public SpellScript void AddSC_evoker_spell_scripts() { RegisterSpellScript(spell_evo_azure_strike); + RegisterSpellScript(spell_evo_blessing_of_the_bronze); RegisterSpellScript(spell_evo_charged_blast); RegisterSpellScript(spell_evo_fire_breath); RegisterSpellScript(spell_evo_fire_breath_damage); |