mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 06:06:23 +00:00
fix(Core/Util): EventMap::RepeatEvent when eventId is retrieved by ExecuteEvent() call (#3426)
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user