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

@@ -325,38 +325,31 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING) && !(events.GetPhaseMask() & PHASE_INTRO_MASK))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
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_INTRO_5:
Talk(SAY_INTRO_5);
events.PopEvent();
break;
case EVENT_INTRO_6:
Talk(SAY_INTRO_6);
events.PopEvent();
break;
case EVENT_INTRO_7:
Talk(SAY_INTRO_7);
events.PopEvent();
break;
case EVENT_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
Talk(SAY_BERSERK);
events.PopEvent();
break;
case EVENT_SPELL_DEATH_AND_DECAY:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
@@ -723,7 +716,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_FANATIC_NECROTIC_STRIKE:
me->CastSpell(me->GetVictim(), SPELL_NECROTIC_STRIKE, false);
@@ -749,7 +742,6 @@ public:
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_LADY_DEATHWHISPER)))
ladyDeathwhisper->AI()->Talk(SAY_ANIMATE_DEAD);
events.PopEvent();
break;
case EVENT_SPELL_CULTIST_DARK_MARTYRDOM:
me->CastSpell(me, SPELL_PERMANENT_FEIGN_DEATH, true);
@@ -761,8 +753,6 @@ public:
Reset();
events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM_REVIVE, 6000);
break;
default:
break;
}
DoMeleeAttackIfReady();
@@ -839,7 +829,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_SPELL_ADHERENT_FROST_FEVER:
me->CastSpell(me->GetVictim(), SPELL_FROST_FEVER, false);
@@ -873,7 +863,6 @@ public:
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_LADY_DEATHWHISPER)))
ladyDeathwhisper->AI()->Talk(SAY_ANIMATE_DEAD);
events.PopEvent();
break;
case EVENT_SPELL_CULTIST_DARK_MARTYRDOM:
me->CastSpell(me, SPELL_PERMANENT_FEIGN_DEATH, true);
@@ -1072,7 +1061,7 @@ public:
return;
}
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case EVENT_DARNAVAN_BLADESTORM:
me->CastSpell((Unit*)nullptr, SPELL_BLADESTORM, false);
@@ -1080,7 +1069,6 @@ public:
break;
case EVENT_DARNAVAN_CHARGE:
_canCharge = true;
events.PopEvent();
break;
case EVENT_DARNAVAN_INTIMIDATING_SHOUT:
me->CastSpell((Unit*)nullptr, SPELL_INTIMIDATING_SHOUT, false);
@@ -1092,7 +1080,6 @@ public:
break;
case EVENT_DARNAVAN_SHATTERING_THROW:
_canShatter = true;
events.PopEvent();
break;
case EVENT_DARNAVAN_SUNDER_ARMOR:
me->CastSpell(me->GetVictim(), SPELL_SUNDER_ARMOR, false);

View File

@@ -154,13 +154,12 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
case EVENT_ENABLE_BONE_SLICE:
_boneSlice = true;
events.PopEvent();
break;
case EVENT_SPELL_BONE_SPIKE_GRAVEYARD:
{
@@ -177,7 +176,6 @@ public:
break;
case EVENT_SPELL_COLDFLAME_BONE_STORM:
me->CastSpell(me, SPELL_COLDFLAME_BONE_STORM, false);
events.PopEvent();
break;
case EVENT_WARN_BONE_STORM:
_boneSlice = false;
@@ -196,7 +194,6 @@ public:
uint32 _boneStormDuration = RAID_MODE<uint32>(20000, 30000, 20000, 30000);
if (Aura* pStorm = me->GetAura(SPELL_BONE_STORM))
pStorm->SetDuration(int32(_boneStormDuration));
events.PopEvent();
events.ScheduleEvent(EVENT_BONE_STORM_MOVE, 0);
events.ScheduleEvent(EVENT_END_BONE_STORM, _boneStormDuration + 1);
}
@@ -229,7 +226,6 @@ public:
me->GetMotionMaster()->MovementExpired();
me->SetReactState(REACT_AGGRESSIVE);
DoStartMovement(me->GetVictim());
events.PopEvent();
events.CancelEvent(EVENT_BONE_STORM_MOVE);
events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000);
if (!IsHeroic())
@@ -238,7 +234,6 @@ public:
case EVENT_ENRAGE:
me->CastSpell(me, SPELL_BERSERK, true);
Talk(SAY_BERSERK);
events.PopEvent();
break;
}
@@ -327,7 +322,7 @@ public:
{
events.Update(diff);
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -340,7 +335,6 @@ public:
float ny = me->GetPositionY() + 5.0f * sin(me->GetOrientation());
if (!me->IsWithinLOS(nx, ny, 42.5f))
{
events.PopEvent();
break;
}
me->NearTeleportTo(nx, ny, 42.5f, me->GetOrientation());

View File

@@ -1686,7 +1686,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING) || me->isFeared() || me->isFrozen() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasUnitState(UNIT_STATE_CONFUSED) || ((me->GetEntry() == NPC_YMIRJAR_DEATHBRINGER || me->GetEntry() == NPC_YMIRJAR_FROSTBINDER) && me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED)))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -1712,7 +1712,6 @@ public:
break;
case 4: // Summon Warhawk
me->CastSpell(me, 71705, false);
events.PopEvent();
break;
case 11: // Whirlwind
me->CastSpell(me->GetVictim(), 41056, false);
@@ -1728,7 +1727,6 @@ public:
break;
case 31: // Arctic Chill
me->CastSpell(me, 71270, true);
events.PopEvent();
break;
case 32: // Frozen Orb
if (Unit* target = SelectTarget(SELECT_TARGET_FARTHEST, 0, 30.0f, true))
@@ -1748,7 +1746,6 @@ public:
events.RepeatEvent(45000);
break;
default:
events.PopEvent();
break;
}
@@ -2582,7 +2579,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -2647,7 +2644,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -2702,7 +2699,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -2764,7 +2761,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -2883,7 +2880,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;
@@ -3006,7 +3003,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
if (uint32 e = events.GetEvent())
if (uint32 e = events.ExecuteEvent())
{
Unit* target = nullptr;
if (sesi_spells[e - 1].targetType == 1)
@@ -3105,7 +3102,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 1:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true))
@@ -3255,7 +3252,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 1:
if (me->GetVictim() && !me->GetVictim()->HasAura(71163) && me->GetVictim()->GetDistance(me) > 5.0f && me->GetVictim()->GetDistance(me) < 30.0f)
@@ -3396,7 +3393,7 @@ public:
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
switch (events.ExecuteEvent())
{
case 0:
break;