mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-02 10:33:46 +00:00
refactor(Scripts/Northrend): conversion to std::chrono (#15269)
Co-authored-by: Maelthyrr <maelthyrr@users.noreply.github.com>
This commit is contained in:
@@ -271,8 +271,8 @@ public:
|
||||
me->resetAttackTimer(BASE_ATTACK);
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
events.ScheduleEvent(EVENT_SHADOW_RESONANCE, urand(10000, 15000));
|
||||
events.ScheduleEvent(EVENT_BERSERK, 10min);
|
||||
events.ScheduleEvent(EVENT_SHADOW_RESONANCE, 10s, 15s);
|
||||
if (IsHeroic())
|
||||
me->AddAura(SPELL_SHADOW_PRISON, me);
|
||||
}
|
||||
@@ -412,7 +412,7 @@ public:
|
||||
case EVENT_SHADOW_RESONANCE:
|
||||
Talk(SAY_KELESETH_SPECIAL);
|
||||
me->CastSpell(me, SPELL_SHADOW_RESONANCE, false);
|
||||
events.ScheduleEvent(EVENT_SHADOW_RESONANCE, urand(10000, 15000));
|
||||
events.ScheduleEvent(EVENT_SHADOW_RESONANCE, 10s, 15s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -530,9 +530,9 @@ public:
|
||||
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
events.ScheduleEvent(EVENT_GLITTERING_SPARKS, urand(12000, 15000));
|
||||
events.ScheduleEvent(EVENT_CONJURE_FLAME, 20000);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 10min);
|
||||
events.ScheduleEvent(EVENT_GLITTERING_SPARKS, 12s, 15s);
|
||||
events.ScheduleEvent(EVENT_CONJURE_FLAME, 20s);
|
||||
if (IsHeroic())
|
||||
me->AddAura(SPELL_SHADOW_PRISON, me);
|
||||
}
|
||||
@@ -684,18 +684,18 @@ public:
|
||||
break;
|
||||
case EVENT_GLITTERING_SPARKS:
|
||||
me->CastSpell(me->GetVictim(), SPELL_GLITTERING_SPARKS, false);
|
||||
events.ScheduleEvent(EVENT_GLITTERING_SPARKS, urand(15000, 25000));
|
||||
events.ScheduleEvent(EVENT_GLITTERING_SPARKS, 15s, 25s);
|
||||
break;
|
||||
case EVENT_CONJURE_FLAME:
|
||||
if (_isEmpowered)
|
||||
{
|
||||
me->CastSpell(me, SPELL_CONJURE_EMPOWERED_FLAME, false);
|
||||
events.ScheduleEvent(EVENT_CONJURE_FLAME, 15000);
|
||||
events.ScheduleEvent(EVENT_CONJURE_FLAME, 15s);
|
||||
}
|
||||
else
|
||||
{
|
||||
me->CastSpell(me, SPELL_CONJURE_FLAME, false);
|
||||
events.ScheduleEvent(EVENT_CONJURE_FLAME, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_CONJURE_FLAME, 20s, 25s);
|
||||
}
|
||||
Talk(SAY_TALDARAM_SPECIAL);
|
||||
break;
|
||||
@@ -821,10 +821,10 @@ public:
|
||||
invocationOrder[1] = RAND(DATA_PRINCE_KELESETH_GUID, DATA_PRINCE_TALDARAM_GUID);
|
||||
invocationOrder[2] = DATA_PRINCE_KELESETH_GUID + DATA_PRINCE_TALDARAM_GUID - invocationOrder[1];
|
||||
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
events.ScheduleEvent(EVENT_KINETIC_BOMB, urand(18000, 24000));
|
||||
events.ScheduleEvent(EVENT_SHOCK_VORTEX, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 45000);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 10min);
|
||||
events.ScheduleEvent(EVENT_KINETIC_BOMB, 18s, 24s);
|
||||
events.ScheduleEvent(EVENT_SHOCK_VORTEX, 15s, 20s);
|
||||
events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 45s);
|
||||
if (IsHeroic())
|
||||
{
|
||||
me->AddAura(SPELL_SHADOW_PRISON, me);
|
||||
@@ -1011,7 +1011,7 @@ public:
|
||||
current->CastSpell((Unit*)nullptr, visualSpellId, true);
|
||||
next->AI()->Talk(1);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 46000);
|
||||
events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 46s);
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
@@ -1023,20 +1023,20 @@ public:
|
||||
me->CastSpell(target, SPELL_KINETIC_BOMB_TARGET, false);
|
||||
Talk(SAY_VALANAR_SPECIAL);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_KINETIC_BOMB, me->GetMap()->Is25ManRaid() ? 20500 : 30500);
|
||||
events.ScheduleEvent(EVENT_KINETIC_BOMB, me->GetMap()->Is25ManRaid() ? 20s + 500ms : 30s + 500ms);
|
||||
break;
|
||||
case EVENT_SHOCK_VORTEX:
|
||||
if (_isEmpowered)
|
||||
{
|
||||
me->CastSpell(me, SPELL_EMPOWERED_SHOCK_VORTEX, false);
|
||||
Talk(EMOTE_VALANAR_SHOCK_VORTEX);
|
||||
events.ScheduleEvent(EVENT_SHOCK_VORTEX, 30000);
|
||||
events.ScheduleEvent(EVENT_SHOCK_VORTEX, 30s);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
|
||||
me->CastSpell(target, SPELL_SHOCK_VORTEX, false);
|
||||
events.ScheduleEvent(EVENT_SHOCK_VORTEX, urand(18000, 23000));
|
||||
events.ScheduleEvent(EVENT_SHOCK_VORTEX, 18s, 23s);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1109,7 +1109,7 @@ public:
|
||||
_introDone = true;
|
||||
Talk(SAY_INTRO_1);
|
||||
_events.SetPhase(1);
|
||||
_events.ScheduleEvent(EVENT_INTRO_1, 14000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_1, 14s);
|
||||
// summon a visual trigger
|
||||
if (Creature* summon = DoSummon(NPC_FLOATING_TRIGGER, triggerPos, 15000, TEMPSUMMON_TIMED_DESPAWN))
|
||||
{
|
||||
@@ -1383,7 +1383,7 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.RescheduleEvent(EVENT_BOMB_DESPAWN, 60000);
|
||||
_events.RescheduleEvent(EVENT_BOMB_DESPAWN, 1min);
|
||||
me->SetWalk(true);
|
||||
exploded = false;
|
||||
|
||||
@@ -1400,7 +1400,7 @@ public:
|
||||
if (action == SPELL_KINETIC_BOMB_EXPLOSION)
|
||||
{
|
||||
exploded = true;
|
||||
_events.RescheduleEvent(EVENT_BOMB_DESPAWN, 1000);
|
||||
_events.RescheduleEvent(EVENT_BOMB_DESPAWN, 1s);
|
||||
}
|
||||
else if (action == ACTION_KINETIC_BOMB_JUMP)
|
||||
{
|
||||
@@ -1410,7 +1410,7 @@ public:
|
||||
me->StopMoving();
|
||||
me->GetMotionMaster()->MoveCharge(_x, _y, me->GetPositionZ() + 60.0f, me->GetSpeed(MOVE_RUN));
|
||||
}
|
||||
_events.RescheduleEvent(EVENT_CONTINUE_FALLING, 3000);
|
||||
_events.RescheduleEvent(EVENT_CONTINUE_FALLING, 3s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -181,14 +181,14 @@ public:
|
||||
me->CastSpell(me, SPELL_SHROUD_OF_SORROW, true);
|
||||
me->CastSpell(me, SPELL_FRENZIED_BLOODTHIRST_VISUAL, true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_BERSERK, 330000);
|
||||
events.ScheduleEvent(EVENT_VAMPIRIC_BITE, 15000);
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500);
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, urand(10000, 12000));
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 20000);
|
||||
events.ScheduleEvent(EVENT_SWARMING_SHADOWS, 30000);
|
||||
events.ScheduleEvent(EVENT_TWILIGHT_BLOODBOLT, urand(15000, 25000));
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 124000 + uint32(Is25ManRaid() ? 3000 : 0));
|
||||
events.ScheduleEvent(EVENT_BERSERK, 330s);
|
||||
events.ScheduleEvent(EVENT_VAMPIRIC_BITE, 15s);
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500ms);
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, 10s, 12s);
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 20s);
|
||||
events.ScheduleEvent(EVENT_SWARMING_SHADOWS, 30s);
|
||||
events.ScheduleEvent(EVENT_TWILIGHT_BLOODBOLT, 15s, 25s);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, Is25ManRaid() ? 127s : 124s);
|
||||
|
||||
CleanAuras();
|
||||
me->setActive(true);
|
||||
@@ -282,14 +282,14 @@ public:
|
||||
{
|
||||
case POINT_CENTER:
|
||||
me->CastSpell(me, SPELL_INCITE_TERROR, false);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 100000 + uint32(Is25ManRaid() ? 0 : 20000));
|
||||
events.ScheduleEvent(EVENT_AIR_START_FLYING, 2500);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, Is25ManRaid() ? 100s : 120s);
|
||||
events.ScheduleEvent(EVENT_AIR_START_FLYING, 2500ms);
|
||||
break;
|
||||
case POINT_AIR:
|
||||
_bloodboltedPlayers.clear();
|
||||
me->CastSpell(me, SPELL_BLOODBOLT_WHIRL, false);
|
||||
Talk(SAY_AIR_PHASE);
|
||||
events.ScheduleEvent(EVENT_AIR_FLY_DOWN, 7000);
|
||||
events.ScheduleEvent(EVENT_AIR_FLY_DOWN, 7s);
|
||||
break;
|
||||
case POINT_GROUND:
|
||||
me->SetCanFly(false);
|
||||
@@ -297,8 +297,8 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
if (Unit* target = me->SelectVictim())
|
||||
AttackStart(target);
|
||||
events.RescheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 5000);
|
||||
events.RescheduleEvent(EVENT_SWARMING_SHADOWS, 20000);
|
||||
events.RescheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 5s);
|
||||
events.RescheduleEvent(EVENT_SWARMING_SHADOWS, 20s);
|
||||
break;
|
||||
case POINT_MINCHAR:
|
||||
me->CastSpell(me, SPELL_ANNIHILATE, true);
|
||||
@@ -384,7 +384,7 @@ public:
|
||||
{
|
||||
_tankGUID.Clear();
|
||||
_offtankGUID.Clear();
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500);
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500ms);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -400,7 +400,7 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500);
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500ms);
|
||||
break;
|
||||
case EVENT_DELIRIOUS_SLASH:
|
||||
if (!me->HasReactState(REACT_PASSIVE))
|
||||
@@ -415,14 +415,14 @@ public:
|
||||
target = me->GetVictim();
|
||||
if (!target)
|
||||
{
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, 5000);
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, 5s);
|
||||
break;
|
||||
}
|
||||
me->CastSpell(target, SPELL_DELIRIOUS_SLASH, false);
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, urand(20000, 24000));
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, 20s, 24s);
|
||||
break;
|
||||
}
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, 5000);
|
||||
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, 5s);
|
||||
break;
|
||||
case EVENT_PACT_OF_THE_DARKFALLEN:
|
||||
if (!me->HasReactState(REACT_PASSIVE))
|
||||
@@ -439,13 +439,13 @@ public:
|
||||
Talk(SAY_PACT_OF_THE_DARKFALLEN);
|
||||
for (std::list<Player*>::iterator itr = myList.begin(); itr != myList.end(); ++itr)
|
||||
me->CastSpell(*itr, SPELL_PACT_OF_THE_DARKFALLEN, false);
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 30000);
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 30s);
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 5000);
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 5s);
|
||||
break;
|
||||
}
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 5000);
|
||||
events.ScheduleEvent(EVENT_PACT_OF_THE_DARKFALLEN, 5s);
|
||||
break;
|
||||
case EVENT_SWARMING_SHADOWS:
|
||||
if (!me->HasReactState(REACT_PASSIVE))
|
||||
@@ -466,10 +466,10 @@ public:
|
||||
me->CastSpell(target, SPELL_SWARMING_SHADOWS, false);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_SWARMING_SHADOWS, 30000);
|
||||
events.ScheduleEvent(EVENT_SWARMING_SHADOWS, 30s);
|
||||
break;
|
||||
}
|
||||
events.ScheduleEvent(EVENT_SWARMING_SHADOWS, 5000);
|
||||
events.ScheduleEvent(EVENT_SWARMING_SHADOWS, 5s);
|
||||
break;
|
||||
case EVENT_TWILIGHT_BLOODBOLT:
|
||||
if (!me->HasReactState(REACT_PASSIVE))
|
||||
@@ -485,10 +485,10 @@ public:
|
||||
for (std::list<Player*>::iterator itr = myList.begin(); itr != myList.end(); ++itr)
|
||||
me->CastSpell(*itr, SPELL_TWILIGHT_BLOODBOLT, false);
|
||||
me->CastSpell(me, SPELL_TWILIGHT_BLOODBOLT_TARGET, false);
|
||||
events.ScheduleEvent(EVENT_TWILIGHT_BLOODBOLT, urand(10000, 15000));
|
||||
events.ScheduleEvent(EVENT_TWILIGHT_BLOODBOLT, 10s, 15s);
|
||||
break;
|
||||
}
|
||||
events.ScheduleEvent(EVENT_TWILIGHT_BLOODBOLT, 5000);
|
||||
events.ScheduleEvent(EVENT_TWILIGHT_BLOODBOLT, 5s);
|
||||
break;
|
||||
case EVENT_AIR_PHASE:
|
||||
me->AttackStop();
|
||||
|
||||
@@ -294,11 +294,11 @@ public:
|
||||
Talk(SAY_AGGRO);
|
||||
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 30000);
|
||||
events.ScheduleEvent(EVENT_BERSERK, (IsHeroic() ? 360000 : 480000));
|
||||
events.ScheduleEvent(EVENT_BOILING_BLOOD, 15500, 0);
|
||||
events.ScheduleEvent(EVENT_BLOOD_NOVA, 17000, 0);
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, 20000, 0);
|
||||
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 30s);
|
||||
events.ScheduleEvent(EVENT_BERSERK, (IsHeroic() ? 6min : 8min));
|
||||
events.ScheduleEvent(EVENT_BOILING_BLOOD, 15s + 500ms, 0);
|
||||
events.ScheduleEvent(EVENT_BLOOD_NOVA, 17s, 0);
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, 20s, 0);
|
||||
|
||||
_fallenChampionCastCount = 0;
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
|
||||
@@ -426,9 +426,9 @@ public:
|
||||
for (uint32 i25 = 0; i25 < 3; ++i25)
|
||||
DoCast(me, SPELL_SUMMON_BLOOD_BEAST_25_MAN + i25);
|
||||
Talk(SAY_BLOOD_BEASTS);
|
||||
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 40000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 40s);
|
||||
if (IsHeroic())
|
||||
events.ScheduleEvent(EVENT_BLOOD_BEAST_SCENT_OF_BLOOD, 10000);
|
||||
events.ScheduleEvent(EVENT_BLOOD_BEAST_SCENT_OF_BLOOD, 10s);
|
||||
break;
|
||||
case EVENT_BLOOD_BEAST_SCENT_OF_BLOOD:
|
||||
Talk(EMOTE_SCENT_OF_BLOOD);
|
||||
@@ -437,16 +437,16 @@ public:
|
||||
case EVENT_BLOOD_NOVA:
|
||||
{
|
||||
me->CastSpell((Unit*)nullptr, SPELL_BLOOD_NOVA_TRIGGER, false);
|
||||
events.ScheduleEvent(EVENT_BLOOD_NOVA, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_BLOOD_NOVA, 20s, 25s);
|
||||
break;
|
||||
}
|
||||
case EVENT_RUNE_OF_BLOOD:
|
||||
DoCastVictim(SPELL_RUNE_OF_BLOOD);
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, 20s, 25s);
|
||||
break;
|
||||
case EVENT_BOILING_BLOOD:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_BOILING_BLOOD, false);
|
||||
events.ScheduleEvent(EVENT_BOILING_BLOOD, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_BOILING_BLOOD, 15s, 20s);
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
@@ -561,8 +561,8 @@ public:
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
Talk(SAY_INTRO_HORDE_1);
|
||||
_events.SetPhase(PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5s, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18s + 500ms, 0, PHASE_INTRO_H);
|
||||
_instance->HandleGameObject(_instance->GetGuidData(GO_SAURFANG_S_DOOR), true);
|
||||
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
@@ -633,13 +633,13 @@ public:
|
||||
case POINT_FIRST_STEP:
|
||||
me->SetWalk(false);
|
||||
Talk(SAY_INTRO_HORDE_3);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_4, 6500, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_5, 15500, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_6, 29500, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_7, 43800, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_8, 47000, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_9, 46700 + 1000 + 500, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 46700 + 1000 + 9000, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_4, 6500ms, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_5, 15s + 500ms, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_6, 29s + 500ms, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_7, 43s + 800ms, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_8, 47s, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_9, 48s + 200ms, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 56s + 700ms, 0, PHASE_INTRO_H);
|
||||
break;
|
||||
/*case POINT_CORPSE:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
@@ -822,9 +822,9 @@ public:
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
Talk(SAY_INTRO_ALLIANCE_1);
|
||||
_events.SetPhase(PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_2, 2500, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_3, 20000, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 2500 + 17500 + 9500, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_2, 2500ms, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_3, 20s, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 29s + 500ms, 0, PHASE_INTRO_A);
|
||||
_instance->HandleGameObject(_instance->GetGuidData(GO_SAURFANG_S_DOOR), true);
|
||||
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
@@ -892,10 +892,10 @@ public:
|
||||
case POINT_FIRST_STEP:
|
||||
me->SetWalk(false);
|
||||
Talk(SAY_INTRO_ALLIANCE_4);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_5, 5000, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_6, 6500 + 500, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_7, 6500 + 500 + 2000, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 6500 + 500 + 2000 + 5000, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_5, 5s, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_6, 7s, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_7, 9s, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 14s, 0, PHASE_INTRO_A);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -117,13 +117,13 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_BERSERK, 300000);
|
||||
events.ScheduleEvent(EVENT_INHALE_BLIGHT, urand(25000, 30000));
|
||||
events.ScheduleEvent(EVENT_GAS_SPORE, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_VILE_GAS, urand(30000, 40000), 1);
|
||||
events.ScheduleEvent(EVENT_GASTRIC_BLOAT, urand(12500, 15000));
|
||||
events.ScheduleEvent(EVENT_BERSERK, 5min);
|
||||
events.ScheduleEvent(EVENT_INHALE_BLIGHT, 25s, 30s);
|
||||
events.ScheduleEvent(EVENT_GAS_SPORE, 20s, 25s);
|
||||
events.ScheduleEvent(EVENT_VILE_GAS, 30s, 40s, 1);
|
||||
events.ScheduleEvent(EVENT_GASTRIC_BLOAT, 12s + 500ms, 15s);
|
||||
if (IsHeroic())
|
||||
events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_FESTERGUT_GOO, 15s, 20s);
|
||||
|
||||
me->setActive(true);
|
||||
Talk(SAY_AGGRO);
|
||||
@@ -211,7 +211,7 @@ public:
|
||||
Talk(SAY_PUNGENT_BLIGHT);
|
||||
me->CastSpell(me, SPELL_PUNGENT_BLIGHT, false);
|
||||
_inhaleCounter = 0;
|
||||
events.RescheduleEvent(EVENT_GAS_SPORE, urand(20000, 25000));
|
||||
events.RescheduleEvent(EVENT_GAS_SPORE, 20s, 25s);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -222,13 +222,13 @@ public:
|
||||
me->CastSpell(me, gaseousBlight[_inhaleCounter], true, nullptr, nullptr, me->GetGUID());
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_INHALE_BLIGHT, 34000);
|
||||
events.ScheduleEvent(EVENT_INHALE_BLIGHT, 34s);
|
||||
break;
|
||||
case EVENT_GAS_SPORE:
|
||||
Talk(EMOTE_WARN_GAS_SPORE);
|
||||
Talk(EMOTE_GAS_SPORE);
|
||||
me->CastCustomSpell(SPELL_GAS_SPORE, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 3, 2, 3), me);
|
||||
events.ScheduleEvent(EVENT_GAS_SPORE, urand(40000, 45000));
|
||||
events.ScheduleEvent(EVENT_GAS_SPORE, 40s, 45s);
|
||||
events.DelayEventsToMax(20000, 1); // delay EVENT_VILE_GAS
|
||||
break;
|
||||
case EVENT_VILE_GAS:
|
||||
@@ -242,18 +242,18 @@ public:
|
||||
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, minDist, true))
|
||||
me->CastSpell(target, SPELL_VILE_GAS, false);
|
||||
events.ScheduleEvent(EVENT_VILE_GAS, urand(28000, 35000), 1);
|
||||
events.ScheduleEvent(EVENT_VILE_GAS, 28s, 35s, 1);
|
||||
break;
|
||||
}
|
||||
case EVENT_GASTRIC_BLOAT:
|
||||
me->CastSpell(me->GetVictim(), SPELL_GASTRIC_BLOAT, false);
|
||||
events.ScheduleEvent(EVENT_GASTRIC_BLOAT, urand(15000, 17500));
|
||||
events.ScheduleEvent(EVENT_GASTRIC_BLOAT, 15s, 17s + 500ms);
|
||||
break;
|
||||
case EVENT_FESTERGUT_GOO:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NonTankTargetSelector(me)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->CastSpell(target, SPELL_MALLABLE_GOO_H, true);
|
||||
events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_FESTERGUT_GOO, 15s, 20s);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -439,8 +439,8 @@ public:
|
||||
{
|
||||
me->setActive(true);
|
||||
me->CastSpell(me, SPELL_PLAGUE_STENCH, true);
|
||||
events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(1500, 2500));
|
||||
events.ScheduleEvent(EVENT_DECIMATE, 20s, 25s);
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, 1500ms, 2500ms);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -459,11 +459,11 @@ public:
|
||||
{
|
||||
case EVENT_DECIMATE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_DECIMATE, false);
|
||||
events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_DECIMATE, 20s, 25s);
|
||||
break;
|
||||
case EVENT_MORTAL_WOUND:
|
||||
me->CastSpell(me->GetVictim(), SPELL_MORTAL_WOUND, false);
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(1500, 2500));
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, 1500ms, 2500ms);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -763,11 +763,11 @@ public:
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->GetTransport()->setActive(true);
|
||||
me->GetTransport()->ToMotionTransport()->EnableMovement(true);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_1, 5000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_2, 16000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_SUMMON_SKYBREAKER, 24600);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_3, 29600);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_4, 39200);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_1, 5s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_2, 16s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_SUMMON_SKYBREAKER, 24s + 600ms);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_3, 29s + 600ms);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_4, 39s + 200ms);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*target*/) override
|
||||
@@ -777,7 +777,7 @@ public:
|
||||
if (!me->HasAura(SPELL_BATTLE_FURY))
|
||||
me->CastSpell(me, SPELL_BATTLE_FURY, true);
|
||||
_events.CancelEvent(EVENT_CLEAVE);
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, urand(3000, 6000));
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, 3s, 6s);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
@@ -801,9 +801,9 @@ public:
|
||||
muradin->AI()->DoAction(ACTION_SPAWN_ALL_ADDS);
|
||||
|
||||
Talk(SAY_SAURFANG_INTRO_5);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_5, 4000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_6, 11000);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_5, 4s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_6, 11s);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1ms);
|
||||
|
||||
if (Creature* skybreaker = me->FindNearestCreature(NPC_THE_SKYBREAKER, 200.0f))
|
||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, skybreaker, 1);
|
||||
@@ -819,13 +819,13 @@ public:
|
||||
if (_firstMageCooldown > now)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
|
||||
else
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1);
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1ms);
|
||||
}
|
||||
else if (action == ACTION_SPAWN_ALL_ADDS)
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_ADDS, 12000);
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 13000);
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 13000);
|
||||
_events.ScheduleEvent(EVENT_ADDS, 12s);
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 13s);
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 13s);
|
||||
if (Is25ManRaid())
|
||||
_controller.SummonCreatures(me, SLOT_MAGE_1, SLOT_MORTAR_4);
|
||||
else
|
||||
@@ -860,7 +860,7 @@ public:
|
||||
{
|
||||
_controller.ClearSlot(PassengerSlots(data));
|
||||
if (data == SLOT_FREEZE_MAGE)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, urand(30000, 33500));
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 30s, 33s + 500ms);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -950,7 +950,7 @@ public:
|
||||
if (Player* p = itr->GetSource())
|
||||
if (!p->IsGameMaster())
|
||||
p->SetInCombatState(true);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 4000);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 4s);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -980,8 +980,8 @@ public:
|
||||
me->SummonCreature(NPC_TELEPORT_EXIT, x, y, z, o, TEMPSUMMON_TIMED_DESPAWN, 23000);
|
||||
}
|
||||
|
||||
_events.ScheduleEvent(EVENT_ADDS_BOARD_YELL, 6000);
|
||||
_events.ScheduleEvent(EVENT_ADDS, 60000);
|
||||
_events.ScheduleEvent(EVENT_ADDS_BOARD_YELL, 6s);
|
||||
_events.ScheduleEvent(EVENT_ADDS, 1min);
|
||||
break;
|
||||
case EVENT_ADDS_BOARD_YELL:
|
||||
if (Creature* muradin = me->FindNearestCreature(NPC_IGB_MURADIN_BRONZEBEARD, 200.0f))
|
||||
@@ -996,7 +996,7 @@ public:
|
||||
_axethrowersYellCooldown = GameTime::GetGameTime().count() + 5;
|
||||
}
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1500);
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1500ms);
|
||||
break;
|
||||
case EVENT_CHECK_MORTAR:
|
||||
if (_controller.SummonCreatures(me, SLOT_MORTAR_1, Is25ManRaid() ? SLOT_MORTAR_4 : SLOT_MORTAR_2))
|
||||
@@ -1007,12 +1007,12 @@ public:
|
||||
_rocketeersYellCooldown = GameTime::GetGameTime().count() + 5;
|
||||
}
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1500);
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1500ms);
|
||||
break;
|
||||
case EVENT_CLEAVE:
|
||||
if (me->GetVictim())
|
||||
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, urand(4000, 8000));
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, 4s, 8s);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1098,12 +1098,12 @@ public:
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->GetTransport()->setActive(true);
|
||||
me->GetTransport()->ToMotionTransport()->EnableMovement(true);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_1, 5000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_2, 10000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_SUMMON_ORGRIMS_HAMMER, 28000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_3, 33000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_4, 39000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_5, 45000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_1, 5s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_2, 10s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_SUMMON_ORGRIMS_HAMMER, 28s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_3, 33s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_4, 39s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_5, 45s);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*target*/) override
|
||||
@@ -1113,7 +1113,7 @@ public:
|
||||
if (!me->HasAura(SPELL_BATTLE_FURY))
|
||||
me->CastSpell(me, SPELL_BATTLE_FURY, true);
|
||||
_events.CancelEvent(EVENT_CLEAVE);
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, urand(3000, 6000));
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, 3s, 6s);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
@@ -1137,9 +1137,9 @@ public:
|
||||
saurfang->AI()->DoAction(ACTION_SPAWN_ALL_ADDS);
|
||||
|
||||
Talk(SAY_MURADIN_INTRO_6);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_6, 5000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_7, 11000);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_6, 5s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_7, 11s);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1ms);
|
||||
|
||||
if (Creature* orgrimsHammer = me->FindNearestCreature(NPC_ORGRIMS_HAMMER, 200.0f))
|
||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, orgrimsHammer, 1);
|
||||
@@ -1155,13 +1155,13 @@ public:
|
||||
if (_firstMageCooldown > now)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
|
||||
else
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1);
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1ms);
|
||||
}
|
||||
else if (action == ACTION_SPAWN_ALL_ADDS)
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_ADDS, 12000);
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 13000);
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 13000);
|
||||
_events.ScheduleEvent(EVENT_ADDS, 12s);
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 13s);
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 13s);
|
||||
if (Is25ManRaid())
|
||||
_controller.SummonCreatures(me, SLOT_MAGE_1, SLOT_MORTAR_4);
|
||||
else
|
||||
@@ -1196,7 +1196,7 @@ public:
|
||||
{
|
||||
_controller.ClearSlot(PassengerSlots(data));
|
||||
if (data == SLOT_FREEZE_MAGE)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, urand(30000, 33500));
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 30s, 33s + 500ms);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1289,7 +1289,7 @@ public:
|
||||
if (Player* p = itr->GetSource())
|
||||
if (!p->IsGameMaster())
|
||||
p->SetInCombatState(true);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 4000);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 4s);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1319,8 +1319,8 @@ public:
|
||||
me->SummonCreature(NPC_TELEPORT_EXIT, x, y, z, o, TEMPSUMMON_TIMED_DESPAWN, 23000);
|
||||
}
|
||||
|
||||
_events.ScheduleEvent(EVENT_ADDS_BOARD_YELL, 6000);
|
||||
_events.ScheduleEvent(EVENT_ADDS, 60000);
|
||||
_events.ScheduleEvent(EVENT_ADDS_BOARD_YELL, 6s);
|
||||
_events.ScheduleEvent(EVENT_ADDS, 1min);
|
||||
break;
|
||||
case EVENT_ADDS_BOARD_YELL:
|
||||
if (Creature* saurfang = me->FindNearestCreature(NPC_IGB_HIGH_OVERLORD_SAURFANG, 200.0f))
|
||||
@@ -1335,7 +1335,7 @@ public:
|
||||
_riflemanYellCooldown = GameTime::GetGameTime().count() + 5;
|
||||
}
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1500);
|
||||
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1500ms);
|
||||
break;
|
||||
case EVENT_CHECK_MORTAR:
|
||||
if (_controller.SummonCreatures(me, SLOT_MORTAR_1, Is25ManRaid() ? SLOT_MORTAR_4 : SLOT_MORTAR_2))
|
||||
@@ -1346,12 +1346,12 @@ public:
|
||||
_mortarYellCooldown = GameTime::GetGameTime().count() + 5;
|
||||
}
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1500);
|
||||
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1500ms);
|
||||
break;
|
||||
case EVENT_CLEAVE:
|
||||
if (me->GetVictim())
|
||||
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, urand(4000, 8000));
|
||||
_events.ScheduleEvent(EVENT_CLEAVE, 4s, 8s);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1661,8 +1661,8 @@ public:
|
||||
void JustEngagedWith(Unit* /*target*/) override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_BLADESTORM, urand(13000, 18000));
|
||||
_events.ScheduleEvent(EVENT_WOUNDING_STRIKE, urand(5000, 10000));
|
||||
_events.ScheduleEvent(EVENT_BLADESTORM, 13s, 18s);
|
||||
_events.ScheduleEvent(EVENT_WOUNDING_STRIKE, 5s, 10s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1689,11 +1689,11 @@ public:
|
||||
break;
|
||||
case EVENT_BLADESTORM:
|
||||
me->CastSpell(me->GetVictim(), SPELL_BLADESTORM, false);
|
||||
_events.ScheduleEvent(EVENT_BLADESTORM, urand(25000, 30000));
|
||||
_events.ScheduleEvent(EVENT_BLADESTORM, 25s, 30s);
|
||||
break;
|
||||
case EVENT_WOUNDING_STRIKE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_WOUNDING_STRIKE, false);
|
||||
_events.ScheduleEvent(EVENT_WOUNDING_STRIKE, urand(7000, 13000));
|
||||
_events.ScheduleEvent(EVENT_WOUNDING_STRIKE, 7s, 13s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -279,13 +279,13 @@ public:
|
||||
|
||||
events.Reset();
|
||||
events.SetPhase(PHASE_ONE);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
events.ScheduleEvent(EVENT_SPELL_DEATH_AND_DECAY, 10000);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 10min);
|
||||
events.ScheduleEvent(EVENT_SPELL_DEATH_AND_DECAY, 10s);
|
||||
if (GetDifficulty() != RAID_DIFFICULTY_10MAN_NORMAL)
|
||||
events.ScheduleEvent(EVENT_SPELL_DOMINATE_MIND_25, 30000);
|
||||
events.ScheduleEvent(EVENT_SPELL_SHADOW_BOLT, 2000, 0, PHASE_ONE);
|
||||
events.ScheduleEvent(EVENT_SUMMON_WAVE_P1, 5000, 0, PHASE_ONE);
|
||||
events.ScheduleEvent(EVENT_EMPOWER_CULTIST, urand(20000, 30000), 0, PHASE_ONE);
|
||||
events.ScheduleEvent(EVENT_SPELL_DOMINATE_MIND_25, 30s);
|
||||
events.ScheduleEvent(EVENT_SPELL_SHADOW_BOLT, 2s, 0, PHASE_ONE);
|
||||
events.ScheduleEvent(EVENT_SUMMON_WAVE_P1, 5s, 0, PHASE_ONE);
|
||||
events.ScheduleEvent(EVENT_EMPOWER_CULTIST, 20s, 30s, 0, PHASE_ONE);
|
||||
|
||||
Talk(SAY_AGGRO);
|
||||
me->RemoveAurasDueToSpell(SPELL_SHADOW_CHANNELING);
|
||||
@@ -315,15 +315,15 @@ public:
|
||||
me->SetPower(POWER_MANA, 0);
|
||||
me->RemoveAurasDueToSpell(SPELL_MANA_BARRIER);
|
||||
events.SetPhase(PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_FROSTBOLT, urand(10000, 12000), 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_FROSTBOLT_VOLLEY, urand(19000, 21000), 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_TOUCH_OF_INSIGNIFICANCE, urand(6000, 9000), 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_SUMMON_SHADE, urand(12000, 15000), 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_FROSTBOLT, 10s, 12s, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_FROSTBOLT_VOLLEY, 19s, 21s, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_TOUCH_OF_INSIGNIFICANCE, 6s, 9s, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SPELL_SUMMON_SHADE, 12s, 15s, 0, PHASE_TWO);
|
||||
if (IsHeroic())
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true);
|
||||
events.ScheduleEvent(EVENT_SUMMON_WAVE_P2, 45000, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SUMMON_WAVE_P2, 45s, 0, PHASE_TWO);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -367,7 +367,7 @@ public:
|
||||
case EVENT_SPELL_DEATH_AND_DECAY:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
|
||||
me->CastSpell(target, SPELL_DEATH_AND_DECAY, false);
|
||||
events.RepeatEvent(urand(22000, 30000));
|
||||
events.Repeat(22s, 30s);
|
||||
break;
|
||||
case EVENT_SPELL_DOMINATE_MIND_25:
|
||||
{
|
||||
@@ -404,37 +404,37 @@ public:
|
||||
me->CastSpell(target, SPELL_DOMINATE_MIND_25, true);
|
||||
}
|
||||
|
||||
events.RepeatEvent(urand(40000, 45000));
|
||||
events.Repeat(40s, 45s);
|
||||
}
|
||||
break;
|
||||
case EVENT_SPELL_SHADOW_BOLT:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
|
||||
me->CastSpell(target, SPELL_SHADOW_BOLT, false);
|
||||
events.RepeatEvent(2100);
|
||||
events.Repeat(2100ms);
|
||||
break;
|
||||
case EVENT_SUMMON_WAVE_P1:
|
||||
SummonWaveP1();
|
||||
events.RepeatEvent(IsHeroic() ? 45000 : 60000);
|
||||
events.Repeat(IsHeroic() ? 45s : 60s);
|
||||
break;
|
||||
case EVENT_EMPOWER_CULTIST:
|
||||
EmpowerCultist();
|
||||
events.RepeatEvent(urand(18000, 25000));
|
||||
events.Repeat(18s, 25s);
|
||||
break;
|
||||
case EVENT_SPELL_FROSTBOLT:
|
||||
me->CastSpell(me->GetVictim(), SPELL_FROSTBOLT, false);
|
||||
events.RepeatEvent(12000);
|
||||
events.Repeat(12s);
|
||||
break;
|
||||
case EVENT_SPELL_FROSTBOLT_VOLLEY:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_FROSTBOLT_VOLLEY, false);
|
||||
events.RepeatEvent(urand(13000, 15000));
|
||||
events.Repeat(13s, 15s);
|
||||
break;
|
||||
case EVENT_SPELL_TOUCH_OF_INSIGNIFICANCE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_TOUCH_OF_INSIGNIFICANCE, false);
|
||||
events.RepeatEvent(urand(6000, 9000));
|
||||
events.Repeat(6s, 9s);
|
||||
break;
|
||||
case EVENT_SUMMON_WAVE_P2:
|
||||
SummonWaveP2();
|
||||
events.RepeatEvent(45000);
|
||||
events.Repeat(45s);
|
||||
break;
|
||||
case EVENT_SPELL_SUMMON_SHADE:
|
||||
{
|
||||
@@ -450,7 +450,7 @@ public:
|
||||
for (std::list<Unit*>::iterator itr = targets.begin(); itr != targets.end(); ++itr)
|
||||
me->CastSpell(*itr, SPELL_SUMMON_SHADE, true);
|
||||
}
|
||||
events.RepeatEvent(12000);
|
||||
events.Repeat(12s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -556,12 +556,12 @@ public:
|
||||
_introDone = true;
|
||||
Talk(SAY_INTRO_1);
|
||||
events.SetPhase(PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_2, 11000, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_3, 21000, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_4, 31500, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_5, 39500, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_6, 48500, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_7, 58000, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_2, 11s, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_3, 21s, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_4, 31s + 500ms, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_5, 39s + 500ms, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_6, 48s + 500ms, 0, PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO_7, 58s, 0, PHASE_INTRO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -680,9 +680,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SPELL_FANATIC_NECROTIC_STRIKE, urand(10000, 12000));
|
||||
events.ScheduleEvent(EVENT_SPELL_FANATIC_SHADOW_CLEAVE, urand(14000, 16000));
|
||||
events.ScheduleEvent(EVENT_SPELL_FANATIC_VAMPIRIC_MIGHT, urand(20000, 27000));
|
||||
events.ScheduleEvent(EVENT_SPELL_FANATIC_NECROTIC_STRIKE, 10s, 12s);
|
||||
events.ScheduleEvent(EVENT_SPELL_FANATIC_SHADOW_CLEAVE, 14s, 16s);
|
||||
events.ScheduleEvent(EVENT_SPELL_FANATIC_VAMPIRIC_MIGHT, 20s, 27s);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
|
||||
@@ -711,7 +711,7 @@ public:
|
||||
case SPELL_DARK_MARTYRDOM_FANATIC_25N:
|
||||
case SPELL_DARK_MARTYRDOM_FANATIC_25H:
|
||||
ApplyMechanicImmune(me, false);
|
||||
events.ScheduleEvent(EVENT_SPELL_CULTIST_DARK_MARTYRDOM, 5); // Visual purposes only.
|
||||
events.ScheduleEvent(EVENT_SPELL_CULTIST_DARK_MARTYRDOM, 5ms); // Visual purposes only.
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -732,15 +732,15 @@ public:
|
||||
{
|
||||
case EVENT_SPELL_FANATIC_NECROTIC_STRIKE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_NECROTIC_STRIKE, false);
|
||||
events.RepeatEvent(urand(11000, 13000));
|
||||
events.Repeat(11s, 13s);
|
||||
break;
|
||||
case EVENT_SPELL_FANATIC_SHADOW_CLEAVE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHADOW_CLEAVE, false);
|
||||
events.RepeatEvent(urand(9500, 11000));
|
||||
events.Repeat(9500ms, 11s);
|
||||
break;
|
||||
case EVENT_SPELL_FANATIC_VAMPIRIC_MIGHT:
|
||||
me->CastSpell(me, SPELL_VAMPIRIC_MIGHT, false);
|
||||
events.RepeatEvent(urand(20000, 27000));
|
||||
events.Repeat(20s, 27s);
|
||||
break;
|
||||
case EVENT_CULTIST_DARK_MARTYRDOM_REVIVE:
|
||||
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
|
||||
@@ -763,7 +763,7 @@ public:
|
||||
me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
me->SetUnitFlag(UNIT_FLAG_STUNNED | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_NOT_SELECTABLE);
|
||||
Reset();
|
||||
events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM_REVIVE, 6000);
|
||||
events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM_REVIVE, 6s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -792,10 +792,10 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_FROST_FEVER, urand(10000, 12000));
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_DEATHCHILL, urand(14000, 16000));
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_CURSE_OF_TORPOR, urand(14000, 16000));
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_SHROUD_OF_THE_OCCULT, urand(32000, 39000));
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_FROST_FEVER, 10s, 12s);
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_DEATHCHILL, 14s, 16s);
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_CURSE_OF_TORPOR, 14s, 16s);
|
||||
events.ScheduleEvent(EVENT_SPELL_ADHERENT_SHROUD_OF_THE_OCCULT, 32s, 39s);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
|
||||
@@ -824,7 +824,7 @@ public:
|
||||
case SPELL_DARK_MARTYRDOM_ADHERENT_25N:
|
||||
case SPELL_DARK_MARTYRDOM_ADHERENT_25H:
|
||||
ApplyMechanicImmune(me, false);
|
||||
events.ScheduleEvent(EVENT_SPELL_CULTIST_DARK_MARTYRDOM, 5); // Visual purposes only.
|
||||
events.ScheduleEvent(EVENT_SPELL_CULTIST_DARK_MARTYRDOM, 5ms); // Visual purposes only.
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -845,23 +845,23 @@ public:
|
||||
{
|
||||
case EVENT_SPELL_ADHERENT_FROST_FEVER:
|
||||
me->CastSpell(me->GetVictim(), SPELL_FROST_FEVER, false);
|
||||
events.RepeatEvent(urand(9000, 13000));
|
||||
events.Repeat(9s, 13s);
|
||||
break;
|
||||
case EVENT_SPELL_ADHERENT_DEATHCHILL:
|
||||
if (me->GetEntry() == NPC_EMPOWERED_ADHERENT)
|
||||
me->CastSpell(me->GetVictim(), SPELL_DEATHCHILL_BLAST, false);
|
||||
else
|
||||
me->CastSpell(me->GetVictim(), SPELL_DEATHCHILL_BOLT, false);
|
||||
events.RepeatEvent(urand(9000, 13000));
|
||||
events.Repeat(9s, 13s);
|
||||
break;
|
||||
case EVENT_SPELL_ADHERENT_CURSE_OF_TORPOR:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
|
||||
me->CastSpell(target, SPELL_CURSE_OF_TORPOR, false);
|
||||
events.RepeatEvent(urand(9000, 13000));
|
||||
events.Repeat(9s, 13s);
|
||||
break;
|
||||
case EVENT_SPELL_ADHERENT_SHROUD_OF_THE_OCCULT:
|
||||
me->CastSpell(me, SPELL_SHORUD_OF_THE_OCCULT, false);
|
||||
events.RepeatEvent(urand(27000, 32000));
|
||||
events.Repeat(27s, 32s);
|
||||
break;
|
||||
case EVENT_CULTIST_DARK_MARTYRDOM_REVIVE:
|
||||
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
|
||||
@@ -884,7 +884,7 @@ public:
|
||||
me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
me->SetUnitFlag(UNIT_FLAG_STUNNED | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_NOT_SELECTABLE);
|
||||
Reset();
|
||||
events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM_REVIVE, 6000);
|
||||
events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM_REVIVE, 6s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1008,10 +1008,10 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, 10000);
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, urand(25000, 30000));
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, urand(5000, 8000));
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, 10s);
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, 20s, 25s);
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, 25s, 30s);
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, 5s, 8s);
|
||||
_canCharge = true;
|
||||
_canShatter = true;
|
||||
}
|
||||
@@ -1061,7 +1061,7 @@ public:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHATTERING_THROW, false);
|
||||
_canShatter = false;
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_SHATTERING_THROW, 30000);
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_SHATTERING_THROW, 30s);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1069,7 +1069,7 @@ public:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_CHARGE, false);
|
||||
_canCharge = false;
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_CHARGE, 20000);
|
||||
events.ScheduleEvent(EVENT_DARNAVAN_CHARGE, 20s);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1077,25 +1077,25 @@ public:
|
||||
{
|
||||
case EVENT_DARNAVAN_BLADESTORM:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_BLADESTORM, false);
|
||||
events.RepeatEvent(urand(90000, 100000));
|
||||
events.Repeat(90s, 100s);
|
||||
break;
|
||||
case EVENT_DARNAVAN_CHARGE:
|
||||
_canCharge = true;
|
||||
break;
|
||||
case EVENT_DARNAVAN_INTIMIDATING_SHOUT:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_INTIMIDATING_SHOUT, false);
|
||||
events.RepeatEvent(urand(90000, 120000));
|
||||
events.Repeat(90s, 120s);
|
||||
break;
|
||||
case EVENT_DARNAVAN_MORTAL_STRIKE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_MORTAL_STRIKE, false);
|
||||
events.RepeatEvent(urand(15000, 30000));
|
||||
events.Repeat(15s, 30s);
|
||||
break;
|
||||
case EVENT_DARNAVAN_SHATTERING_THROW:
|
||||
_canShatter = true;
|
||||
break;
|
||||
case EVENT_DARNAVAN_SUNDER_ARMOR:
|
||||
me->CastSpell(me->GetVictim(), SPELL_SUNDER_ARMOR, false);
|
||||
events.RepeatEvent(urand(3000, 7000));
|
||||
events.Repeat(3s, 7s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -113,11 +113,11 @@ public:
|
||||
{
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
_Reset();
|
||||
events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000);
|
||||
events.ScheduleEvent(EVENT_SPELL_BONE_SPIKE_GRAVEYARD, urand(10000, 15000));
|
||||
events.ScheduleEvent(EVENT_SPELL_COLDFLAME, 5000);
|
||||
events.ScheduleEvent(EVENT_WARN_BONE_STORM, urand(45000, 50000));
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 600000);
|
||||
events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10s);
|
||||
events.ScheduleEvent(EVENT_SPELL_BONE_SPIKE_GRAVEYARD, 10s, 15s);
|
||||
events.ScheduleEvent(EVENT_SPELL_COLDFLAME, 5s);
|
||||
events.ScheduleEvent(EVENT_WARN_BONE_STORM, 45s, 50s);
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 10min);
|
||||
|
||||
_boneSlice = false;
|
||||
|
||||
@@ -176,13 +176,13 @@ public:
|
||||
bool a = me->HasAura(SPELL_BONE_STORM);
|
||||
if (IsHeroic() || !a)
|
||||
me->CastSpell(me, SPELL_BONE_SPIKE_GRAVEYARD, a);
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
events.Repeat(15s, 20s);
|
||||
}
|
||||
break;
|
||||
case EVENT_SPELL_COLDFLAME:
|
||||
if (!me->HasAura(SPELL_BONE_STORM))
|
||||
me->CastSpell((Unit*)nullptr, SPELL_COLDFLAME_NORMAL, false);
|
||||
events.RepeatEvent(5000);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
case EVENT_SPELL_COLDFLAME_BONE_STORM:
|
||||
me->CastSpell(me, SPELL_COLDFLAME_BONE_STORM, false);
|
||||
@@ -196,15 +196,15 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE); // to prevent chasing another target on UpdateVictim()
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->GetMotionMaster()->MovementExpired();
|
||||
events.RepeatEvent(urand(90000, 95000));
|
||||
events.ScheduleEvent(EVENT_BEGIN_BONE_STORM, 3050);
|
||||
events.Repeat(90s, 95s);
|
||||
events.ScheduleEvent(EVENT_BEGIN_BONE_STORM, 3050ms);
|
||||
break;
|
||||
case EVENT_BEGIN_BONE_STORM:
|
||||
{
|
||||
uint32 _boneStormDuration = RAID_MODE<uint32>(20000, 30000, 20000, 30000);
|
||||
if (Aura* pStorm = me->GetAura(SPELL_BONE_STORM))
|
||||
pStorm->SetDuration(int32(_boneStormDuration));
|
||||
events.ScheduleEvent(EVENT_BONE_STORM_MOVE, 0);
|
||||
events.ScheduleEvent(EVENT_BONE_STORM_MOVE, 0ms);
|
||||
events.ScheduleEvent(EVENT_END_BONE_STORM, _boneStormDuration + 1);
|
||||
}
|
||||
break;
|
||||
@@ -212,10 +212,10 @@ public:
|
||||
{
|
||||
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE)
|
||||
{
|
||||
events.RepeatEvent(1);
|
||||
events.Repeat(1ms);
|
||||
break;
|
||||
}
|
||||
events.RepeatEvent(5000);
|
||||
events.Repeat(5s);
|
||||
Unit* unit = SelectTarget(SelectTargetMethod::Random, 0, BoneStormMoveTargetSelector(me));
|
||||
if (!unit)
|
||||
{
|
||||
@@ -237,9 +237,9 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
DoStartMovement(me->GetVictim());
|
||||
events.CancelEvent(EVENT_BONE_STORM_MOVE);
|
||||
events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000);
|
||||
events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10s);
|
||||
if (!IsHeroic())
|
||||
events.RescheduleEvent(EVENT_SPELL_BONE_SPIKE_GRAVEYARD, urand(15000, 20000));
|
||||
events.RescheduleEvent(EVENT_SPELL_BONE_SPIKE_GRAVEYARD, 15s, 20s);
|
||||
break;
|
||||
case EVENT_ENRAGE:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
@@ -267,7 +267,7 @@ public:
|
||||
if (type != POINT_MOTION_TYPE || id != 1337)
|
||||
return;
|
||||
|
||||
events.ScheduleEvent(EVENT_SPELL_COLDFLAME_BONE_STORM, 0);
|
||||
events.ScheduleEvent(EVENT_SPELL_COLDFLAME_BONE_STORM, 0ms);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -320,8 +320,8 @@ public:
|
||||
|
||||
void IsSummonedBy(WorldObject* /*summoner*/) override
|
||||
{
|
||||
events.ScheduleEvent(1, 450);
|
||||
events.ScheduleEvent(2, 12000);
|
||||
events.ScheduleEvent(1, 450ms);
|
||||
events.ScheduleEvent(2, 12s);
|
||||
me->m_positionZ = 42.5f;
|
||||
}
|
||||
|
||||
@@ -345,7 +345,7 @@ public:
|
||||
break;
|
||||
}
|
||||
me->NearTeleportTo(nx, ny, 42.5f, me->GetOrientation());
|
||||
events.RepeatEvent(450);
|
||||
events.Repeat(450ms);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
||||
@@ -307,11 +307,11 @@ public:
|
||||
bEnteredCombat = true;
|
||||
me->CastSpell(me, SPELL_OOZE_TANK_PROTECTION, true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
events.ScheduleEvent(EVENT_SLIME_PUDDLE, 10000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_UNSTABLE_EXPERIMENT, urand(30000, 35000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 10min);
|
||||
events.ScheduleEvent(EVENT_SLIME_PUDDLE, 10s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_UNSTABLE_EXPERIMENT, 30s, 35s, EVENT_GROUP_ABILITIES);
|
||||
if (IsHeroic())
|
||||
events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 20000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 20s, EVENT_GROUP_ABILITIES);
|
||||
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GAS_VARIABLE);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_OOZE_VARIABLE);
|
||||
@@ -463,7 +463,7 @@ public:
|
||||
me->SetFacingTo(tablePos.GetOrientation());
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
events.ScheduleEvent(EVENT_TABLE_DRINK_STUFF, IsHeroic() ? 25000 : 0);
|
||||
events.ScheduleEvent(EVENT_TABLE_DRINK_STUFF, IsHeroic() ? 25s : 0ms);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -552,13 +552,13 @@ public:
|
||||
if (!targets.empty())
|
||||
for (std::list<Unit*>::iterator itr = targets.begin(); itr != targets.end(); ++itr)
|
||||
me->CastSpell(*itr, SPELL_SLIME_PUDDLE_TRIGGER, true);
|
||||
events.ScheduleEvent(EVENT_SLIME_PUDDLE, 35000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SLIME_PUDDLE, 35s, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
break;
|
||||
case EVENT_UNSTABLE_EXPERIMENT:
|
||||
Talk(EMOTE_UNSTABLE_EXPERIMENT);
|
||||
me->CastSpell(me, SPELL_UNSTABLE_EXPERIMENT, false);
|
||||
events.ScheduleEvent(EVENT_UNSTABLE_EXPERIMENT, urand(35000, 40000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_UNSTABLE_EXPERIMENT, 35s, 40s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_GO_TO_TABLE:
|
||||
me->CastSpell(me, SPELL_TEAR_GAS_PERIODIC_TRIGGER, true);
|
||||
@@ -594,14 +594,14 @@ public:
|
||||
me->SetFacingToObject(face);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
Talk(SAY_TRANSFORM_1);
|
||||
events.ScheduleEvent(EVENT_RESUME_ATTACK, 5500);
|
||||
events.ScheduleEvent(EVENT_RESUME_ATTACK, 5500ms);
|
||||
break;
|
||||
case 3:
|
||||
if (Creature* face = me->FindNearestCreature(NPC_TEAR_GAS_TARGET_STALKER, 50.0f))
|
||||
me->SetFacingToObject(face);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
Talk(SAY_TRANSFORM_2);
|
||||
events.ScheduleEvent(EVENT_RESUME_ATTACK, 8500);
|
||||
events.ScheduleEvent(EVENT_RESUME_ATTACK, 8500ms);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -625,10 +625,10 @@ public:
|
||||
{
|
||||
me->CastSpell(target, SPELL_UNBOUND_PLAGUE, false);
|
||||
me->CastSpell(target, SPELL_UNBOUND_PLAGUE_SEARCHER, false);
|
||||
events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 90000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 90s, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 3500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 3500ms, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_MALLEABLE_GOO:
|
||||
if (Is25ManRaid())
|
||||
@@ -651,12 +651,12 @@ public:
|
||||
me->CastSpell(target, SPELL_MALLEABLE_GOO, true);
|
||||
}
|
||||
}
|
||||
events.ScheduleEvent(EVENT_MALLEABLE_GOO, urand(25000, 30000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_MALLEABLE_GOO, 25s, 30s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_CHOKING_GAS_BOMB:
|
||||
Talk(EMOTE_CHOKING_GAS_BOMB);
|
||||
me->CastSpell(me, SPELL_CHOKING_GAS_BOMB, false);
|
||||
events.ScheduleEvent(EVENT_CHOKING_GAS_BOMB, urand(35000, 40000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_CHOKING_GAS_BOMB, 35s, 40s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -681,7 +681,7 @@ public:
|
||||
if (!IsHeroic())
|
||||
{
|
||||
me->CastSpell(me, SPELL_TEAR_GAS, false);
|
||||
events.ScheduleEvent(EVENT_GO_TO_TABLE, 2500);
|
||||
events.ScheduleEvent(EVENT_GO_TO_TABLE, 2500ms);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -158,12 +158,12 @@ public:
|
||||
|
||||
// schedule events
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000);
|
||||
events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90000);
|
||||
events.ScheduleEvent(EVENT_MUTATED_INFECTION, 14000);
|
||||
events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 8000);
|
||||
events.ScheduleEvent(EVENT_SLIME_SPRAY, 20s);
|
||||
events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90s);
|
||||
events.ScheduleEvent(EVENT_MUTATED_INFECTION, 14s);
|
||||
events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 8s);
|
||||
if (IsHeroic())
|
||||
events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, 15s, 20s);
|
||||
|
||||
me->setActive(true);
|
||||
Talk(SAY_AGGRO);
|
||||
@@ -287,14 +287,14 @@ public:
|
||||
}
|
||||
}
|
||||
events.DelayEvents(1);
|
||||
events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000);
|
||||
events.ScheduleEvent(EVENT_UNROOT, 0);
|
||||
events.ScheduleEvent(EVENT_SLIME_SPRAY, 20s);
|
||||
events.ScheduleEvent(EVENT_UNROOT, 0ms);
|
||||
break;
|
||||
case EVENT_HASTEN_INFECTIONS:
|
||||
if (infectionCooldown >= 8000)
|
||||
{
|
||||
infectionCooldown -= 2000;
|
||||
events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90000);
|
||||
events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90s);
|
||||
}
|
||||
break;
|
||||
case EVENT_MUTATED_INFECTION:
|
||||
@@ -309,7 +309,7 @@ public:
|
||||
if (++_oozeFloodStage == 4)
|
||||
_oozeFloodStage = 0;
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 25000);
|
||||
events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 25s);
|
||||
break;
|
||||
case EVENT_ROTFACE_VILE_GAS:
|
||||
{
|
||||
@@ -324,7 +324,7 @@ public:
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->CastSpell(target, SPELL_VILE_GAS_H, true); // triggered, to skip LoS check
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, 15s, 20s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -387,7 +387,7 @@ public:
|
||||
me->CastSpell(me, SPELL_LITTLE_OOZE_COMBINE, true);
|
||||
me->CastSpell(me, SPELL_WEAK_RADIATING_OOZE, true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 5000);
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 5s);
|
||||
DoResetThreatList();
|
||||
me->SetInCombatWithZone();
|
||||
if (TempSummon* ts = me->ToTempSummon())
|
||||
@@ -406,7 +406,7 @@ public:
|
||||
if (events.ExecuteEvent() == EVENT_STICKY_OOZE)
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_STICKY_OOZE, false);
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 15000);
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 15s);
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -472,7 +472,7 @@ public:
|
||||
me->CastSpell(me, SPELL_UNSTABLE_OOZE, true);
|
||||
me->CastSpell(me, SPELL_GREEN_ABOMINATION_HITTIN__YA_PROC, true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 5000);
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 5s);
|
||||
DoResetThreatList();
|
||||
me->SetInCombatWithZone();
|
||||
if (Player* p = me->SelectNearestPlayer(100.0f))
|
||||
@@ -488,7 +488,7 @@ public:
|
||||
{
|
||||
case EVENT_STICKY_OOZE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_STICKY_OOZE, false);
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 15000);
|
||||
events.ScheduleEvent(EVENT_STICKY_OOZE, 15s);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -894,9 +894,9 @@ public:
|
||||
void JustEngagedWith(Unit* /*target*/) override
|
||||
{
|
||||
me->setActive(true);
|
||||
events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(1500, 2500));
|
||||
events.ScheduleEvent(EVENT_SUMMON_ZOMBIES, urand(25000, 30000));
|
||||
events.ScheduleEvent(EVENT_DECIMATE, 20s, 25s);
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, 1500ms, 2500ms);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ZOMBIES, 25s, 30s);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
@@ -936,17 +936,17 @@ public:
|
||||
{
|
||||
case EVENT_DECIMATE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_DECIMATE, false);
|
||||
events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_DECIMATE, 20s, 25s);
|
||||
break;
|
||||
case EVENT_MORTAL_WOUND:
|
||||
me->CastSpell(me->GetVictim(), SPELL_MORTAL_WOUND, false);
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(1500, 2500));
|
||||
events.ScheduleEvent(EVENT_MORTAL_WOUND, 1500ms, 2500ms);
|
||||
break;
|
||||
case EVENT_SUMMON_ZOMBIES:
|
||||
Talk(EMOTE_PRECIOUS_ZOMBIES);
|
||||
for (uint32 i = 0; i < 11; ++i)
|
||||
me->CastSpell(me, SPELL_AWAKEN_PLAGUED_ZOMBIES, true);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ZOMBIES, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_SUMMON_ZOMBIES, 20s, 25s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -337,13 +337,13 @@ public:
|
||||
|
||||
summons.DespawnAll();
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 50000);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 10000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_TAIL_SMASH, 20000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FROST_BREATH, urand(8000, 12000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, urand(9000, 14000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_ICY_GRIP, 33500, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 10min);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 50s);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 10s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_TAIL_SMASH, 20s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FROST_BREATH, 8s, 12s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, 9s, 14s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_ICY_GRIP, 33s + 500ms, EVENT_GROUP_LAND_PHASE);
|
||||
|
||||
me->setActive(true);
|
||||
me->SetInCombatWithZone();
|
||||
@@ -440,20 +440,20 @@ public:
|
||||
me->SetInCombatWithZone();
|
||||
break;
|
||||
case POINT_TAKEOFF:
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 0);
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 0ms);
|
||||
break;
|
||||
case POINT_AIR_PHASE:
|
||||
me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6), nullptr);
|
||||
me->SetFacingTo(float(M_PI));
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT_FAR, 0); // won't be processed during cast time anyway, so 0
|
||||
events.ScheduleEvent(EVENT_FROST_BOMB, 7000);
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT_FAR, 0ms); // won't be processed during cast time anyway, so 0
|
||||
events.ScheduleEvent(EVENT_FROST_BOMB, 7s);
|
||||
_bombCount = 0;
|
||||
break;
|
||||
case POINT_AIR_PHASE_FAR:
|
||||
me->SetFacingTo(float(M_PI));
|
||||
break;
|
||||
case POINT_LAND:
|
||||
events.ScheduleEvent(EVENT_LAND_GROUND, 0);
|
||||
events.ScheduleEvent(EVENT_LAND_GROUND, 0ms);
|
||||
break;
|
||||
case POINT_LAND_GROUND:
|
||||
{
|
||||
@@ -484,7 +484,7 @@ public:
|
||||
{
|
||||
_isThirdPhase = true;
|
||||
events.CancelEvent(EVENT_AIR_PHASE);
|
||||
events.ScheduleEvent(EVENT_THIRD_PHASE_CHECK, 1000);
|
||||
events.ScheduleEvent(EVENT_THIRD_PHASE_CHECK, 1s);
|
||||
}
|
||||
}
|
||||
else if (!_isBelow20Pct)
|
||||
@@ -540,7 +540,7 @@ public:
|
||||
break;
|
||||
case EVENT_CLEAVE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, urand(10000, 15000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 10s, 15s, EVENT_GROUP_LAND_PHASE);
|
||||
break;
|
||||
case EVENT_TAIL_SMASH:
|
||||
me->DisableRotate(true);
|
||||
@@ -548,8 +548,8 @@ public:
|
||||
me->SendMovementFlagUpdate();
|
||||
me->CastSpell(me->GetVictim(), SPELL_TAIL_SMASH, false);
|
||||
events.DelayEventsToMax(1, 0);
|
||||
events.ScheduleEvent(EVENT_UNROOT, 0);
|
||||
events.ScheduleEvent(EVENT_TAIL_SMASH, urand(22000, 27000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNROOT, 0ms);
|
||||
events.ScheduleEvent(EVENT_TAIL_SMASH, 22s, 27s, EVENT_GROUP_LAND_PHASE);
|
||||
break;
|
||||
case EVENT_FROST_BREATH:
|
||||
me->DisableRotate(true);
|
||||
@@ -557,8 +557,8 @@ public:
|
||||
me->SendMovementFlagUpdate();
|
||||
me->CastSpell(me->GetVictim(), _isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1, false);
|
||||
events.DelayEventsToMax(1, 0);
|
||||
events.ScheduleEvent(EVENT_UNROOT, 0);
|
||||
events.ScheduleEvent(EVENT_FROST_BREATH, urand(20000, 25000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNROOT, 0ms);
|
||||
events.ScheduleEvent(EVENT_FROST_BREATH, 20s, 25s, EVENT_GROUP_LAND_PHASE);
|
||||
break;
|
||||
case EVENT_UNROOT:
|
||||
me->DisableRotate(false);
|
||||
@@ -567,22 +567,22 @@ public:
|
||||
case EVENT_UNCHAINED_MAGIC:
|
||||
Talk(SAY_UNCHAINED_MAGIC);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_UNCHAINED_MAGIC, false);
|
||||
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, urand(30000, 35000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, 30s, 35s, EVENT_GROUP_LAND_PHASE);
|
||||
break;
|
||||
case EVENT_ICY_GRIP:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_ICY_GRIP, false);
|
||||
events.DelayEventsToMax(1001, 0);
|
||||
events.ScheduleEvent(EVENT_BLISTERING_COLD, 1000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_BLISTERING_COLD, 1s, EVENT_GROUP_LAND_PHASE);
|
||||
if (uint32 evTime = events.GetNextEventTime(EVENT_ICE_TOMB))
|
||||
if (events.GetTimer() > evTime || evTime - events.GetTimer() < 7000)
|
||||
events.RescheduleEvent(EVENT_ICE_TOMB, 7000);
|
||||
events.RescheduleEvent(EVENT_ICE_TOMB, 7s);
|
||||
break;
|
||||
case EVENT_BLISTERING_COLD:
|
||||
Talk(EMOTE_WARN_BLISTERING_COLD);
|
||||
me->CastSpell(me, SPELL_BLISTERING_COLD, false);
|
||||
events.ScheduleEvent(EVENT_BLISTERING_COLD_YELL, 5000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_BLISTERING_COLD_YELL, 5s, EVENT_GROUP_LAND_PHASE);
|
||||
if (_isThirdPhase)
|
||||
events.RescheduleEvent(EVENT_ICY_GRIP, urand(65000, 70000));
|
||||
events.RescheduleEvent(EVENT_ICY_GRIP, 65s, 70s);
|
||||
break;
|
||||
case EVENT_BLISTERING_COLD_YELL:
|
||||
Talk(SAY_BLISTERING_COLD);
|
||||
@@ -610,7 +610,7 @@ public:
|
||||
me->SetDisableGravity(true);
|
||||
me->GetMotionMaster()->MoveTakeoff(POINT_TAKEOFF, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 20.0f, 10.0f);
|
||||
events.CancelEventGroup(EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 110000);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 110s);
|
||||
break;
|
||||
case EVENT_AIR_MOVEMENT:
|
||||
me->GetMotionMaster()->MovePoint(POINT_AIR_PHASE, SindragosaAirPos);
|
||||
@@ -644,32 +644,32 @@ public:
|
||||
|
||||
me->CastSpell(destX, destY, destZ, SPELL_FROST_BOMB_TRIGGER, false);
|
||||
if (_bombCount >= 4)
|
||||
events.ScheduleEvent(EVENT_LAND, 5500);
|
||||
events.ScheduleEvent(EVENT_LAND, 5500ms);
|
||||
else
|
||||
events.ScheduleEvent(EVENT_FROST_BOMB, 6000);
|
||||
events.ScheduleEvent(EVENT_FROST_BOMB, 6s);
|
||||
break;
|
||||
}
|
||||
case EVENT_LAND:
|
||||
me->GetMotionMaster()->MovePoint(POINT_LAND, SindragosaFlyInPos);
|
||||
break;
|
||||
case EVENT_LAND_GROUND:
|
||||
events.ScheduleEvent(EVENT_CLEAVE, urand(13000, 15000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_TAIL_SMASH, urand(19000, 23000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FROST_BREATH, urand(7000, 10000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, urand(12000, 17000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_ICY_GRIP, urand(35000, 40000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 13s, 15s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_TAIL_SMASH, 19s, 23s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FROST_BREATH, 7s, 10s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, 12s, 17s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_ICY_GRIP, 35s, 40s, EVENT_GROUP_LAND_PHASE);
|
||||
me->GetMotionMaster()->MoveLand(POINT_LAND_GROUND, SindragosaLandPos, 10.0f);
|
||||
break;
|
||||
case EVENT_THIRD_PHASE_CHECK:
|
||||
if (!_isInAirPhase)
|
||||
{
|
||||
Talk(SAY_PHASE_2);
|
||||
events.ScheduleEvent(EVENT_ICE_TOMB, urand(7000, 10000));
|
||||
events.RescheduleEvent(EVENT_ICY_GRIP, urand(35000, 40000), EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_ICE_TOMB, 7s, 10s);
|
||||
events.RescheduleEvent(EVENT_ICY_GRIP, 35s, 40s, EVENT_GROUP_LAND_PHASE);
|
||||
me->CastSpell(me, SPELL_MYSTIC_BUFFET, true);
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_THIRD_PHASE_CHECK, 5000);
|
||||
events.ScheduleEvent(EVENT_THIRD_PHASE_CHECK, 5s);
|
||||
break;
|
||||
case EVENT_ICE_TOMB:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, LastPhaseIceTombTargetSelector(me)))
|
||||
@@ -679,9 +679,9 @@ public:
|
||||
me->CastSpell(target, SPELL_FROST_BEACON, true);
|
||||
if (uint32 evTime = events.GetNextEventTime(EVENT_ICY_GRIP))
|
||||
if (events.GetTimer() > evTime || evTime - events.GetTimer() < 8000)
|
||||
events.RescheduleEvent(EVENT_ICY_GRIP, 8000, EVENT_GROUP_LAND_PHASE);
|
||||
events.RescheduleEvent(EVENT_ICY_GRIP, 8s, EVENT_GROUP_LAND_PHASE);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ICE_TOMB, urand(18000, 22000));
|
||||
events.ScheduleEvent(EVENT_ICE_TOMB, 18s, 22s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1388,9 +1388,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_BELLOWING_ROAR, urand(20000, 25000));
|
||||
_events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, urand(10000, 15000));
|
||||
_events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(8000, 12000));
|
||||
_events.ScheduleEvent(EVENT_BELLOWING_ROAR, 20s, 25s);
|
||||
_events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, 10s, 15s);
|
||||
_events.ScheduleEvent(EVENT_TAIL_SWEEP, 8s, 12s);
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
|
||||
if (!_summoned)
|
||||
@@ -1467,15 +1467,15 @@ public:
|
||||
{
|
||||
case EVENT_BELLOWING_ROAR:
|
||||
me->CastSpell(me, SPELL_BELLOWING_ROAR, false);
|
||||
_events.ScheduleEvent(EVENT_BELLOWING_ROAR, urand(25000, 30000));
|
||||
_events.ScheduleEvent(EVENT_BELLOWING_ROAR, 25s, 30s);
|
||||
break;
|
||||
case EVENT_CLEAVE_SPINESTALKER:
|
||||
me->CastSpell(me->GetVictim(), SPELL_CLEAVE_SPINESTALKER, false);
|
||||
_events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, urand(10000, 15000));
|
||||
_events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, 10s, 15s);
|
||||
break;
|
||||
case EVENT_TAIL_SWEEP:
|
||||
me->CastSpell(me->GetVictim(), SPELL_TAIL_SWEEP, false);
|
||||
_events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(22000, 25000));
|
||||
_events.ScheduleEvent(EVENT_TAIL_SWEEP, 22s, 25s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1519,8 +1519,8 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, urand(12000, 15000));
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST, urand(30000, 35000));
|
||||
_events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, 12s, 15s);
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST, 30s, 35s);
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
_icyBlastCounter = 0;
|
||||
|
||||
@@ -1615,10 +1615,10 @@ public:
|
||||
if (!me->IsFlying())
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_FROST_BREATH, false);
|
||||
_events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, urand(20000, 25000));
|
||||
_events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, 20s, 25s);
|
||||
}
|
||||
else
|
||||
_events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, 5000);
|
||||
_events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, 5s);
|
||||
break;
|
||||
case EVENT_ICY_BLAST:
|
||||
{
|
||||
@@ -1649,7 +1649,7 @@ public:
|
||||
me->SetFacingToObject(target);
|
||||
me->CastSpell(target, SPELL_ICY_BLAST, false);
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST_CAST, 3000);
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST_CAST, 3s);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1778,11 +1778,11 @@ public:
|
||||
_events.Reset();
|
||||
if (me->GetEntry() == NPC_FROSTWARDEN_HANDLER)
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3000);
|
||||
_events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, urand(8000, 10000));
|
||||
_events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3s);
|
||||
_events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, 8s, 10s);
|
||||
}
|
||||
else
|
||||
_events.ScheduleEvent(EVENT_WHELP_FROST_BLAST, urand(3000, 6000));
|
||||
_events.ScheduleEvent(EVENT_WHELP_FROST_BLAST, 3s, 6s);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
@@ -1842,15 +1842,15 @@ public:
|
||||
{
|
||||
case EVENT_FROSTWARDEN_ORDER_WHELP:
|
||||
me->CastSpell(me, SPELL_ORDER_WHELP, false);
|
||||
_events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3000);
|
||||
_events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3s);
|
||||
break;
|
||||
case EVENT_CONCUSSIVE_SHOCK:
|
||||
me->CastSpell(me, SPELL_CONCUSSIVE_SHOCK, false);
|
||||
_events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, urand(10000, 13000));
|
||||
_events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, 10s, 13s);
|
||||
break;
|
||||
case EVENT_WHELP_FROST_BLAST:
|
||||
me->CastSpell(me->GetVictim(), 71361, false);
|
||||
_events.ScheduleEvent(EVENT_WHELP_FROST_BLAST, urand(5000, 8000));
|
||||
_events.ScheduleEvent(EVENT_WHELP_FROST_BLAST, 5s, 8s);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -684,13 +684,13 @@ public:
|
||||
me->SetInCombatWithZone();
|
||||
me->RemoveAurasDueToSpell(SPELL_EMOTE_SIT_NO_SHEATH); // just to be sure
|
||||
|
||||
events.ScheduleEvent(EVENT_BERSERK, 900000, EVENT_GROUP_BERSERK);
|
||||
events.ScheduleEvent(EVENT_SUMMON_SHAMBLING_HORROR, 15000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_DRUDGE_GHOUL, 10000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_INFEST, 5000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_NECROTIC_PLAGUE, urand(30000, 31000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 15min, EVENT_GROUP_BERSERK);
|
||||
events.ScheduleEvent(EVENT_SUMMON_SHAMBLING_HORROR, 15s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_DRUDGE_GHOUL, 10s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_INFEST, 5s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_NECROTIC_PLAGUE, 30s, 31s, EVENT_GROUP_ABILITIES);
|
||||
if (IsHeroic())
|
||||
events.ScheduleEvent(EVENT_SHADOW_TRAP, 15500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SHADOW_TRAP, 15s + 500ms, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
@@ -737,7 +737,7 @@ public:
|
||||
me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_FINE, 0.5f);
|
||||
break;
|
||||
case ACTION_START_ATTACK:
|
||||
events.ScheduleEvent(EVENT_START_ATTACK, 5250);
|
||||
events.ScheduleEvent(EVENT_START_ATTACK, 5250ms);
|
||||
break;
|
||||
case ACTION_BREAK_FROSTMOURNE:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE, true);
|
||||
@@ -749,7 +749,7 @@ public:
|
||||
case ACTION_TELEPORT_BACK:
|
||||
{
|
||||
if (_phase == PHASE_FROSTMOURNE)
|
||||
events.RescheduleEvent(EVENT_START_ATTACK, 1000);
|
||||
events.RescheduleEvent(EVENT_START_ATTACK, 1s);
|
||||
EntryCheckPredicate pred(NPC_STRANGULATE_VEHICLE);
|
||||
summons.DoAction(ACTION_TELEPORT_BACK, pred);
|
||||
if (!IsHeroic() && _phase != PHASE_OUTRO && me->IsInCombat() && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count())
|
||||
@@ -935,10 +935,10 @@ public:
|
||||
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
|
||||
me->CastSpell(me, SPELL_REMORSELESS_WINTER_1, false);
|
||||
//events.DelayEvents(62500, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions, 15mins on movies
|
||||
events.ScheduleEvent(EVENT_QUAKE, 62500);
|
||||
events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, 3500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 8000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_RAGING_SPIRIT, 4000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_QUAKE, 62s + 500ms);
|
||||
events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, 3500ms, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 8s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_RAGING_SPIRIT, 4s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case POINT_CENTER_2:
|
||||
me->SetFacingTo(0.0f);
|
||||
@@ -947,10 +947,10 @@ public:
|
||||
me->CastSpell(me, SPELL_REMORSELESS_WINTER_2, false);
|
||||
summons.DespawnEntry(NPC_VALKYR_SHADOWGUARD);
|
||||
//events.DelayEvents(62500, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions, 15 mins on movies
|
||||
events.ScheduleEvent(EVENT_QUAKE_2, 62500);
|
||||
events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, 3500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 8000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_RAGING_SPIRIT, 4000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_QUAKE_2, 62s + 500ms);
|
||||
events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, 3500ms, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 8s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_RAGING_SPIRIT, 4s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -999,8 +999,8 @@ public:
|
||||
{
|
||||
_bFrostmournePhase = false;
|
||||
_phase = PHASE_THREE;
|
||||
events.RescheduleEvent(EVENT_DEFILE, 0, EVENT_GROUP_ABILITIES);
|
||||
events.RescheduleEvent(EVENT_SOUL_REAPER, urand(7000, 12000), EVENT_GROUP_ABILITIES);
|
||||
events.RescheduleEvent(EVENT_DEFILE, 0ms, EVENT_GROUP_ABILITIES);
|
||||
events.RescheduleEvent(EVENT_SOUL_REAPER, 7s, 12s, EVENT_GROUP_ABILITIES);
|
||||
|
||||
for (SummonList::iterator i = summons.begin(); i != summons.end(); ++i)
|
||||
if (Creature* summon = ObjectAccessor::GetCreature(*me, *i))
|
||||
@@ -1011,10 +1011,10 @@ public:
|
||||
case EVENT_QUAKE:
|
||||
_phase = PHASE_TWO;
|
||||
events.CancelEventGroup(EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_INFEST, 14000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_VALKYR, 20000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 40000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_DEFILE, 38000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_INFEST, 14s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_VALKYR, 20s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 40s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_DEFILE, 38s, EVENT_GROUP_ABILITIES);
|
||||
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->ClearUnitState(UNIT_STATE_CASTING);
|
||||
@@ -1026,10 +1026,10 @@ public:
|
||||
case EVENT_QUAKE_2:
|
||||
_phase = PHASE_THREE;
|
||||
events.CancelEventGroup(EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 40000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_DEFILE, 38000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_VILE_SPIRITS, 20000, EVENT_GROUP_VILE_SPIRITS);
|
||||
events.ScheduleEvent(IsHeroic() ? EVENT_HARVEST_SOULS : EVENT_HARVEST_SOUL, 14000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 40s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_DEFILE, 38s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_VILE_SPIRITS, 20s, EVENT_GROUP_VILE_SPIRITS);
|
||||
events.ScheduleEvent(IsHeroic() ? EVENT_HARVEST_SOULS : EVENT_HARVEST_SOUL, 14s, EVENT_GROUP_ABILITIES);
|
||||
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->ClearUnitState(UNIT_STATE_CASTING);
|
||||
@@ -1043,30 +1043,30 @@ public:
|
||||
case EVENT_SUMMON_SHAMBLING_HORROR:
|
||||
me->CastSpell(me, SPELL_SUMMON_SHAMBLING_HORROR, false);
|
||||
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
|
||||
events.ScheduleEvent(EVENT_SUMMON_SHAMBLING_HORROR, 60000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_SHAMBLING_HORROR, 60s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_SUMMON_DRUDGE_GHOUL:
|
||||
me->CastSpell(me, SPELL_SUMMON_DRUDGE_GHOULS, false);
|
||||
events.ScheduleEvent(EVENT_SUMMON_DRUDGE_GHOUL, 30000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_DRUDGE_GHOUL, 30s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_INFEST:
|
||||
me->CastSpell(me, SPELL_INFEST, false);
|
||||
events.ScheduleEvent(EVENT_INFEST, 22500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_INFEST, 22s + 500ms, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_NECROTIC_PLAGUE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, NECROTIC_PLAGUE_LK, NECROTIC_PLAGUE_PLR)))
|
||||
{
|
||||
Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target);
|
||||
me->CastSpell(target, SPELL_NECROTIC_PLAGUE, false);
|
||||
events.ScheduleEvent(EVENT_NECROTIC_PLAGUE, urand(30000, 31000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_NECROTIC_PLAGUE, 30s, 31s, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_NECROTIC_PLAGUE, 5000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_NECROTIC_PLAGUE, 5s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_SHADOW_TRAP:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, ShadowTrapLKTargetSelector(me, true, true, 100.0f)))
|
||||
me->CastSpell(target, SPELL_SHADOW_TRAP, false);
|
||||
events.ScheduleEvent(EVENT_SHADOW_TRAP, 15500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SHADOW_TRAP, 15s + 500ms, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_PAIN_AND_SUFFERING:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
|
||||
@@ -1079,12 +1079,12 @@ public:
|
||||
break;
|
||||
case EVENT_SUMMON_ICE_SPHERE:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_ICE_SPHERE, false);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 7500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ICE_SPHERE, 7500ms, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_SUMMON_RAGING_SPIRIT:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
|
||||
me->CastSpell(target, SPELL_RAGING_SPIRIT, false);
|
||||
events.ScheduleEvent(EVENT_SUMMON_RAGING_SPIRIT, (!HealthAbovePct(40) ? 15000 : 20000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_RAGING_SPIRIT, (!HealthAbovePct(40) ? 15s : 20s), EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_DEFILE:
|
||||
{
|
||||
@@ -1104,7 +1104,7 @@ public:
|
||||
|
||||
// if valkyr is coming between 1.5 and 3 seconds after defile then we've to
|
||||
// delay valkyr just a bit
|
||||
events.RescheduleEvent(EVENT_SUMMON_VALKYR, 5000, EVENT_GROUP_ABILITIES);
|
||||
events.RescheduleEvent(EVENT_SUMMON_VALKYR, 5s, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, DefileTargetSelector(me)))
|
||||
@@ -1113,12 +1113,12 @@ public:
|
||||
me->CastSpell(target, SPELL_DEFILE, false);
|
||||
// defile has a fixed CD (from dbm) that can be variable only
|
||||
// if no target has been found at the moment (schedule after 1 second)
|
||||
events.ScheduleEvent(EVENT_DEFILE, 32500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_DEFILE, 32s + 500ms, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
else
|
||||
{
|
||||
// be sure it happen trying each seconds if no target
|
||||
events.ScheduleEvent(EVENT_DEFILE, 1000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_DEFILE, 1s, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1126,17 +1126,17 @@ public:
|
||||
if (me->IsWithinMeleeRange(me->GetVictim()))
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_SOUL_REAPER, false);
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 30500, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 30s + 500ms, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 1000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SOUL_REAPER, 1s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_SUMMON_VALKYR:
|
||||
{
|
||||
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
|
||||
Talk(SAY_LK_SUMMON_VALKYR);
|
||||
me->CastSpell((Unit*)nullptr, SUMMON_VALKYR, false);
|
||||
events.ScheduleEvent(EVENT_SUMMON_VALKYR, 45000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_SUMMON_VALKYR, 45s, EVENT_GROUP_ABILITIES);
|
||||
|
||||
// schedule a defile (or reschedule it) if next defile event
|
||||
// doesn't exist ( now > next defile ) or defile is coming too soon
|
||||
@@ -1151,17 +1151,17 @@ public:
|
||||
case EVENT_VILE_SPIRITS:
|
||||
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_VILE_SPIRITS, false);
|
||||
events.ScheduleEvent(EVENT_VILE_SPIRITS, 30000, EVENT_GROUP_VILE_SPIRITS);
|
||||
events.ScheduleEvent(EVENT_VILE_SPIRITS, 30s, EVENT_GROUP_VILE_SPIRITS);
|
||||
break;
|
||||
case EVENT_HARVEST_SOUL:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NonTankLKTargetSelector(me, true, true, 55.0f)))
|
||||
{
|
||||
Talk(SAY_LK_HARVEST_SOUL);
|
||||
me->CastSpell(target, SPELL_HARVEST_SOUL, false);
|
||||
events.ScheduleEvent(EVENT_HARVEST_SOUL, 75000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_HARVEST_SOUL, 75s, EVENT_GROUP_ABILITIES);
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_HARVEST_SOUL, 10000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_HARVEST_SOUL, 10s, EVENT_GROUP_ABILITIES);
|
||||
break;
|
||||
case EVENT_HARVEST_SOULS:
|
||||
Talk(SAY_LK_HARVEST_SOUL);
|
||||
@@ -1169,12 +1169,12 @@ public:
|
||||
_phase = PHASE_FROSTMOURNE;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->AttackStop();
|
||||
events.ScheduleEvent(EVENT_START_ATTACK, 55000);
|
||||
events.ScheduleEvent(EVENT_START_ATTACK, 55s);
|
||||
events.DelayEvents(52500, EVENT_GROUP_VILE_SPIRITS);
|
||||
events.CancelEvent(EVENT_DEFILE);
|
||||
events.CancelEvent(EVENT_SOUL_REAPER);
|
||||
events.ScheduleEvent(EVENT_FROSTMOURNE_HEROIC, 6000, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_HARVEST_SOULS, urand(100000, 110000), EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_FROSTMOURNE_HEROIC, 6s, EVENT_GROUP_ABILITIES);
|
||||
events.ScheduleEvent(EVENT_HARVEST_SOULS, 100s, 110s, EVENT_GROUP_ABILITIES);
|
||||
|
||||
for (SummonList::iterator i = summons.begin(); i != summons.end(); ++i)
|
||||
if (Creature* summon = ObjectAccessor::GetCreature(*me, *i))
|
||||
@@ -1307,11 +1307,11 @@ public:
|
||||
theLichKing->RemoveAurasDueToSpell(SPELL_EMOTE_SIT_NO_SHEATH);
|
||||
theLichKing->AI()->Talk(SAY_LK_INTRO_1);
|
||||
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_FROZEN_THRONE);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_MOVE, 3000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_MOVE, 3s);
|
||||
}
|
||||
break;
|
||||
case POINT_TIRION_OUTRO:
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_JUMP, 1);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_JUMP, 1ms);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1321,18 +1321,18 @@ public:
|
||||
switch (action)
|
||||
{
|
||||
case ACTION_OUTRO:
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_1, 2600);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_TALK, 6600);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_TALK, 17600);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_2, 30000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_3, 39000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_CAST_SHOUT, 50000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_TALK, 54000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_MOVE_CENTER, 65000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_1, 2600ms);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_TALK, 6600ms);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_TALK, 17s + 600ms);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_2, 30s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_3, 39s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_CAST_SHOUT, 50s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_EMOTE_TALK, 54s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_MOVE_CENTER, 65s);
|
||||
break;
|
||||
case ACTION_BREAK_FROSTMOURNE:
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_6, 2500);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_SOUL_BARRAGE, 6500);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_6, 2500ms);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_SOUL_BARRAGE, 6500ms);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1399,7 +1399,7 @@ public:
|
||||
path.push_back(G3D::Vector3(LichKingIntro[i].GetPositionX(), LichKingIntro[i].GetPositionY(), LichKingIntro[i].GetPositionZ()));
|
||||
theLichKing->SetWalk(true);
|
||||
theLichKing->GetMotionMaster()->MoveSplinePath(&path);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_TALK_1, 11000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_TALK_1, 11s);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_LK_TALK_1:
|
||||
@@ -1407,10 +1407,10 @@ public:
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_INTRO_2);
|
||||
theLichKing->HandleEmoteCommand(EMOTE_ONESHOT_TALK_NO_SHEATHE);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_EMOTE_CAST_SHOUT, 7000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_EMOTE_1, 13000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_EMOTE_CAST_SHOUT, 18000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_CAST_FREEZE, 31000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_EMOTE_CAST_SHOUT, 7s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_EMOTE_1, 13s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_EMOTE_CAST_SHOUT, 18s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_CAST_FREEZE, 31s);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_LK_EMOTE_CAST_SHOUT:
|
||||
@@ -1426,21 +1426,21 @@ public:
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_INTRO_3);
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_ICE_LOCK, false);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 1000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 1s);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_FORDRING_TALK_1:
|
||||
{
|
||||
Talk(SAY_TIRION_INTRO_1);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_TALK_1, 9000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_TALK_2, 34000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_LK_TALK_1, 9s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_TALK_2, 34s);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_FORDRING_TALK_2:
|
||||
{
|
||||
Talk(SAY_TIRION_INTRO_2);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_EMOTE_1, 2000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_CHARGE, 5000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_EMOTE_1, 2s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_FORDRING_CHARGE, 5s);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_FORDRING_EMOTE_1:
|
||||
@@ -1522,10 +1522,10 @@ public:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_5);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_TALK_1, 7000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_BLESS, 18000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_REMOVE_ICE, 23000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_MOVE_1, 25000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_TALK_1, 7s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_BLESS, 18s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_REMOVE_ICE, 23s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_MOVE_1, 25s);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_6:
|
||||
@@ -1538,8 +1538,8 @@ public:
|
||||
me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SOULSTORM, 10s);
|
||||
me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_BLACKSNOW, 0.5f);
|
||||
|
||||
_events.ScheduleEvent(EVENT_OUTRO_AFTER_SUMMON_BROKEN_FROSTMOURNE, 1000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_KNOCK_BACK, 3000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_AFTER_SUMMON_BROKEN_FROSTMOURNE, 1s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_KNOCK_BACK, 3s);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -1559,12 +1559,12 @@ public:
|
||||
theLichKing->SetDisableGravity(true);
|
||||
theLichKing->GetMotionMaster()->MovePoint(0, OutroFlying);
|
||||
|
||||
_events.ScheduleEvent(EVENT_OUTRO_AFTER_SOUL_BARRAGE, 3000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_AFTER_SOUL_BARRAGE, 3s);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_AFTER_SOUL_BARRAGE:
|
||||
Talk(SAY_TIRION_OUTRO_2);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_SUMMON_TERENAS, 6000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_SUMMON_TERENAS, 6s);
|
||||
break;
|
||||
case EVENT_OUTRO_SUMMON_TERENAS:
|
||||
if (Creature* frostmourne = me->FindNearestCreature(NPC_FROSTMOURNE_TRIGGER, 50.0f))
|
||||
@@ -1573,8 +1573,8 @@ public:
|
||||
if (Creature* terenas = me->FindNearestCreature(NPC_TERENAS_MENETHIL_OUTRO, 50.0f))
|
||||
terenas->SetFacingToObject(frostmourne);
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_OUTRO_TERENAS_TALK_1, 2000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_TERENAS_TALK_2, 14000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_TERENAS_TALK_1, 2s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_TERENAS_TALK_2, 14s);
|
||||
break;
|
||||
case EVENT_OUTRO_TERENAS_TALK_1:
|
||||
if (Creature* terenas = me->FindNearestCreature(NPC_TERENAS_MENETHIL_OUTRO, 50.0f))
|
||||
@@ -1594,8 +1594,8 @@ public:
|
||||
me->Attack(lichKing, true);
|
||||
me->GetMotionMaster()->MovePoint(0, 512.16f, -2120.25f, 840.86f);
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_7, 7000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_8, 17000);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_7, 7s);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_LK_TALK_8, 17s);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_7:
|
||||
@@ -1819,8 +1819,8 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_SHOCKWAVE, urand(20000, 25000));
|
||||
_events.ScheduleEvent(EVENT_ENRAGE, urand(11000, 14000));
|
||||
_events.ScheduleEvent(EVENT_SHOCKWAVE, 20s, 25s);
|
||||
_events.ScheduleEvent(EVENT_ENRAGE, 11s, 14s);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
||||
@@ -1846,11 +1846,11 @@ public:
|
||||
{
|
||||
case EVENT_SHOCKWAVE:
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHOCKWAVE, false);
|
||||
_events.ScheduleEvent(EVENT_SHOCKWAVE, urand(20000, 25000));
|
||||
_events.ScheduleEvent(EVENT_SHOCKWAVE, 20s, 25s);
|
||||
break;
|
||||
case EVENT_ENRAGE:
|
||||
me->CastSpell(me, SPELL_ENRAGE, false);
|
||||
_events.ScheduleEvent(EVENT_ENRAGE, urand(20000, 25000));
|
||||
_events.ScheduleEvent(EVENT_ENRAGE, 20s, 25s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -2318,8 +2318,8 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_RAGING_SPIRIT_UNROOT, 3000);
|
||||
_events.ScheduleEvent(EVENT_SOUL_SHRIEK, urand(12000, 15000));
|
||||
_events.ScheduleEvent(EVENT_RAGING_SPIRIT_UNROOT, 3s);
|
||||
_events.ScheduleEvent(EVENT_SOUL_SHRIEK, 12s, 15s);
|
||||
|
||||
bool valid = false;
|
||||
me->CastSpell(me, SPELL_RAGING_SPIRIT_VISUAL, true);
|
||||
@@ -2401,7 +2401,7 @@ public:
|
||||
case EVENT_SOUL_SHRIEK:
|
||||
if (!me->HasReactState(REACT_PASSIVE))
|
||||
me->CastSpell(me->GetVictim(), SPELL_SOUL_SHRIEK, false);
|
||||
_events.ScheduleEvent(EVENT_SOUL_SHRIEK, urand(12000, 15000));
|
||||
_events.ScheduleEvent(EVENT_SOUL_SHRIEK, 12s, 15s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -2521,7 +2521,7 @@ public:
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 2500);
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 2500ms);
|
||||
me->SetWalk(false);
|
||||
}
|
||||
|
||||
@@ -2543,7 +2543,7 @@ public:
|
||||
_destPoint.Relocate(CenterPosition.GetPositionX() + dist * cos(angle), CenterPosition.GetPositionY() + dist * std::sin(angle), 855.0f + frand(0.0f, 4.0f), 0.0f);
|
||||
me->SetHomePosition(_destPoint);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_SIPHON_POS, 0);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_SIPHON_POS, 0ms);
|
||||
}
|
||||
|
||||
void OnCharmed(bool /*apply*/) override {}
|
||||
@@ -2599,13 +2599,13 @@ public:
|
||||
me->CastSpell(target, SPELL_VALKYR_CARRY, false);
|
||||
_destPoint.Relocate(triggers.front());
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 1000);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 1s);
|
||||
}
|
||||
}
|
||||
if (!valid)
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 500);
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 500ms);
|
||||
_grabbedPlayer.Clear();
|
||||
}
|
||||
}
|
||||
@@ -2617,7 +2617,7 @@ public:
|
||||
if (me->GetExactDist(&_destPoint) > 1.5f) // movement was interrupted (probably by a stun, start again)
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 0);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 0ms);
|
||||
break;
|
||||
}
|
||||
dropped = true;
|
||||
@@ -2638,12 +2638,12 @@ public:
|
||||
if (me->GetExactDist(&_destPoint) > 1.5f) // movement was interrupted (probably by a stun, start again)
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_SIPHON_POS, 0);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_SIPHON_POS, 0ms);
|
||||
break;
|
||||
}
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, false);
|
||||
_events.ScheduleEvent(EVENT_LIFE_SIPHON, 2000);
|
||||
_events.ScheduleEvent(EVENT_LIFE_SIPHON, 2s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2666,7 +2666,7 @@ public:
|
||||
if (!_grabbedPlayer)
|
||||
{
|
||||
me->CastSpell((Unit*)nullptr, SPELL_VALKYR_TARGET_SEARCH, false);
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 2000);
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 2s);
|
||||
}
|
||||
break;
|
||||
case EVENT_MOVE_TO_DROP_POS:
|
||||
@@ -2702,7 +2702,7 @@ public:
|
||||
target = lichKing->AI()->SelectTarget(SelectTargetMethod::Random, 0, NonTankLKTargetSelector(lichKing, true, false, 100.0f));
|
||||
if (target)
|
||||
me->CastSpell(target, SPELL_LIFE_SIPHON, false);
|
||||
_events.ScheduleEvent(EVENT_LIFE_SIPHON, 2500);
|
||||
_events.ScheduleEvent(EVENT_LIFE_SIPHON, 2500ms);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -3147,9 +3147,9 @@ public:
|
||||
summoner->ToUnit()->SendMovementFlagUpdate(true);
|
||||
summoner->ToUnit()->SetPetGUID(petGUID);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_LICH_KING, 1000);
|
||||
_events.ScheduleEvent(EVENT_TELEPORT, 6250);
|
||||
_events.ScheduleEvent(EVENT_DESPAWN_SELF, 6000 + 70000);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_LICH_KING, 1s);
|
||||
_events.ScheduleEvent(EVENT_TELEPORT, 6250ms);
|
||||
_events.ScheduleEvent(EVENT_DESPAWN_SELF, 76s);
|
||||
|
||||
// this will let us easily access all creatures of this entry on heroic mode when its time to teleport back
|
||||
lichKing->AI()->JustSummoned(me);
|
||||
@@ -3224,7 +3224,7 @@ public:
|
||||
else
|
||||
{
|
||||
summoner->ExitVehicle(summoner);
|
||||
_events.RescheduleEvent(EVENT_DESPAWN_SELF, 0);
|
||||
_events.RescheduleEvent(EVENT_DESPAWN_SELF, 0ms);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -3277,13 +3277,13 @@ public:
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
me->setActive(true);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_FROSTMOURNE_TALK_1, 2000);
|
||||
_events.ScheduleEvent(EVENT_FROSTMOURNE_TALK_2, 11000);
|
||||
_events.ScheduleEvent(EVENT_FROSTMOURNE_TALK_1, 2s);
|
||||
_events.ScheduleEvent(EVENT_FROSTMOURNE_TALK_2, 11s);
|
||||
if (!IsHeroic())
|
||||
{
|
||||
me->SetHealth(me->GetMaxHealth() / 2);
|
||||
_events.ScheduleEvent(EVENT_DESTROY_SOUL, 60000);
|
||||
_events.ScheduleEvent(EVENT_FROSTMOURNE_TALK_3, 25000);
|
||||
_events.ScheduleEvent(EVENT_DESTROY_SOUL, 1min);
|
||||
_events.ScheduleEvent(EVENT_FROSTMOURNE_TALK_3, 25s);
|
||||
}
|
||||
break;
|
||||
case ACTION_TELEPORT_BACK:
|
||||
@@ -3307,7 +3307,7 @@ public:
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1000);
|
||||
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1s);
|
||||
if (Creature* warden = me->FindNearestCreature(NPC_SPIRIT_WARDEN, 20.0f))
|
||||
{
|
||||
warden->CastSpell((Unit*)nullptr, SPELL_DESTROY_SOUL, false);
|
||||
@@ -3352,7 +3352,7 @@ public:
|
||||
me->AttackStop();
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1000);
|
||||
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1s);
|
||||
break;
|
||||
case EVENT_TELEPORT_BACK:
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
@@ -3491,7 +3491,7 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_SOUL_RIP, urand(12000, 15000));
|
||||
_events.ScheduleEvent(EVENT_SOUL_RIP, 12s, 15s);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -3510,7 +3510,7 @@ public:
|
||||
if (_events.ExecuteEvent() == EVENT_SOUL_RIP)
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), SPELL_SOUL_RIP, false);
|
||||
_events.ScheduleEvent(EVENT_SOUL_RIP, urand(23000, 27000));
|
||||
_events.ScheduleEvent(EVENT_SOUL_RIP, 23s, 27s);
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -327,10 +327,10 @@ public:
|
||||
|
||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_INTRO_TALK, 15000);
|
||||
_events.ScheduleEvent(EVENT_DREAM_PORTAL, urand(45000, 48000));
|
||||
_events.ScheduleEvent(EVENT_INTRO_TALK, 15s);
|
||||
_events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s);
|
||||
if (IsHeroic())
|
||||
_events.ScheduleEvent(EVENT_BERSERK, 420000);
|
||||
_events.ScheduleEvent(EVENT_BERSERK, 7min);
|
||||
}
|
||||
|
||||
void HealReceived(Unit* healer, uint32& heal) override
|
||||
@@ -350,7 +350,7 @@ public:
|
||||
me->CastSpell(me, SPELL_ACHIEVEMENT_CHECK, true);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_DREAMWALKERS_RAGE, false);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_DREAM_SLIP, 3500);
|
||||
_events.ScheduleEvent(EVENT_DREAM_SLIP, 3500ms);
|
||||
_instance->SetBossState(DATA_VALITHRIA_DREAMWALKER, DONE);
|
||||
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
@@ -463,7 +463,7 @@ public:
|
||||
Talk(SAY_VALITHRIA_DREAM_PORTAL);
|
||||
for (uint32 i = 0; i < _portalCount; ++i)
|
||||
me->CastSpell(me, SUMMON_PORTAL, false);
|
||||
_events.ScheduleEvent(EVENT_DREAM_PORTAL, urand(45000, 48000));
|
||||
_events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s);
|
||||
break;
|
||||
case EVENT_DREAM_SLIP:
|
||||
me->CastSpell(me, SPELL_DREAM_SLIP, false);
|
||||
@@ -640,11 +640,11 @@ public:
|
||||
{
|
||||
Talk(SAY_LICH_KING_INTRO);
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_GLUTTONOUS_ABOMINATION_SUMMONER, 5000);
|
||||
_events.ScheduleEvent(EVENT_SUPPRESSER_SUMMONER, 10000);
|
||||
_events.ScheduleEvent(EVENT_BLISTERING_ZOMBIE_SUMMONER, 15000);
|
||||
_events.ScheduleEvent(EVENT_RISEN_ARCHMAGE_SUMMONER, 20000);
|
||||
_events.ScheduleEvent(EVENT_BLAZING_SKELETON_SUMMONER, 30000);
|
||||
_events.ScheduleEvent(EVENT_GLUTTONOUS_ABOMINATION_SUMMONER, 5s);
|
||||
_events.ScheduleEvent(EVENT_SUPPRESSER_SUMMONER, 10s);
|
||||
_events.ScheduleEvent(EVENT_BLISTERING_ZOMBIE_SUMMONER, 15s);
|
||||
_events.ScheduleEvent(EVENT_RISEN_ARCHMAGE_SUMMONER, 20s);
|
||||
_events.ScheduleEvent(EVENT_BLAZING_SKELETON_SUMMONER, 30s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -723,9 +723,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_FROSTBOLT_VOLLEY, urand(5000, 15000));
|
||||
_events.ScheduleEvent(EVENT_MANA_VOID, urand(15000, 25000));
|
||||
_events.ScheduleEvent(EVENT_COLUMN_OF_FROST, urand(10000, 20000));
|
||||
_events.ScheduleEvent(EVENT_FROSTBOLT_VOLLEY, 5s, 15s);
|
||||
_events.ScheduleEvent(EVENT_MANA_VOID, 15s, 25s);
|
||||
_events.ScheduleEvent(EVENT_COLUMN_OF_FROST, 10s, 20s);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*target*/) override
|
||||
@@ -772,17 +772,17 @@ public:
|
||||
{
|
||||
case EVENT_FROSTBOLT_VOLLEY:
|
||||
me->CastSpell(me, SPELL_FROSTBOLT_VOLLEY, false);
|
||||
_events.ScheduleEvent(EVENT_FROSTBOLT_VOLLEY, urand(8000, 15000));
|
||||
_events.ScheduleEvent(EVENT_FROSTBOLT_VOLLEY, 8s, 15s);
|
||||
break;
|
||||
case EVENT_MANA_VOID:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, ManaVoidSelector(me)))
|
||||
me->CastSpell(target, SPELL_MANA_VOID, false);
|
||||
_events.ScheduleEvent(EVENT_MANA_VOID, urand(20000, 25000));
|
||||
_events.ScheduleEvent(EVENT_MANA_VOID, 20s, 25s);
|
||||
break;
|
||||
case EVENT_COLUMN_OF_FROST:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, -10.0f, true))
|
||||
me->CastSpell(target, SPELL_COLUMN_OF_FROST, false);
|
||||
_events.ScheduleEvent(EVENT_COLUMN_OF_FROST, urand(15000, 25000));
|
||||
_events.ScheduleEvent(EVENT_COLUMN_OF_FROST, 15s, 25s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -851,7 +851,7 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_CHECK_PLAYER, 750);
|
||||
_events.ScheduleEvent(EVENT_CHECK_PLAYER, 750ms);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->SetCorpseDelay(0);
|
||||
me->LoadCreaturesAddon(true);
|
||||
@@ -872,9 +872,9 @@ public:
|
||||
{
|
||||
case EVENT_CHECK_PLAYER:
|
||||
if (me->SelectNearestPlayer(5.0f)) // also checks phase
|
||||
_events.ScheduleEvent(EVENT_EXPLODE, 500);
|
||||
_events.ScheduleEvent(EVENT_EXPLODE, 500ms);
|
||||
else
|
||||
_events.ScheduleEvent(EVENT_CHECK_PLAYER, 750);
|
||||
_events.ScheduleEvent(EVENT_CHECK_PLAYER, 750ms);
|
||||
break;
|
||||
case EVENT_EXPLODE:
|
||||
me->StopMoving();
|
||||
@@ -914,8 +914,8 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_FIREBALL, urand(2000, 4000));
|
||||
_events.ScheduleEvent(EVENT_LEY_WASTE, urand(15000, 20000));
|
||||
_events.ScheduleEvent(EVENT_FIREBALL, 2s, 4s);
|
||||
_events.ScheduleEvent(EVENT_LEY_WASTE, 15s, 20s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -933,11 +933,11 @@ public:
|
||||
case EVENT_FIREBALL:
|
||||
if (!me->IsWithinMeleeRange(me->GetVictim()))
|
||||
me->CastSpell(me->GetVictim(), SPELL_FIREBALL, false);
|
||||
_events.ScheduleEvent(EVENT_FIREBALL, urand(2000, 4000));
|
||||
_events.ScheduleEvent(EVENT_FIREBALL, 2s, 4s);
|
||||
break;
|
||||
case EVENT_LEY_WASTE:
|
||||
me->CastSpell(me, SPELL_LEY_WASTE, false);
|
||||
_events.ScheduleEvent(EVENT_LEY_WASTE, urand(15000, 20000));
|
||||
_events.ScheduleEvent(EVENT_LEY_WASTE, 15s, 20s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1086,7 +1086,7 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_GUT_SPRAY, urand(10000, 13000));
|
||||
_events.ScheduleEvent(EVENT_GUT_SPRAY, 10s, 13s);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
@@ -1116,7 +1116,7 @@ public:
|
||||
{
|
||||
case EVENT_GUT_SPRAY:
|
||||
me->CastSpell(me, SPELL_GUT_SPRAY, false);
|
||||
_events.ScheduleEvent(EVENT_GUT_SPRAY, urand(10000, 13000));
|
||||
_events.ScheduleEvent(EVENT_GUT_SPRAY, 10s, 13s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -415,36 +415,36 @@ public:
|
||||
return;
|
||||
|
||||
Talk(SAY_TIRION_INTRO_1);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_2, 4000);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_3, 14000);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_4, 18000);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_5, 31000);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_1, 35000);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_6, 49000);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_2, 58000);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_3, 74000);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_4, 86000); // sound last 21 seconds (five more)
|
||||
_events.ScheduleEvent(EVENT_BOLVAR_INTRO_1, 107000);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_5, 113000);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_2, 4s);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_3, 14s);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_4, 18s);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_5, 31s);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_1, 35s);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_6, 49s);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_2, 58s);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_3, 74s);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_4, 86s); // sound last 21 seconds (five more)
|
||||
_events.ScheduleEvent(EVENT_BOLVAR_INTRO_1, 107s);
|
||||
_events.ScheduleEvent(EVENT_LK_INTRO_5, 113s);
|
||||
|
||||
if (_instance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE)
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_1, 125000);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_H_7, 134000);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_2, 144000);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_3, 155000);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_4, 167000);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_RUN, 175000);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_1, 125s);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_H_7, 134s);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_2, 144s);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_3, 155s);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_INTRO_4, 167s);
|
||||
_events.ScheduleEvent(EVENT_SAURFANG_RUN, 175s);
|
||||
}
|
||||
else
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_1, 125000);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_2, 129000);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_3, 132000);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_A_7, 141000);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_4, 149000);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_5, 156000);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_RUN, 162000);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_1, 125s);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_2, 129s);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_3, 132s);
|
||||
_events.ScheduleEvent(EVENT_TIRION_INTRO_A_7, 141s);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_4, 149s);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_INTRO_5, 156s);
|
||||
_events.ScheduleEvent(EVENT_MURADIN_RUN, 162s);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -600,9 +600,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000);
|
||||
_events.ScheduleEvent(EVENT_STOMP, urand(5000, 8000));
|
||||
_events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(10000, 15000));
|
||||
_events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15s);
|
||||
_events.ScheduleEvent(EVENT_STOMP, 5s, 8s);
|
||||
_events.ScheduleEvent(EVENT_ARCTIC_BREATH, 10s, 15s);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -630,15 +630,15 @@ public:
|
||||
Talk(EMOTE_DEATH_PLAGUE_WARNING, target);
|
||||
DoCast(target, SPELL_DEATH_PLAGUE);
|
||||
}
|
||||
_events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000);
|
||||
_events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15s);
|
||||
break;
|
||||
case EVENT_STOMP:
|
||||
DoCastVictim(SPELL_STOMP);
|
||||
_events.ScheduleEvent(EVENT_STOMP, urand(15000, 18000));
|
||||
_events.ScheduleEvent(EVENT_STOMP, 15s, 18s);
|
||||
break;
|
||||
case EVENT_ARCTIC_BREATH:
|
||||
DoCastVictim(SPELL_ARCTIC_BREATH);
|
||||
_events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(26000, 33000));
|
||||
_events.ScheduleEvent(EVENT_ARCTIC_BREATH, 26s, 33s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -695,7 +695,7 @@ public:
|
||||
if (instance->GetData(DATA_COLDFLAME_JETS) == IN_PROGRESS)
|
||||
{
|
||||
DoCast(me, SPELL_COLDFLAME_JETS);
|
||||
_events.ScheduleEvent(EVENT_ACTIVATE_TRAP, 22000);
|
||||
_events.ScheduleEvent(EVENT_ACTIVATE_TRAP, 22s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -731,8 +731,8 @@ public:
|
||||
_handledWP4 = false;
|
||||
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_SCOURGE_STRIKE, urand(7500, 12500));
|
||||
_events.ScheduleEvent(EVENT_DEATH_STRIKE, urand(25000, 30000));
|
||||
_events.ScheduleEvent(EVENT_SCOURGE_STRIKE, 7500ms, 12s + 500ms);
|
||||
_events.ScheduleEvent(EVENT_DEATH_STRIKE, 25s, 30s);
|
||||
}
|
||||
|
||||
void DoAction(int32 action) override
|
||||
@@ -754,9 +754,9 @@ public:
|
||||
crusader->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
|
||||
Talk(SAY_CROK_INTRO_1);
|
||||
_events.ScheduleEvent(EVENT_ARNATH_INTRO_2, 7000);
|
||||
_events.ScheduleEvent(EVENT_CROK_INTRO_3, 14000);
|
||||
_events.ScheduleEvent(EVENT_START_PATHING, 37000);
|
||||
_events.ScheduleEvent(EVENT_ARNATH_INTRO_2, 7s);
|
||||
_events.ScheduleEvent(EVENT_CROK_INTRO_3, 14s);
|
||||
_events.ScheduleEvent(EVENT_START_PATHING, 37s);
|
||||
}
|
||||
else if (action == ACTION_RESET_EVENT)
|
||||
{
|
||||
@@ -879,7 +879,7 @@ public:
|
||||
|
||||
damage = 0;
|
||||
me->CastSpell(me, SPELL_ICEBOUND_ARMOR, true);
|
||||
_events.ScheduleEvent(EVENT_HEALTH_CHECK, 1000);
|
||||
_events.ScheduleEvent(EVENT_HEALTH_CHECK, 1s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -937,12 +937,12 @@ public:
|
||||
break;
|
||||
case EVENT_SCOURGE_STRIKE:
|
||||
DoCastVictim(SPELL_SCOURGE_STRIKE);
|
||||
_events.ScheduleEvent(EVENT_SCOURGE_STRIKE, urand(10000, 14000));
|
||||
_events.ScheduleEvent(EVENT_SCOURGE_STRIKE, 10s, 14s);
|
||||
break;
|
||||
case EVENT_DEATH_STRIKE:
|
||||
if (HealthBelowPct(20))
|
||||
DoCastVictim(SPELL_DEATH_STRIKE);
|
||||
_events.ScheduleEvent(EVENT_DEATH_STRIKE, urand(5000, 10000));
|
||||
_events.ScheduleEvent(EVENT_DEATH_STRIKE, 5s, 10s);
|
||||
break;
|
||||
case EVENT_HEALTH_CHECK:
|
||||
if (HealthAbovePct(25))
|
||||
@@ -953,7 +953,7 @@ public:
|
||||
else
|
||||
{
|
||||
Unit::DealHeal(me, me, me->CountPctFromMaxHealth(3));
|
||||
_events.ScheduleEvent(EVENT_HEALTH_CHECK, 1000);
|
||||
_events.ScheduleEvent(EVENT_HEALTH_CHECK, 1s);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -1053,8 +1053,8 @@ public:
|
||||
crok->AI()->Talk(SAY_CROK_COMBAT_SVALNA);
|
||||
crok->AI()->AttackStart(me);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_SVALNA_COMBAT, 9000);
|
||||
events.ScheduleEvent(EVENT_IMPALING_SPEAR, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_SVALNA_COMBAT, 9s);
|
||||
events.ScheduleEvent(EVENT_IMPALING_SPEAR, 15s, 20s);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim) override
|
||||
@@ -1092,10 +1092,10 @@ public:
|
||||
break;
|
||||
case ACTION_START_GAUNTLET:
|
||||
me->setActive(true);
|
||||
events.ScheduleEvent(EVENT_SVALNA_START, 25000);
|
||||
events.ScheduleEvent(EVENT_SVALNA_START, 25s);
|
||||
break;
|
||||
case ACTION_RESURRECT_CAPTAINS:
|
||||
events.RescheduleEvent(EVENT_SVALNA_RESURRECT, 7000);
|
||||
events.RescheduleEvent(EVENT_SVALNA_RESURRECT, 7s);
|
||||
break;
|
||||
case ACTION_CAPTAIN_DIES:
|
||||
Talk(SAY_SVALNA_CAPTAIN_DEATH);
|
||||
@@ -1181,7 +1181,7 @@ public:
|
||||
me->AddAura(70203, me);
|
||||
DoCast(target, SPELL_IMPALING_SPEAR);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_IMPALING_SPEAR, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_IMPALING_SPEAR, 20s, 25s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1324,11 +1324,11 @@ public:
|
||||
{
|
||||
npc_argent_captainAI::Reset();
|
||||
Events.Reset();
|
||||
Events.ScheduleEvent(EVENT_ARNATH_FLASH_HEAL, urand(4000, 7000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_PW_SHIELD, urand(8000, 14000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_SMITE, urand(3000, 6000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_FLASH_HEAL, 4s, 7s);
|
||||
Events.ScheduleEvent(EVENT_ARNATH_PW_SHIELD, 8s, 14s);
|
||||
Events.ScheduleEvent(EVENT_ARNATH_SMITE, 3s, 6s);
|
||||
if (Is25ManRaid() && IsUndead)
|
||||
Events.ScheduleEvent(EVENT_ARNATH_DOMINATE_MIND, urand(22000, 27000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_DOMINATE_MIND, 22s, 27s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1346,24 +1346,24 @@ public:
|
||||
case EVENT_ARNATH_FLASH_HEAL:
|
||||
if (Creature* target = FindFriendlyCreature())
|
||||
DoCast(target, SPELL_FLASH_HEAL);
|
||||
Events.ScheduleEvent(EVENT_ARNATH_FLASH_HEAL, urand(6000, 9000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_FLASH_HEAL, 6s, 9s);
|
||||
break;
|
||||
case EVENT_ARNATH_PW_SHIELD:
|
||||
{
|
||||
std::list<Creature*> targets = DoFindFriendlyMissingBuff(40.0f, SPELL_POWER_WORD_SHIELD);
|
||||
if (!targets.empty())
|
||||
DoCast(Acore::Containers::SelectRandomContainerElement(targets), SPELL_POWER_WORD_SHIELD);
|
||||
Events.ScheduleEvent(EVENT_ARNATH_PW_SHIELD, urand(15000, 20000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_PW_SHIELD, 15s, 20s);
|
||||
break;
|
||||
}
|
||||
case EVENT_ARNATH_SMITE:
|
||||
DoCastVictim(SPELL_SMITE);
|
||||
Events.ScheduleEvent(EVENT_ARNATH_SMITE, urand(4000, 7000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_SMITE, 4s, 7s);
|
||||
break;
|
||||
case EVENT_ARNATH_DOMINATE_MIND:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true, true, -SPELL_DOMINATE_MIND))
|
||||
DoCast(target, SPELL_DOMINATE_MIND);
|
||||
Events.ScheduleEvent(EVENT_ARNATH_DOMINATE_MIND, urand(28000, 37000));
|
||||
Events.ScheduleEvent(EVENT_ARNATH_DOMINATE_MIND, 28s, 37s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1404,11 +1404,11 @@ public:
|
||||
{
|
||||
npc_argent_captainAI::Reset();
|
||||
Events.Reset();
|
||||
Events.ScheduleEvent(EVENT_BRANDON_CRUSADER_STRIKE, urand(6000, 10000));
|
||||
Events.ScheduleEvent(EVENT_BRANDON_DIVINE_SHIELD, 500);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_JUDGEMENT_OF_COMMAND, urand(8000, 13000));
|
||||
Events.ScheduleEvent(EVENT_BRANDON_CRUSADER_STRIKE, 6s, 10s);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_DIVINE_SHIELD, 500ms);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_JUDGEMENT_OF_COMMAND, 8s, 13s);
|
||||
if (IsUndead)
|
||||
Events.ScheduleEvent(EVENT_BRANDON_HAMMER_OF_BETRAYAL, urand(25000, 30000));
|
||||
Events.ScheduleEvent(EVENT_BRANDON_HAMMER_OF_BETRAYAL, 25s, 30s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1427,21 +1427,21 @@ public:
|
||||
{
|
||||
case EVENT_BRANDON_CRUSADER_STRIKE:
|
||||
DoCastVictim(SPELL_CRUSADER_STRIKE);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_CRUSADER_STRIKE, urand(6000, 12000));
|
||||
Events.ScheduleEvent(EVENT_BRANDON_CRUSADER_STRIKE, 6s, 12s);
|
||||
break;
|
||||
case EVENT_BRANDON_DIVINE_SHIELD:
|
||||
if (HealthBelowPct(20))
|
||||
DoCast(me, SPELL_DIVINE_SHIELD);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_DIVINE_SHIELD, 500);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_DIVINE_SHIELD, 500ms);
|
||||
break;
|
||||
case EVENT_BRANDON_JUDGEMENT_OF_COMMAND:
|
||||
DoCastVictim(SPELL_JUDGEMENT_OF_COMMAND);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_JUDGEMENT_OF_COMMAND, urand(8000, 13000));
|
||||
Events.ScheduleEvent(EVENT_BRANDON_JUDGEMENT_OF_COMMAND, 8s, 13s);
|
||||
break;
|
||||
case EVENT_BRANDON_HAMMER_OF_BETRAYAL:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true))
|
||||
DoCast(target, SPELL_HAMMER_OF_BETRAYAL);
|
||||
Events.ScheduleEvent(EVENT_BRANDON_HAMMER_OF_BETRAYAL, urand(45000, 60000));
|
||||
Events.ScheduleEvent(EVENT_BRANDON_HAMMER_OF_BETRAYAL, 45s, 60s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1473,11 +1473,11 @@ public:
|
||||
{
|
||||
npc_argent_captainAI::Reset();
|
||||
Events.Reset();
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CHARGE_CHECK, 500);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_MORTAL_STRIKE, urand(8000, 14000));
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_SUNDER_ARMOR, urand(3000, 12000));
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CHARGE_CHECK, 500ms);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_MORTAL_STRIKE, 8s, 14s);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_SUNDER_ARMOR, 3s, 12s);
|
||||
if (IsUndead)
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CONFLAGRATION, urand(12000, 17000));
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CONFLAGRATION, 12s, 17s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1496,20 +1496,20 @@ public:
|
||||
{
|
||||
case EVENT_GRONDEL_CHARGE_CHECK:
|
||||
DoCastVictim(SPELL_CHARGE);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CHARGE_CHECK, 500);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CHARGE_CHECK, 500ms);
|
||||
break;
|
||||
case EVENT_GRONDEL_MORTAL_STRIKE:
|
||||
DoCastVictim(SPELL_MORTAL_STRIKE);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_MORTAL_STRIKE, urand(10000, 15000));
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_MORTAL_STRIKE, 10s, 15s);
|
||||
break;
|
||||
case EVENT_GRONDEL_SUNDER_ARMOR:
|
||||
DoCastVictim(SPELL_SUNDER_ARMOR);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_SUNDER_ARMOR, urand(5000, 17000));
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_SUNDER_ARMOR, 5s, 17s);
|
||||
break;
|
||||
case EVENT_GRONDEL_CONFLAGRATION:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
|
||||
DoCast(target, SPELL_CONFLAGRATION);
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CONFLAGRATION, urand(10000, 15000));
|
||||
Events.ScheduleEvent(EVENT_GRONDEL_CONFLAGRATION, 10s, 15s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1541,9 +1541,9 @@ public:
|
||||
{
|
||||
npc_argent_captainAI::Reset();
|
||||
Events.Reset();
|
||||
Events.ScheduleEvent(EVENT_RUPERT_FEL_IRON_BOMB, urand(15000, 20000));
|
||||
Events.ScheduleEvent(EVENT_RUPERT_MACHINE_GUN, urand(25000, 30000));
|
||||
Events.ScheduleEvent(EVENT_RUPERT_ROCKET_LAUNCH, urand(10000, 15000));
|
||||
Events.ScheduleEvent(EVENT_RUPERT_FEL_IRON_BOMB, 15s, 20s);
|
||||
Events.ScheduleEvent(EVENT_RUPERT_MACHINE_GUN, 25s, 30s);
|
||||
Events.ScheduleEvent(EVENT_RUPERT_ROCKET_LAUNCH, 10s, 15s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1563,17 +1563,17 @@ public:
|
||||
case EVENT_RUPERT_FEL_IRON_BOMB:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
DoCast(target, SPELL_FEL_IRON_BOMB);
|
||||
Events.ScheduleEvent(EVENT_RUPERT_FEL_IRON_BOMB, urand(15000, 20000));
|
||||
Events.ScheduleEvent(EVENT_RUPERT_FEL_IRON_BOMB, 15s, 20s);
|
||||
break;
|
||||
case EVENT_RUPERT_MACHINE_GUN:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
|
||||
DoCast(target, SPELL_MACHINE_GUN);
|
||||
Events.ScheduleEvent(EVENT_RUPERT_MACHINE_GUN, urand(25000, 30000));
|
||||
Events.ScheduleEvent(EVENT_RUPERT_MACHINE_GUN, 25s, 30s);
|
||||
break;
|
||||
case EVENT_RUPERT_ROCKET_LAUNCH:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
|
||||
DoCast(target, SPELL_ROCKET_LAUNCH);
|
||||
Events.ScheduleEvent(EVENT_RUPERT_ROCKET_LAUNCH, urand(10000, 15000));
|
||||
Events.ScheduleEvent(EVENT_RUPERT_ROCKET_LAUNCH, 10s, 15s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1648,30 +1648,30 @@ public:
|
||||
switch (me->GetEntry())
|
||||
{
|
||||
case NPC_YMIRJAR_HUNTRESS:
|
||||
events.ScheduleEvent(1, urand(10000, 15000)); // Ice Trap
|
||||
events.ScheduleEvent(2, urand(8000, 12000)); // Rapid Shot
|
||||
events.ScheduleEvent(3, urand(6000, 10000)); // Volley
|
||||
events.ScheduleEvent(1, 10s, 15s); // Ice Trap
|
||||
events.ScheduleEvent(2, 8s, 12s); // Rapid Shot
|
||||
events.ScheduleEvent(3, 6s, 10s); // Volley
|
||||
if (me->GetMap()->Is25ManRaid())
|
||||
events.ScheduleEvent(4, 5000); // Summon Warhawk
|
||||
events.ScheduleEvent(4, 5s); // Summon Warhawk
|
||||
break;
|
||||
case NPC_YMIRJAR_WARLORD:
|
||||
events.ScheduleEvent(11, 6000); // Whirlwind
|
||||
events.ScheduleEvent(11, 6s); // Whirlwind
|
||||
break;
|
||||
case NPC_YMIRJAR_BATTLE_MAIDEN:
|
||||
events.ScheduleEvent(21, 3000); // Barbaric Strike
|
||||
events.ScheduleEvent(22, urand(8000, 12000)); // Adrenaline Rush
|
||||
events.ScheduleEvent(21, 3s); // Barbaric Strike
|
||||
events.ScheduleEvent(22, 8s, 12s); // Adrenaline Rush
|
||||
break;
|
||||
case NPC_YMIRJAR_FROSTBINDER:
|
||||
events.ScheduleEvent(31, 0); // Arctic Chill
|
||||
events.ScheduleEvent(32, urand(15000, 25000)); // Frozen Orb
|
||||
events.ScheduleEvent(33, urand(15000, 30000)); // Twisted Winds
|
||||
events2.ScheduleEvent(100, 0); // Spirit Stream
|
||||
events.ScheduleEvent(31, 0ms); // Arctic Chill
|
||||
events.ScheduleEvent(32, 15s, 25s); // Frozen Orb
|
||||
events.ScheduleEvent(33, 15s, 30s); // Twisted Winds
|
||||
events2.ScheduleEvent(100, 0ms); // Spirit Stream
|
||||
me->SetHover(false);
|
||||
break;
|
||||
case NPC_YMIRJAR_DEATHBRINGER:
|
||||
events.ScheduleEvent(41, 2500); // Empowered Shadow Bolt
|
||||
events.ScheduleEvent(42, 5000); // Summon Undead
|
||||
events2.ScheduleEvent(100, 0); // Spirit Stream
|
||||
events.ScheduleEvent(41, 2500ms); // Empowered Shadow Bolt
|
||||
events.ScheduleEvent(42, 5s); // Summon Undead
|
||||
events2.ScheduleEvent(100, 0ms); // Spirit Stream
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1686,7 +1686,7 @@ public:
|
||||
case 100:
|
||||
if (Creature* stalker = me->FindNearestCreature(NPC_INVISIBLE_STALKER_3_0, 50.0f))
|
||||
me->CastSpell(stalker, SPELL_SPIRIT_STREAM, false);
|
||||
events2.ScheduleEvent(100, 33000);
|
||||
events2.ScheduleEvent(100, 33s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1705,11 +1705,11 @@ public:
|
||||
break;
|
||||
case 1: // Ice Trap
|
||||
me->CastSpell((Unit*)nullptr, 71249, false);
|
||||
events.RepeatEvent(urand(35000, 40000));
|
||||
events.Repeat(35s, 40s);
|
||||
break;
|
||||
case 2: // Rapid Shot
|
||||
me->CastSpell(me->GetVictim(), 71251, false);
|
||||
events.RepeatEvent(urand(25000, 30000));
|
||||
events.Repeat(25s, 30s);
|
||||
break;
|
||||
case 3: // Volley
|
||||
{
|
||||
@@ -1717,10 +1717,10 @@ public:
|
||||
if (target && me->GetDistance(target) > 10.0f)
|
||||
{
|
||||
me->CastSpell(target, 71252, false);
|
||||
events.RepeatEvent(urand(25000, 35000));
|
||||
events.Repeat(25s, 35s);
|
||||
}
|
||||
else
|
||||
events.RepeatEvent(2500);
|
||||
events.Repeat(2500ms);
|
||||
}
|
||||
break;
|
||||
case 4: // Summon Warhawk
|
||||
@@ -1728,15 +1728,15 @@ public:
|
||||
break;
|
||||
case 11: // Whirlwind
|
||||
me->CastSpell(me->GetVictim(), 41056, false);
|
||||
events.RepeatEvent(6000);
|
||||
events.Repeat(6s);
|
||||
break;
|
||||
case 21: // Barbaric Strike
|
||||
me->CastSpell(me->GetVictim(), 71257, false);
|
||||
events.RepeatEvent(3000);
|
||||
events.Repeat(3s);
|
||||
break;
|
||||
case 22: // Adrenaline Rush
|
||||
me->CastSpell(me, 71258, false);
|
||||
events.RepeatEvent(urand(15000, 25000));
|
||||
events.Repeat(15s, 25s);
|
||||
break;
|
||||
case 31: // Arctic Chill
|
||||
me->CastSpell(me, 71270, true);
|
||||
@@ -1744,19 +1744,19 @@ public:
|
||||
case 32: // Frozen Orb
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 30.0f, true))
|
||||
me->CastSpell(target, 71274, false);
|
||||
events.RepeatEvent(urand(40000, 50000));
|
||||
events.Repeat(40s, 50s);
|
||||
break;
|
||||
case 33: // Twisted Winds
|
||||
me->CastSpell((Unit*)nullptr, 71306, false);
|
||||
events.RepeatEvent(urand(35000, 50000));
|
||||
events.Repeat(35s, 50s);
|
||||
break;
|
||||
case 41: // Empowered Shadow Bolt
|
||||
me->CastSpell(me->GetVictim(), 69528, false);
|
||||
events.RepeatEvent(2500);
|
||||
events.Repeat(2500ms);
|
||||
break;
|
||||
case 42: // Summon Undead
|
||||
me->CastSpell(me->GetVictim(), 69516, false);
|
||||
events.RepeatEvent(45000);
|
||||
events.Repeat(45s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1870,7 +1870,7 @@ public:
|
||||
if (_instance->GetBossState(DATA_PROFESSOR_PUTRICIDE) == DONE &&
|
||||
_instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == DONE &&
|
||||
_instance->GetBossState(DATA_SINDRAGOSA) == DONE)
|
||||
_events.ScheduleEvent(EVENT_SOUL_MISSILE, urand(1000, 6000));
|
||||
_events.ScheduleEvent(EVENT_SOUL_MISSILE, 1s, 6s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1883,7 +1883,7 @@ public:
|
||||
if (_events.ExecuteEvent() == EVENT_SOUL_MISSILE)
|
||||
{
|
||||
DoCastAOE(SPELL_SOUL_MISSILE);
|
||||
_events.ScheduleEvent(EVENT_SOUL_MISSILE, urand(5000, 7000));
|
||||
_events.ScheduleEvent(EVENT_SOUL_MISSILE, 5s, 7s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2579,10 +2579,10 @@ public:
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(1, urand(5000, 15000));
|
||||
events.ScheduleEvent(2, urand(5000, 15000));
|
||||
events.ScheduleEvent(3, urand(5000, 15000));
|
||||
events.ScheduleEvent(4, urand(1000, 3000));
|
||||
events.ScheduleEvent(1, 5s, 15s);
|
||||
events.ScheduleEvent(2, 5s, 15s);
|
||||
events.ScheduleEvent(3, 5s, 15s);
|
||||
events.ScheduleEvent(4, 1s, 3s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -2602,21 +2602,21 @@ public:
|
||||
case 1:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69899, false);
|
||||
events.RepeatEvent(urand(10000, 20000));
|
||||
events.Repeat(10s, 20s);
|
||||
break;
|
||||
case 2:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69882, false);
|
||||
events.RepeatEvent(urand(10000, 20000));
|
||||
events.Repeat(10s, 20s);
|
||||
break;
|
||||
case 3:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69898, false);
|
||||
events.RepeatEvent(urand(10000, 20000));
|
||||
events.Repeat(10s, 20s);
|
||||
break;
|
||||
case 4:
|
||||
me->CastSpell(me->GetVictim(), 69968, false);
|
||||
events.RepeatEvent(urand(2000, 3000));
|
||||
events.Repeat(2s, 3s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2646,8 +2646,8 @@ public:
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(1, urand(5000, 10000));
|
||||
events.ScheduleEvent(2, urand(5000, 15000));
|
||||
events.ScheduleEvent(1, 5s, 10s);
|
||||
events.ScheduleEvent(2, 5s, 15s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -2666,11 +2666,11 @@ public:
|
||||
break;
|
||||
case 1:
|
||||
me->CastSpell(me->GetVictim(), 69989, false);
|
||||
events.RepeatEvent(urand(5000, 10000));
|
||||
events.Repeat(5s, 10s);
|
||||
break;
|
||||
case 2:
|
||||
me->CastSpell(me->GetVictim(), 69975, false);
|
||||
events.RepeatEvent(urand(10000, 15000));
|
||||
events.Repeat(10s, 15s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2700,9 +2700,9 @@ public:
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(1, urand(5000, 15000));
|
||||
events.ScheduleEvent(2, urand(5000, 15000));
|
||||
events.ScheduleEvent(3, urand(1000, 3000));
|
||||
events.ScheduleEvent(1, 5s, 15s);
|
||||
events.ScheduleEvent(2, 5s, 15s);
|
||||
events.ScheduleEvent(3, 1s, 3s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -2722,16 +2722,16 @@ public:
|
||||
case 1:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69963, false);
|
||||
events.RepeatEvent(urand(10000, 20000));
|
||||
events.Repeat(10s, 20s);
|
||||
break;
|
||||
case 2:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69910, false);
|
||||
events.RepeatEvent(urand(10000, 20000));
|
||||
events.Repeat(10s, 20s);
|
||||
break;
|
||||
case 3:
|
||||
me->CastSpell(me->GetVictim(), 69967, false);
|
||||
events.RepeatEvent(urand(2000, 3000));
|
||||
events.Repeat(2s, 3s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2761,10 +2761,10 @@ public:
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(1, urand(5000, 15000));
|
||||
events.ScheduleEvent(2, urand(5000, 15000));
|
||||
events.ScheduleEvent(3, urand(5000, 15000));
|
||||
events.ScheduleEvent(4, urand(1000, 3000));
|
||||
events.ScheduleEvent(1, 5s, 15s);
|
||||
events.ScheduleEvent(2, 5s, 15s);
|
||||
events.ScheduleEvent(3, 5s, 15s);
|
||||
events.ScheduleEvent(4, 1s, 3s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -2784,21 +2784,21 @@ public:
|
||||
case 1:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69923, false);
|
||||
events.RepeatEvent(urand(10000, 20000));
|
||||
events.Repeat(10s, 20s);
|
||||
break;
|
||||
case 2:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69926, false);
|
||||
events.RepeatEvent(urand(20000, 30000));
|
||||
events.Repeat(20s, 30s);
|
||||
break;
|
||||
case 3:
|
||||
if (Unit* target = DoSelectLowestHpFriendly(35.0f, 5000))
|
||||
me->CastSpell(target, 69958, false);
|
||||
events.RepeatEvent(urand(10000, 20000));
|
||||
events.Repeat(10s, 20s);
|
||||
break;
|
||||
case 4:
|
||||
me->CastSpell(me->GetVictim(), 69970, false);
|
||||
events.RepeatEvent(urand(3000, 4000));
|
||||
events.Repeat(3s, 4s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2830,7 +2830,7 @@ public:
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
me->setActive(true);
|
||||
events.ScheduleEvent(1, 10000);
|
||||
events.ScheduleEvent(1, 10s);
|
||||
me->SetInCombatWithZone();
|
||||
}
|
||||
|
||||
@@ -2910,7 +2910,7 @@ public:
|
||||
casted = true;
|
||||
me->CastSpell(target, 71906, true); // Severed Essence
|
||||
}
|
||||
events.RepeatEvent(casted ? 25000 : 5000);
|
||||
events.Repeat(casted ? 25s : 5s);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -3069,9 +3069,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(1, urand(15000, 25000)); // blizzard
|
||||
events.ScheduleEvent(2, 5000); // cleave
|
||||
events.ScheduleEvent(3, urand(10000, 15000)); // frost breath
|
||||
events.ScheduleEvent(1, 15s, 25s); // blizzard
|
||||
events.ScheduleEvent(2, 5s); // cleave
|
||||
events.ScheduleEvent(3, 10s, 15s); // frost breath
|
||||
}
|
||||
|
||||
void DoAction(int32 a) override
|
||||
@@ -3120,15 +3120,15 @@ public:
|
||||
case 1:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||
me->CastSpell(target, 70362, false);
|
||||
events.RepeatEvent(urand(25000, 35000));
|
||||
events.Repeat(25s, 35s);
|
||||
break;
|
||||
case 2:
|
||||
me->CastSpell(me->GetVictim(), 70361, false);
|
||||
events.RepeatEvent(5000);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
case 3:
|
||||
me->CastSpell(me->GetVictim(), 70116, false);
|
||||
events.RepeatEvent(urand(10000, 15000));
|
||||
events.Repeat(10s, 15s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3182,7 +3182,7 @@ public:
|
||||
{
|
||||
me->SetWalk(false);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(1, urand(3000, 6000)); // leaping face maul
|
||||
events.ScheduleEvent(1, 3s, 6s); // leaping face maul
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
@@ -3270,10 +3270,10 @@ public:
|
||||
if (me->GetVictim() && !me->GetVictim()->HasAura(71163) && me->GetVictim()->GetDistance(me) > 5.0f && me->GetVictim()->GetDistance(me) < 30.0f)
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), 71164, false);
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
events.Repeat(15s, 20s);
|
||||
}
|
||||
else
|
||||
events.RepeatEvent(3000);
|
||||
events.Repeat(3s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3335,9 +3335,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(1, urand(3000, 10000)); // Crypt Scarabs
|
||||
events.ScheduleEvent(2, urand(15000, 25000)); // Dark Mending
|
||||
events.ScheduleEvent(3, urand(8000, 15000)); // Web Wrap
|
||||
events.ScheduleEvent(1, 3s, 10s); // Crypt Scarabs
|
||||
events.ScheduleEvent(2, 15s, 25s); // Dark Mending
|
||||
events.ScheduleEvent(3, 8s, 15s); // Web Wrap
|
||||
me->AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
||||
}
|
||||
|
||||
@@ -3405,16 +3405,16 @@ public:
|
||||
break;
|
||||
case 1:
|
||||
me->CastSpell(me->GetVictim(), 70965, false);
|
||||
events.RepeatEvent(urand(20000, 30000));
|
||||
events.Repeat(20s, 30s);
|
||||
break;
|
||||
case 2:
|
||||
me->CastSpell(me->GetVictim(), 71020, false);
|
||||
events.RepeatEvent(urand(20000, 30000));
|
||||
events.Repeat(20s, 30s);
|
||||
break;
|
||||
case 3:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||
me->CastSpell(target, 70980, false);
|
||||
events.RepeatEvent(urand(20000, 30000));
|
||||
events.Repeat(20s, 30s);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3513,8 +3513,8 @@ public:
|
||||
me->setActive(true);
|
||||
events.Reset();
|
||||
events.SetPhase(0);
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1000);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE1, 0);
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1s);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE1, 0ms);
|
||||
instance->SetBossState(DATA_SINDRAGOSA_GAUNTLET, IN_PROGRESS);
|
||||
}
|
||||
}
|
||||
@@ -3558,12 +3558,12 @@ public:
|
||||
if (events.GetPhaseMask() == 0)
|
||||
{
|
||||
events.SetPhase(1);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE2, 0);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE2, 0ms);
|
||||
}
|
||||
else if (events.GetPhaseMask() == 1)
|
||||
{
|
||||
events.SetPhase(2);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE3, 0);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE3, 0ms);
|
||||
}
|
||||
else
|
||||
me->KillSelf();
|
||||
@@ -3583,7 +3583,7 @@ public:
|
||||
if (me->GetDistance(itr->GetSource()) > 100.0f || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
|
||||
continue;
|
||||
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1000);
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1s);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3638,13 +3638,13 @@ public:
|
||||
{
|
||||
me->setActive(true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1000);
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1s);
|
||||
instance->SetData(DATA_PUTRICIDE_TRAP_STATE, IN_PROGRESS);
|
||||
me->CastSpell(me, SPELL_GIANT_INSECT_SWARM, true);
|
||||
|
||||
for (uint8 i = 0; i < 60; ++i)
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE1, i * 1000);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE2, 60000);
|
||||
events.ScheduleEvent(EVENT_GAUNTLET_PHASE2, 1min);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3685,7 +3685,7 @@ public:
|
||||
if (me->GetDistance(itr->GetSource()) > 100.0f || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
|
||||
continue;
|
||||
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1000);
|
||||
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1s);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1068,7 +1068,7 @@ public:
|
||||
}
|
||||
}
|
||||
else if (state == FAIL)
|
||||
Events.ScheduleEvent(EVENT_RESPAWN_GUNSHIP, 30000);
|
||||
Events.ScheduleEvent(EVENT_RESPAWN_GUNSHIP, 30s);
|
||||
break;
|
||||
case DATA_DEATHBRINGER_SAURFANG:
|
||||
switch (state)
|
||||
@@ -1336,7 +1336,7 @@ public:
|
||||
switch (data)
|
||||
{
|
||||
case IN_PROGRESS:
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 60000);
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
|
||||
BloodQuickeningMinutes = 30;
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
@@ -1599,7 +1599,7 @@ public:
|
||||
|
||||
if (BloodQuickeningState == IN_PROGRESS)
|
||||
{
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 60000);
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
}
|
||||
@@ -1679,7 +1679,7 @@ public:
|
||||
--BloodQuickeningMinutes;
|
||||
if (BloodQuickeningMinutes)
|
||||
{
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 60000);
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
}
|
||||
@@ -1765,13 +1765,13 @@ public:
|
||||
case EVENT_QUAKE:
|
||||
if (GameObject* warning = instance->GetGameObject(FrozenThroneWarningGUID))
|
||||
warning->SetGoState(GO_STATE_ACTIVE);
|
||||
Events.ScheduleEvent(EVENT_QUAKE_SHATTER, 5000);
|
||||
Events.ScheduleEvent(EVENT_QUAKE_SHATTER, 5s);
|
||||
break;
|
||||
case EVENT_SECOND_REMORSELESS_WINTER:
|
||||
if (GameObject* platform = instance->GetGameObject(ArthasPlatformGUID))
|
||||
{
|
||||
platform->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED);
|
||||
Events.ScheduleEvent(EVENT_REBUILD_PLATFORM, 1500);
|
||||
Events.ScheduleEvent(EVENT_REBUILD_PLATFORM, 1500ms);
|
||||
}
|
||||
break;
|
||||
case EVENT_TELEPORT_TO_FROSMOURNE: // Harvest Soul (normal mode)
|
||||
|
||||
Reference in New Issue
Block a user