fix(Core/Util): EventMap::RepeatEvent when eventId is retrieved by ExecuteEvent() call (#3426)

This commit is contained in:
Andrius Peleckas
2020-10-17 15:59:22 +03:00
committed by GitHub
parent 32da0eeb9e
commit ab5933effa
131 changed files with 558 additions and 1012 deletions

View File

@@ -292,7 +292,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_BJARNGRIM_CHANGE_STANCE:
// roll new stance
@@ -399,7 +399,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_ARC_WELD:
me->CastSpell(me->GetVictim(), SPELL_ARC_WELD, true);

View File

@@ -171,7 +171,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_BALL_LIGHTNING:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
@@ -195,14 +195,12 @@ public:
{
EntryCheckPredicate pred(NPC_SPARK_OF_IONAR);
summons.DoAction(ACTION_CALLBACK, pred);
events.PopEvent();
events.ScheduleEvent(EVENT_RESTORE, 2000, 0, 2);
return;
}
case EVENT_RESTORE:
EntryCheckPredicate pred(NPC_SPARK_OF_IONAR);
summons.DoAction(ACTION_SPARK_DESPAWN, pred);
events.PopEvent();
me->SetVisible(true);
me->SetControlled(false, UNIT_STATE_STUNNED);

View File

@@ -200,7 +200,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_CHECK_HEALTH:
if (HealthBelowPct(HealthCheck))
@@ -223,7 +223,6 @@ public:
break;
case EVENT_SHOCKWAVE:
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_PULSING_SHOCKWAVE_H : SPELL_PULSING_SHOCKWAVE_N, false);
events.PopEvent();
break;
case EVENT_ARC_LIGHTNING:
if (Unit* target = SelectTargetFromPlayerList(100, SPELL_ARC_LIGHTNING))
@@ -233,7 +232,6 @@ public:
break;
case EVENT_AURA_REMOVE:
me->RemoveAura(SPELL_LIGHTNING_NOVA_THUNDERS);
events.PopEvent();
break;
}

View File

@@ -270,7 +270,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_HEAT:
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_HEAT_H : SPELL_HEAT_N, true);
@@ -291,7 +291,6 @@ public:
case EVENT_MOVE_TO_ANVIL:
GetNextPos();
me->GetMotionMaster()->MovePoint(PointID, x, y, z);
events.PopEvent();
return;
case EVENT_POSITION:
if (me->GetDistance(1331.9f, -106, 56) > 95)
@@ -381,7 +380,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_BLAST:
me->CastSpell(me, SPELL_BLAST_WAVE, false);
@@ -506,11 +505,10 @@ public:
return;
events.Update(diff);
uint32 eventId = events.GetEvent();
uint32 eventId = events.ExecuteEvent();
if (eventId == EVENT_UNFREEZE)
{
events.PopEvent();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->CastSpell(me, SPELL_AWAKEN, true);
me->RemoveAllAuras();

View File

@@ -104,7 +104,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_BOULDER:
{
@@ -139,13 +139,11 @@ public:
me->CastSpell((Unit*)NULL, DUNGEON_MODE(SHATTER, SHATTER_H), false);
Talk(SAY_SHATTER);
events.RescheduleEvent(EVENT_REMOVE_STONED, 1500);
events.PopEvent();
break;
}
case EVENT_REMOVE_STONED:
{
RemoveStonedEffect();
events.PopEvent();
break;
}
}
@@ -238,4 +236,4 @@ void AddSC_boss_krystallus()
new boss_krystallus();
new spell_krystallus_shatter();
new spell_krystallus_shatter_effect();
}
}

View File

@@ -87,7 +87,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case EVENT_STORM:
{

View File

@@ -193,7 +193,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_CHECK_HEALTH:
{
@@ -224,7 +224,6 @@ public:
events.CancelEvent(EVENT_SUMMON);
events.ScheduleEvent(EVENT_SUMMON, 0);
events.PopEvent();
break;
}
@@ -268,7 +267,6 @@ public:
brann->PlayDirectSound(14275);
}
events.PopEvent();
break;
}
case EVENT_SUMMON:
@@ -298,7 +296,6 @@ public:
case PHASE_SUMMON_FRIENDLY_DWARFES:
{
SummonDwarfes(true);
events.PopEvent();
break;
}
}
@@ -438,7 +435,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
// Every 5 seconds
case EVENT_TOXIC_VOLLEY:
@@ -482,7 +479,7 @@ public:
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_MALFORMED_OOZE_CHECK:
{
@@ -512,4 +509,4 @@ void AddSC_boss_sjonnir()
new boss_sjonnir_dwarf();
new boss_sjonnir_malformed_ooze();
new boss_sjonnir_iron_sludge();
}
}

View File

@@ -390,24 +390,21 @@ public:
void UpdateEscortAI(uint32 diff) override
{
events.Update(diff);
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_KADDRAK_VISUAL:
{
SwitchHeadVisaul(0x1, true);
events.PopEvent();
break;
}
case EVENT_MARNAK_VISUAL:
{
SwitchHeadVisaul(0x2, true);
events.PopEvent();
break;
}
case EVENT_ABEDNEUM_VISUAL:
{
SwitchHeadVisaul(0x4, true);
events.PopEvent();
break;
}
case EVENT_KADDRAK_HEAD: // First
@@ -434,7 +431,6 @@ public:
kaddrak->StopMovingOnCurrentPos();
}
events.PopEvent();
break;
}
case EVENT_MARNAK_HEAD: // Second
@@ -727,7 +723,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_DRP_CHARGE:
{
@@ -785,7 +781,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_DRS_LIGHTNING_BOLD:
{
@@ -839,7 +835,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_IGC_CRUSH:
{

View File

@@ -606,21 +606,18 @@ public:
if (!(events.GetPhaseMask() & PHASE_MASK_NO_CAST_CHECK) && me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_INTRO_1:
me->RemoveAurasDueToSpell(SPELL_RIDE_THE_LIGHTNING);
Talk(SAY_ALGALON_INTRO_1);
events.PopEvent();
break;
case EVENT_INTRO_2:
me->CastSpell((Unit*)NULL, SPELL_SUMMON_AZEROTH, true);
Talk(SAY_ALGALON_INTRO_2);
events.PopEvent();
break;
case EVENT_INTRO_3:
Talk(SAY_ALGALON_INTRO_3);
events.PopEvent();
break;
case EVENT_INTRO_FINISH:
events.Reset();
@@ -631,12 +628,10 @@ public:
case EVENT_START_COMBAT:
m_pInstance->SetData(TYPE_ALGALON, IN_PROGRESS);
Talk(SAY_ALGALON_AGGRO);
events.PopEvent();
break;
case EVENT_REMOVE_UNNATTACKABLE:
me->SetSheath(SHEATH_STATE_MELEE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC);
events.PopEvent();
break;
case EVENT_INTRO_TIMER_DONE:
events.SetPhase(PHASE_NORMAL);
@@ -647,7 +642,6 @@ public:
if (Player* target = SelectTargetFromPlayerList(150.0f))
AttackStart(target);
me->SetInCombatWithZone();
events.PopEvent();
for (uint32 i = 0; i < LIVING_CONSTELLATION_COUNT; ++i)
me->SummonCreature(NPC_LIVING_CONSTELLATION, ConstellationPos[i], TEMPSUMMON_DEAD_DESPAWN);
@@ -700,7 +694,6 @@ public:
Talk(SAY_ALGALON_ASCEND);
me->CastSpell((Unit*)NULL, SPELL_ASCEND_TO_THE_HEAVENS, false);
events.ScheduleEvent(EVENT_EVADE, 2500);
events.PopEvent();
break;
case EVENT_EVADE:
events.Reset();
@@ -712,88 +705,69 @@ public:
m_pInstance->SetData(TYPE_ALGALON, DONE);
m_pInstance->SetData(DATA_ALGALON_DEFEATED, 1);
}
events.PopEvent();
break;
case EVENT_OUTRO_1:
me->RemoveAllAuras();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_RENAME);
events.PopEvent();
break;
case EVENT_OUTRO_2:
_EnterEvadeMode();
me->GetMotionMaster()->MovePoint(POINT_ALGALON_OUTRO, AlgalonOutroPos);
events.PopEvent();
break;
case EVENT_OUTRO_3:
me->CastSpell((Unit*)NULL, SPELL_KILL_CREDIT);
// Summon Chest
if (GameObject* go = me->SummonGameObject(RAID_MODE(GO_ALGALON_CHEST, GO_ALGALON_CHEST_HERO), 1632.1f, -306.561f, 417.321f, 4.69494f, 0, 0, 0, 1, 0))
go->SetUInt32Value(GAMEOBJECT_FLAGS, 0);
events.PopEvent();
break;
case EVENT_OUTRO_4:
me->CastSpell((Unit*)NULL, SPELL_SUPERMASSIVE_FAIL);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
events.PopEvent();
break;
case EVENT_OUTRO_5:
if (Creature* brann = me->SummonCreature(NPC_BRANN_BRONZBEARD_ALG, BrannOutroPos[0], TEMPSUMMON_TIMED_DESPAWN, 131500))
brann->AI()->DoAction(ACTION_OUTRO);
events.PopEvent();
break;
case EVENT_OUTRO_6:
Talk(SAY_ALGALON_OUTRO_1);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
events.PopEvent();
break;
case EVENT_OUTRO_7:
Talk(SAY_ALGALON_OUTRO_2);
events.PopEvent();
break;
case EVENT_OUTRO_8:
Talk(SAY_ALGALON_OUTRO_3);
events.PopEvent();
break;
case EVENT_OUTRO_9:
Talk(SAY_ALGALON_OUTRO_4);
events.PopEvent();
break;
case EVENT_OUTRO_10:
Talk(SAY_ALGALON_OUTRO_5);
events.PopEvent();
break;
case EVENT_OUTRO_11:
me->SetStandState(UNIT_STAND_STATE_STAND);
me->CastSpell(me, SPELL_TELEPORT, false);
me->DespawnOrUnsummon(3000);
events.PopEvent();
break;
case EVENT_DESPAWN_ALGALON_1:
Talk(SAY_ALGALON_DESPAWN_1);
events.PopEvent();
break;
case EVENT_DESPAWN_ALGALON_2:
Talk(SAY_ALGALON_DESPAWN_2);
events.PopEvent();
break;
case EVENT_DESPAWN_ALGALON_3:
Talk(SAY_ALGALON_DESPAWN_3);
events.PopEvent();
break;
case EVENT_DESPAWN_ALGALON_4:
me->CastSpell((Unit*)NULL, SPELL_ASCEND_TO_THE_HEAVENS, false);
events.PopEvent();
break;
case EVENT_DESPAWN_ALGALON_5:
me->SetStandState(UNIT_STAND_STATE_STAND);
me->CastSpell(me, SPELL_TELEPORT, false);
me->DespawnOrUnsummon(3000);
events.PopEvent();
break;
case EVENT_CHECK_HERALD_ITEMS:
if (DoCheckHeraldOfTheTitans())
events.PopEvent();
else
if (!DoCheckHeraldOfTheTitans())
events.RepeatEvent(5000);
break;
}
@@ -879,10 +853,9 @@ public:
UpdateVictim();
events.Update(diff);
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_BRANN_MOVE_INTRO:
events.PopEvent();
if (_currentPoint < MAX_BRANN_WAYPOINTS_INTRO)
me->GetMotionMaster()->MovePoint(_currentPoint, BrannIntroWaypoint[_currentPoint]);
break;
@@ -890,15 +863,12 @@ public:
if (me->GetInstanceScript() && !me->GetInstanceScript()->GetData64(TYPE_ALGALON))
if (Creature* algalon = me->GetMap()->SummonCreature(NPC_ALGALON, AlgalonSummonPos))
algalon->AI()->DoAction(ACTION_START_INTRO);
events.PopEvent();
break;
case EVENT_BRANN_OUTRO_1:
Talk(SAY_BRANN_ALGALON_OUTRO);
events.PopEvent();
break;
case EVENT_BRANN_OUTRO_2:
me->GetMotionMaster()->MovePoint(POINT_BRANN_OUTRO_END, BrannOutroPos[2]);
events.PopEvent();
break;
}
}
@@ -1018,7 +988,7 @@ public:
return;
events.Update(diff);
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_ARCANE_BARRAGE:
me->CastCustomSpell(SPELL_ARCANE_BARRAGE, SPELLVALUE_MAX_TARGETS, 1, (Unit*)NULL, true);
@@ -1026,7 +996,6 @@ public:
break;
case EVENT_RESUME_UPDATING:
events.SetPhase(0);
events.PopEvent();
break;
}
}
@@ -1140,11 +1109,10 @@ public:
return;
events.Update(diff);
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_DESPAWN_CONSOLE:
go->Delete();
events.PopEvent();
break;
}
}

View File

@@ -327,7 +327,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case EVENT_FUSION_PUNCH:
me->CastSpell(me->GetVictim(), SPELL_FUSION_PUNCH, false);
@@ -347,7 +347,6 @@ public:
case EVENT_ENRAGE:
Talk(SAY_STEELBREAKER_BERSERK);
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
}
@@ -497,7 +496,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case EVENT_RUNE_OF_POWER:
{
@@ -529,7 +528,6 @@ public:
case EVENT_ENRAGE:
me->CastSpell(me, SPELL_BERSERK, true);
Talk(SAY_MOLGEIM_BERSERK);
events.PopEvent();
break;
}
@@ -762,7 +760,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_CHAIN_LIGHTNING:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
@@ -772,7 +770,6 @@ public:
break;
case EVENT_IMMUNE:
me->ApplySpellImmune(1, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false);
events.PopEvent();
break;
case EVENT_OVERLOAD:
me->ApplySpellImmune(1, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, true);
@@ -818,7 +815,6 @@ public:
me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), speed);
_flyPhase = false;
events.ScheduleEvent(EVENT_LAND_LAND, 1000);
events.PopEvent();
break;
}
case EVENT_LAND_LAND:
@@ -833,13 +829,11 @@ public:
me->RemoveAura(SPELL_LIGHTNING_TENDRILS);
me->RemoveAura(61883);
DoResetThreat();
events.PopEvent();
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false);
break;
case EVENT_ENRAGE:
Talk(SAY_BRUNDIR_BERSERK);
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
}

View File

@@ -224,17 +224,15 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SUMMON_FERAL_DEFENDER:
me->MonsterTextEmote("Auriaya begins to activate Feral Defender.", 0, true);
me->CastSpell(me, SPELL_ACTIVATE_FERAL_DEFENDER, true);
events.PopEvent();
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, true);
events.ScheduleEvent(EVENT_REMOVE_IMMUNE, 3000);
break;
case EVENT_REMOVE_IMMUNE:
events.PopEvent();
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false);
break;
case EVENT_TERRIFYING_SCREECH:
@@ -259,14 +257,12 @@ public:
{
EntryCheckPredicate pred(NPC_FERAL_DEFENDER);
summons.DoAction(ACTION_FERAL_RESPAWN, pred);
events.PopEvent();
break;
}
case EVENT_ENRAGE:
me->MonsterTextEmote("You waste my time!", 0);
me->PlayDirectSound(SOUND_BERSERK);
me->CastSpell(me, SPELL_ENRAGE, true);
events.PopEvent();
break;
}

View File

@@ -384,7 +384,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_POSITION_CHECK:
if (me->GetPositionX() > 450 || me->GetPositionX() < 120)
@@ -423,10 +423,8 @@ public:
Talk(FLAME_LEVIATHAN_SAY_HARDMODE);
else
Talk(FLAME_LEVIATHAN_SAY_TOWER_NONE);
events.PopEvent();
return;
case EVENT_REINSTALL:
events.PopEvent();
for (uint8 i = RAID_MODE(0, 2); i < 4; ++i)
if (Unit* seat = vehicle->GetPassenger(i))
if (seat->GetTypeId() == TYPEID_UNIT)
@@ -441,19 +439,16 @@ public:
return;
case EVENT_FREYA:
SummonTowerHelpers(TOWER_OF_LIFE);
events.PopEvent();
me->MonsterTextEmote("Flame Leviathan activates Freya's Ward.", 0, true);
Talk(FLAME_LEVIATHAN_SAY_TOWER_NATURE);
return;
case EVENT_MIMIRONS_INFERNO:
SummonTowerHelpers(TOWER_OF_FLAMES);
events.PopEvent();
me->MonsterTextEmote("Flame Leviathan activates Mimiron's Inferno.", 0, true);
Talk(FLAME_LEVIATHAN_SAY_TOWER_FLAME);
return;
case EVENT_HODIRS_FURY:
SummonTowerHelpers(TOWER_OF_FROST);
events.PopEvent();
me->MonsterTextEmote("Flame Leviathan activates Hodir's Fury.", 0, true);
Talk(FLAME_LEVIATHAN_SAY_TOWER_FROST);
return;

View File

@@ -558,7 +558,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_FREYA_ADDS_SPAM:
if (_spawnedAmount < 6)
@@ -568,7 +568,6 @@ public:
me->RemoveAura(SPELL_ATTUNED_TO_NATURE);
events.ScheduleEvent(EVENT_FREYA_NATURE_BOMB, 5000);
events.SetPhase(EVENT_PHASE_FINAL);
events.PopEvent();
return;
}
_spawnedAmount++;
@@ -599,7 +598,6 @@ public:
events.RepeatEvent(15000 + urand(0, 5000));
break;
case EVENT_FREYA_RESPAWN_TRIO:
events.PopEvent();
_deforestation = 0;
_respawningTrio = false;
if (_trioKilled < 3)
@@ -628,7 +626,6 @@ public:
me->MonsterYell("You have strayed too far, wasted too much time!", LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_BERSERK);
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
case EVENT_FREYA_GROUND_TREMOR:
me->CastSpell(me, SPELL_GROUND_TREMOR_FREYA, false);
@@ -742,7 +739,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_STONEBARK_FISTS_OF_STONE:
me->CastSpell(me, SPELL_FISTS_OF_STONE, false);
@@ -839,7 +836,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_BRIGHTLEAF_FLUX:
if (Aura* aur = me->AddAura(SPELL_BRIGHTLEAF_FLUX, me))
@@ -880,7 +877,6 @@ public:
}
summons.DespawnAll();
events.PopEvent();
break;
}
@@ -961,7 +957,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_IRONBRANCH_IMPALE:
me->CastSpell(me->GetVictim(), SPELL_IMPALE, false);
@@ -1193,7 +1189,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_ANCIENT_CONSERVATOR_NATURE_FURY:
me->CastSpell(me->GetVictim(), SPELL_NATURE_FURY, false);
@@ -1207,7 +1203,6 @@ public:
break;
case EVENT_WATER_SPIRIT_DAMAGE:
me->CastSpell(me, SPELL_TIDAL_WAVE_DAMAGE, false);
events.PopEvent();
break;
case EVENT_STORM_LASHER_LIGHTNING_LASH:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))

View File

@@ -207,7 +207,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -216,7 +216,6 @@ public:
me->CastSpell(me, SPELL_VEZAX_BERSERK, true);
me->MonsterYell(TEXT_VEZAX_BERSERK, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_VEZAX_BERSERK, 0);
events.PopEvent();
break;
case EVENT_SPELL_VEZAX_SHADOW_CRASH:
{
@@ -243,7 +242,6 @@ public:
case EVENT_RESTORE_TARGET:
if (me->GetVictim())
me->SetUInt64Value(UNIT_FIELD_TARGET, me->GetVictim()->GetGUID());
events.PopEvent();
break;
case EVENT_SPELL_SEARING_FLAMES:
if(!me->HasAura(SPELL_SARONITE_BARRIER))
@@ -302,7 +300,6 @@ public:
sv->GetMotionMaster()->MoveCharge(1852.78f, 81.38f, 342.461f, 28.0f);
}
events.PopEvent();
events.DelayEvents(12000, 0);
events.DelayEvents(12000, 1);
events.ScheduleEvent(EVENT_SARONITE_VAPORS_SWIRL, 6000);
@@ -316,11 +313,9 @@ public:
if( Creature* sv = ObjectAccessor::GetCreature(*me, *(summons.begin())) )
sv->CastSpell(sv, SPELL_SARONITE_ANIMUS_FORMATION_VISUAL, true);
events.PopEvent();
events.ScheduleEvent(EVENT_SPELL_SUMMON_SARONITE_ANIMUS, 2000);
break;
}
events.PopEvent();
break;
case EVENT_SPELL_SUMMON_SARONITE_ANIMUS:
if (summons.size())
@@ -333,15 +328,12 @@ public:
if( Creature* sv = ObjectAccessor::GetCreature(*me, *(summons.begin())) )
sv->CastSpell(sv, SPELL_SUMMON_SARONITE_ANIMUS, true);
events.PopEvent();
events.ScheduleEvent(EVENT_DESPAWN_SARONITE_VAPORS, 2500);
break;
}
events.PopEvent();
break;
case EVENT_DESPAWN_SARONITE_VAPORS:
summons.DespawnEntry(NPC_SARONITE_VAPORS);
events.PopEvent();
break;
}

View File

@@ -396,7 +396,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -406,14 +406,12 @@ public:
me->CastSpell(me, SPELL_BERSERK, true);
me->MonsterYell(TEXT_HODIR_BERSERK, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_HODIR_BERSERK, 0);
events.PopEvent();
}
break;
case EVENT_HARD_MODE_MISSED:
{
hardmode = false;
me->MonsterTextEmote(TEXTEMOTE_HODIR_HARD_MODE_MISSED, 0);
events.PopEvent();
}
break;
case EVENT_FLASH_FREEZE:
@@ -447,7 +445,6 @@ public:
case EVENT_SMALL_ICICLES_ENABLE:
{
SmallIcicles(true);
events.PopEvent();
}
break;
case EVENT_FROZEN_BLOWS:
@@ -456,7 +453,6 @@ public:
me->MonsterTextEmote(TEXTEMOTE_HODIR_FROZEN_BLOWS, 0);
me->PlayDirectSound(SOUND_HODIR_FROZEN_BLOWS, 0);
me->CastSpell(me, SPELL_FROZEN_BLOWS, true);
events.PopEvent();
}
break;
case EVENT_FREEZE:
@@ -789,7 +785,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -801,7 +797,6 @@ public:
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
{
AttackStart(hodir);
events.PopEvent();
ScheduleAbilities();
break;
}
@@ -886,7 +881,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -898,7 +893,6 @@ public:
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
{
AttackStart(hodir);
events.PopEvent();
ScheduleAbilities();
break;
}
@@ -991,7 +985,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -1003,7 +997,6 @@ public:
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
{
AttackStart(hodir);
events.PopEvent();
ScheduleAbilities();
break;
}
@@ -1086,7 +1079,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -1098,7 +1091,6 @@ public:
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
{
AttackStart(hodir);
events.PopEvent();
ScheduleAbilities();
break;
}

View File

@@ -336,7 +336,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -347,7 +347,6 @@ public:
me->MonsterYell(TEXT_BERSERK, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_BERSERK);
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
}
events.RepeatEvent(RAID_MODE(40000, 30000));
@@ -373,7 +372,6 @@ public:
case EVENT_ENABLE_ROTATE:
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
events.PopEvent();
break;
case EVENT_SPELL_FLAME_JETS:
me->MonsterTextEmote(TEXT_FLAME_JETS, 0, true);

View File

@@ -391,7 +391,6 @@ public:
case EVENT_STONE_SHOUT:
if (_left || _right)
{
events.PopEvent();
return;
}
@@ -463,12 +462,10 @@ public:
}
case EVENT_RESTORE_ARM_LEFT:
// shouldn't happen
events.PopEvent();
AttachLeftArm();
return;
case EVENT_RESTORE_ARM_RIGHT:
// shouldn't happen
events.PopEvent();
AttachRightArm();
return;
}

View File

@@ -429,24 +429,21 @@ public:
events.Update(diff);
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
case EVENT_COMPUTER_SAY_INITIATED:
if( Creature* computer = me->SummonCreature(NPC_COMPUTER, 2790.0f, 2569.44f, 364.31f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000) )
computer->AI()->Talk(TALK_COMPUTER_INITIATED);
events.PopEvent();
break;
case EVENT_COMPUTER_SAY_MINUTES:
if( Creature* computer = me->SummonCreature(NPC_COMPUTER, 2790.0f, 2569.44f, 364.31f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000) )
computer->AI()->Talk(minutesTalkNum++);
events.PopEvent();
break;
case EVENT_MIMIRON_SAY_HARDMODE:
me->MonsterYell(TEXT_HARDMODE, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_TANK_HARD_INTRO);
events.PopEvent();
events.ScheduleEvent(EVENT_SPAWN_FLAMES_INITIAL, 0);
events.ScheduleEvent(EVENT_SIT_LMK2, 4000);
break;
@@ -484,7 +481,6 @@ public:
me->PlayDirectSound(SOUND_BERSERK);
if( hardmode )
me->SummonCreature(33576, 2744.78f, 2569.47f, 364.32f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 120000);
events.PopEvent();
events.ScheduleEvent(EVENT_BERSERK_2, 0);
break;
case EVENT_BERSERK_2:
@@ -505,7 +501,6 @@ public:
if(Creature* LMK2 = GetLMK2())
{
me->EnterVehicle(LMK2, 6);
events.PopEvent();
events.ScheduleEvent(EVENT_SIT_LMK2_INTERVAL, 2000);
break;
}
@@ -522,7 +517,6 @@ public:
cannon->CastSpell(cannon, SPELL_EMERGENCY_MODE, true);
}
LMK2->AI()->SetData(1, 1);
events.PopEvent();
break;
}
EnterEvadeMode();
@@ -534,7 +528,6 @@ public:
me->MonsterYell(TEXT_LMK2_DEATH, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_TANK_DEATH);
LMK2->SetFacingTo(3.58f);
events.PopEvent();
events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_0, 6000);
break;
}
@@ -547,7 +540,6 @@ public:
elevator->UseDoorOrButton(0, false);
elevator->EnableCollision(false);
}
events.PopEvent();
events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_1, 6000);
break;
case EVENT_ELEVATOR_INTERVAL_1:
@@ -559,7 +551,6 @@ public:
elevator->UseDoorOrButton(0, true);
elevator->EnableCollision(false);
}
events.PopEvent();
events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_2, 18000);
break;
}
@@ -569,7 +560,6 @@ public:
if (Creature* VX001 = GetVX001())
{
me->EnterVehicle(VX001, 0);
events.PopEvent();
events.ScheduleEvent(EVENT_SITTING_ON_VX001, 4000);
break;
}
@@ -578,14 +568,12 @@ public:
case EVENT_SITTING_ON_VX001:
me->MonsterYell(TEXT_VX001_ACTIVATE, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_TORSO_ACTIVE);
events.PopEvent();
events.ScheduleEvent(EVENT_ENTER_VX001, 5000);
break;
case EVENT_ENTER_VX001:
if( Creature* VX001 = GetVX001() )
{
me->EnterVehicle(VX001, 1);
events.PopEvent();
events.ScheduleEvent(EVENT_EMOTE_VX001, 2000);
break;
}
@@ -595,7 +583,6 @@ public:
if( Creature* VX001 = GetVX001() )
{
VX001->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
events.PopEvent();
events.ScheduleEvent(EVENT_VX001_START_FIGHT, 1750);
break;
}
@@ -608,7 +595,6 @@ public:
VX001->CastSpell(VX001, SPELL_EMERGENCY_MODE, true);
VX001->AI()->SetData(1, 2);
me->SetInCombatWithZone();
events.PopEvent();
break;
}
EnterEvadeMode();
@@ -618,7 +604,6 @@ public:
{
VX001->HandleEmoteCommand(EMOTE_STATE_DROWNED);
VX001->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_DROWNED);
events.PopEvent();
events.ScheduleEvent(EVENT_GET_OUT_VX001, 2500);
break;
}
@@ -632,7 +617,6 @@ public:
float speed = ACU->GetDistance(2737.75f, 2574.22f, 381.34f) / 2.0f;
ACU->MonsterMoveWithSpeed(2737.75f, 2574.22f, 381.34f, speed);
ACU->SetPosition(2737.75f, 2574.22f, 381.34f, M_PI);
events.PopEvent();
events.ScheduleEvent(EVENT_SAY_VX001_DEAD, 2000);
break;
}
@@ -642,14 +626,12 @@ public:
changeAllowedFlameSpreadTime = true;
me->MonsterYell(TEXT_VX001_DEATH, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_TORSO_DEATH);
events.PopEvent();
events.ScheduleEvent(EVENT_ENTER_ACU, 7000);
break;
case EVENT_ENTER_ACU:
if( Creature* ACU = GetACU() )
{
me->EnterVehicle(ACU, 0);
events.PopEvent();
events.ScheduleEvent(EVENT_SAY_ACU_ACTIVATE, 6000);
break;
}
@@ -658,7 +640,6 @@ public:
case EVENT_SAY_ACU_ACTIVATE:
me->MonsterYell(TEXT_ACU_ACTIVATE, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_HEAD_ACTIVE);
events.PopEvent();
events.ScheduleEvent(EVENT_ACU_START_ATTACK, 4000);
break;
case EVENT_ACU_START_ATTACK:
@@ -668,7 +649,6 @@ public:
ACU->CastSpell(ACU, SPELL_EMERGENCY_MODE, true);
ACU->AI()->SetData(1, 3);
me->SetInCombatWithZone();
events.PopEvent();
break;
}
EnterEvadeMode();
@@ -676,14 +656,12 @@ public:
case EVENT_SAY_ACU_DEAD:
me->MonsterYell(TEXT_ACU_DEATH, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_HEAD_DEATH);
events.PopEvent();
events.ScheduleEvent(EVENT_LEVIATHAN_COME_CLOSER, 5000);
break;
case EVENT_LEVIATHAN_COME_CLOSER:
if (Creature* LMK2 = GetLMK2())
{
LMK2->GetMotionMaster()->MoveCharge(2755.77f, 2574.95f, 364.31f, 21.0f);
events.PopEvent();
events.ScheduleEvent(EVENT_VX001_EMOTE_JUMP, 4000);
break;
}
@@ -702,7 +680,6 @@ public:
VX001->SendMeleeAttackStop();
VX001->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_CUSTOM_SPELL_02);
VX001->HandleEmoteCommand(EMOTE_ONESHOT_CUSTOM_SPELL_02);
events.PopEvent();
events.ScheduleEvent(EVENT_LEVIATHAN_RIDE_MIDDLE, 4800);
}
break;
@@ -722,7 +699,6 @@ public:
VX001->EnterVehicle(LMK2, 3);
LMK2->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_CUSTOM_SPELL_01);
LMK2->HandleEmoteCommand(EMOTE_STATE_CUSTOM_SPELL_01);
events.PopEvent();
events.ScheduleEvent(EVENT_JOIN_TOGETHER, 3000);
}
break;
@@ -740,7 +716,6 @@ public:
me->EnterVehicle(VX001, 1);
me->MonsterYell(TEXT_VOLTRON_ACTIVATE, LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_VOLTRON_ACTIVE);
events.PopEvent();
events.ScheduleEvent(EVENT_START_PHASE4, 10000);
}
break;
@@ -768,7 +743,6 @@ public:
ACU->CastSpell(ACU, SPELL_EMERGENCY_MODE, true);
}
me->SetInCombatWithZone();
events.PopEvent();
}
break;
case EVENT_FINISH:
@@ -841,7 +815,6 @@ public:
if( uint32 chestId = (hardmode ? RAID_MODE(GO_MIMIRON_CHEST_HARD, GO_MIMIRON_CHEST_HERO_HARD) : RAID_MODE(GO_MIMIRON_CHEST, GO_MIMIRON_CHEST_HERO)) )
if( GameObject* go = me->SummonGameObject(chestId, 2744.65f, 2569.46f, 364.397f, 0, 0, 0, 0, 0, 0) )
go->SetUInt32Value(GAMEOBJECT_FLAGS, 0);
events.PopEvent();
events.ScheduleEvent(EVENT_DISAPPEAR, 15000);
break;
case EVENT_DISAPPEAR:
@@ -849,7 +822,6 @@ public:
pInstance->SetData(TYPE_MIMIRON, DONE);
summons.DespawnAll();
me->DespawnOrUnsummon();
events.PopEvent();
break;
}
}
@@ -1158,7 +1130,7 @@ public:
if (!cannon || cannon->HasUnitState(UNIT_STATE_CASTING) || me->HasUnitState(UNIT_STATE_CASTING) || me->HasAuraType(SPELL_AURA_MOD_SILENCE))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -1211,13 +1183,10 @@ public:
if( Creature* pmNPC = me->SummonCreature(NPC_PROXIMITY_MINE, x + v_xmin, y + v_ymin, z, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 40000) )
pmNPC->KnockbackFrom(x, y, 6.0f, 25.0f);
}
events.PopEvent();
}
break;
case EVENT_FLAME_SUPPRESSION_50000:
me->CastSpell(me, SPELL_FLAME_SUPPRESSANT_50000yd, false);
events.PopEvent();
break;
}
}
@@ -1471,7 +1440,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -1514,7 +1483,6 @@ public:
if (!me->HandleSpellClick(accessory, i))
accessory->UnSummon();
}
events.PopEvent();
break;
case EVENT_SPELL_RAPID_BURST:
if (Player* p = SelectTargetFromPlayerList(80.0f))
@@ -1828,7 +1796,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -1883,19 +1851,16 @@ public:
me->CastSpell(me, SPELL_SPINNING, true);
me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), 365.34f, me->GetExactDist(me->GetPositionX(), me->GetPositionY(), 365.34f));
me->UpdatePosition(me->GetPositionX(), me->GetPositionY(), 365.34f, me->GetOrientation(), false);
events.PopEvent();
events.ScheduleEvent(EVENT_MAGNETIC_CORE_FREE, 20000);
break;
case EVENT_MAGNETIC_CORE_FREE:
me->RemoveAura(SPELL_SPINNING);
me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), 381.34f, me->GetDistance(me->GetPositionX(), me->GetPositionY(), 381.34f));
me->UpdatePosition(me->GetPositionX(), me->GetPositionY(), 381.34f, me->GetOrientation(), false);
events.PopEvent();
events.ScheduleEvent(EVENT_MAGNETIC_CORE_REMOVE_IMMOBILIZE, 1000);
break;
case EVENT_MAGNETIC_CORE_REMOVE_IMMOBILIZE:
immobilized = false;
events.PopEvent();
break;
}
}
@@ -2379,7 +2344,7 @@ public:
events.Update(diff);
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -2395,7 +2360,6 @@ public:
if (Creature* mimiron = GetMimiron())
if (CreateTime < mimiron->AI()->GetData(10))
{
events.PopEvent();
break;
}
@@ -2503,7 +2467,7 @@ public:
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -2521,7 +2485,6 @@ public:
break;
case EVENT_EMERGENCY_BOT_ATTACK:
me->CastSpell((Unit*)NULL, SPELL_WATER_SPRAY, false);
events.PopEvent();
events.RescheduleEvent(EVENT_EMERGENCY_BOT_CHECK, 5000);
break;
}

View File

@@ -324,7 +324,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -335,7 +335,6 @@ public:
case EVENT_COMMANDER_SAY_AGGRO:
if (Creature* commander = ObjectAccessor::GetCreature(*me, CommanderGUID))
commander->AI()->Talk(SAY_COMMANDER_AGGRO);
events.PopEvent();
break;
case EVENT_EE_SAY_MOVE_OUT:
for (uint8 i = 0; i < 3; ++i)
@@ -345,7 +344,6 @@ public:
c->MonsterYell(TEXT_EE_MOVE_OUT, LANG_UNIVERSAL, 0);
c->AI()->SetData(1, 0); // start repairing
}
events.PopEvent();
break;
case EVENT_SPELL_FIREBALL:
if( Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200.0f, true) )
@@ -436,17 +434,14 @@ public:
}
}
events.PopEvent();
break;
case EVENT_WARN_DEEP_BREATH:
me->MonsterTextEmote(TEXT_DEEP_BREATH, 0, true);
me->RemoveAura(62794);
events.PopEvent();
events.ScheduleEvent(EVENT_PHASE2_FLAME_BREATH, 2500);
break;
case EVENT_PHASE2_FLAME_BREATH:
me->CastSpell(me, S_FLAMEBREATH, true);
events.PopEvent();
events.ScheduleEvent(EVENT_FLY_UP, 2000);
break;
case EVENT_FLY_UP:
@@ -484,7 +479,6 @@ public:
me->GetMotionMaster()->MoveChase(target);
}
bGroundPhase = true;
events.PopEvent();
events.CancelEvent(EVENT_SPELL_FIREBALL);
events.CancelEvent(EVENT_SPELL_DEVOURING_FLAME);
events.CancelEvent(EVENT_SUMMON_MOLE_MACHINES);
@@ -512,7 +506,6 @@ public:
events.ScheduleEvent(EVENT_RESUME_FIXING, 22000);
}
events.PopEvent();
break;
case EVENT_RESUME_FIXING:
for (uint8 i = 0; i < 3; ++i)
@@ -522,7 +515,6 @@ public:
c->MonsterYell(TEXT_EE_FIRES_OUT, LANG_UNIVERSAL, 0);
c->AI()->SetData(1, 0); // start repairing
}
events.PopEvent();
break;
case EVENT_SPELL_FLAME_BREATH:
me->CastSpell(me->GetVictim(), S_FLAMEBREATH, false);

View File

@@ -668,13 +668,12 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_THORIM_AGGRO:
me->MonsterYell("Interlopers! You mortals who dare to interfere with my sport will pay... Wait--you...", LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_AGGRO1);
events.ScheduleEvent(EVENT_THORIM_AGGRO2, 9000);
events.PopEvent();
if (GameObject* go = GetThorimObject(DATA_THORIM_FENCE))
go->SetGoState(GO_STATE_READY);
@@ -684,7 +683,6 @@ public:
{
me->MonsterYell("I remember you... In the mountains... But you... what is this? Where am--", LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_AGGRO2);
events.PopEvent();
EntryCheckPredicate pred(NPC_SIF);
summons.DoAction(ACTION_SIF_START_TALK, pred);
@@ -692,7 +690,6 @@ public:
}
case EVENT_THORIM_START_PHASE1:
{
events.PopEvent();
events.ScheduleEvent(EVENT_THORIM_STORMHAMMER, 8000, 0, EVENT_PHASE_START);
events.ScheduleEvent(EVENT_THORIM_CHARGE_ORB, 14000, 0, EVENT_PHASE_START);
events.ScheduleEvent(EVENT_THORIM_FILL_ARENA, 0, 0, EVENT_PHASE_START);
@@ -728,13 +725,11 @@ public:
me->SummonCreature(NPC_LIGHTNING_ORB, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
_isArenaEmpty = true;
events.PopEvent();
events.CancelEvent(EVENT_THORIM_NOT_REACH_IN_TIME);
break;
}
case EVENT_THORIM_NOT_REACH_IN_TIME:
_isArenaEmpty = true;
events.PopEvent();
events.CancelEvent(EVENT_THORIM_LIGHTNING_ORB);
me->CastSpell(me, SPELL_BERSERK_FRIENDS, true);
me->SummonCreature(NPC_LIGHTNING_ORB, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
@@ -750,7 +745,6 @@ public:
break;
case EVENT_THORIM_LIGHTNING_CHARGE:
me->CastSpell(me, SPELL_LIGHTNING_PILLAR_P2, true);
events.PopEvent();
break;
case EVENT_THORIM_CHAIN_LIGHTNING:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
@@ -759,12 +753,10 @@ public:
break;
case EVENT_THORIM_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
me->MonsterYell("My patience has reached its limit!", LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_BERSERK);
break;
case EVENT_THORIM_OUTRO1:
events.PopEvent();
if (_hardMode)
{
me->MonsterYell("You! Fiend! You are not my beloved! Be gone!", LANG_UNIVERSAL, 0);
@@ -781,7 +773,6 @@ public:
}
break;
case EVENT_THORIM_OUTRO2:
events.PopEvent();
if (_hardMode)
{
me->MonsterYell("Behold the hand behind all the evil that has befallen Ulduar! Left my kingdom in ruins, corrupted my brother and slain my wife!", LANG_UNIVERSAL, 0);
@@ -796,7 +787,6 @@ public:
}
break;
case EVENT_THORIM_OUTRO3:
events.PopEvent();
if (_hardMode)
{
me->MonsterYell("And now it falls to you, champions, to avenge us all! The task before you is great, but I will lend you my aid as I am able. You must prevail!", LANG_UNIVERSAL, 0);
@@ -883,23 +873,20 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SIF_FINISH_DOMINION:
events.PopEvent();
me->PlayDirectSound(SOUND_SIF_DESPAWN);
me->MonsterYell("This pathetic morons are harmless. Relive my station, dispose of them!", LANG_UNIVERSAL, 0);
me->DespawnOrUnsummon(5000);
break;
case EVENT_SIF_START_TALK:
events.PopEvent();
me->MonsterYell("Thorim, my lord, why else would these invaders have come into your sanctum but to slay you? They must be stopped!", LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_SIF_START);
break;
case EVENT_SIF_JOIN_TALK:
me->PlayDirectSound(SOUND_SIF_EVENT);
me->MonsterYell("Impossible! Lord Thorim, I will bring your foes a frigid death!", LANG_UNIVERSAL, 0);
events.PopEvent();
events.ScheduleEvent(EVENT_SIF_FROST_NOVA_START, 1000);
events.ScheduleEvent(EVENT_SIF_FROSTBOLT_VALLEY, 11000);
events.ScheduleEvent(EVENT_SIF_BLIZZARD, 15000);
@@ -922,7 +909,6 @@ public:
case EVENT_SIF_FROST_NOVA_CAST:
_allowCast = true;
me->CastSpell(me, SPELL_FROST_NOVA, false);
events.PopEvent();
return;
}
@@ -1210,7 +1196,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_DR_ACOLYTE_GH:
if (HealthBelowPct(60))
@@ -1327,7 +1313,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_IR_GUARD_IMPALE:
me->CastSpell(me->GetVictim(), SPELL_IMPALE, false);
@@ -1470,13 +1456,11 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_RC_RUNIC_SMASH_TRIGGER:
_nextTriggerPos += 16.0f;
if (_nextTriggerPos > -260.0f)
events.PopEvent();
else
if (!(_nextTriggerPos > -260.0f))
events.RescheduleEvent(EVENT_RC_RUNIC_SMASH_TRIGGER, 500);
RunRunicSmash(true);
@@ -1573,7 +1557,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_ARG_RD:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
@@ -1691,7 +1675,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_DR_WARBRINGER_RS:
me->CastSpell(me->GetVictim(), SPELL_RUNIC_STRIKE, false);

View File

@@ -303,13 +303,12 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
// Control events
case EVENT_HEALTH_CHECK:
if (_hardMode)
{
events.PopEvent();
return;
}
@@ -338,12 +337,10 @@ public:
// Abilities events
case EVENT_GRAVITY_BOMB:
me->CastCustomSpell(SPELL_GRAVITY_BOMB, SPELLVALUE_MAX_TARGETS, 1, me, true);
events.PopEvent();
events.ScheduleEvent(EVENT_SEARING_LIGHT, 10000, 1);
break;
case EVENT_SEARING_LIGHT:
me->CastCustomSpell(SPELL_SEARING_LIGHT, SPELLVALUE_MAX_TARGETS, 1, me, true);
events.PopEvent();
events.ScheduleEvent(EVENT_GRAVITY_BOMB, 10000, 1);
break;
case EVENT_TYMPANIC_TANTARUM:
@@ -357,7 +354,6 @@ public:
me->MonsterYell("I'm tired of these toys. I don't want to play anymore!", LANG_UNIVERSAL, 0);
me->PlayDirectSound(XT_SOUND_SUMMON);
me->CastSpell(me, SPELL_XT002_ENRAGE, true);
events.PopEvent();
break;
// Animation events
@@ -368,13 +364,11 @@ public:
heart->GetAI()->DoAction(ACTION_AWAKEN_HEART);
events.ScheduleEvent(EVENT_RESTORE, 30000);
events.PopEvent();
return;
// Restore from heartbreak
case EVENT_RESTORE:
if (_hardMode)
{
events.PopEvent();
return;
}
@@ -387,14 +381,12 @@ public:
heart->GetAI()->DoAction(ACTION_HIDE_HEART);
events.ScheduleEvent(EVENT_REMOVE_EMOTE, 4000);
events.PopEvent();
return;
case EVENT_REMOVE_EMOTE:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(false, UNIT_STATE_STUNNED);
RescheduleEvents();
events.PopEvent();
return;
}

View File

@@ -740,7 +740,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case EVENT_SARA_P1_DOORS_CLOSE:
// Whispers of YS
@@ -751,7 +751,6 @@ public:
go->SetGoState(GO_STATE_READY);
events.ScheduleEvent(EVENT_SARA_P1_SPELLS, 0, 1, EVENT_PHASE_ONE);
events.PopEvent();
break;
case EVENT_SARA_P1_SUMMON:
events.RepeatEvent(20000 - (std::min(_summonedGuardiansCount, (uint8)5) * 2000));
@@ -768,7 +767,6 @@ public:
}
case EVENT_SARA_P2_START:
{
events.PopEvent();
EntryCheckPredicate pred(NPC_YOGG_SARON);
summons.DoAction(ACTION_YOGG_SARON_APPEAR, pred);
events.RescheduleEvent(EVENT_SARA_P2_SPAWN_START_TENTACLES, 500, 0, EVENT_PHASE_TWO);
@@ -817,13 +815,10 @@ public:
case EVENT_SARA_P2_REMOVE_STUN:
{
me->RemoveAura(SPELL_SHATTERED_ILLUSION);
events.PopEvent();
summons.DoAction(ACTION_REMOVE_STUN);
break;
}
case EVENT_SARA_P2_SPAWN_START_TENTACLES:
events.PopEvent();
me->SetOrientation(M_PI);
me->SetDisplayId(SARA_TRANSFORM_MODEL);
@@ -1148,7 +1143,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_YS_LUNATIC_GAZE:
me->MonsterYell("Hoohehehahahaha... AHAHAHAHAHAHA!", LANG_UNIVERSAL, 0);
@@ -2235,11 +2230,10 @@ public:
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 40:
{
events.PopEvent();
uint64 _guid = _targets.at(_current);
++_current;

View File

@@ -995,12 +995,11 @@ public:
return;
_events.Update(diff);
switch (_events.GetEvent())
switch (_events.ExecuteEvent())
{
case EVENT_UPDATE_ALGALON_TIMER:
if (m_algalonTimer == TIMER_ALGALON_DEFEATED)
{
_events.PopEvent();
return;
}
@@ -1012,7 +1011,6 @@ public:
return;
}
_events.PopEvent();
SetData(DATA_ALGALON_DEFEATED, 1);
if (Creature* algalon = instance->GetCreature(m_uiAlgalonGUID))
algalon->AI()->DoAction(ACTION_DESPAWN_ALGALON);

View File

@@ -294,7 +294,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -407,7 +407,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;