mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-25 21:15:55 +00:00
fix(Core/Util): EventMap::RepeatEvent when eventId is retrieved by ExecuteEvent() call (#3426)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -822,7 +822,7 @@ public:
|
||||
if (Creature* kelthuzad = instance->GetCreature(_kelthuzadGUID))
|
||||
kelthuzad->AI()->Talk(_currentWingTaunt);
|
||||
++_currentWingTaunt;
|
||||
events.PopEvent();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user