diff --git a/sql/updates/world/custom/custom_2019_11_15_01_world.sql b/sql/updates/world/custom/custom_2019_11_15_01_world.sql new file mode 100644 index 0000000000..76a4c4bbc8 --- /dev/null +++ b/sql/updates/world/custom/custom_2019_11_15_01_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_magmaw_eject_passenger'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(78643, 'spell_magmaw_eject_passenger'); + +DELETE FROM `conditions` WHERE `SourceEntry`= 78643 AND `SourceTypeOrReferenceId`= 13; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ScriptName`, `Comment`) VALUES +(13, 1, 78643, 0, 0, 31, 0, 3, 41789, 0, 0, 0, '', 'Eject Passenger - Target Magmaw''s Pincer'), +(13, 1, 78643, 0, 1, 31, 0, 3, 41620, 0, 0, 0, '', 'Eject Passenger - Target Magmaw''s Pincer'); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_magmaw.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_magmaw.cpp index b0f6738a46..0c3673c99f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_magmaw.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_magmaw.cpp @@ -64,6 +64,7 @@ enum Spells // Magmaw Spike Stalker SPELL_CHAIN_VISUAL_1 = 77940, SPELL_CHAIN_VISUAL_2 = 77929, + SPELL_EJECT_PASSENGER = 78643, // Lava Parasite SPELL_LAVA_PARASITE_PROC_AURA = 78019, @@ -94,7 +95,6 @@ enum Events EVENT_ANNOUNCE_PINCERS_EXPOSED, EVENT_FINISH_MASSIVE_CRASH, EVENT_IMPALE_SELF, - EVENT_EJECT_PASSENGER_1, EVENT_EXPOSE_HEAD, EVENT_HIDE_HEAD, EVENT_FINISH_IMPALE_SELF, @@ -294,7 +294,6 @@ struct boss_magmaw : public BossAI events.ScheduleEvent(EVENT_ANNOUNCE_PINCERS_EXPOSED, 1s); events.ScheduleEvent(EVENT_FINISH_MASSIVE_CRASH, 7s); - events.ScheduleEvent(EVENT_EJECT_PASSENGER_1, 12s); Unit* head = _exposedHead1; head->m_Events.AddEventAtOffset([head]() @@ -428,7 +427,7 @@ struct boss_magmaw : public BossAI events.CancelEvent(EVENT_MAGMA_PROJECTILE); events.CancelEvent(EVENT_LAVA_SPEW); - events.ScheduleEvent(EVENT_PREPARE_MASSIVE_CRASH, 5s); + events.ScheduleEvent(EVENT_PREPARE_MASSIVE_CRASH, 3s + 500ms); events.Repeat(1min + 35s); break; case EVENT_PREPARE_MASSIVE_CRASH: @@ -462,10 +461,6 @@ struct boss_magmaw : public BossAI case EVENT_IMPALE_SELF: DoCastSelf(SPELL_IMPALE_SELF); break; - case EVENT_EJECT_PASSENGER_1: - _pincer1->CastSpell(_pincer1, SPELL_EJECT_PASSENGER_1, true); - _pincer2->CastSpell(_pincer2, SPELL_EJECT_PASSENGER_1, true); - break; case EVENT_EXPOSE_HEAD: if (!_headEngaged) { @@ -1019,6 +1014,7 @@ class spell_magmaw_launch_hook : public AuraScript target->RemoveAllAuras(); target->CastSpell(target, SPELL_CHAIN_VISUAL_1); target->CastSpell(target, SPELL_CHAIN_VISUAL_2); + target->CastSpell(target, SPELL_EJECT_PASSENGER); } } @@ -1028,6 +1024,26 @@ class spell_magmaw_launch_hook : public AuraScript } }; + +class spell_magmaw_eject_passenger : public SpellScript +{ + PrepareSpellScript(spell_magmaw_eject_passenger); + + void EjectPassenger(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + target->m_Events.AddEventAtOffset([target]() + { + target->CastSpell(target, SPELL_EJECT_PASSENGER_1, true); + }, 3s + 500ms); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_magmaw_eject_passenger::EjectPassenger, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + class spell_magmaw_eject_passenger_1 : public SpellScript { PrepareSpellScript(spell_magmaw_eject_passenger_1); @@ -1231,6 +1247,7 @@ void AddSC_boss_magmaw() RegisterSpellScript(spell_magmaw_pillar_of_flame_forcecast); RegisterSpellScript(spell_magmaw_ride_vehicle); RegisterAuraScript(spell_magmaw_launch_hook); + RegisterSpellScript(spell_magmaw_eject_passenger); RegisterSpellScript(spell_magmaw_eject_passenger_1); RegisterSpellScript(spell_magmaw_eject_passenger_3); RegisterAuraScript(spell_magmaw_lava_parasite);