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