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

@@ -128,7 +128,7 @@ public:
if (me->isAttackReady())
me->SetFacingToObject(me->GetVictim());
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -159,7 +159,7 @@ public:
me->CastSpell(me, SPELL_SOULSTORM, false);
me->CastSpell(me, SPELL_TELEPORT_VISUAL, true);
me->CastSpell(me, SPELL_SOULSTORM_VISUAL, true);
events.PopEvent();
break;
}

View File

@@ -164,7 +164,7 @@ public:
if (Spell* s = me->GetCurrentSpell(CURRENT_CHANNELED_SPELL))
if (s->m_spellInfo->Id == SPELL_MIRRORED_SOUL)
{
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -190,7 +190,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;

View File

@@ -67,12 +67,12 @@ public:
void UpdateAI(uint32 diff) override
{
events.Update(diff);
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
case 1:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_1);
@@ -85,7 +85,7 @@ public:
}
break;
case 2:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_2);
@@ -98,7 +98,7 @@ public:
}
break;
case 3:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_3);
@@ -111,7 +111,7 @@ public:
}
break;
case 4:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_4);
@@ -124,7 +124,7 @@ public:
}
break;
case 5:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_5);
@@ -137,7 +137,7 @@ public:
}
break;
case 6:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_6);
@@ -149,7 +149,7 @@ public:
}
break;
case 7:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_7);
@@ -157,7 +157,7 @@ public:
}
break;
case 8:
events.PopEvent();
if (me->GetEntry() == NPC_JAINA_PART1)
{
Talk(SAY_JAINA_INTRO_8);

View File

@@ -223,7 +223,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -244,7 +244,7 @@ public:
me->GetMotionMaster()->MoveJump(northForgePos.GetPositionX(), northForgePos.GetPositionY(), northForgePos.GetPositionZ(), 25.0f, 15.0f, 0);
else if (phase == 2)
me->GetMotionMaster()->MoveJump(southForgePos.GetPositionX(), southForgePos.GetPositionY(), southForgePos.GetPositionZ(), 25.0f, 15.0f, 0);
events.PopEvent();
break;
case EVENT_SPELL_CHILLING_WAVE:
me->CastSpell(me->GetVictim(), SPELL_CHILLING_WAVE, false);

View File

@@ -168,7 +168,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -202,7 +202,7 @@ public:
me->SetReactState(REACT_AGGRESSIVE);
if (!UpdateVictim())
return;
events.PopEvent();
break;
case EVENT_SPECIAL:
switch(urand(0, 2))
@@ -298,7 +298,7 @@ public:
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -315,7 +315,7 @@ public:
c->AI()->Reset();
}
}
events.PopEvent();
events.RescheduleEvent(1, 3000);
break;
case 1:
@@ -335,7 +335,7 @@ public:
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_GUARD_1_GUID + i)))
c->DespawnOrUnsummon();
}
events.PopEvent();
events.RescheduleEvent(2, 7000);
break;
case 2:
@@ -350,12 +350,12 @@ public:
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
c->AI()->Talk(c->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_KRICK_1 : SAY_SYLVANAS_KRICK_1);
}
events.PopEvent();
events.RescheduleEvent(3, 6500);
break;
case 3:
Talk(SAY_OUTRO_KRICK_2);
events.PopEvent();
events.RescheduleEvent(4, 17000);
break;
case 4:
@@ -366,12 +366,12 @@ public:
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
c->AI()->Talk(c->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_KRICK_2 : SAY_SYLVANAS_KRICK_2);
}
events.PopEvent();
events.RescheduleEvent(5, 6500);
break;
case 5:
Talk(SAY_OUTRO_KRICK_3);
events.PopEvent();
events.RescheduleEvent(6, 6500);
break;
case 6:
@@ -381,7 +381,7 @@ public:
c->SetFacingToObject(me);
c->AI()->Talk(SAY_TYRANNUS_KRICK_1);
}
events.PopEvent();
events.RescheduleEvent(7, 4000);
break;
case 7:
@@ -392,12 +392,12 @@ public:
me->SendMovementFlagUpdate();
me->GetMotionMaster()->MoveTakeoff(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 9.0f, 0.5f * 7.0f);
events.PopEvent();
events.RescheduleEvent(8, 2000);
break;
case 8:
Talk(SAY_OUTRO_KRICK_4);
events.PopEvent();
events.RescheduleEvent(9, 1500);
break;
case 9:
@@ -415,14 +415,14 @@ public:
me->RemoveAllAuras();
me->GetMotionMaster()->MoveFall(0, true);
events.PopEvent();
events.RescheduleEvent(10, 5000);
break;
case 10:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
c->AI()->Talk(SAY_TYRANNUS_KRICK_2);
events.PopEvent();
events.RescheduleEvent(11, 9000);
break;
case 11:
@@ -438,7 +438,7 @@ public:
}
me->setActive(false);
Unit::Kill(me, me);
events.PopEvent();
break;
}
}

View File

@@ -138,7 +138,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -146,7 +146,7 @@ public:
if (me->IsWithinMeleeRange(me->GetVictim()))
{
me->CastSpell(me->GetVictim(), SPELL_FORCEFUL_SMASH, false);
events.PopEvent();
events.RescheduleEvent(EVENT_SPELL_UNHOLY_POWER, 1000);
break;
}
@@ -156,7 +156,7 @@ public:
Talk(SAY_SMASH);
Talk(EMOTE_SMASH);
me->CastSpell(me, SPELL_UNHOLY_POWER, false);
events.PopEvent();
events.ScheduleEvent(EVENT_SPELL_FORCEFUL_SMASH, urand(40000, 48000));
break;
case EVENT_SPELL_OVERLORDS_BRAND:

View File

@@ -58,7 +58,7 @@ public:
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -88,7 +88,7 @@ public:
}
else
{
events.PopEvent();
events.RescheduleEvent(2, 2500);
}
}
@@ -100,14 +100,14 @@ public:
c->setActive(true);
c->AI()->Talk(SAY_TYRANNUS_INTRO_1);
}
events.PopEvent();
events.RescheduleEvent(3, 7000);
break;
case 3:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
c->AI()->Talk(SAY_TYRANNUS_INTRO_2);
events.PopEvent();
events.RescheduleEvent(4, 14000);
break;
case 4:
@@ -148,19 +148,19 @@ public:
}
}
}
events.PopEvent();
events.RescheduleEvent(5, 1);
break;
case 5:
Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_1 : SAY_SYLVANAS_INTRO_1);
events.PopEvent();
events.RescheduleEvent(6, 1000);
break;
case 6:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
c->AI()->Talk(SAY_TYRANNUS_INTRO_3);
events.PopEvent();
events.RescheduleEvent(7, 5000);
break;
case 7:
@@ -190,14 +190,14 @@ public:
c->GetMotionMaster()->MoveTakeoff(0, c->GetPositionX() + dist * cos(angle), c->GetPositionY() + dist * sin(angle), c->GetPositionZ() + 6.0f + (float)urand(0, 4), 1.5f + frand(0.0f, 1.5f));
}
}
events.PopEvent();
events.RescheduleEvent(8, 7000);
break;
case 8:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
c->CastSpell(c, 69753, false);
events.PopEvent();
events.RescheduleEvent(9, 400);
break;
case 9:
@@ -211,12 +211,12 @@ public:
c->RemoveAllAuras();
c->GetMotionMaster()->MoveFall(0, true);
}
events.PopEvent();
events.RescheduleEvent(10, 1000);
break;
case 10:
Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_2 : SAY_SYLVANAS_INTRO_2);
events.PopEvent();
events.RescheduleEvent(11, 1000);
break;
case 11:
@@ -232,7 +232,7 @@ public:
c->SendMovementFlagUpdate();
c->CastSpell(c, 69350, true);
}
events.PopEvent();
events.RescheduleEvent(12, 2000);
break;
case 12:
@@ -253,7 +253,7 @@ public:
c->SetReactState(REACT_PASSIVE);
}
}
events.PopEvent();
events.RescheduleEvent(13, 3000);
break;
case 13:
@@ -273,7 +273,7 @@ public:
c->SetHomePosition(me->GetPositionX() + dist * cos(angle), me->GetPositionY() + dist * sin(angle), me->GetPositionZ(), 0.0f);
}
}
events.PopEvent();
events.RescheduleEvent(14, 2000);
break;
case 14:
@@ -292,7 +292,7 @@ public:
c->CastSpell(c, 70513, false);
}
}
events.PopEvent();
events.RescheduleEvent(15, 2000);
break;
case 15:
@@ -308,7 +308,7 @@ public:
c->CastSpell(c, 70464, false);
}
}
events.PopEvent();
events.RescheduleEvent(16, 3000);
break;
case 16:
@@ -333,13 +333,13 @@ public:
}
pInstance->SetData(DATA_INSTANCE_PROGRESS, INSTANCE_PROGRESS_FINISHED_INTRO);
}
events.PopEvent();
events.RescheduleEvent(17, 5000);
break;
case 17:
me->setActive(false);
Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_5 : SAY_SYLVANAS_INTRO_4);
events.PopEvent();
break;
}
@@ -457,7 +457,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -520,7 +520,7 @@ public:
void UpdateAI(uint32 diff)
{
events.Update(diff);
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -542,19 +542,18 @@ public:
c->GetMotionMaster()->MovePath(FBSData[i].pathId, false);
++i;
}
events.PopEvent();
events.RescheduleEvent(2, 3000);
break;
}
case 2:
if (Creature* c = me->SummonCreature(NPC_TYRANNUS_VOICE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() - 10.0f, me->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 1))
c->AI()->Talk(SAY_TYRANNUS_GARFROST);
events.PopEvent();
events.RescheduleEvent(3, 4000);
break;
case 3:
Talk(SAY_GENERAL_GARFROST);
events.PopEvent();
break;
}
}
@@ -1210,7 +1209,7 @@ public:
{
events.Update(diff);
switch(events.GetEvent())
switch(events.ExecuteEvent())
{
case 0:
break;
@@ -1223,26 +1222,26 @@ public:
c->SetHover(true);
c->GetMotionMaster()->MovePoint(0, TSSindragosaPos2);
}
events.PopEvent();
break;
case 2:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MARTIN_OR_GORKUN_GUID)))
c->AI()->Talk(SAY_GENERAL_OUTRO_2);
events.PopEvent();
events.RescheduleEvent(3, me->GetEntry() == NPC_JAINA_PART2 ? 7000 : 8000);
break;
case 3:
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_OUTRO_1 : SAY_SYLVANAS_OUTRO_1);
me->CastSpell(me, me->GetEntry() == NPC_JAINA_PART2 ? SPELL_TELEPORT_JAINA_VISUAL : SPELL_TELEPORT_SYLVANAS_VISUAL, true);
events.PopEvent();
events.RescheduleEvent(4, 2000);
break;
case 4:
me->CastSpell(me, me->GetEntry() == NPC_JAINA_PART2 ? SPELL_TELEPORT_JAINA : SPELL_TELEPORT_SYLVANAS, true);
if (GameObject* barrier = me->SummonGameObject(203005, 1055.49f, 115.03f, 628.15f, 2.08f, 0.0f, 0.0f, 0.0f, 0.0f, 86400, false))
barrierGUID = barrier->GetGUID();
events.PopEvent();
events.RescheduleEvent(5, 1500);
break;
case 5:
@@ -1252,7 +1251,7 @@ public:
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SINDRAGOSA_GUID)))
c->CastSpell(x->GetPositionX(), x->GetPositionY(), x->GetPositionZ(), SPELL_SINDRAGOSA_FROST_BOMB_POS, true);
}
events.PopEvent();
events.RescheduleEvent(6, 5000);
events.RescheduleEvent(10, 2000);
break;
@@ -1260,7 +1259,7 @@ public:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SINDRAGOSA_GUID)))
c->GetMotionMaster()->MovePoint(0, TSSindragosaPos1);
events.PopEvent();
events.RescheduleEvent(7, 4500);
break;
case 7:
@@ -1270,17 +1269,16 @@ public:
if (GameObject* barrier = pInstance->instance->GetGameObject(barrierGUID))
barrier->Delete();
barrierGUID = 0;
events.PopEvent();
events.RescheduleEvent(8, 2000);
break;
case 8:
me->GetMotionMaster()->MovePath(me->GetEntry() == NPC_JAINA_PART2 ? PATH_BEGIN_VALUE + 16 : PATH_BEGIN_VALUE + 17, false);
events.PopEvent();
break;
case 10:
if (Creature* x = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MARTIN_OR_GORKUN_GUID)))
x->AI()->DoAction(3);
events.PopEvent();
break;
}
}
@@ -1448,7 +1446,6 @@ public:
class spell_pos_rimefang_frost_novaSpellScript : public SpellScript
{
PrepareSpellScript(spell_pos_rimefang_frost_novaSpellScript);
void HandleDummy(SpellEffIndex /*effIndex*/)