From 2f176528fc023ed03c153fa178d531f740153a77 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 6 Jul 2020 01:09:58 +0200 Subject: [PATCH] Scripts/BWD: Maloriak will now launch his Magma Jets into the direction of random players instead of his victim only. --- .../world/4.3.4/2020_07_06_00_world.sql | 3 ++ .../BlackwingDescent/boss_maloriak.cpp | 39 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 sql/updates/world/4.3.4/2020_07_06_00_world.sql diff --git a/sql/updates/world/4.3.4/2020_07_06_00_world.sql b/sql/updates/world/4.3.4/2020_07_06_00_world.sql new file mode 100644 index 00000000000..ccb179f6138 --- /dev/null +++ b/sql/updates/world/4.3.4/2020_07_06_00_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_maloriak_magma_jets_script'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(93022, 'spell_maloriak_magma_jets_script'); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_maloriak.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_maloriak.cpp index 11be9258c33..dcdea8295aa 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_maloriak.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_maloriak.cpp @@ -551,8 +551,7 @@ struct boss_maloriak : public BossAI events.ScheduleEvent(EVENT_ABSOLUTE_ZERO, 8s + 400ms, 0, PHASE_TWO); break; case EVENT_MAGMA_JETS: - //DoCastAOE(SPELL_MAGMA_JETS_SCRIPT_EFFECT); // seems like an old changed mechanic spell. No purpose atm. - DoCastSelf(SPELL_MAGMA_JETS_SUMMON); + DoCastAOE(SPELL_MAGMA_JETS_SCRIPT_EFFECT); events.Repeat(6s); break; case EVENT_ACID_NOVA: @@ -1095,6 +1094,41 @@ class spell_maloriak_release_experiments : public SpellScript } }; +class spell_maloriak_magma_jets_script : public SpellScript +{ + PrepareSpellScript(spell_maloriak_magma_jets_script); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_MAGMA_JETS_SUMMON }); + } + + void FilterTargets(std::list& targets) + { + if (targets.empty()) + return; + + Trinity::Containers::RandomResize(targets, 1); + } + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + if (Unit* caster = GetCaster()) + { + caster->SetOrientation(caster->GetAngle(target)); + caster->SetFacingToObject(target); // update orientation immediately + caster->CastSpell(target, SPELL_MAGMA_JETS_SUMMON); + } + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_maloriak_magma_jets_script::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_maloriak_magma_jets_script::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + class spell_maloriak_magma_jets_periodic : public AuraScript { PrepareAuraScript(spell_maloriak_magma_jets_periodic); @@ -1260,6 +1294,7 @@ void AddSC_boss_maloriak() RegisterSpellScript(spell_maloriak_flash_freeze_targeting); RegisterSpellScript(spell_maloriak_flash_freeze_dummy); RegisterSpellScript(spell_maloriak_release_experiments); + RegisterSpellScript(spell_maloriak_magma_jets_script); RegisterAuraScript(spell_maloriak_magma_jets_periodic); RegisterSpellScript(spell_maloriak_absolute_zero); RegisterAuraScript(spell_maloriak_vile_swill);