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

@@ -98,7 +98,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_CURSE_OF_EXERTION:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true))

View File

@@ -122,7 +122,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_VOID_STRIKE:
me->CastSpell(me->GetVictim(), SPELL_VOID_STRIKE, false);

View File

@@ -129,7 +129,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_CARRION_SWARM:
me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_CARRION_SWARM_N, SPELL_CARRION_SWARM_H), false);

View File

@@ -81,7 +81,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_DISEASE_EXPULSION:
me->CastSpell(me, DUNGEON_MODE(SPELL_DISEASE_EXPULSION_N, SPELL_DISEASE_EXPULSION_H), false);

View File

@@ -112,7 +112,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_SHADOW_BOLT:
me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_SHADOW_BOLT_N, SPELL_SHADOW_BOLT_H), false);

View File

@@ -659,7 +659,7 @@ public:
if (eventInRun)
{
actionEvents.Update(diff);
switch (uint32 currentEvent = actionEvents.GetEvent())
switch (uint32 currentEvent = actionEvents.ExecuteEvent())
{
case EVENT_ACTION_PHASE1:
SetRun(false);
@@ -815,7 +815,7 @@ public:
SetEscortPaused(false);
eventInRun = false;
me->SetTarget(0);
actionEvents.PopEvent(); // dont schedule next, do it in gossip select!
// dont schedule next, do it in gossip select!
break;
//After Gossip 1 (waypoint 8)
case EVENT_ACTION_PHASE2:
@@ -910,7 +910,6 @@ public:
pInstance->SetData(DATA_START_WAVES, 1);
SummonNextWave();
actionEvents.PopEvent();
break;
case EVENT_ACTION_PHASE2+9:
if (pInstance)
@@ -919,7 +918,6 @@ public:
Talk(SAY_PHASE210);
eventInRun = false;
SetEscortPaused(false);
actionEvents.PopEvent();
break;
// After waypoint 22
case EVENT_ACTION_PHASE3:
@@ -1110,7 +1108,6 @@ public:
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_KILLED_EPOCH);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
actionEvents.PopEvent();
eventInRun = false;
break;
case EVENT_ACTION_PHASE5:
@@ -1122,7 +1119,6 @@ public:
cr->AddThreat(me, 0.0f);
AttackStart(cr);
}
actionEvents.PopEvent();
eventInRun = false;
SetEscortPaused(true);
break;
@@ -1150,7 +1146,6 @@ public:
case EVENT_ACTION_PHASE5+3:
eventInRun = false;
me->SetVisible(false);
actionEvents.PopEvent();
break;
}
}
@@ -1163,7 +1158,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (combatEvents.GetEvent())
switch (combatEvents.ExecuteEvent())
{
case EVENT_COMBAT_EXORCISM:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
@@ -1202,7 +1197,6 @@ Creature* npc_arthas::npc_arthasAI::GetEventNpc(uint32 entry)
void npc_arthas::npc_arthasAI::ScheduleNextEvent(uint32 currentEvent, uint32 time)
{
actionEvents.PopEvent();
actionEvents.ScheduleEvent(currentEvent + 1, time);
}

View File

@@ -323,7 +323,7 @@ public:
DoMeleeAttackIfReady();
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;
@@ -358,7 +358,6 @@ public:
me->StopMoving();
DoResetThreat();
me->GetMotionMaster()->MovePoint(10, OnyxiaMoveData[0].x, OnyxiaMoveData[0].y, OnyxiaMoveData[0].z);
events.PopEvent();
}
break;
case EVENT_LIFTOFF:
@@ -374,19 +373,18 @@ public:
me->SendMovementFlagUpdate();
me->GetMotionMaster()->MoveTakeoff(11, OnyxiaMoveData[1].x + 1.0f, OnyxiaMoveData[1].y, OnyxiaMoveData[1].z, 12.0f);
bManyWhelpsAvailable = true;
events.PopEvent();
events.RescheduleEvent(EVENT_END_MANY_WHELPS_TIME, 10000);
}
break;
case EVENT_END_MANY_WHELPS_TIME:
bManyWhelpsAvailable = false;
events.PopEvent();
break;
case EVENT_FLY_S_TO_N:
{
me->SetSpeed(MOVE_RUN, 2.95f, false);
me->GetMotionMaster()->MovePoint(5, OnyxiaMoveData[5].x, OnyxiaMoveData[5].y, OnyxiaMoveData[5].z);
events.PopEvent();
whelpSpam = true;
events.ScheduleEvent(EVENT_WHELP_SPAM, 90000);
events.ScheduleEvent(EVENT_SUMMON_LAIR_GUARD, 30000);
@@ -409,7 +407,6 @@ public:
Talk(SAY_PHASE_3_TRANS);
me->SendMeleeAttackStop(me->GetVictim());
me->GetMotionMaster()->MoveLand(13, OnyxiaMoveData[0].x + 1.0f, OnyxiaMoveData[0].y, OnyxiaMoveData[0].z, 12.0f);
events.PopEvent();
DoResetThreat();
}
break;
@@ -420,7 +417,7 @@ public:
me->SetFacingToObject(v);
me->CastSpell(v, SPELL_FIREBALL, false);
}
events.PopEvent();
events.ScheduleEvent(EVENT_SPELL_FIREBALL_SECOND, 4000);
}
break;
@@ -431,7 +428,6 @@ public:
me->SetFacingToObject(v);
me->CastSpell(v, SPELL_FIREBALL, false);
}
events.PopEvent();
uint8 rand = urand(0, 99);
if( rand < 33 )
@@ -448,7 +444,6 @@ public:
if( newWP > 8 )
newWP = 1;
me->GetMotionMaster()->MovePoint(newWP, OnyxiaMoveData[newWP].x, OnyxiaMoveData[newWP].y, OnyxiaMoveData[newWP].z);
events.PopEvent();
}
break;
case EVENT_PHASE_2_STEP_ACW:
@@ -457,7 +452,6 @@ public:
if( newWP < 1 )
newWP = 8;
me->GetMotionMaster()->MovePoint(newWP, OnyxiaMoveData[newWP].x, OnyxiaMoveData[newWP].y, OnyxiaMoveData[newWP].z);
events.PopEvent();
}
break;
case EVENT_PHASE_2_STEP_ACROSS:
@@ -465,7 +459,7 @@ public:
me->SetFacingTo(OnyxiaMoveData[CurrentWP].o);
me->MonsterTextEmote("Onyxia takes in a deep breath...", 0, true);
me->CastSpell(me, OnyxiaMoveData[CurrentWP].spellId, false);
events.PopEvent();
events.ScheduleEvent(EVENT_SPELL_BREATH, 8250);
}
break;
@@ -474,20 +468,16 @@ public:
uint8 newWP = OnyxiaMoveData[CurrentWP].DestId;
me->SetSpeed(MOVE_RUN, 2.95f, false);
me->GetMotionMaster()->MovePoint(newWP, OnyxiaMoveData[newWP].x, OnyxiaMoveData[newWP].y, OnyxiaMoveData[newWP].z);
events.PopEvent();
}
break;
case EVENT_START_PHASE_3:
{
me->SetSpeed(MOVE_RUN, 2.95f, false);
me->GetMotionMaster()->MovePoint(12, OnyxiaMoveData[1].x, OnyxiaMoveData[1].y, OnyxiaMoveData[1].z);
events.PopEvent();
}
break;
case EVENT_PHASE_3_ATTACK:
{
events.PopEvent();
me->SetReactState(REACT_AGGRESSIVE);
AttackStart(SelectTarget(SELECT_TARGET_TOPAGGRO, 0, 0, false));
me->CastSpell(me, SPELL_BELLOWINGROAR, false);
@@ -512,8 +502,6 @@ public:
{
if( Creature* trigger = me->SummonCreature(12758, *me, TEMPSUMMON_TIMED_DESPAWN, 1000) )
trigger->CastSpell(trigger, 17731, false);
events.PopEvent();
}
break;
case EVENT_SUMMON_WHELP:
@@ -577,7 +565,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
switch( events.ExecuteEvent() )
{
case 0:
break;

View File

@@ -156,7 +156,7 @@ public:
void UpdateAI(uint32 diff)
{
events.Update(diff);
uint32 eventId = events.GetEvent();
uint32 eventId = events.ExecuteEvent();
if (eventId == EVENT_CHECK_PLAYER)
{
Player* player = ObjectAccessor::GetPlayer(*me, playerGUID);