diff --git a/data/sql/updates/pending_db_world/rev_1730483264891546354.sql b/data/sql/updates/pending_db_world/rev_1730483264891546354.sql new file mode 100644 index 000000000..25716f7bd --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1730483264891546354.sql @@ -0,0 +1,5 @@ +-- +UPDATE `spell_script_names` SET `ScriptName`='spell_voa_overcharge_aura' WHERE `spell_id`=64217 AND `ScriptName`='spell_voa_overcharge'; +UPDATE `spell_script_names` SET `ScriptName`='spell_koralon_meteor_fists_aura' WHERE `spell_id` IN (66725,68161) AND `ScriptName`='spell_koralon_meteor_fists'; +UPDATE `spell_script_names` SET `ScriptName`='spell_flame_warder_meteor_fists_aura' WHERE `spell_id` IN (66808,68160) AND `ScriptName`='spell_flame_warder_meteor_fists'; +UPDATE `spell_script_names` SET `ScriptName`='spell_hos_dark_matter_aura' WHERE `spell_id`=51001 AND `ScriptName`='spell_hos_dark_matter'; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index 376c55cf6..75c4c06d2 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -254,39 +254,28 @@ public: }; }; -class spell_loken_pulsing_shockwave : public SpellScriptLoader +class spell_loken_pulsing_shockwave : public SpellScript { -public: - spell_loken_pulsing_shockwave() : SpellScriptLoader("spell_loken_pulsing_shockwave") { } + PrepareSpellScript(spell_loken_pulsing_shockwave); - class spell_loken_pulsing_shockwave_SpellScript : public SpellScript + void CalculateDamage(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_loken_pulsing_shockwave_SpellScript); + if (!GetHitUnit()) + return; - void CalculateDamage(SpellEffIndex /*effIndex*/) - { - if (!GetHitUnit()) - return; + float distance = GetCaster()->GetDistance2d(GetHitUnit()); + if (distance > 1.0f) + SetHitDamage(int32(GetHitDamage() * distance)); + } - float distance = GetCaster()->GetDistance2d(GetHitUnit()); - if (distance > 1.0f) - SetHitDamage(int32(GetHitDamage() * distance)); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_loken_pulsing_shockwave_SpellScript::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_loken_pulsing_shockwave_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_loken_pulsing_shockwave::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); } }; void AddSC_boss_loken() { new boss_loken(); - new spell_loken_pulsing_shockwave(); + RegisterSpellScript(spell_loken_pulsing_shockwave); } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp index 2e07f9a91..bc40837a7 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp @@ -180,74 +180,57 @@ public: }; }; -class spell_krystallus_shatter : public SpellScriptLoader +class spell_krystallus_shatter : public SpellScript { -public: - spell_krystallus_shatter() : SpellScriptLoader("spell_krystallus_shatter") { } + PrepareSpellScript(spell_krystallus_shatter); - class spell_krystallus_shatter_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_krystallus_shatter_SpellScript); + return ValidateSpellInfo({ SPELL_SHATTER_EFFECT }); + } - void HandleScript(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - { - target->RemoveAurasDueToSpell(GROUND_SLAM_STONED_EFFECT); - target->CastSpell((Unit*)nullptr, SPELL_SHATTER_EFFECT, true); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_krystallus_shatter_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void HandleScript(SpellEffIndex /*effIndex*/) { - return new spell_krystallus_shatter_SpellScript(); + if (Unit* target = GetHitUnit()) + { + target->RemoveAurasDueToSpell(GROUND_SLAM_STONED_EFFECT); + target->CastSpell((Unit*)nullptr, SPELL_SHATTER_EFFECT, true); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_krystallus_shatter::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; -class spell_krystallus_shatter_effect : public SpellScriptLoader +class spell_krystallus_shatter_effect : public SpellScript { -public: - spell_krystallus_shatter_effect() : SpellScriptLoader("spell_krystallus_shatter_effect") { } + PrepareSpellScript(spell_krystallus_shatter_effect); - class spell_krystallus_shatter_effect_SpellScript : public SpellScript + void CalculateDamage() { - PrepareSpellScript(spell_krystallus_shatter_effect_SpellScript); + if (!GetHitUnit()) + return; - void CalculateDamage() - { - if (!GetHitUnit()) - return; + float radius = GetSpellInfo()->Effects[EFFECT_0].CalcRadius(GetCaster()); + if (!radius) + return; - float radius = GetSpellInfo()->Effects[EFFECT_0].CalcRadius(GetCaster()); - if (!radius) - return; + float distance = GetCaster()->GetDistance2d(GetHitUnit()); + if (distance > 1.0f) + SetHitDamage(int32(GetHitDamage() * ((radius - distance) / radius))); + } - float distance = GetCaster()->GetDistance2d(GetHitUnit()); - if (distance > 1.0f) - SetHitDamage(int32(GetHitDamage() * ((radius - distance) / radius))); - } - - void Register() override - { - OnHit += SpellHitFn(spell_krystallus_shatter_effect_SpellScript::CalculateDamage); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_krystallus_shatter_effect_SpellScript(); + OnHit += SpellHitFn(spell_krystallus_shatter_effect::CalculateDamage); } }; void AddSC_boss_krystallus() { new boss_krystallus(); - new spell_krystallus_shatter(); - new spell_krystallus_shatter_effect(); + RegisterSpellScript(spell_krystallus_shatter); + RegisterSpellScript(spell_krystallus_shatter_effect); } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp index ae209689c..83da96853 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp @@ -864,30 +864,24 @@ public: }; }; -class spell_hos_dark_matter : public SpellScriptLoader +class spell_hos_dark_matter_aura : public AuraScript { -public: - spell_hos_dark_matter() : SpellScriptLoader("spell_hos_dark_matter") { } + PrepareAuraScript(spell_hos_dark_matter_aura); - class spell_hos_dark_matter_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_hos_dark_matter_AuraScript); + return ValidateSpellInfo({ SPELL_DARK_MATTER_H, SPELL_DARK_MATTER }); + } - void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (Unit* caster = GetCaster()) - caster->CastSpell(caster, caster->GetMap()->IsHeroic() ? SPELL_DARK_MATTER_H : SPELL_DARK_MATTER, true); - } - - void Register() override - { - OnEffectRemove += AuraEffectRemoveFn(spell_hos_dark_matter_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - return new spell_hos_dark_matter_AuraScript(); + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, caster->GetMap()->IsHeroic() ? SPELL_DARK_MATTER_H : SPELL_DARK_MATTER, true); + } + + void Register() override + { + OnEffectRemove += AuraEffectRemoveFn(spell_hos_dark_matter_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; @@ -897,5 +891,5 @@ void AddSC_brann_bronzebeard() new dark_rune_protectors(); new dark_rune_stormcaller(); new iron_golem_custodian(); - new spell_hos_dark_matter(); + RegisterSpellScript(spell_hos_dark_matter_aura); } diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp index 9ca2e4cd3..aed9965ac 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp @@ -184,54 +184,48 @@ class boss_archavon : public CreatureScript }; // 58941 - Rock Shards -class spell_archavon_rock_shards : public SpellScriptLoader +class spell_archavon_rock_shards : public SpellScript { - public: - spell_archavon_rock_shards() : SpellScriptLoader("spell_archavon_rock_shards") { } + PrepareSpellScript(spell_archavon_rock_shards); - class spell_archavon_rock_shards_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL }); + } + + void HandleScript(SpellEffIndex effIndex) { - PrepareSpellScript(spell_archavon_rock_shards_SpellScript); + PreventHitDefaultEffect(effIndex); - void HandleScript(SpellEffIndex effIndex) + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + + if (!caster || !target) { - PreventHitDefaultEffect(effIndex); - - Unit* caster = GetCaster(); - Unit* target = GetHitUnit(); - - if (!caster || !target) - { - return; - } - - Map* map = caster->GetMap(); - if (!map) - { - return; - } - - caster->CastSpell(target, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL, true); - caster->CastSpell(target, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL, true); - - uint32 spellId = map->Is25ManRaid() ? SPELL_ROCK_SHARDS_DAMAGE_25 : SPELL_ROCK_SHARDS_DAMAGE_10; - caster->CastSpell(target, spellId, true); + return; } - void Register() override + Map* map = caster->GetMap(); + if (!map) { - OnEffectHitTarget += SpellEffectFn(spell_archavon_rock_shards_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + return; } - }; - SpellScript* GetSpellScript() const override - { - return new spell_archavon_rock_shards_SpellScript(); + caster->CastSpell(target, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL, true); + caster->CastSpell(target, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL, true); + + uint32 spellId = map->Is25ManRaid() ? SPELL_ROCK_SHARDS_DAMAGE_25 : SPELL_ROCK_SHARDS_DAMAGE_10; + caster->CastSpell(target, spellId, true); } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_archavon_rock_shards::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } }; void AddSC_boss_archavon() { new boss_archavon(); - new spell_archavon_rock_shards(); + RegisterSpellScript(spell_archavon_rock_shards); } diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index 6b02fe826..bf8da40c8 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -205,69 +205,52 @@ public: } }; -class spell_voa_overcharge : public SpellScriptLoader +class spell_voa_overcharge_aura : public AuraScript { -public: - spell_voa_overcharge() : SpellScriptLoader("spell_voa_overcharge") { } + PrepareAuraScript(spell_voa_overcharge_aura); - class spell_voa_overcharge_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_voa_overcharge_AuraScript); + return ValidateSpellInfo({ SPELL_OVERCHARGED_BLAST }); + } - void HandlePeriodicDummy(AuraEffect const* /*aurEff*/) + void HandlePeriodicDummy(AuraEffect const* /*aurEff*/) + { + Unit* target = GetTarget(); + if (target->IsCreature() && GetAura()->GetStackAmount() >= 10) { - Unit* target = GetTarget(); - if (target->IsCreature() && GetAura()->GetStackAmount() >= 10) - { - target->CastSpell(target, SPELL_OVERCHARGED_BLAST, true); - Unit::Kill(target, target, false); - } - - PreventDefaultAction(); + target->CastSpell(target, SPELL_OVERCHARGED_BLAST, true); + Unit::Kill(target, target, false); } - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_voa_overcharge_AuraScript::HandlePeriodicDummy, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY); - } - }; + PreventDefaultAction(); + } - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_voa_overcharge_AuraScript(); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_voa_overcharge_aura::HandlePeriodicDummy, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY); } }; -class spell_voa_lightning_nova : public SpellScriptLoader +class spell_voa_lightning_nova : public SpellScript { -public: - spell_voa_lightning_nova() : SpellScriptLoader("spell_voa_lightning_nova") { } + PrepareSpellScript(spell_voa_lightning_nova); - class spell_voa_lightning_nova_SpellScript : public SpellScript + void HandleOnHit() { - PrepareSpellScript(spell_voa_lightning_nova_SpellScript); - - void HandleOnHit() + int32 damage = 0; + if (Unit* target = GetHitUnit()) { - int32 damage = 0; - if (Unit* target = GetHitUnit()) - { - float dist = target->GetDistance(GetCaster()); - damage = int32(GetHitDamage() * (70.0f - std::min(70.0f, dist)) / 70.0f); - } - - SetHitDamage(damage); + float dist = target->GetDistance(GetCaster()); + damage = int32(GetHitDamage() * (70.0f - std::min(70.0f, dist)) / 70.0f); } - void Register() override - { - OnHit += SpellHitFn(spell_voa_lightning_nova_SpellScript::HandleOnHit); - } - }; + SetHitDamage(damage); + } - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_voa_lightning_nova_SpellScript(); + OnHit += SpellHitFn(spell_voa_lightning_nova::HandleOnHit); } }; @@ -275,6 +258,6 @@ void AddSC_boss_emalon() { new boss_emalon(); - new spell_voa_overcharge(); - new spell_voa_lightning_nova(); + RegisterSpellScript(spell_voa_overcharge_aura); + RegisterSpellScript(spell_voa_lightning_nova); } diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp index 8734d674f..6068ab5e2 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp @@ -165,101 +165,73 @@ public: } }; -class spell_voa_flaming_cinder : public SpellScriptLoader +class spell_voa_flaming_cinder : public SpellScript { -public: - spell_voa_flaming_cinder() : SpellScriptLoader("spell_voa_flaming_cinder") { } + PrepareSpellScript(spell_voa_flaming_cinder); - class spell_voa_flaming_cinder_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_voa_flaming_cinder_SpellScript); + return ValidateSpellInfo({ SPELL_FLAMING_CINDER_MISSILE }); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - GetCaster()->CastSpell(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), SPELL_FLAMING_CINDER_MISSILE, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_voa_flaming_cinder_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_voa_flaming_cinder_SpellScript(); + if (Unit* target = GetHitUnit()) + GetCaster()->CastSpell(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), SPELL_FLAMING_CINDER_MISSILE, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_voa_flaming_cinder::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; -class spell_koralon_meteor_fists : public SpellScriptLoader +class spell_koralon_meteor_fists_aura : public AuraScript { -public: - spell_koralon_meteor_fists() : SpellScriptLoader("spell_koralon_meteor_fists") { } + PrepareAuraScript(spell_koralon_meteor_fists_aura); - class spell_koralon_meteor_fists_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_koralon_meteor_fists_AuraScript); + return ValidateSpellInfo({ SPELL_METEOR_FISTS_DAMAGE }); + } - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_METEOR_FISTS_DAMAGE }); - } - - void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); - GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_METEOR_FISTS_DAMAGE, true, nullptr, aurEff); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_koralon_meteor_fists_AuraScript::TriggerFists, EFFECT_0, SPELL_AURA_DUMMY); - } - }; - - AuraScript* GetAuraScript() const override + void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { - return new spell_koralon_meteor_fists_AuraScript(); + PreventDefaultAction(); + GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_METEOR_FISTS_DAMAGE, true, nullptr, aurEff); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_koralon_meteor_fists_aura::TriggerFists, EFFECT_0, SPELL_AURA_DUMMY); } }; -class spell_flame_warder_meteor_fists : public SpellScriptLoader +class spell_flame_warder_meteor_fists_aura : public AuraScript { -public: - spell_flame_warder_meteor_fists() : SpellScriptLoader("spell_flame_warder_meteor_fists") { } + PrepareAuraScript(spell_flame_warder_meteor_fists_aura); - class spell_flame_warder_meteor_fists_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_flame_warder_meteor_fists_AuraScript); + return ValidateSpellInfo({ SPELL_FW_METEOR_FISTS_DAMAGE }); + } - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_FW_METEOR_FISTS_DAMAGE }); - } - - void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo) - { - PreventDefaultAction(); - GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_FW_METEOR_FISTS_DAMAGE, true, nullptr, aurEff); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_flame_warder_meteor_fists_AuraScript::TriggerFists, EFFECT_0, SPELL_AURA_DUMMY); - } - }; - - AuraScript* GetAuraScript() const override + void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { - return new spell_flame_warder_meteor_fists_AuraScript(); + PreventDefaultAction(); + GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_FW_METEOR_FISTS_DAMAGE, true, nullptr, aurEff); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_flame_warder_meteor_fists_aura::TriggerFists, EFFECT_0, SPELL_AURA_DUMMY); } }; void AddSC_boss_koralon() { new boss_koralon(); - new spell_voa_flaming_cinder(); - new spell_koralon_meteor_fists(); - new spell_flame_warder_meteor_fists(); + RegisterSpellScript(spell_voa_flaming_cinder); + RegisterSpellScript(spell_koralon_meteor_fists_aura); + RegisterSpellScript(spell_flame_warder_meteor_fists_aura); }