Scripts/BWD: corrected timer between Magmaw eating his victim and performing a Massive Crash

* move ejecting pincer passengers to spell script and use the correct spell for it
This commit is contained in:
Ovahlord committed 2019-11-15 11:35:05 +01:00
1 parent b7e44e1312
commit c00736ed71
2 files changed
+32 -7

No files matched your search

@@ -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');
@@ -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);