diff options
-rw-r--r-- | sql/updates/world/master/2023_04_16_01_world.sql | 13 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 77 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_hunter.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_mage.cpp | 47 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_shaman.cpp | 73 |
5 files changed, 90 insertions, 123 deletions
diff --git a/sql/updates/world/master/2023_04_16_01_world.sql b/sql/updates/world/master/2023_04_16_01_world.sql new file mode 100644 index 00000000000..583e00c9ddc --- /dev/null +++ b/sql/updates/world/master/2023_04_16_01_world.sql @@ -0,0 +1,13 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN (2825, 32182, 80353, 264667, 390386, 146555, 178207, 230935, 256740, 309658, 381301); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(2825, 'spell_sha_bloodlust'), +(32182, 'spell_sha_heroism'), +(80353, 'spell_mage_time_warp'), +(264667, 'spell_hun_primal_rage'), +(390386, 'spell_evo_fury_of_the_aspects'), +(146555, 'spell_item_bloodlust_drums'), +(178207, 'spell_item_bloodlust_drums'), +(230935, 'spell_item_bloodlust_drums'), +(256740, 'spell_item_bloodlust_drums'), +(309658, 'spell_item_bloodlust_drums'), +(381301, 'spell_item_bloodlust_drums'); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 5ecc8a1f325..64df429601d 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -5310,6 +5310,77 @@ class spell_gen_skinning : public SpellScript } }; +enum BloodlustExhaustionSpell : uint32 +{ + SPELL_SHAMAN_SATED = 57724, // Bloodlust + SPELL_SHAMAN_EXHAUSTION = 57723, // Heroism, Drums + SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354, + SPELL_HUNTER_FATIGUED = 264689, + SPELL_EVOKER_EXHAUSTION = 390435, +}; + +// 2825 - Bloodlust +// 32182 - Heroism +// 80353 - Time Warp +// 264667 - Primal Rage +// 390386 - Fury of the Aspects +// 146555 - Drums of Rage +// 178207 - Drums of Fury +// 230935 - Drums of the Mountain +// 256740 - Drums of the Maelstrom +// 309658 - Drums of Deathly Ferocity +// 381301 - Feral Hide Drums +class spell_gen_bloodlust : public SpellScript +{ + PrepareSpellScript(spell_gen_bloodlust); +public: + spell_gen_bloodlust(uint32 exhaustionSpellId) : _exhaustionSpellId(exhaustionSpellId) { } + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_SHAMAN_SATED, + SPELL_SHAMAN_EXHAUSTION, + SPELL_MAGE_TEMPORAL_DISPLACEMENT, + SPELL_HUNTER_FATIGUED, + SPELL_EVOKER_EXHAUSTION + }); + } + + void FilterTargets(std::list<WorldObject*>& targets) + { + targets.remove_if([](WorldObject* target) -> bool + { + Unit* unit = target->ToUnit(); + if (!unit) + return true; + + return unit->HasAura(SPELL_SHAMAN_SATED) + || unit->HasAura(SPELL_SHAMAN_EXHAUSTION) + || unit->HasAura(SPELL_MAGE_TEMPORAL_DISPLACEMENT) + || unit->HasAura(SPELL_HUNTER_FATIGUED) + || unit->HasAura(SPELL_EVOKER_EXHAUSTION); + }); + } + + void HandleHit(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + target->CastSpell(target, _exhaustionSpellId, true); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gen_bloodlust::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gen_bloodlust::FilterTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); + OnEffectHitTarget += SpellEffectFn(spell_gen_bloodlust::HandleHit, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } + +private: + uint32 _exhaustionSpellId; +}; + void AddSC_generic_spell_scripts() { RegisterSpellScript(spell_gen_absorb0_hitlimit1); @@ -5472,4 +5543,10 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_reverse_cast_target_to_caster_triggered); RegisterSpellScript(spell_gen_despawn_all_summons_owned_by_caster); RegisterSpellScript(spell_gen_skinning); + RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_sha_bloodlust", SPELL_SHAMAN_SATED); + RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_sha_heroism", SPELL_SHAMAN_EXHAUSTION); + RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_mage_time_warp", SPELL_MAGE_TEMPORAL_DISPLACEMENT); + RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_hun_primal_rage", SPELL_HUNTER_FATIGUED); + RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_evo_fury_of_the_aspects", SPELL_EVOKER_EXHAUSTION); + RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_item_bloodlust_drums", SPELL_SHAMAN_EXHAUSTION); } diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index fe174df2a4c..6ad9ac9e865 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -58,9 +58,6 @@ enum HunterSpells enum MiscSpells { SPELL_DRAENEI_GIFT_OF_THE_NAARU = 59543, - SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354, - SPELL_SHAMAN_EXHAUSTION = 57723, - SPELL_SHAMAN_SATED = 57724 }; // 131894 - A Murder of Crows diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index a67e313675b..7edb1cb8102 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -80,7 +80,6 @@ enum MageSpells SPELL_MAGE_SERPENT_FORM = 32817, SPELL_MAGE_SHEEP_FORM = 32820, SPELL_MAGE_SQUIRREL_FORM = 32813, - SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354, SPELL_MAGE_WORGEN_FORM = 32819, SPELL_PET_NETHERWINDS_FATIGUED = 160455, SPELL_MAGE_ICE_LANCE_TRIGGER = 228598, @@ -91,13 +90,6 @@ enum MageSpells SPELL_MAGE_TOUCH_OF_THE_MAGI_EXPLODE = 210833, }; -enum MiscSpells -{ - SPELL_HUNTER_INSANITY = 95809, - SPELL_SHAMAN_EXHAUSTION = 57723, - SPELL_SHAMAN_SATED = 57724 -}; - // 110909 - Alter Time Aura // 342246 - Alter Time Aura class spell_mage_alter_time_aura : public AuraScript @@ -1297,44 +1289,6 @@ class spell_mage_supernova : public SpellScript } }; -// 80353 - Time Warp -class spell_mage_time_warp : public SpellScript -{ - PrepareSpellScript(spell_mage_time_warp); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo( - { - SPELL_MAGE_TEMPORAL_DISPLACEMENT, - SPELL_HUNTER_INSANITY, - SPELL_SHAMAN_EXHAUSTION, - SPELL_SHAMAN_SATED, - SPELL_PET_NETHERWINDS_FATIGUED - }); - } - - void RemoveInvalidTargets(std::list<WorldObject*>& targets) - { - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT)); - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY)); - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION)); - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED)); - } - - void ApplyDebuff() - { - if (Unit* target = GetHitUnit()) - target->CastSpell(target, SPELL_MAGE_TEMPORAL_DISPLACEMENT, true); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mage_time_warp::RemoveInvalidTargets, EFFECT_ALL, TARGET_UNIT_CASTER_AREA_RAID); - AfterHit += SpellHitFn(spell_mage_time_warp::ApplyDebuff); - } -}; - // 210824 - Touch of the Magi (Aura) class spell_mage_touch_of_the_magi_aura : public AuraScript { @@ -1439,7 +1393,6 @@ void AddSC_mage_spell_scripts() RegisterSpellScript(spell_mage_ring_of_frost); RegisterSpellAndAuraScriptPair(spell_mage_ring_of_frost_freeze, spell_mage_ring_of_frost_freeze_AuraScript); RegisterSpellScript(spell_mage_supernova); - RegisterSpellScript(spell_mage_time_warp); RegisterSpellScript(spell_mage_touch_of_the_magi_aura); RegisterSpellScript(spell_mage_water_elemental_freeze); } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index b525df22b3b..5b889da95f7 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -63,7 +63,6 @@ enum ShamanSpells SPELL_SHAMAN_ELEMENTAL_BLAST_OVERLOAD = 120588, SPELL_SHAMAN_ELEMENTAL_MASTERY = 16166, SPELL_SHAMAN_ENERGY_SURGE = 40465, - SPELL_SHAMAN_EXHAUSTION = 57723, SPELL_SHAMAN_FLAME_SHOCK = 188389, SPELL_SHAMAN_FLAMETONGUE_ATTACK = 10444, SPELL_SHAMAN_FLAMETONGUE_WEAPON_ENCHANT = 334294, @@ -97,7 +96,6 @@ enum ShamanSpells SPELL_SHAMAN_PATH_OF_FLAMES_SPREAD = 210621, SPELL_SHAMAN_PATH_OF_FLAMES_TALENT = 201909, SPELL_SHAMAN_POWER_SURGE = 40466, - SPELL_SHAMAN_SATED = 57724, SPELL_SHAMAN_SPIRIT_WOLF_TALENT = 260878, SPELL_SHAMAN_SPIRIT_WOLF_PERIODIC = 260882, SPELL_SHAMAN_SPIRIT_WOLF_AURA = 260881, @@ -114,13 +112,6 @@ enum ShamanSpells SPELL_SHAMAN_WIND_RUSH = 192082 }; -enum MiscSpells -{ - SPELL_HUNTER_INSANITY = 95809, - SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354, - SPELL_PET_NETHERWINDS_FATIGUED = 160455 -}; - enum MiscNpcs { NPC_HEALING_RAIN_INVISIBLE_STALKER = 73400, @@ -222,37 +213,6 @@ class spell_sha_ancestral_guidance_heal : public SpellScript } }; -// 2825 - Bloodlust -class spell_sha_bloodlust : public SpellScript -{ - PrepareSpellScript(spell_sha_bloodlust); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_SATED, SPELL_HUNTER_INSANITY, SPELL_MAGE_TEMPORAL_DISPLACEMENT, SPELL_PET_NETHERWINDS_FATIGUED }); - } - - void RemoveInvalidTargets(std::list<WorldObject*>& targets) - { - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED)); - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY)); - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT)); - } - - void ApplyDebuff() - { - if (Unit* target = GetHitUnit()) - target->CastSpell(target, SPELL_SHAMAN_SATED, true); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); - AfterHit += SpellHitFn(spell_sha_bloodlust::ApplyDebuff); - } -}; - // 188443 - Chain Lightning class spell_sha_chain_lightning : public SpellScript { @@ -751,37 +711,6 @@ class spell_sha_healing_stream_totem_heal : public SpellScript } }; -// 32182 - Heroism -class spell_sha_heroism : public SpellScript -{ - PrepareSpellScript(spell_sha_heroism); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SHAMAN_EXHAUSTION, SPELL_HUNTER_INSANITY, SPELL_MAGE_TEMPORAL_DISPLACEMENT, SPELL_PET_NETHERWINDS_FATIGUED }); - } - - void RemoveInvalidTargets(std::list<WorldObject*>& targets) - { - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION)); - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY)); - targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT)); - } - - void ApplyDebuff() - { - if (Unit* target = GetHitUnit()) - target->CastSpell(target, SPELL_SHAMAN_EXHAUSTION, true); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); - AfterHit += SpellHitFn(spell_sha_heroism::ApplyDebuff); - } -}; - // 210714 - Icefury class spell_sha_icefury : public AuraScript { @@ -1804,7 +1733,6 @@ void AddSC_shaman_spell_scripts() RegisterSpellScript(spell_sha_aftershock); RegisterSpellScript(spell_sha_ancestral_guidance); RegisterSpellScript(spell_sha_ancestral_guidance_heal); - RegisterSpellScript(spell_sha_bloodlust); RegisterSpellScript(spell_sha_chain_lightning); RegisterSpellScript(spell_sha_chain_lightning_overload); RegisterSpellScript(spell_sha_crash_lightning); @@ -1820,7 +1748,6 @@ void AddSC_shaman_spell_scripts() RegisterSpellAndAuraScriptPair(spell_sha_healing_rain, spell_sha_healing_rain_aura); RegisterSpellScript(spell_sha_healing_rain_target_limit); RegisterSpellScript(spell_sha_healing_stream_totem_heal); - RegisterSpellScript(spell_sha_heroism); RegisterSpellScript(spell_sha_icefury); RegisterSpellScript(spell_sha_item_lightning_shield); RegisterSpellScript(spell_sha_item_lightning_shield_trigger); |