refactor(Scripts): Update vanilla scripts to std::chrono (#14876)

Co-authored-by: Maelthyrr <AmanThul-Project@proton.me>
Co-authored-by: Skjalf <47818697+Nyeriah@users.noreply.github.com>
This commit is contained in:
Maelthyr
2023-02-05 16:35:48 +01:00
committed by GitHub
parent b80470545d
commit afb071bb04
69 changed files with 822 additions and 831 deletions
@@ -118,11 +118,11 @@ public:
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, urand(7000, 9000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_GOUGE, urand(12000, 15000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_SUMMON_PROWLERS, 6000, 0, PHASE_ALL);
events.ScheduleEvent(EVENT_MARK_OF_ARLOKK, urand(9000, 11000), 0, PHASE_ALL);
events.ScheduleEvent(EVENT_TRANSFORM, 30000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 7s, 9s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_GOUGE, 12s, 15s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_SUMMON_PROWLERS, 6s, 0, PHASE_ALL);
events.ScheduleEvent(EVENT_MARK_OF_ARLOKK, 9s, 11s, 0, PHASE_ALL);
events.ScheduleEvent(EVENT_TRANSFORM, 30s, 0, PHASE_ONE);
Talk(SAY_AGGRO);
// Sets up list of Panther spawners to cast on
@@ -189,7 +189,7 @@ public:
{
case EVENT_SHADOW_WORD_PAIN:
DoCastVictim(SPELL_SHADOW_WORD_PAIN, true);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, urand(5000, 7000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 5s, 7s, 0, PHASE_ONE);
break;
case EVENT_GOUGE:
DoCastVictim(SPELL_GOUGE, true);
@@ -211,7 +211,7 @@ public:
++_summonCountB;
}
}
events.ScheduleEvent(EVENT_SUMMON_PROWLERS, 6000, 0, PHASE_ALL);
events.ScheduleEvent(EVENT_SUMMON_PROWLERS, 6s, 0, PHASE_ALL);
break;
case EVENT_MARK_OF_ARLOKK:
{
@@ -223,7 +223,7 @@ public:
DoCast(target, SPELL_MARK_OF_ARLOKK, true);
Talk(SAY_FEAST_PROWLER, target);
}
events.ScheduleEvent(EVENT_MARK_OF_ARLOKK, urand(120000, 130000));
events.ScheduleEvent(EVENT_MARK_OF_ARLOKK, 120s, 130s);
break;
}
case EVENT_TRANSFORM:
@@ -237,19 +237,19 @@ public:
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
DoCastSelf(SPELL_VANISH_VISUAL);
DoCastSelf(SPELL_VANISH);
events.ScheduleEvent(EVENT_VANISH, 1000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_VANISH, 1s, 0, PHASE_ONE);
break;
}
case EVENT_VANISH:
DoCastSelf(SPELL_SUPER_INVIS);
me->SetWalk(false);
me->GetMotionMaster()->MovePoint(0, frand(-11551.0f, -11508.0f), frand(-1638.0f, -1617.0f), me->GetPositionZ());
events.ScheduleEvent(EVENT_VANISH_2, 9000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_VANISH_2, 9s, 0, PHASE_ONE);
break;
case EVENT_VANISH_2:
DoCastSelf(SPELL_VANISH);
DoCastSelf(SPELL_SUPER_INVIS);
events.ScheduleEvent(EVENT_VISIBLE, urand(41000, 47000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_VISIBLE, 41s, 47s, 0, PHASE_ONE);
break;
case EVENT_VISIBLE:
me->SetReactState(REACT_AGGRESSIVE);
@@ -258,14 +258,14 @@ public:
AttackStart(target);
me->RemoveAura(SPELL_SUPER_INVIS);
me->RemoveAura(SPELL_VANISH);
events.ScheduleEvent(EVENT_RAVAGE, urand(10000, 14000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_TRANSFORM_BACK, urand(30000, 40000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_RAVAGE, 10s, 14s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_TRANSFORM_BACK, 30s, 40s, 0, PHASE_TWO);
events.SetPhase(PHASE_TWO);
me->HandleStatModifier(UNIT_MOD_DAMAGE_MAINHAND, TOTAL_PCT, 35.0f, true); // hack
break;
case EVENT_RAVAGE:
DoCastVictim(SPELL_RAVAGE, true);
events.ScheduleEvent(EVENT_RAVAGE, urand(10000, 14000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_RAVAGE, 10s, 14s, 0, PHASE_TWO);
break;
case EVENT_TRANSFORM_BACK:
{
@@ -274,9 +274,9 @@ public:
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_DAGGER));
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, uint32(WEAPON_DAGGER));
me->HandleStatModifier(UNIT_MOD_DAMAGE_MAINHAND, TOTAL_PCT, 35.0f, false); // hack
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, urand(4000, 7000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_GOUGE, urand(12000, 15000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_TRANSFORM, 30000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 4s, 7s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_GOUGE, 12s, 15s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_TRANSFORM, 30s, 0, PHASE_ONE);
events.SetPhase(PHASE_ONE);
break;
}
@@ -76,9 +76,9 @@ public:
{
_EnterCombat();
me->AddAura(SPELL_THRASH, me);
events.ScheduleEvent(EVENT_FROSTBREATH, 8000);
events.ScheduleEvent(EVENT_MASSIVEGEYSER, 25000);
events.ScheduleEvent(EVENT_SLAM, 15000);
events.ScheduleEvent(EVENT_FROSTBREATH, 8s);
events.ScheduleEvent(EVENT_MASSIVEGEYSER, 25s);
events.ScheduleEvent(EVENT_SLAM, 15s);
}
void UpdateAI(uint32 diff) override
@@ -97,15 +97,15 @@ public:
{
case EVENT_FROSTBREATH:
DoCastVictim(SPELL_FROSTBREATH);
events.ScheduleEvent(EVENT_FROSTBREATH, urand(8000, 20000));
events.ScheduleEvent(EVENT_FROSTBREATH, 8s, 20s);
break;
case EVENT_MASSIVEGEYSER:
DoCastVictim(SPELL_MASSIVEGEYSER);
events.ScheduleEvent(EVENT_MASSIVEGEYSER, urand(22000, 32000));
events.ScheduleEvent(EVENT_MASSIVEGEYSER, 22s, 32s);
break;
case EVENT_SLAM:
DoCastVictim(SPELL_SLAM, true);
events.ScheduleEvent(EVENT_SLAM, urand(12000, 20000));
events.ScheduleEvent(EVENT_SLAM, 12s, 20s);
break;
default:
break;
@@ -113,20 +113,20 @@ public:
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000);
events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, 25000);
events.ScheduleEvent(EVENT_CAUSE_INSANITY, 17000);
events.ScheduleEvent(EVENT_ENRAGE, 600000);
events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90s);
events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, 25s);
events.ScheduleEvent(EVENT_CAUSE_INSANITY, 17s);
events.ScheduleEvent(EVENT_ENRAGE, 1min);
if (instance->GetBossState(DATA_JEKLIK) != DONE)
events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 21000);
events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 21s);
if (instance->GetBossState(DATA_VENOXIS) != DONE)
events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 14000);
events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 14s);
if (instance->GetBossState(DATA_MARLI) != DONE)
events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 15000);
events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 15s);
if (instance->GetBossState(DATA_THEKAL) != DONE)
events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 10000);
events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 10s);
if (instance->GetBossState(DATA_ARLOKK) != DONE)
events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, 18000);
events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, 18s);
Talk(SAY_AGGRO);
}
@@ -153,11 +153,11 @@ public:
{
case EVENT_BLOOD_SIPHON:
DoCastAOE(SPELL_BLOOD_SIPHON, true);
events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000);
events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90s);
break;
case EVENT_CORRUPTED_BLOOD:
DoCastVictim(SPELL_CORRUPTED_BLOOD, true);
events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, urand(30000, 45000));
events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, 30s, 40s);
break;
case EVENT_CAUSE_INSANITY:
if (me->GetThreatMgr().GetThreatListSize() > 1)
@@ -167,20 +167,20 @@ public:
DoCast(victim, SPELL_CAUSE_INSANITY);
}
}
events.ScheduleEvent(EVENT_CAUSE_INSANITY, urand(35000, 45000));
events.ScheduleEvent(EVENT_CAUSE_INSANITY, 35s, 40s);
break;
case EVENT_ENRAGE:
if (!me->HasAura(SPELL_ENRAGE))
DoCastSelf(SPELL_ENRAGE);
events.ScheduleEvent(EVENT_ENRAGE, 90000);
events.ScheduleEvent(EVENT_ENRAGE, 90s);
break;
case EVENT_ASPECT_OF_JEKLIK:
DoCastVictim(SPELL_ASPECT_OF_JEKLIK, true);
events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 24000);
events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 24s);
break;
case EVENT_ASPECT_OF_VENOXIS:
DoCastVictim(SPELL_ASPECT_OF_VENOXIS, true);
events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, urand(16000, 18000));
events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 16s, 18s);
break;
case EVENT_ASPECT_OF_MARLI:
if (Unit* victim = SelectTarget(SelectTargetMethod::MaxThreat, 0, 5.f, true))
@@ -188,11 +188,11 @@ public:
DoCast(victim, SPELL_ASPECT_OF_MARLI, true);
me->GetThreatMgr().ModifyThreatByPercent(victim, -100.f);
}
events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 45000);
events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 45s);
break;
case EVENT_ASPECT_OF_THEKAL:
DoCastVictim(SPELL_ASPECT_OF_THEKAL, true);
events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 15000);
events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 15s);
break;
case EVENT_ASPECT_OF_ARLOKK:
if (Unit* victim = SelectTarget(SelectTargetMethod::MaxThreat, 0, 5.f, true))
@@ -200,7 +200,7 @@ public:
DoCast(victim, SPELL_ASPECT_OF_ARLOKK, true);
me->GetThreatMgr().ModifyThreatByPercent(victim, -100.f);
}
events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, urand(10000, 15000));
events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, 10s, 15s);
break;
default:
break;
@@ -151,12 +151,12 @@ struct boss_jeklik : public BossAI
SetCombatMovement(true);
me->SetReactState(REACT_AGGRESSIVE);
events.SetPhase(PHASE_ONE);
events.ScheduleEvent(EVENT_CHARGE_JEKLIK, urand(10000, 20000), PHASE_ONE);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, urand(5000, 15000), PHASE_ONE);
events.ScheduleEvent(EVENT_BLOOD_LEECH, urand(5000, 15000), PHASE_ONE);
events.ScheduleEvent(EVENT_SONIC_BURST, urand(5000, 15000), PHASE_ONE);
events.ScheduleEvent(EVENT_SWOOP, 20000, PHASE_ONE);
events.ScheduleEvent(EVENT_SPAWN_BATS, 30000, PHASE_ONE);
events.ScheduleEvent(EVENT_CHARGE_JEKLIK, 10s, 20s, PHASE_ONE);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, 5s, 15s, PHASE_ONE);
events.ScheduleEvent(EVENT_BLOOD_LEECH, 5s, 15s, PHASE_ONE);
events.ScheduleEvent(EVENT_SONIC_BURST, 5s, 15s, PHASE_ONE);
events.ScheduleEvent(EVENT_SWOOP, 20s, PHASE_ONE);
events.ScheduleEvent(EVENT_SPAWN_BATS, 30s, PHASE_ONE);
}
void DamageTaken(Unit* /*who*/, uint32& /*damage*/, DamageEffectType, SpellSchoolMask) override
@@ -168,12 +168,12 @@ struct boss_jeklik : public BossAI
events.SetPhase(PHASE_TWO);
events.CancelEventGroup(PHASE_ONE);
events.ScheduleEvent(EVENT_CURSE_OF_BLOOD, urand(5000, 15000), PHASE_TWO);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, urand(10000, 15000), PHASE_TWO);
events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, urand(25000, 35000), PHASE_TWO);
events.ScheduleEvent(EVENT_MIND_FLAY, urand(10000, 30000), PHASE_TWO);
events.ScheduleEvent(EVENT_GREATER_HEAL, 25000, PHASE_TWO);
events.ScheduleEvent(EVENT_SPAWN_FLYING_BATS, 10000, PHASE_TWO);
events.ScheduleEvent(EVENT_CURSE_OF_BLOOD, 5s, 15s, PHASE_TWO);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 10s, 15s, PHASE_TWO);
events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, 25s, 35s, PHASE_TWO);
events.ScheduleEvent(EVENT_MIND_FLAY, 10s, 30s, PHASE_TWO);
events.ScheduleEvent(EVENT_GREATER_HEAL, 25s, PHASE_TWO);
events.ScheduleEvent(EVENT_SPAWN_FLYING_BATS, 10s, PHASE_TWO);
return;
}
@@ -200,23 +200,23 @@ struct boss_jeklik : public BossAI
DoCast(target, SPELL_CHARGE);
AttackStart(target);
}
events.ScheduleEvent(EVENT_CHARGE_JEKLIK, urand(15000, 30000), PHASE_ONE);
events.ScheduleEvent(EVENT_CHARGE_JEKLIK, 15s, 30s, PHASE_ONE);
break;
case EVENT_PIERCE_ARMOR:
DoCastVictim(SPELL_PIERCE_ARMOR);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, urand(20000, 30000), PHASE_ONE);
events.ScheduleEvent(EVENT_PIERCE_ARMOR, 20s, 30s, PHASE_ONE);
break;
case EVENT_BLOOD_LEECH:
DoCastVictim(SPELL_BLOOD_LEECH);
events.ScheduleEvent(EVENT_BLOOD_LEECH, urand(10000, 20000), PHASE_ONE);
events.ScheduleEvent(EVENT_BLOOD_LEECH, 10s, 20s, PHASE_ONE);
break;
case EVENT_SONIC_BURST:
DoCastVictim(SPELL_SONIC_BURST);
events.ScheduleEvent(EVENT_SONIC_BURST, urand(20000, 30000), PHASE_ONE);
events.ScheduleEvent(EVENT_SONIC_BURST, 20s, 30s, PHASE_ONE);
break;
case EVENT_SWOOP:
DoCastVictim(SPELL_SWOOP);
events.ScheduleEvent(EVENT_SWOOP, urand(20000, 30000), PHASE_ONE);
events.ScheduleEvent(EVENT_SWOOP, 20s, 30s, PHASE_ONE);
break;
case EVENT_SPAWN_BATS:
Talk(EMOTE_SUMMON_BATS);
@@ -224,37 +224,37 @@ struct boss_jeklik : public BossAI
for (uint8 i = 0; i < 6; ++i)
if (Creature* bat = me->SummonCreature(NPC_BLOODSEEKER_BAT, SpawnBat[i], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
bat->AI()->AttackStart(target);
events.ScheduleEvent(EVENT_SPAWN_BATS, 30000, PHASE_ONE);
events.ScheduleEvent(EVENT_SPAWN_BATS, 30s, PHASE_ONE);
break;
//Phase two
case EVENT_CURSE_OF_BLOOD:
DoCastSelf(SPELL_CURSE_OF_BLOOD);
events.ScheduleEvent(EVENT_CURSE_OF_BLOOD, urand(25000, 30000), PHASE_TWO);
events.ScheduleEvent(EVENT_CURSE_OF_BLOOD, 25s, 30s, PHASE_TWO);
break;
case EVENT_PSYCHIC_SCREAM:
DoCastVictim(SPELL_PSYCHIC_SCREAM);
events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, urand(35000, 45000), PHASE_TWO);
events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, 35s, 45s, PHASE_TWO);
break;
case EVENT_SHADOW_WORD_PAIN:
DoCastRandomTarget(SPELL_SHADOW_WORD_PAIN, 0, true);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, urand(12000, 18000), PHASE_TWO);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 12s, 18s, PHASE_TWO);
break;
case EVENT_MIND_FLAY:
DoCastVictim(SPELL_MIND_FLAY);
events.ScheduleEvent(EVENT_MIND_FLAY, urand(20000, 40000), PHASE_TWO);
events.ScheduleEvent(EVENT_MIND_FLAY, 20s, 40s, PHASE_TWO);
break;
case EVENT_GREATER_HEAL:
Talk(EMOTE_GREAT_HEAL);
me->InterruptNonMeleeSpells(false);
DoCastSelf(SPELL_GREATER_HEAL);
events.ScheduleEvent(EVENT_GREATER_HEAL, 25000, PHASE_TWO);
events.ScheduleEvent(EVENT_GREATER_HEAL, 25s, PHASE_TWO);
break;
case EVENT_SPAWN_FLYING_BATS:
Talk(SAY_CALL_RIDERS);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
if (Creature* flyingBat = me->SummonCreature(NPC_FRENZIED_BAT, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + 15.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
flyingBat->AI()->DoZoneInCombat();
events.ScheduleEvent(EVENT_SPAWN_FLYING_BATS, urand(10000, 15000), PHASE_TWO);
events.ScheduleEvent(EVENT_SPAWN_FLYING_BATS, 10s, 15s, PHASE_TWO);
break;
default:
break;
@@ -61,11 +61,11 @@ struct boss_jindo : public BossAI
void EnterCombat(Unit* who) override
{
BossAI::EnterCombat(who);
events.ScheduleEvent(EVENT_BRAIN_WASH_TOTEM, 20000);
events.ScheduleEvent(EVENT_POWERFULL_HEALING_WARD, 16000);
events.ScheduleEvent(EVENT_HEX, 8000);
events.ScheduleEvent(EVENT_DELUSIONS_OF_JINDO, 10000);
events.ScheduleEvent(EVENT_TELEPORT, 5000);
events.ScheduleEvent(EVENT_BRAIN_WASH_TOTEM, 20s);
events.ScheduleEvent(EVENT_POWERFULL_HEALING_WARD, 16s);
events.ScheduleEvent(EVENT_HEX, 8s);
events.ScheduleEvent(EVENT_DELUSIONS_OF_JINDO, 10s);
events.ScheduleEvent(EVENT_TELEPORT, 5s);
Talk(SAY_AGGRO);
@@ -125,24 +125,24 @@ struct boss_jindo : public BossAI
{
case EVENT_BRAIN_WASH_TOTEM:
DoCastSelf(SPELL_BRAIN_WASH_TOTEM);
events.ScheduleEvent(EVENT_BRAIN_WASH_TOTEM, urand(18000, 26000));
events.ScheduleEvent(EVENT_BRAIN_WASH_TOTEM, 18s, 26s);
break;
case EVENT_POWERFULL_HEALING_WARD:
DoCastSelf(SPELL_POWERFULL_HEALING_WARD, true);
events.ScheduleEvent(EVENT_POWERFULL_HEALING_WARD, urand(14000, 20000));
events.ScheduleEvent(EVENT_POWERFULL_HEALING_WARD, 14s, 20s);
break;
case EVENT_HEX:
if (me->GetThreatMgr().GetThreatListSize() > 1)
DoCastVictim(SPELL_HEX, true);
events.ScheduleEvent(EVENT_HEX, urand(12000, 20000));
events.ScheduleEvent(EVENT_HEX, 12s, 20s);
break;
case EVENT_DELUSIONS_OF_JINDO:
DoCastRandomTarget(SPELL_DELUSIONS_OF_JINDO);
events.ScheduleEvent(EVENT_DELUSIONS_OF_JINDO, urand(4000, 12000));
events.ScheduleEvent(EVENT_DELUSIONS_OF_JINDO, 4s, 12s);
break;
case EVENT_TELEPORT:
DoCastRandomTarget(SPELL_BANISH);
events.ScheduleEvent(EVENT_TELEPORT, urand(15000, 23000));
events.ScheduleEvent(EVENT_TELEPORT, 15s, 23s);
break;
default:
break;
@@ -187,13 +187,13 @@ public:
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
events.ScheduleEvent(EVENT_OVERPOWER, 1000);
events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(14000, 28000));
events.ScheduleEvent(EVENT_WHIRLWIND, urand(24000, 30000));
events.ScheduleEvent(EVENT_CHECK_OHGAN, 1000);
events.ScheduleEvent(EVENT_WATCH_PLAYER, urand(12000, 24000));
events.ScheduleEvent(EVENT_CHARGE_PLAYER, urand(30000, 40000));
events.ScheduleEvent(EVENT_CLEAVE, 1000);
events.ScheduleEvent(EVENT_OVERPOWER, 1s);
events.ScheduleEvent(EVENT_MORTAL_STRIKE, 14s, 28s);
events.ScheduleEvent(EVENT_WHIRLWIND, 24s, 30s);
events.ScheduleEvent(EVENT_CHECK_OHGAN, 1s);
events.ScheduleEvent(EVENT_WATCH_PLAYER, 12s, 24s);
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 30s, 40s);
events.ScheduleEvent(EVENT_CLEAVE, 1s);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
Talk(SAY_AGGRO);
me->Dismount();
@@ -302,7 +302,7 @@ public:
if (!_useExecute)
{
_useExecute = true;
events.ScheduleEvent(EVENT_EXECUTE, 1000);
events.ScheduleEvent(EVENT_EXECUTE, 1s);
}
}
else if (_useExecute)
@@ -372,11 +372,11 @@ public:
if (instance->GetBossState(DATA_MANDOKIR) == SPECIAL)
{
me->GetMotionMaster()->MovePoint(0, PosMandokir[1].m_positionX, PosMandokir[1].m_positionY, PosMandokir[1].m_positionZ);
events.ScheduleEvent(EVENT_STARTED, 6000);
events.ScheduleEvent(EVENT_STARTED, 6s);
}
else
{
events.ScheduleEvent(EVENT_CHECK_START, 1000);
events.ScheduleEvent(EVENT_CHECK_START, 1s);
}
break;
case EVENT_STARTED:
@@ -408,20 +408,20 @@ public:
case EVENT_OVERPOWER:
if (DoCastVictim(SPELL_OVERPOWER) == SPELL_CAST_OK)
{
events.ScheduleEvent(EVENT_OVERPOWER, urand(6000, 8000));
events.ScheduleEvent(EVENT_OVERPOWER, 6s, 8s);
}
else
{
events.ScheduleEvent(EVENT_OVERPOWER, 1000);
events.ScheduleEvent(EVENT_OVERPOWER, 1s);
}
break;
case EVENT_MORTAL_STRIKE:
DoCastVictim(SPELL_MORTAL_STRIKE);
events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(14000, 28000));
events.ScheduleEvent(EVENT_MORTAL_STRIKE, 14s, 28s);
break;
case EVENT_WHIRLWIND:
DoCast(me, SPELL_WHIRLWIND);
events.ScheduleEvent(EVENT_WHIRLWIND, urand(22000, 26000));
events.ScheduleEvent(EVENT_WHIRLWIND, 22s, 26s);
break;
case EVENT_CHECK_OHGAN:
if (instance->GetBossState(DATA_OHGAN) == DONE)
@@ -431,7 +431,7 @@ public:
}
else
{
events.ScheduleEvent(EVENT_CHECK_OHGAN, 1000);
events.ScheduleEvent(EVENT_CHECK_OHGAN, 1s);
}
break;
case EVENT_WATCH_PLAYER:
@@ -441,7 +441,7 @@ public:
Talk(SAY_WATCH, player);
_chargeTarget = std::make_pair(player->GetGUID(), 0.f);
}
events.ScheduleEvent(EVENT_WATCH_PLAYER, urand(12000, 24000));
events.ScheduleEvent(EVENT_WATCH_PLAYER, 12s, 24s);
break;
case EVENT_CHARGE_PLAYER:
if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, [this](Unit const* target)
@@ -454,17 +454,17 @@ public:
}))
{
DoCast(target, SPELL_CHARGE);
events.DelayEvents(1500);
events.DelayEvents(1500ms);
if (Unit* mainTarget = SelectTarget(SelectTargetMethod::MaxThreat, 0, 100.0f))
{
me->GetThreatMgr().ModifyThreatByPercent(mainTarget, -100);
}
}
events.ScheduleEvent(EVENT_CHARGE_PLAYER, urand(30000, 40000));
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 30s, 40s);
break;
case EVENT_EXECUTE:
DoCastVictim(SPELL_EXECUTE, true);
events.ScheduleEvent(EVENT_EXECUTE, urand(7000, 14000));
events.ScheduleEvent(EVENT_EXECUTE, 7s, 14s);
break;
case EVENT_CLEAVE:
{
@@ -481,11 +481,11 @@ public:
if (meleeRangeTargets.size() >= 5)
{
DoCastVictim(SPELL_MANDOKIR_CLEAVE);
events.ScheduleEvent(EVENT_CLEAVE, urand(10000, 20000));
events.ScheduleEvent(EVENT_CLEAVE, 10s, 20s);
}
else
{
events.ScheduleEvent(EVENT_CLEAVE, 1000);
events.ScheduleEvent(EVENT_CLEAVE, 1s);
}
break;
}
@@ -125,7 +125,7 @@ struct boss_marli : public BossAI
void EnterCombat(Unit* who) override
{
BossAI::EnterCombat(who);
events.ScheduleEvent(EVENT_SPAWN_START_SPIDERS, 1000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_SPAWN_START_SPIDERS, 1s, 0, PHASE_ONE);
Talk(SAY_AGGRO);
}
@@ -144,14 +144,14 @@ struct boss_marli : public BossAI
switch (eventId)
{
case EVENT_SPAWN_START_SPIDERS:
events.ScheduleEvent(EVENT_TALK_FIRST_SPIDERS, 500, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_TALK_FIRST_SPIDERS, 500ms, 0, PHASE_TWO);
DoCastAOE(SPELL_HATCH_EGGS);
events.ScheduleEvent(EVENT_TRANSFORM, 60000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_HATCH_SPIDER_EGG, 30000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_DRAIN_LIFE, 30000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_THRASH, urand(4000, 6000)); // all phases
events.ScheduleEvent(EVENT_ENLARGE, urand(10000, 20000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_TRANSFORM, 1min, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_VOLLEY, 15s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_HATCH_SPIDER_EGG, 30s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_DRAIN_LIFE, 30s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_THRASH, 4s, 6s); // all phases
events.ScheduleEvent(EVENT_ENLARGE, 10s, 20s, 0, PHASE_TWO);
events.SetPhase(PHASE_TWO);
break;
case EVENT_TALK_FIRST_SPIDERS:
@@ -159,39 +159,39 @@ struct boss_marli : public BossAI
break;
case EVENT_POISON_VOLLEY:
DoCastVictim(SPELL_POISON_VOLLEY, true);
events.ScheduleEvent(EVENT_POISON_VOLLEY, urand(10000, 20000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_VOLLEY, 10s, 20s, 0, PHASE_TWO);
break;
case EVENT_HATCH_SPIDER_EGG:
DoCastSelf(SPELL_HATCH_SPIDER_EGG, true);
events.ScheduleEvent(EVENT_HATCH_SPIDER_EGG, 20000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_HATCH_SPIDER_EGG, 20s, 0, PHASE_TWO);
break;
case EVENT_DRAIN_LIFE:
DoCastRandomTarget(SPELL_DRAIN_LIFE);
events.ScheduleEvent(EVENT_DRAIN_LIFE, urand(20000, 50000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_DRAIN_LIFE, 20s, 50s, 0, PHASE_TWO);
break;
case EVENT_ENLARGE:
{
std::list<Creature*> targets = DoFindFriendlyMissingBuff(100.f, SPELL_ENLARGE);
if (targets.size() > 0)
DoCast(*(targets.begin()), SPELL_ENLARGE);
events.ScheduleEvent(EVENT_ENLARGE, urand(20000, 40000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_ENLARGE, 20s, 40s, 0, PHASE_TWO);
break;
}
case EVENT_TRANSFORM:
Talk(SAY_TRANSFORM);
DoCastSelf(SPELL_SPIDER_FORM, true);
me->HandleStatModifier(UNIT_MOD_DAMAGE_MAINHAND, TOTAL_PCT, 35.0f, true); // hack
events.ScheduleEvent(EVENT_ENVELOPING_WEB, 5000, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 6000, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_CORROSIVE_POISON, 1000, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_POISON_SHOCK, urand(5000, 10000), 0, PHASE_THREE);
events.ScheduleEvent(EVENT_TRANSFORM_BACK, 60000, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_ENVELOPING_WEB, 5s, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 6s, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_CORROSIVE_POISON, 1s, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_POISON_SHOCK, 5s, 10s, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_TRANSFORM_BACK, 1min, 0, PHASE_THREE);
events.SetPhase(PHASE_THREE);
break;
case EVENT_ENVELOPING_WEB:
DoCastAOE(SPELL_ENVELOPING_WEB);
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 500, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_ENVELOPING_WEB, urand(15000, 20000), 0, PHASE_THREE);
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 500ms, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_ENVELOPING_WEB, 15s, 20s, 0, PHASE_THREE);
break;
case EVENT_CHARGE_PLAYER:
{
@@ -212,27 +212,27 @@ struct boss_marli : public BossAI
}
case EVENT_CORROSIVE_POISON:
DoCastVictim(SPELL_CORROSIVE_POISON);
events.ScheduleEvent(EVENT_CORROSIVE_POISON, urand(25000, 35000), 0, PHASE_THREE);
events.ScheduleEvent(EVENT_CORROSIVE_POISON, 25s, 35s, 0, PHASE_THREE);
break;
case EVENT_POISON_SHOCK:
DoCastRandomTarget(SPELL_POISON_SHOCK);
events.ScheduleEvent(EVENT_POISON_SHOCK, 10000, 0, PHASE_THREE);
events.ScheduleEvent(EVENT_POISON_SHOCK, 10s, 0, PHASE_THREE);
break;
case EVENT_TRANSFORM_BACK:
me->RemoveAura(SPELL_SPIDER_FORM);
DoCastSelf(SPELL_TRANSFORM_BACK, true);
Talk(SAY_TRANSFORM_BACK);
me->HandleStatModifier(UNIT_MOD_DAMAGE_MAINHAND, TOTAL_PCT, 35.0f, false); // hack
events.ScheduleEvent(EVENT_TRANSFORM, 60000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_HATCH_SPIDER_EGG, 30000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_DRAIN_LIFE, 30000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_ENLARGE, urand(10000, 20000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_TRANSFORM, 1min, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_VOLLEY, 15s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_HATCH_SPIDER_EGG, 30s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_DRAIN_LIFE, 30s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_ENLARGE, 10s, 20s, 0, PHASE_TWO);
events.SetPhase(PHASE_TWO);
break;
case EVENT_THRASH:
DoCastVictim(SPELL_THRASH);
events.ScheduleEvent(EVENT_THRASH, urand(10000, 20000));
events.ScheduleEvent(EVENT_THRASH, 10s, 20s);
break;
default:
break;
@@ -143,13 +143,13 @@ public:
_EnterCombat();
me->SetReactState(REACT_AGGRESSIVE);
// Always running events
events.ScheduleEvent(EVENT_THRASH, 5000);
events.ScheduleEvent(EVENT_THRASH, 5s);
// Phase one events (regular form)
events.ScheduleEvent(EVENT_HOLY_NOVA, urand(5000, 15000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_DISPEL_MAGIC, 35000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_FIRE, urand(10000,20000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_RENEW, 30000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_WRATH, urand(15000, 25000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_NOVA, 5s, 15s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_DISPEL_MAGIC, 35s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_FIRE, 10s, 20s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_RENEW, 30s, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_WRATH, 15s, 25s, 0, PHASE_ONE);
events.SetPhase(PHASE_ONE);
@@ -165,13 +165,13 @@ public:
{
_transformed = true;
// schedule the event that changes our phase
events.ScheduleEvent(EVENT_TRANSFORM, 100);
events.ScheduleEvent(EVENT_TRANSFORM, 100ms);
}
// we're losing health, bad, go frenzy
else if (!_frenzied && !HealthAbovePct(20))
{
_frenzied = true;
events.ScheduleEvent(EVENT_FRENZY, 100);
events.ScheduleEvent(EVENT_FRENZY, 100ms);
}
}
@@ -193,31 +193,31 @@ public:
// thrash is available in all phases
case EVENT_THRASH:
DoCast(me, SPELL_THRASH, true);
events.ScheduleEvent(EVENT_THRASH, urand(10000, 20000));
events.ScheduleEvent(EVENT_THRASH, 10s, 20s);
break;
// troll form spells and Actions (first part)
case EVENT_DISPEL_MAGIC:
DoCast(me, SPELL_DISPEL_MAGIC);
events.ScheduleEvent(EVENT_DISPEL_MAGIC, urand(15000, 20000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_DISPEL_MAGIC, 15s, 20s, 0, PHASE_ONE);
break;
case EVENT_RENEW:
DoCast(me, SPELL_RENEW);
events.ScheduleEvent(EVENT_RENEW, urand(25000, 30000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_RENEW, 25s, 30s, 0, PHASE_ONE);
break;
case EVENT_HOLY_WRATH:
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat))
DoCast(target, SPELL_HOLY_WRATH);
events.ScheduleEvent(EVENT_HOLY_WRATH, urand(12000, 22000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_WRATH, 12s, 22s, 0, PHASE_ONE);
break;
case EVENT_HOLY_FIRE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_HOLY_FIRE);
events.ScheduleEvent(EVENT_HOLY_FIRE, urand(10000, 24000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_FIRE, 10s, 24s, 0, PHASE_ONE);
break;
case EVENT_HOLY_NOVA:
DoCastSelf(SPELL_HOLY_NOVA);
events.ScheduleEvent(EVENT_HOLY_NOVA, urand(10000, 24000), 0, PHASE_ONE);
events.ScheduleEvent(EVENT_HOLY_NOVA, 10s, 24s, 0, PHASE_ONE);
break;
//
@@ -227,17 +227,17 @@ public:
case EVENT_VENOM_SPIT:
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_VENOM_SPIT);
events.ScheduleEvent(EVENT_VENOM_SPIT, urand(5000, 15000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_VENOM_SPIT, 5s, 15s, 0, PHASE_TWO);
break;
case EVENT_POISON_CLOUD:
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_POISON_CLOUD);
events.ScheduleEvent(EVENT_POISON_CLOUD, urand(15000, 20000), 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_CLOUD, 15s, 20s, 0, PHASE_TWO);
break;
case EVENT_PARASITIC_SERPENT:
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_SUMMON_PARASITIC_SERPENT);
events.ScheduleEvent(EVENT_PARASITIC_SERPENT, 15000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_PARASITIC_SERPENT, 15s, 0, PHASE_TWO);
break;
case EVENT_FRENZY:
// frenzy at 20% health
@@ -255,9 +255,9 @@ public:
DoResetThreatList();
// phase two events (snakeform)
events.ScheduleEvent(EVENT_VENOM_SPIT, 5000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_CLOUD, 10000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_PARASITIC_SERPENT, 30000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_VENOM_SPIT, 5s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_POISON_CLOUD, 10s, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_PARASITIC_SERPENT, 30s, 0, PHASE_TWO);
// transformed, start phase two
events.SetPhase(PHASE_TWO);
@@ -301,7 +301,7 @@ public:
void EnterCombat(Unit*)
{
events.ScheduleEvent(EVENT_POISON, 8 * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_POISON, 8ms);
if (Creature* Venoxis = GetVenoxis())
{
@@ -331,7 +331,7 @@ public:
case EVENT_POISON:
{
me->CastSpell(me->GetVictim(), SPELL_POISON);
events.ScheduleEvent(EVENT_POISON, 15 * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_POISON, 15ms);
break;
}
}