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

@@ -1,4 +1,4 @@
/*
/*
* Originally written by Xinef - Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
*/
@@ -424,7 +424,7 @@ public:
events.Update(diff);
// Special events which needs to be fired immidiately
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case EVENT_SARTHARION_BOUNDARY:
if (me->GetPositionX() < 3218.86f || me->GetPositionX() > 3275.69f || me->GetPositionY() < 484.68f || me->GetPositionY() > 572.4f) // https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp#L31
@@ -441,11 +441,11 @@ public:
return;
case EVENT_SARTHARION_START_LAVA:
SendLavaWaves(true);
events.PopEvent();
return;
case EVENT_SARTHARION_FINISH_LAVA:
SendLavaWaves(false);
events.PopEvent();
return;
}
@@ -463,7 +463,7 @@ public:
void boss_sartharion::boss_sartharionAI::HandleSartharionAbilities()
{
// Handling of Sartharion Events
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SARTHARION_CAST_CLEAVE:
me->CastSpell(me->GetVictim(), SPELL_SARTHARION_CLEAVE, false);
@@ -523,14 +523,14 @@ void boss_sartharion::boss_sartharionAI::HandleSartharionAbilities()
cr->CastSpell(cr, SPELL_CYCLONE_AURA_PERIODIC, true);
}
Talk(SAY_SARTHARION_BERSERK);
events.PopEvent();
break;
}
events.RepeatEvent(2000);
break;
case EVENT_SARTHARION_BERSERK:
summons.DespawnEntry(NPC_SAFE_AREA_TRIGGER);
events.PopEvent();
break;
}
}
@@ -538,26 +538,26 @@ void boss_sartharion::boss_sartharionAI::HandleSartharionAbilities()
void boss_sartharion::boss_sartharionAI::HandleDrakeAbilities()
{
// Handling of Drakes Events
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
// Dragon Calls
case EVENT_SARTHARION_CALL_TENEBRON:
Talk(SAY_SARTHARION_CALL_TENEBRON);
if (Creature* tenebron = ObjectAccessor::GetCreature(*me, dragons[DRAGON_TENEBRON]))
tenebron->AI()->DoAction(ACTION_CALL_DRAGON);
events.PopEvent();
break;
case EVENT_SARTHARION_CALL_SHADRON:
Talk(SAY_SARTHARION_CALL_SHADRON);
if (Creature* shadron = ObjectAccessor::GetCreature(*me, dragons[DRAGON_SHADRON]))
shadron->AI()->DoAction(ACTION_CALL_DRAGON);
events.PopEvent();
break;
case EVENT_SARTHARION_CALL_VESPERON:
Talk(SAY_SARTHARION_CALL_VESPERON);
if (Creature* vesperon = ObjectAccessor::GetCreature(*me, dragons[DRAGON_VESPERON]))
vesperon->AI()->DoAction(ACTION_CALL_DRAGON);
events.PopEvent();
break;
}
}
@@ -733,7 +733,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_MINIBOSS_SHADOW_BREATH:
if (!urand(0, 10))
@@ -776,7 +776,6 @@ public:
}
events.ScheduleEvent(EVENT_MINIBOSS_HATCH_EGGS, 25000);
events.PopEvent();
break;
}
case EVENT_MINIBOSS_HATCH_EGGS:
@@ -810,7 +809,6 @@ public:
EntryCheckPredicate pred(NPC_TWILIGHT_EGG);
summons.DoAction(ACTION_SWITCH_PHASE, pred);
events.PopEvent();
break;
}
}
@@ -1005,7 +1003,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_MINIBOSS_SHADOW_BREATH:
if (!urand(0, 10))
@@ -1030,7 +1028,7 @@ public:
pInstance->SetData(DATA_ADD_PORTAL, 0);
events.ScheduleEvent(EVENT_MINIBOSS_SPAWN_HELPERS, 2000);
events.PopEvent();
break;
case EVENT_MINIBOSS_SPAWN_HELPERS:
Talk(WHISPER_SUMMON_DICIPLE);
@@ -1041,7 +1039,7 @@ public:
cr->SetPhaseMask(16, true);
}
events.PopEvent();
break;
}
@@ -1235,7 +1233,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_MINIBOSS_SHADOW_BREATH:
if (!urand(0, 10))
@@ -1260,7 +1258,7 @@ public:
pInstance->SetData(DATA_ADD_PORTAL, 0);
events.ScheduleEvent(EVENT_MINIBOSS_SPAWN_HELPERS, 2000);
events.PopEvent();
break;
case EVENT_MINIBOSS_SPAWN_HELPERS:
Talk(WHISPER_SUMMON_DICIPLE);
@@ -1271,7 +1269,7 @@ public:
cr->SetPhaseMask(16, true);
}
events.PopEvent();
break;
}