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

@@ -171,7 +171,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_IMPALE:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
@@ -190,7 +190,7 @@ public:
}
case EVENT_SPELL_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
}

View File

@@ -140,7 +140,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_POISON_BOLT:
if (!me->HasAura(SPELL_WIDOWS_EMBRACE))

View File

@@ -301,7 +301,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_MARK_CAST:
me->CastSpell(me, TABLE_SPELL_MARK[horsemanId], false);
@@ -310,7 +310,7 @@ public:
case EVENT_BERSERK:
Talk(SAY_SPECIAL);
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
return;
case EVENT_SPELL_PRIMARY:
Talk(SAY_TAUNT);

View File

@@ -162,11 +162,11 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
case EVENT_SPELL_ENRAGE:
Talk(EMOTE_ENRAGE);

View File

@@ -385,19 +385,19 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_INTRO_2:
Talk(SAY_INTRO_2);
events.PopEvent();
break;
case EVENT_INTRO_3:
Talk(SAY_INTRO_3);
events.PopEvent();
break;
case EVENT_INTRO_4:
Talk(SAY_INTRO_4);
events.PopEvent();
break;
case EVENT_SPELL_SHADOW_BOLT:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SHADOW_BOLT_10, SPELL_SHADOW_BOLT_25), false);
@@ -429,7 +429,7 @@ public:
go->SetGoState(GO_STATE_ACTIVE);
events.CancelEvent(EVENT_TELEPORT);
events.PopEvent();
break;
}
events.RepeatEvent(1000);
@@ -455,7 +455,7 @@ public:
events.ScheduleEvent(EVENT_SPELL_HARVEST_SOUL, urand(5000, 15000));
events.ScheduleEvent(EVENT_TELEPORT, 20000);
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
events.PopEvent();
}
waveCount++;
@@ -471,7 +471,7 @@ public:
gateOpened = true;
Talk(EMOTE_GATE_OPENED);
}
events.PopEvent();
break;
}
@@ -583,7 +583,7 @@ public:
if (me->GetUnitState() == UNIT_STATE_CASTING)
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_DEATH_PLAGUE:
me->CastSpell(me->GetVictim(), SPELL_DEATH_PLAGUE, false);
@@ -659,7 +659,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
class spell_gothik_shadow_bolt_volley : public SpellScriptLoader

View File

@@ -140,7 +140,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_POISON_CLOUD:
me->CastSpell(me, SPELL_POISON_CLOUD, true);
@@ -148,7 +148,7 @@ public:
break;
case EVENT_SPELL_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
case EVENT_SPELL_SLIME_SPRAY:
Talk(EMOTE_SLIME);

View File

@@ -162,7 +162,7 @@ public:
//if (me->HasUnitState(UNIT_STATE_CASTING))
// return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_SPELL_DISRUPTION:
me->CastSpell(me, SPELL_SPELL_DISRUPTION, false);
@@ -208,7 +208,6 @@ public:
{
if (IsInRoom(itr.GetSource()) && !itr.GetSource()->IsAlive())
{
events.PopEvent();
pInstance->SetData(DATA_DANCE_FAIL, 0);
pInstance->SetData(DATA_IMMORTAL_FAIL, 0);
return;

View File

@@ -265,7 +265,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_FLOOR_CHANGE:
if (pInstance)
@@ -277,7 +277,7 @@ public:
go->SetPhaseMask(2, true);
}
}
events.PopEvent();
break;
case EVENT_SUMMON_SOLDIER:
if (Creature* cr = me->SummonCreature(NPC_SOLDIER_OF_THE_FROZEN_WASTES, SummonPositions[urand(0, 5)], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000))
@@ -386,7 +386,6 @@ public:
case EVENT_SECOND_PHASE_HEALTH_CHECK:
if (me->HealthBelowPct(45))
{
events.PopEvent();
Talk(SAY_REQUEST_AID);
events.DelayEvents(5500);
events.ScheduleEvent(EVENT_THIRD_PHASE_LICH_KING_SAY, 5000);
@@ -401,7 +400,7 @@ public:
for (uint8 i = 0 ; i < RAID_MODE(2, 4); ++i)
events.ScheduleEvent(EVENT_SUMMON_GUARDIAN_OF_ICECROWN, 10000 + (i * 5000));
events.PopEvent();
break;
case EVENT_SUMMON_GUARDIAN_OF_ICECROWN:
if (Creature* cr = me->SummonCreature(NPC_GUARDIAN_OF_ICECROWN, SummonPositions[RAND(0, 1, 3, 4)]))
@@ -410,7 +409,6 @@ public:
cr->AI()->AttackStart(me->GetVictim());
}
events.PopEvent();
break;
}
@@ -519,7 +517,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_MINION_SPELL_MORTAL_WOUND:
me->CastSpell(me->GetVictim(), SPELL_MORTAL_WOUND, false);
@@ -529,7 +527,7 @@ public:
if (me->HealthBelowPct(35))
{
me->CastSpell(me, SPELL_FRENZY, true);
events.PopEvent();
break;
}
events.RepeatEvent(1000);

View File

@@ -120,7 +120,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SUMMON_SPORE:
me->CastSpell(me, SPELL_SUMMON_SPORE, true);
@@ -140,7 +140,7 @@ public:
break;
case EVENT_SPELL_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
}

View File

@@ -144,7 +144,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_WEB_SPRAY:
Talk(EMOTE_WEB_SPRAY);
@@ -169,7 +169,7 @@ public:
if (me->GetHealthPct() < 30)
{
me->CastSpell(me, RAID_MODE(SPELL_FRENZY_10, SPELL_FRENZY_25), true);
events.PopEvent();
break;
}

View File

@@ -185,7 +185,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
// GROUND
case EVENT_SPELL_CURSE:
@@ -202,13 +202,12 @@ public:
case EVENT_SUMMON_PLAGUED_WARRIOR_REAL:
me->CastSpell(me, SPELL_SUMMON_PLAGUED_WARRIORS, true);
SummonHelper(NPC_PLAGUED_WARRIOR, RAID_MODE(2, 3));
events.PopEvent();
break;
case EVENT_MOVE_TO_BALCONY:
Talk(EMOTE_TELEPORT_BALCONY);
me->CastSpell(me, SPELL_TELEPORT, true);
StartBalconyPhase();
//events.PopEvent(); events.Reset()!!
// events.Reset()!!
break;
case EVENT_SPELL_BLINK:
DoResetThreat();
@@ -234,7 +233,6 @@ public:
}
else
SummonHelper(NPC_PLAGUED_GUARDIAN, RAID_MODE(2, 4));
events.PopEvent();
break;
case EVENT_MOVE_TO_GROUND:
Talk(EMOTE_TELEPORT_BACK);

View File

@@ -106,7 +106,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_HATEFUL_STRIKE:
{
@@ -157,7 +157,7 @@ public:
Talk(EMOTE_BERSERK);
me->CastSpell(me, SPELL_BERSERK, true);
events.ScheduleEvent(EVENT_SPELL_SLIME_BOLT, 2000);
events.PopEvent();
break;
case EVENT_SPELL_SLIME_BOLT:
me->CastSpell(me, SPELL_SLIME_BOLT, false);
@@ -168,7 +168,7 @@ public:
{
Talk(EMOTE_ENRAGE);
me->CastSpell(me, SPELL_FRENZY, true);
events.PopEvent();
break;
}
events.RepeatEvent(1000);

View File

@@ -135,7 +135,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_UNBALANCING_STRIKE:
me->CastSpell(me->GetVictim(), SPELL_UNBALANCING_STRIKE, false);
@@ -214,7 +214,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING) || me->IsCharmed())
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_MINION_BLOOD_STRIKE:
me->CastSpell(me->GetVictim(), SPELL_BLOOD_STRIKE, false);

View File

@@ -234,12 +234,11 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_BERSERK:
Talk(EMOTE_ENRAGE);
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
me->CastSpell(me, SPELL_BERSERK, true);
return;
case EVENT_SPELL_CLEAVE:
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
@@ -269,7 +268,7 @@ public:
case EVENT_FLIGHT_START:
if (me->HealthBelowPct(11))
{
events.PopEvent();
return;
}
events.RepeatEvent(45000);
@@ -287,13 +286,11 @@ public:
me->SetDisableGravity(true);
me->SetHover(true);
currentTarget = 0;
events.PopEvent();
events.ScheduleEvent(EVENT_FLIGHT_ICEBOLT, 3000);
iceboltCount = RAID_MODE(2, 3);
return;
case EVENT_FLIGHT_ICEBOLT:
{
events.PopEvent();
if (currentTarget)
if (Unit* target = ObjectAccessor::GetUnit(*me, currentTarget))
me->SummonGameObject(GO_ICE_BLOCK, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0);
@@ -335,11 +332,9 @@ public:
Talk(EMOTE_BREATH);
me->CastSpell(me, SPELL_FROST_MISSILE, false);
events.ScheduleEvent(EVENT_FLIGHT_SPELL_EXPLOSION, 8500);
events.PopEvent();
return;
case EVENT_FLIGHT_SPELL_EXPLOSION:
me->CastSpell(me, SPELL_FROST_EXPLOSION, true);
events.PopEvent();
events.ScheduleEvent(EVENT_FLIGHT_START_LAND, 3000);
return;
case EVENT_FLIGHT_START_LAND:
@@ -351,20 +346,18 @@ public:
blockList.clear();
me->RemoveAllGameObjects();
events.ScheduleEvent(EVENT_LAND, 1000);
events.PopEvent();
return;
case EVENT_LAND:
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
me->SetDisableGravity(false);
me->SetHover(false);
events.PopEvent();
events.ScheduleEvent(EVENT_GROUND, 1500);
return;
case EVENT_GROUND:
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
events.PopEvent();
return;
case EVENT_HUNDRED_CLUB:
{
@@ -373,7 +366,6 @@ public:
{
if (itr.GetSource()->GetResistance(SPELL_SCHOOL_FROST) > 100 && pInstance)
{
events.PopEvent();
pInstance->SetData(DATA_HUNDRED_CLUB, 0);
return;
}

View File

@@ -256,14 +256,13 @@ public:
}
}
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_THADDIUS_START:
StartEvent();
events.PopEvent();
break;
case EVENT_THADDIUS_START_2:
events.PopEvent();
Talk(SAY_AGGRO);
me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_STUNNED);
@@ -277,7 +276,7 @@ public:
return;
case EVENT_THADDIUS_SPELL_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
events.PopEvent();
break;
case EVENT_THADDIUS_SPELL_CHAIN_LIGHTNING:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false);
@@ -289,7 +288,7 @@ public:
break;
case EVENT_ACTIVATE_BALL_LIGHTNING:
ballLightningEnabled = true;
events.PopEvent();
break;
}
@@ -454,7 +453,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_MINION_SPELL_POWER_SURGE:
me->CastSpell(me, RAID_MODE(SPELL_POWER_SURGE_10, SPELL_POWER_SURGE_25), false);

View File

@@ -822,7 +822,7 @@ public:
if (Creature* kelthuzad = instance->GetCreature(_kelthuzadGUID))
kelthuzad->AI()->Talk(_currentWingTaunt);
++_currentWingTaunt;
events.PopEvent();
break;
}
}