refactor(Core/EventMap): Refactor EventMap and related scripts (#23121)

Co-authored-by: Kelno <3866946+kelno@users.noreply.github.com>
Co-authored-by: Peter Keresztes Schmidt <carbenium@outlook.com>
This commit is contained in:
天鹭
2025-10-13 09:19:24 +08:00
committed by GitHub
parent 8e1426c06a
commit 9c49349e1e
168 changed files with 1468 additions and 1593 deletions

View File

@@ -213,7 +213,7 @@ public:
ScriptedAI::EnterEvadeMode();
return;
}
events.ScheduleEvent(EVENT_CHECK_RESET, 5000);
events.ScheduleEvent(EVENT_CHECK_RESET, 5s);
break;
}
}

View File

@@ -27,12 +27,13 @@
enum IronhandData
{
IRONHAND_FLAMES_TIMER = 16000,
IRONHAND_FLAMES_TIMER_RAND = 3000,
IRONHAND_N_GROUPS = 3,
SPELL_GOUT_OF_FLAMES = 15529
};
constexpr Milliseconds IRONHAND_FLAMES_TIMER = 16s;
constexpr Milliseconds IRONHAND_FLAMES_TIMER_RAND = 3s;
class go_shadowforge_brazier : public GameObjectScript
{
public:
@@ -110,7 +111,7 @@ public:
{
case SPELL_GOUT_OF_FLAMES:
DoCast(SPELL_GOUT_OF_FLAMES);
events.RescheduleEvent(SPELL_GOUT_OF_FLAMES, urand(IRONHAND_FLAMES_TIMER - IRONHAND_FLAMES_TIMER_RAND, IRONHAND_FLAMES_TIMER + IRONHAND_FLAMES_TIMER_RAND));
events.RescheduleEvent(SPELL_GOUT_OF_FLAMES, IRONHAND_FLAMES_TIMER - IRONHAND_FLAMES_TIMER_RAND, IRONHAND_FLAMES_TIMER + IRONHAND_FLAMES_TIMER_RAND);
break;
default:
break;

View File

@@ -28,14 +28,11 @@ enum Spells
SPELL_ENVELOPING_WEB = 15471
};
enum Timers
{
TIMER_SHADOWBOLT = 7000,
TIMER_CURSE_TONGUES = 24000,
TIMER_CURSE_WEAKNESS = 12000,
TIMER_DEMON_ARMOR = 3000, // virtually only cast once
TIMER_ENVELOPING_WEB = 16000
};
constexpr Milliseconds TIMER_SHADOWBOLT = 7s;
constexpr Milliseconds TIMER_CURSE_TONGUES = 24s;
constexpr Milliseconds TIMER_CURSE_WEAKNESS = 12s;
constexpr Milliseconds TIMER_DEMON_ARMOR = 3s; //virtually only cast once
constexpr Milliseconds TIMER_ENVELOPING_WEB = 16s;
class boss_anubshiah : public CreatureScript
{
@@ -54,11 +51,11 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.ScheduleEvent(SPELL_SHADOWBOLT, 0.2 * (int)TIMER_SHADOWBOLT);
events.ScheduleEvent(SPELL_CURSE_TONGUES, 0.2 * (int)TIMER_CURSE_TONGUES);
events.ScheduleEvent(SPELL_CURSE_WEAKNESS, 0.2 * (int)TIMER_CURSE_WEAKNESS);
events.ScheduleEvent(SPELL_DEMON_ARMOR, 0.2 * (int)TIMER_DEMON_ARMOR);
events.ScheduleEvent(SPELL_ENVELOPING_WEB, 0.2 * (int)TIMER_ENVELOPING_WEB);
events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT / 5);
events.ScheduleEvent(SPELL_CURSE_TONGUES, TIMER_CURSE_TONGUES / 5);
events.ScheduleEvent(SPELL_CURSE_WEAKNESS, TIMER_CURSE_WEAKNESS / 5);
events.ScheduleEvent(SPELL_DEMON_ARMOR, TIMER_DEMON_ARMOR / 5);
events.ScheduleEvent(SPELL_ENVELOPING_WEB, TIMER_ENVELOPING_WEB / 5);
}
void UpdateAI(uint32 diff) override
@@ -80,21 +77,21 @@ public:
{
case SPELL_SHADOWBOLT:
DoCastVictim(SPELL_SHADOWBOLT);
events.ScheduleEvent(SPELL_SHADOWBOLT, urand(TIMER_SHADOWBOLT - 2000, TIMER_SHADOWBOLT + 2000));
events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT - 2s, TIMER_SHADOWBOLT + 2s);
break;
case SPELL_CURSE_TONGUES:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
DoCast(target, SPELL_CURSE_TONGUES);
}
events.ScheduleEvent(SPELL_CURSE_TONGUES, urand(TIMER_CURSE_TONGUES - 2000, TIMER_CURSE_TONGUES + 2000));
events.ScheduleEvent(SPELL_CURSE_TONGUES, TIMER_CURSE_TONGUES - 2s, TIMER_CURSE_TONGUES + 2s);
break;
case SPELL_CURSE_WEAKNESS:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
DoCast(target, SPELL_CURSE_WEAKNESS);
}
events.ScheduleEvent(SPELL_CURSE_WEAKNESS, urand(TIMER_CURSE_WEAKNESS - 2000, TIMER_CURSE_WEAKNESS + 2000));
events.ScheduleEvent(SPELL_CURSE_WEAKNESS, TIMER_CURSE_WEAKNESS - 2s, TIMER_CURSE_WEAKNESS + 2s);
break;
case SPELL_DEMON_ARMOR:
DoCast(me, SPELL_DEMON_ARMOR);
@@ -103,7 +100,7 @@ public:
case SPELL_ENVELOPING_WEB:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
DoCast(target, SPELL_ENVELOPING_WEB);
events.ScheduleEvent(SPELL_ENVELOPING_WEB, urand(TIMER_ENVELOPING_WEB - 2000, TIMER_ENVELOPING_WEB + 2000));
events.ScheduleEvent(SPELL_ENVELOPING_WEB, TIMER_ENVELOPING_WEB - 2s, TIMER_ENVELOPING_WEB + 2s);
break;
default:
break;

View File

@@ -26,12 +26,9 @@ enum Spells
SPELL_SHIELD = 7121
};
enum Timers
{
TIMER_SHADOWBOLT_VOLLEY = 7000,
TIMER_REND = 20000,
TIMER_SHIELD = 12000
};
constexpr Milliseconds TIMER_SHADOWBOLT_VOLLEY = 7s;
constexpr Milliseconds TIMER_REND = 20s;
constexpr Milliseconds TIMER_SHIELD = 12s;
class boss_eviscerator : public CreatureScript
{
@@ -52,9 +49,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, 0.2 * (int)TIMER_SHADOWBOLT_VOLLEY);
events.ScheduleEvent(SPELL_REND, 0.2 * (int) TIMER_REND);
events.ScheduleEvent(SPELL_SHIELD, 0.2 * (int) TIMER_SHIELD);
events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, TIMER_SHADOWBOLT_VOLLEY / 5);
events.ScheduleEvent(SPELL_REND, TIMER_REND / 5);
events.ScheduleEvent(SPELL_SHIELD, TIMER_SHIELD / 5);
}
void DamageTaken(Unit* /* doneBy */, uint32& /* damage */, DamageEffectType /* damagetype */, SpellSchoolMask damageSchoolMask) override
@@ -86,11 +83,11 @@ public:
{
case SPELL_SHADOWBOLT_VOLLEY:
DoCastVictim(SPELL_SHADOWBOLT_VOLLEY);
events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, urand(TIMER_SHADOWBOLT_VOLLEY - 2000, TIMER_SHADOWBOLT_VOLLEY + 2000));
events.ScheduleEvent(SPELL_SHADOWBOLT_VOLLEY, TIMER_SHADOWBOLT_VOLLEY - 2s, TIMER_SHADOWBOLT_VOLLEY + 2s);
break;
case SPELL_REND:
DoCastVictim(SPELL_REND);
events.ScheduleEvent(SPELL_REND, urand(TIMER_REND - 2000, TIMER_REND + 2000));
events.ScheduleEvent(SPELL_REND, TIMER_REND - 2s, TIMER_REND + 2s);
break;
case SPELL_SHIELD:
SpellShieldReady = true;

View File

@@ -26,12 +26,9 @@ enum Spells
SPELL_BLOODLUST = 21049
};
enum Timers
{
TIMER_WHIRLWIND = 12000,
TIMER_MORTAL = 22000,
TIMER_BLOODLUST = 30000
};
constexpr Milliseconds TIMER_WHIRLWIND = 12s;
constexpr Milliseconds TIMER_MORTAL = 22s;
constexpr Milliseconds TIMER_BLOODLUST = 30s;
class boss_gorosh_the_dervish : public CreatureScript
{
@@ -47,14 +44,14 @@ public:
{
boss_gorosh_the_dervishAI(Creature* creature) : BossAI(creature, DATA_GOROSH) { }
uint32 nextWhirlwindTime;
Milliseconds nextWhirlwindTime;
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.ScheduleEvent(SPELL_WHIRLWIND, 0.2 * (int) TIMER_WHIRLWIND);
events.ScheduleEvent(SPELL_MORTALSTRIKE, 0.2 * (int) TIMER_MORTAL);
events.ScheduleEvent(SPELL_BLOODLUST, 0.2 * (int) TIMER_BLOODLUST);
events.ScheduleEvent(SPELL_WHIRLWIND, TIMER_WHIRLWIND / 5);
events.ScheduleEvent(SPELL_MORTALSTRIKE, TIMER_MORTAL / 5);
events.ScheduleEvent(SPELL_BLOODLUST, TIMER_BLOODLUST / 5);
}
void UpdateAI(uint32 diff) override
@@ -78,22 +75,22 @@ public:
if (me->GetDistance2d(me->GetVictim()) < 10.0f)
{
DoCastVictim(SPELL_WHIRLWIND);
nextWhirlwindTime = urand(TIMER_WHIRLWIND - 2000, TIMER_WHIRLWIND + 2000);
nextWhirlwindTime = randtime(TIMER_WHIRLWIND - 2s, TIMER_WHIRLWIND + 2s);
}
else
{
// reschedule sooner
nextWhirlwindTime = 0.3 * urand(TIMER_WHIRLWIND - 2000, TIMER_WHIRLWIND + 2000);
nextWhirlwindTime = randtime(TIMER_WHIRLWIND - 2s, TIMER_WHIRLWIND + 2s) / 3;
}
events.ScheduleEvent(SPELL_WHIRLWIND, nextWhirlwindTime);
break;
case SPELL_MORTALSTRIKE:
DoCastVictim(SPELL_MORTALSTRIKE);
events.ScheduleEvent(SPELL_MORTALSTRIKE, urand(TIMER_MORTAL - 2000, TIMER_MORTAL + 2000));
events.ScheduleEvent(SPELL_MORTALSTRIKE, TIMER_MORTAL - 2s, TIMER_MORTAL + 2s);
break;
case SPELL_BLOODLUST:
DoCastSelf(SPELL_BLOODLUST);
events.ScheduleEvent(SPELL_BLOODLUST, urand(TIMER_BLOODLUST - 2000, TIMER_BLOODLUST + 2000));
events.ScheduleEvent(SPELL_BLOODLUST, TIMER_BLOODLUST - 2s, TIMER_BLOODLUST + 2s);
break;
default:
break;

View File

@@ -26,11 +26,8 @@ enum Grizzle
EMOTE_FRENZY_KILL = 0
};
enum Timer
{
TIMER_GROUNDTREMOR = 10000,
TIMER_FRENZY = 15000
};
constexpr Milliseconds TIMER_GROUNDTREMOR = 10s;
constexpr Milliseconds TIMER_FRENZY = 15s;
class boss_grizzle : public CreatureScript
{
@@ -46,13 +43,13 @@ public:
{
boss_grizzleAI(Creature* creature) : BossAI(creature, DATA_GRIZZLE) {}
uint32 nextTremorTime;
Milliseconds nextTremorTime;
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.ScheduleEvent(SPELL_GROUNDTREMOR, 0.2 * (int) TIMER_GROUNDTREMOR);
events.ScheduleEvent(SPELL_FRENZY, 0.2 * (int) TIMER_FRENZY);
events.ScheduleEvent(SPELL_GROUNDTREMOR, TIMER_GROUNDTREMOR / 5);
events.ScheduleEvent(SPELL_FRENZY, TIMER_FRENZY / 5);
}
void UpdateAI(uint32 diff) override
@@ -77,17 +74,17 @@ public:
if (me->GetDistance2d(me->GetVictim()) < 10.0f)
{
DoCastVictim(SPELL_GROUNDTREMOR);
nextTremorTime = urand(TIMER_GROUNDTREMOR - 2000, TIMER_GROUNDTREMOR + 2000);
nextTremorTime = randtime(TIMER_GROUNDTREMOR - 2s, TIMER_GROUNDTREMOR + 2s);
}
else
{
nextTremorTime = 0.3*urand(TIMER_GROUNDTREMOR - 2000, TIMER_GROUNDTREMOR + 2000);
nextTremorTime = randtime(TIMER_GROUNDTREMOR - 2s, TIMER_GROUNDTREMOR + 2s) / 3;
}
events.ScheduleEvent(SPELL_GROUNDTREMOR, nextTremorTime);
break;
case SPELL_FRENZY:
DoCastSelf(SPELL_FRENZY);
events.ScheduleEvent(SPELL_FRENZY, urand(TIMER_FRENZY - 2000, TIMER_FRENZY + 2000));
events.ScheduleEvent(SPELL_FRENZY, TIMER_FRENZY - 2s, TIMER_FRENZY + 2s);
Talk(EMOTE_FRENZY_KILL);
break;
default:

View File

@@ -26,12 +26,9 @@ enum Spells
SPELL_WEB_EXPLOSION = 15474
};
enum Timers
{
TIMER_PARALYZING = 20000,
TIMER_BANEFUL = 24000,
TIMER_WEB_EXPLOSION = 20000
};
constexpr Milliseconds TIMER_PARALYZING = 20s;
constexpr Milliseconds TIMER_BANEFUL = 24s;
constexpr Milliseconds TIMER_WEB_EXPLOSION = 20s;
class boss_hedrum : public CreatureScript
{
@@ -50,9 +47,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.ScheduleEvent(SPELL_PARALYZING, 0.2 * (int) TIMER_PARALYZING);
events.ScheduleEvent(SPELL_BANEFUL, 0.2 * (int) TIMER_BANEFUL);
events.ScheduleEvent(SPELL_WEB_EXPLOSION, 0.2 * (int) TIMER_WEB_EXPLOSION);
events.ScheduleEvent(SPELL_PARALYZING, TIMER_PARALYZING / 5);
events.ScheduleEvent(SPELL_BANEFUL, TIMER_BANEFUL / 5);
events.ScheduleEvent(SPELL_WEB_EXPLOSION, TIMER_WEB_EXPLOSION / 5);
}
void UpdateAI(uint32 diff) override
@@ -74,18 +71,18 @@ public:
{
case SPELL_PARALYZING:
DoCastVictim(SPELL_PARALYZING);
events.ScheduleEvent(SPELL_PARALYZING, urand(TIMER_PARALYZING - 2000, TIMER_PARALYZING + 2000));
events.ScheduleEvent(SPELL_PARALYZING, TIMER_PARALYZING - 2s, TIMER_PARALYZING + 2s);
break;
case SPELL_BANEFUL:
DoCastVictim(SPELL_BANEFUL);
events.ScheduleEvent(SPELL_BANEFUL, urand(TIMER_BANEFUL - 2000, TIMER_BANEFUL + 2000));
events.ScheduleEvent(SPELL_BANEFUL, TIMER_BANEFUL - 2s, TIMER_BANEFUL + 2s);
break;
case SPELL_WEB_EXPLOSION:
if (me->GetDistance2d(me->GetVictim()) < 100.0f)
{
DoCast(SPELL_WEB_EXPLOSION);
}
events.ScheduleEvent(SPELL_WEB_EXPLOSION, urand(TIMER_WEB_EXPLOSION - 2000, TIMER_WEB_EXPLOSION + 2000));
events.ScheduleEvent(SPELL_WEB_EXPLOSION, TIMER_WEB_EXPLOSION - 2s, TIMER_WEB_EXPLOSION + 2s);
break;
default:
break;

View File

@@ -28,14 +28,11 @@ enum Spells
SPELL_WORDPAIN = 15654,
};
enum SpellTimers
{
TIMER_HEAL = 12000,
TIMER_MINDBLAST = 16000,
TIMER_RENEW = 12000,
TIMER_SHADOWBOLT = 16000,
TIMER_WORDPAIN = 12000,
};
constexpr Milliseconds TIMER_HEAL = 12s;
constexpr Milliseconds TIMER_MINDBLAST = 16s;
constexpr Milliseconds TIMER_RENEW = 12s;
constexpr Milliseconds TIMER_SHADOWBOLT = 16s;
constexpr Milliseconds TIMER_WORDPAIN = 12s;
struct boss_moira_bronzebeardAI : public BossAI
{
@@ -44,9 +41,9 @@ struct boss_moira_bronzebeardAI : public BossAI
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.ScheduleEvent(SPELL_MINDBLAST, 0.5 * (int) TIMER_MINDBLAST);
events.ScheduleEvent(SPELL_HEAL, 0.5 * (int) TIMER_HEAL);
events.ScheduleEvent(SPELL_RENEW, 0.5 * (int) TIMER_RENEW);
events.ScheduleEvent(SPELL_MINDBLAST, TIMER_MINDBLAST / 2);
events.ScheduleEvent(SPELL_HEAL, TIMER_HEAL / 2);
events.ScheduleEvent(SPELL_RENEW, TIMER_RENEW / 2);
}
void UpdateAI(uint32 diff) override
@@ -67,7 +64,7 @@ struct boss_moira_bronzebeardAI : public BossAI
{
case SPELL_MINDBLAST:
DoCastVictim(SPELL_MINDBLAST);
events.ScheduleEvent(SPELL_MINDBLAST, urand(TIMER_MINDBLAST - 2000, TIMER_MINDBLAST + 2000));
events.ScheduleEvent(SPELL_MINDBLAST, TIMER_MINDBLAST - 2s, TIMER_MINDBLAST + 2s);
break;
case SPELL_HEAL:
CastOnEmperorIfPossible(SPELL_HEAL, TIMER_HEAL);
@@ -82,7 +79,7 @@ struct boss_moira_bronzebeardAI : public BossAI
DoMeleeAttackIfReady();
}
void CastOnEmperorIfPossible(uint32 spell, uint32 timer)
void CastOnEmperorIfPossible(uint32 spell, Milliseconds timer)
{
Creature* emperor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EMPEROR));
if (emperor && emperor->HealthBelowPct(90))
@@ -93,7 +90,7 @@ struct boss_moira_bronzebeardAI : public BossAI
{
DoCastSelf(spell);
}
events.ScheduleEvent(spell, urand(timer - 2000, timer + 2000));
events.ScheduleEvent(spell, timer - 2s, timer + 2s);
}
};
@@ -107,10 +104,10 @@ struct boss_high_priestess_thaurissanAI : public boss_moira_bronzebeardAI
{
_JustEngagedWith();
Talk(0);
events.ScheduleEvent(SPELL_WORDPAIN, 0.5 * (int)TIMER_WORDPAIN);
events.ScheduleEvent(SPELL_HEAL, 0.5 * (int) TIMER_HEAL);
events.ScheduleEvent(SPELL_RENEW, 0.5 * (int) TIMER_RENEW);
events.ScheduleEvent(SPELL_SHADOWBOLT, 0.5 * (int) TIMER_SHADOWBOLT);
events.ScheduleEvent(SPELL_WORDPAIN, TIMER_WORDPAIN / 2);
events.ScheduleEvent(SPELL_HEAL, TIMER_HEAL / 2);
events.ScheduleEvent(SPELL_RENEW, TIMER_RENEW / 2);
events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT / 2);
}
void UpdateAI(uint32 diff) override
@@ -131,7 +128,7 @@ struct boss_high_priestess_thaurissanAI : public boss_moira_bronzebeardAI
{
case SPELL_WORDPAIN:
DoCastVictim(SPELL_WORDPAIN);
events.ScheduleEvent(SPELL_WORDPAIN, urand(TIMER_WORDPAIN - 2000, TIMER_WORDPAIN + 2000));
events.ScheduleEvent(SPELL_WORDPAIN, TIMER_WORDPAIN - 2s, TIMER_WORDPAIN + 2s);
break;
case SPELL_HEAL:
CastOnEmperorIfPossible(SPELL_HEAL, TIMER_HEAL);
@@ -141,7 +138,7 @@ struct boss_high_priestess_thaurissanAI : public boss_moira_bronzebeardAI
break;
case SPELL_SHADOWBOLT:
DoCastVictim(SPELL_SHADOWBOLT);
events.ScheduleEvent(SPELL_SHADOWBOLT, urand(TIMER_SHADOWBOLT - 2000, TIMER_SHADOWBOLT + 2000));
events.ScheduleEvent(SPELL_SHADOWBOLT, TIMER_SHADOWBOLT - 2s, TIMER_SHADOWBOLT + 2s);
break;
default:
break;

View File

@@ -27,13 +27,10 @@ enum Spells
SPELL_SLOW = 19137
};
enum Timers
{
TIMER_ARCANE_BOLT = 7000,
TIMER_ARCANE_EXPLOSION = 24000,
TIMER_POLYMORPH = 12000,
TIMER_SLOW = 15000
};
constexpr Milliseconds TIMER_ARCANE_BOLT = 7s;
constexpr Milliseconds TIMER_ARCANE_EXPLOSION = 24s;
constexpr Milliseconds TIMER_POLYMORPH = 12s;
constexpr Milliseconds TIMER_SLOW = 15s;
class boss_okthor : public CreatureScript
{
@@ -49,15 +46,15 @@ public:
{
boss_okthorAI(Creature* creature) : BossAI(creature, DATA_OKTHOR) {}
uint32 nextArcaneExplosionTime;
Milliseconds nextArcaneExplosionTime;
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.ScheduleEvent(SPELL_ARCANE_BOLT, 0.2 * (int) TIMER_ARCANE_BOLT);
events.ScheduleEvent(SPELL_ARCANE_EXPLOSION, 0.2 * (int) TIMER_ARCANE_EXPLOSION);
events.ScheduleEvent(SPELL_POLYMORPH, 0.2 * (int) TIMER_POLYMORPH);
events.ScheduleEvent(SPELL_SLOW, 500);
events.ScheduleEvent(SPELL_ARCANE_BOLT, TIMER_ARCANE_BOLT / 5);
events.ScheduleEvent(SPELL_ARCANE_EXPLOSION, TIMER_ARCANE_EXPLOSION / 5);
events.ScheduleEvent(SPELL_POLYMORPH, TIMER_POLYMORPH / 5);
events.ScheduleEvent(SPELL_SLOW, 500ms);
}
void UpdateAI(uint32 diff) override
@@ -82,17 +79,17 @@ public:
{
DoCast(target, SPELL_ARCANE_BOLT);
}
events.ScheduleEvent(SPELL_ARCANE_BOLT, urand(TIMER_ARCANE_BOLT - 2000, TIMER_ARCANE_BOLT + 2000));
events.ScheduleEvent(SPELL_ARCANE_BOLT, TIMER_ARCANE_BOLT - 2s, TIMER_ARCANE_BOLT + 2s);
break;
case SPELL_ARCANE_EXPLOSION:
if (me->GetDistance2d(me->GetVictim()) < 50.0f)
{
DoCast(SPELL_ARCANE_EXPLOSION);
nextArcaneExplosionTime = urand(TIMER_ARCANE_EXPLOSION - 2000, TIMER_ARCANE_EXPLOSION + 2000);
nextArcaneExplosionTime = randtime(TIMER_ARCANE_EXPLOSION - 2s, TIMER_ARCANE_EXPLOSION + 2s);
}
else
{
nextArcaneExplosionTime = 0.3*urand(TIMER_ARCANE_EXPLOSION - 2000, TIMER_ARCANE_EXPLOSION + 2000);
nextArcaneExplosionTime = randtime(TIMER_ARCANE_EXPLOSION - 2s, TIMER_ARCANE_EXPLOSION + 2s) / 3;
}
events.ScheduleEvent(SPELL_ARCANE_EXPLOSION, nextArcaneExplosionTime);
break;
@@ -101,7 +98,7 @@ public:
{
DoCast(target, SPELL_POLYMORPH);
}
events.ScheduleEvent(SPELL_POLYMORPH, urand(TIMER_POLYMORPH - 2000, TIMER_POLYMORPH + 2000));
events.ScheduleEvent(SPELL_POLYMORPH, TIMER_POLYMORPH - 2s, TIMER_POLYMORPH + 2s);
break;
case SPELL_SLOW:
if (me->GetDistance2d(me->GetVictim()) < 50.0f)

View File

@@ -96,7 +96,7 @@ public:
void IsSummonedBy(WorldObject* /*summoner*/) override
{
events.ScheduleEvent(EVENT_SUMMONED_1, 1000);
events.ScheduleEvent(EVENT_SUMMONED_1, 1s);
}
void JustSummoned(Creature* summon) override

View File

@@ -71,7 +71,7 @@ public:
void IsSummonedBy(WorldObject* /*summoner*/) override
{
StartTalking(TALK_SUMMON, 8 * IN_MILLISECONDS);
StartTalking(TALK_SUMMON, 8s);
}
void JustEngagedWith(Unit* who) override
@@ -92,7 +92,7 @@ public:
instance->SetData(DATA_LORD_VALTHALAK, DONE);
}
void StartTalking(uint32 talkGroupId, uint32 timer)
void StartTalking(uint32 talkGroupId, Milliseconds timer)
{
me->SetReactState(REACT_PASSIVE);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
@@ -123,7 +123,7 @@ public:
events.CancelEvent(EVENT_SUMMON_SPECTRAL_ASSASSIN);
StartTalking(TALK_40_HP, 5 * IN_MILLISECONDS);
StartTalking(TALK_40_HP, 5s);
}
if (!frenzy15 && me->HealthBelowPctDamaged(15, damage))
@@ -132,7 +132,7 @@ public:
events.ScheduleEvent(EVENT_SHADOW_BOLT_VOLLEY, 12s, 19s, 0, EVENT_PHASE_FIGHT);
StartTalking(TALK_15_HP, 5 * IN_MILLISECONDS);
StartTalking(TALK_15_HP, 5s);
}
}

View File

@@ -108,11 +108,11 @@ struct boss_quartermaster_zigris : public BossAI
if (me->IsWithinMeleeRange(me->GetVictim()))
{
DoCastVictim(SPELL_HOOKEDNET);
events.RepeatEvent(16000);
events.Repeat(16s);
}
else
{
events.RepeatEvent(3000);
events.Repeat(3s);
}
break;
case EVENT_SHOOT:
@@ -128,7 +128,7 @@ struct boss_quartermaster_zigris : public BossAI
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MoveChase(me->GetVictim());
}
events.RepeatEvent(2000);
events.Repeat(2s);
break;
}

View File

@@ -222,7 +222,7 @@ public:
if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 50.0f))
waveDoorGUID = portcullis->GetGUID();
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
events.ScheduleEvent(EVENT_START_1, 1s);
}
}
@@ -264,7 +264,7 @@ public:
events.ScheduleEvent(EVENT_START_2, 4s);
break;
case EVENT_START_2:
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->HandleEmoteCommand(EMOTE_ONESHOT_POINT);
events.ScheduleEvent(EVENT_START_3, 4s);
@@ -314,14 +314,14 @@ public:
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_TEXT_2:
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_3);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_TEXT_3:
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_4);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);
@@ -334,14 +334,14 @@ public:
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_TEXT_5:
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_5);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);
events.ScheduleEvent(EVENT_SPAWN_WAVE, 3s);
break;
case EVENT_WAVES_COMPLETE_TEXT_1:
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0ms);
if (Creature* victor = ObjectAccessor::GetCreature(*me, victorGUID))
victor->AI()->Talk(SAY_NEFARIUS_6);
events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4s);

View File

@@ -227,7 +227,7 @@ public:
case EVENT_FIREBALL:
DoCastVictim(SPELL_FIREBALL);
events.ScheduleEvent(EVENT_FIREBALL, 8s, 21s);
if (events.GetNextEventTime(EVENT_FIREBLAST) < 3 * IN_MILLISECONDS)
if (events.GetTimeUntilEvent(EVENT_FIREBLAST) < 3s)
{
events.RescheduleEvent(EVENT_FIREBLAST, 3s);
}
@@ -235,7 +235,7 @@ public:
case EVENT_FIREBLAST:
DoCastVictim(SPELL_FIREBLAST);
events.ScheduleEvent(EVENT_FIREBLAST, 5s, 8s);
if (events.GetNextEventTime(EVENT_FIREBALL) < 3 * IN_MILLISECONDS)
if (events.GetTimeUntilEvent(EVENT_FIREBALL) < 3s)
{
events.RescheduleEvent(EVENT_FIREBALL, 3s);
}

View File

@@ -98,31 +98,31 @@ public:
{
case EVENT_SNAP_KICK:
DoCastVictim(SPELL_SNAPKICK);
events.RepeatEvent(6 * IN_MILLISECONDS);
events.Repeat(6s);
break;
case EVENT_CLEAVE:
DoCastVictim(SPELL_CLEAVE);
events.RepeatEvent(12 * IN_MILLISECONDS);
events.Repeat(12s);
break;
case EVENT_UPPERCUT:
DoCastVictim(SPELL_UPPERCUT);
events.RepeatEvent(14 * IN_MILLISECONDS);
events.Repeat(14s);
break;
case EVENT_MORTAL_STRIKE:
DoCastVictim(SPELL_MORTALSTRIKE);
events.RepeatEvent(10 * IN_MILLISECONDS);
events.Repeat(10s);
break;
case EVENT_PUMMEL:
DoCastVictim(SPELL_PUMMEL);
events.RepeatEvent(16 * IN_MILLISECONDS);
events.Repeat(16s);
break;
case EVENT_THROW_AXE:
DoCastRandomTarget(SPELL_THROWAXE);
events.RepeatEvent(8 * IN_MILLISECONDS);
events.Repeat(8s);
break;
case EVENT_THRASH:
DoCastSelf(SPELL_THRASH);
events.RepeatEvent(10 * IN_MILLISECONDS);
events.Repeat(10s);
break;
}
}

View File

@@ -39,10 +39,7 @@ enum EventIds
EVENT_SOLAKAR_WAVE = 3
};
enum Timers
{
TIMER_SOLAKAR_WAVE = 30000
};
constexpr Milliseconds TIMER_SOLAKAR_WAVE = 30s;
enum SolakarWaves
{

View File

@@ -345,7 +345,7 @@ public:
{
case NPC_BLACKWING_DRAGON:
--addsCount[0];
if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
if (EggEvent != DONE && !_events.HasTimeUntilEvent(EVENT_RAZOR_SPAWN))
{
_events.ScheduleEvent(EVENT_RAZOR_SPAWN, 1s);
}
@@ -353,7 +353,7 @@ public:
case NPC_BLACKWING_LEGIONAIRE:
case NPC_BLACKWING_MAGE:
--addsCount[1];
if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
if (EggEvent != DONE && !_events.HasTimeUntilEvent(EVENT_RAZOR_SPAWN))
{
_events.ScheduleEvent(EVENT_RAZOR_SPAWN, 1s);
}
@@ -413,7 +413,7 @@ public:
if (spawnMoreAdds)
{
_events.ScheduleEvent(EVENT_RAZOR_SPAWN, 15000);
_events.ScheduleEvent(EVENT_RAZOR_SPAWN, 15s);
}
}
break;

View File

@@ -91,7 +91,7 @@ public:
case EVENT_INFERNO:
{
DoCastAOE(SPELL_INFERNO);
events.RepeatEvent(urand(21000, 26000));
events.Repeat(21s, 26s);
break;
}
case EVENT_IGNITE_MANA:
@@ -101,7 +101,7 @@ public:
DoCast(target, SPELL_IGNITE_MANA);
}
events.RepeatEvent(urand(27000, 32000));
events.Repeat(27s, 32s);
break;
}
case EVENT_LIVING_BOMB:
@@ -111,7 +111,7 @@ public:
DoCast(target, SPELL_LIVING_BOMB);
}
events.RepeatEvent(urand(11000, 16000));
events.Repeat(11s, 16s);
break;
}
}

View File

@@ -111,13 +111,13 @@ public:
case EVENT_ANTIMAGIC_PULSE:
{
DoCastSelf(SPELL_ANTIMAGIC_PULSE);
events.RepeatEvent(20000);
events.Repeat(20s);
break;
}
case EVENT_MAGMA_SHACKLES:
{
DoCastSelf(SPELL_MAGMA_SHACKLES);
events.RepeatEvent(15000);
events.Repeat(15s);
break;
}
}

View File

@@ -58,7 +58,7 @@ public:
case EVENT_GEHENNAS_CURSE:
{
DoCastVictim(SPELL_GEHENNAS_CURSE);
events.RepeatEvent(urand(25000, 30000));
events.Repeat(25s, 30s);
break;
}
case EVENT_RAIN_OF_FIRE:
@@ -67,7 +67,7 @@ public:
{
DoCast(target, SPELL_RAIN_OF_FIRE, true);
}
events.RepeatEvent(6000);
events.Repeat(6s);
break;
}
case EVENT_SHADOW_BOLT:
@@ -88,7 +88,7 @@ public:
DoCastVictim(SPELL_SHADOW_BOLT_VICTIM);
}
events.RepeatEvent(5000);
events.Repeat(5s);
break;
}
}

View File

@@ -57,19 +57,19 @@ public:
case EVENT_IMPENDING_DOOM:
{
DoCastVictim(SPELL_IMPENDING_DOOM);
events.RepeatEvent(20000);
events.Repeat(20s);
break;
}
case EVENT_LUCIFRON_CURSE:
{
DoCastVictim(SPELL_LUCIFRON_CURSE);
events.RepeatEvent(20000);
events.Repeat(20s);
break;
}
case EVENT_SHADOW_SHOCK:
{
DoCastVictim(SPELL_SHADOW_SHOCK);
events.RepeatEvent(5000);
events.Repeat(5s);
break;
}
}

View File

@@ -73,13 +73,13 @@ public:
{
Talk(EMOTE_FRENZY);
DoCastSelf(SPELL_FRENZY);
events.RepeatEvent(urand(15000, 20000));
events.Repeat(15s, 20s);
break;
}
case EVENT_PANIC:
{
DoCastVictim(SPELL_PANIC);
events.RepeatEvent(urand(31000, 38000));
events.Repeat(31s, 38s);
break;
}
case EVENT_LAVA_BOMB:
@@ -89,7 +89,7 @@ public:
DoCast(target, SPELL_LAVA_BOMB);
}
events.RepeatEvent(urand(12000, 15000));
events.Repeat(12s, 15s);
break;
}
case EVENT_LAVA_BOMB_RANGED:
@@ -104,7 +104,7 @@ public:
{
DoCast(targets.front() , SPELL_LAVA_BOMB_RANGED);
}
events.RepeatEvent(urand(12000, 15000));
events.Repeat(12s, 15s);
break;
}
}

View File

@@ -348,7 +348,7 @@ public:
{
DoCastSelf(SPELL_DAMAGE_REFLECTION);
}
events.RepeatEvent(30000);
events.Repeat(30s);
break;
}
case EVENT_TELEPORT_RANDOM:
@@ -359,14 +359,14 @@ public:
DoCast(target, SPELL_TELEPORT_RANDOM);
}
events.RepeatEvent(30000);
events.Repeat(30s);
break;
}
case EVENT_TELEPORT_TARGET:
{
DoCastSelf(SPELL_HATE_TO_ZERO, true);
DoCastAOE(SPELL_TELEPORT_TARGET);
events.RepeatEvent(30000);
events.Repeat(30s);
break;
}
}

View File

@@ -189,7 +189,7 @@ public:
{
if (_lavaBurstGUIDS.empty())
{
extraEvents.ScheduleEvent(EVENT_LAVA_BURST_TRIGGER, 1);
extraEvents.ScheduleEvent(EVENT_LAVA_BURST_TRIGGER, 1ms);
}
_lavaBurstGUIDS.insert(guid);
@@ -309,7 +309,7 @@ public:
}
_lavaBurstGUIDS.erase(lavaBurstGUID);
extraEvents.RepeatEvent(1000);
extraEvents.Repeat(1s);
}
else
{
@@ -350,7 +350,7 @@ public:
{
Talk(SAY_WRATH);
}
events.RepeatEvent(25000);
events.Repeat(25s);
break;
}
case EVENT_HAND_OF_RAGNAROS:
@@ -362,7 +362,7 @@ public:
_isKnockbackEmoteAllowed = false;
extraEvents.RescheduleEvent(EVENT_RESET_KNOCKBACK_EMOTE, 5s);
}
events.RepeatEvent(20000);
events.Repeat(20s);
break;
}
case EVENT_LAVA_BURST:
@@ -401,7 +401,7 @@ public:
extraEvents.RescheduleEvent(EVENT_RESET_KNOCKBACK_EMOTE, 5s);
}
}
events.RepeatEvent(urand(11000, 30000));
events.Repeat(11s, 30s);
break;
}
case EVENT_SUBMERGE:

View File

@@ -67,7 +67,7 @@ public:
case EVENT_ARCANE_EXPLOSION:
{
DoCastVictim(SPELL_ARCANE_EXPLOSION);
events.RepeatEvent(urand(4000, 5000));
events.Repeat(4s, 5s);
break;
}
case EVENT_SHAZZRAH_CURSE:
@@ -76,26 +76,26 @@ public:
{
DoCast(target, SPELL_SHAZZRAH_CURSE);
}
events.RepeatEvent(urand(23000, 26000));
events.Repeat(23s, 26s);
break;
}
case EVENT_MAGIC_GROUNDING:
{
DoCastSelf(SPELL_MAGIC_GROUNDING);
events.RepeatEvent(urand(7000, 9000));
events.Repeat(7s, 9s);
break;
}
case EVENT_COUNTERSPELL:
{
DoCastAOE(SPELL_COUNTERSPELL);
events.RepeatEvent(urand(15000, 18000));
events.Repeat(15s, 18s);
break;
}
case EVENT_SHAZZRAH_GATE:
{
DoCastAOE(SPELL_SHAZZRAH_GATE_DUMMY);
events.RescheduleEvent(EVENT_ARCANE_EXPLOSION, 3s, 6s);
events.RepeatEvent(45000);
events.Repeat(45s);
break;
}
}

View File

@@ -72,7 +72,7 @@ public:
case EVENT_DEMORALIZING_SHOUT:
{
DoCastVictim(SPELL_DEMORALIZING_SHOUT);
events.RepeatEvent(urand(12000, 18000));
events.Repeat(12s, 18s);
break;
}
case EVENT_INSPIRE:
@@ -84,19 +84,19 @@ public:
}
DoCastSelf(SPELL_INSPIRE);
events.RepeatEvent(urand(13000, 20000));
events.Repeat(13s, 20s);
break;
}
case EVENT_KNOCKDOWN:
{
DoCastVictim(SPELL_KNOCKDOWN);
events.RepeatEvent(urand(10000, 20000));
events.Repeat(10s, 20s);
break;
}
case EVENT_FLAMESPEAR:
{
DoCastRandomTarget(SPELL_FLAMESPEAR);
events.RepeatEvent(urand(12000, 16000));
events.Repeat(12s, 16s);
break;
}
}
@@ -133,7 +133,7 @@ public:
events.ScheduleEvent(EVENT_DARK_STRIKE, 4s, 7s);
events.ScheduleEvent(EVENT_DARK_MENDING, 15s, 30s);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 2s, 4s);
events.ScheduleEvent(EVENT_IMMOLATE, 3500ms, 6000ms);
events.ScheduleEvent(EVENT_IMMOLATE, 3500ms, 6s);
}
void UpdateAI(uint32 diff) override
@@ -157,7 +157,7 @@ public:
case EVENT_DARK_STRIKE:
{
DoCastVictim(SPELL_DARK_STRIKE);
events.RepeatEvent(urand(4000, 7000));
events.Repeat(4s, 7s);
break;
}
case EVENT_DARK_MENDING:
@@ -169,7 +169,7 @@ public:
DoCast(target, SPELL_DARK_MENDING);
}
}
events.RepeatEvent(urand(15000, 20000));
events.Repeat(15s, 20s);
break;
}
case EVENT_SHADOW_WORD_PAIN:
@@ -178,7 +178,7 @@ public:
{
DoCast(target, SPELL_SHADOW_WORD_PAIN);
}
events.RepeatEvent(urand(2500, 5000));
events.Repeat(2500ms, 5s);
break;
}
case EVENT_IMMOLATE:
@@ -187,7 +187,7 @@ public:
{
DoCast(target, SPELL_IMMOLATE);
}
events.RepeatEvent(urand(5000, 7000));
events.Repeat(5s, 7s);
break;
}
}

View File

@@ -90,7 +90,7 @@ public:
if (me->HealthBelowPct(67) && !health67)
{
me->CastSpell(me, SPELL_SMITE_STOMP, false);
events.DelayEvents(10000);
events.DelayEvents(10s);
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MovePoint(EQUIP_TWO_SWORDS, 1.859f, -780.72f, 9.831f);
Talk(SAY_SWAP1);
@@ -105,7 +105,7 @@ public:
if (me->HealthBelowPct(34) && !health34)
{
me->CastSpell(me, SPELL_SMITE_STOMP, false);
events.DelayEvents(10000);
events.DelayEvents(10s);
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MovePoint(EQUIP_MACE, 1.859f, -780.72f, 9.831f);
Talk(SAY_SWAP2);

View File

@@ -138,7 +138,7 @@ struct boss_felblood_kaelthas : public BossAI
ScheduleTimedEvent(0ms, [&]{
DoCastVictim(SPELL_FIREBALL);
}, 3000ms, 4500ms);
}, 3s, 4500ms);
ScheduleTimedEvent(15s, [&]{
Talk(SAY_PHOENIX);
DoCastSelf(SPELL_PHOENIX);

View File

@@ -95,7 +95,7 @@ struct boss_selin_fireheart : public BossAI
BossAI::JustEngagedWith(who);
ScheduleTimedEvent(2500ms, [&]{
DoCastRandomTarget(SPELL_DRAIN_LIFE);
}, 10000ms);
}, 10s);
ScheduleTimedEvent(2s, [&]{
me->RemoveAuraFromStack(SPELL_MANA_RAGE_TRIGGER);
DoCastAOE(SPELL_FEL_EXPLOSION);

View File

@@ -438,7 +438,7 @@ public:
if (owner->GetVictim())
AttackStart(owner->GetVictim());
events.RepeatEvent(1000);
events.Repeat(1s);
return;
}
@@ -760,22 +760,22 @@ public:
{
case EVENT_ICY_TOUCH:
DoCastVictim(SPELL_ICY_TOUCH);
events.DelayEvents(1000, GCD_CAST);
events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_ICY_TOUCH, 5s, GCD_CAST);
break;
case EVENT_PLAGUE_STRIKE:
DoCastVictim(SPELL_PLAGUE_STRIKE);
events.DelayEvents(1000, GCD_CAST);
events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_PLAGUE_STRIKE, 5s, GCD_CAST);
break;
case EVENT_BLOOD_STRIKE:
DoCastVictim(SPELL_BLOOD_STRIKE);
events.DelayEvents(1000, GCD_CAST);
events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_BLOOD_STRIKE, 5s, GCD_CAST);
break;
case EVENT_DEATH_COIL:
DoCastVictim(SPELL_DEATH_COIL);
events.DelayEvents(1000, GCD_CAST);
events.DelayEvents(1s, GCD_CAST);
events.ScheduleEvent(EVENT_DEATH_COIL, 5s, GCD_CAST);
break;
}

View File

@@ -613,7 +613,7 @@ public:
me->GetMotionMaster()->MovePath(pathId, true); // true = repeatable
}
// Schedule the first ritual after 20-30s
events.ScheduleEvent(EVENT_START_RITUAL, urand(20000, 30000));
events.ScheduleEvent(EVENT_START_RITUAL, 20s, 30s);
}
void UpdateAI(uint32 diff) override
@@ -628,7 +628,7 @@ public:
{
if (isOnRitual) // Already performing ritual
{
events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
@@ -655,7 +655,7 @@ public:
if (!nearestCorpse)
{
// No corpse found nearby: try again later
events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
// Start ritual
@@ -702,7 +702,7 @@ public:
// Resume paused waypoint movement
me->ResumeMovement();
// Schedule next ritual in 20-30s
events.ScheduleEvent(EVENT_START_RITUAL, urand(20000, 30000));
events.ScheduleEvent(EVENT_START_RITUAL, 20s, 30s);
break;
}
}
@@ -723,9 +723,9 @@ public:
me->SetFacingToObject(geist);
geistGUID = geist->GetGUID();
// Geist found: schedule Ghoulplosion at +3s, then raising at +6s, then resume at +9s
events.ScheduleEvent(EVENT_GHOULPLOSION, 3000);
events.ScheduleEvent(EVENT_RAISE_GHOUL, 6000);
events.ScheduleEvent(EVENT_RESUME_WP, 9000);
events.ScheduleEvent(EVENT_GHOULPLOSION, 3s);
events.ScheduleEvent(EVENT_RAISE_GHOUL, 6s);
events.ScheduleEvent(EVENT_RESUME_WP, 9s);
}
else
{
@@ -737,8 +737,8 @@ public:
me->SetFacingToObject(corpse);
}
events.ScheduleEvent(EVENT_RAISE_GHOUL, 3000);
events.ScheduleEvent(EVENT_RESUME_WP, 6000);
events.ScheduleEvent(EVENT_RAISE_GHOUL, 3s);
events.ScheduleEvent(EVENT_RESUME_WP, 6s);
}
}
}
@@ -800,7 +800,7 @@ public:
me->GetMotionMaster()->MovePath(pathId, true); // true = repeatable
}
// Schedule the first ritual after 50-60s
events.ScheduleEvent(EVENT_START_RITUAL, urand(50000, 60000));
events.ScheduleEvent(EVENT_START_RITUAL, 50s, 60s);
}
void UpdateAI(uint32 diff) override
{
@@ -814,7 +814,7 @@ public:
{
if (isOnRitual) // Already performing ritual
{
events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
@@ -841,7 +841,7 @@ public:
}
if (!nearestCorpse)
{
events.ScheduleEvent(EVENT_START_RITUAL, urand(5000, 10000));
events.ScheduleEvent(EVENT_START_RITUAL, 5s, 10s);
break;
}
// Start ritual
@@ -894,7 +894,7 @@ public:
// Resume paused waypoint movement
me->ResumeMovement();
// Schedule next ritual in 50-60s
events.ScheduleEvent(EVENT_START_RITUAL, urand(50000, 60000));
events.ScheduleEvent(EVENT_START_RITUAL, 50s, 60s);
break;
}
}
@@ -923,15 +923,15 @@ public:
me->SetFacingToObject(geist);
geistGUID = geist->GetGUID();
// Geist present: Ghoulplosion in 3s (with SAY_GEIST), raise in 6s, resume in 9s
events.ScheduleEvent(EVENT_GHOULPLOSION, 3000);
events.ScheduleEvent(EVENT_RAISE_DEAD, 6000);
events.ScheduleEvent(EVENT_RESUME_WP, 9000);
events.ScheduleEvent(EVENT_GHOULPLOSION, 3s);
events.ScheduleEvent(EVENT_RAISE_DEAD, 6s);
events.ScheduleEvent(EVENT_RESUME_WP, 9s);
}
else
{
// No Geist: raise in 3s, resume in 6s
events.ScheduleEvent(EVENT_RAISE_DEAD, 3000);
events.ScheduleEvent(EVENT_RESUME_WP, 6000);
events.ScheduleEvent(EVENT_RAISE_DEAD, 3s);
events.ScheduleEvent(EVENT_RESUME_WP, 6s);
}
}
}

View File

@@ -526,11 +526,11 @@ public:
if (battleStarted != ENCOUNTER_STATE_FIGHT)
return;
events.RescheduleEvent(EVENT_SPELL_ANTI_MAGIC_ZONE, 15000);
events.RescheduleEvent(EVENT_SPELL_DEATH_STRIKE, 8000);
events.RescheduleEvent(EVENT_SPELL_DEATH_EMBRACE, 5000);
events.RescheduleEvent(EVENT_SPELL_UNHOLY_BLIGHT, 10000);
events.RescheduleEvent(EVENT_SPELL_DARION_MOD_DAMAGE, 500);
events.RescheduleEvent(EVENT_SPELL_ANTI_MAGIC_ZONE, 15s);
events.RescheduleEvent(EVENT_SPELL_DEATH_STRIKE, 8s);
events.RescheduleEvent(EVENT_SPELL_DEATH_EMBRACE, 5s);
events.RescheduleEvent(EVENT_SPELL_UNHOLY_BLIGHT, 10s);
events.RescheduleEvent(EVENT_SPELL_DARION_MOD_DAMAGE, 500ms);
}
void Reset() override

View File

@@ -36,16 +36,13 @@ enum BossData
GANDLING_ROOM_TO_USE
};
enum Timers
{
TIMER_ARCANE_MIN = 8000,
TIMER_ARCANE_MAX = 14000,
TIMER_CURSE_MIN = 20000,
TIMER_CURSE_MAX = 30000,
TIMER_SHIELD_MIN = 30000,
TIMER_SHIELD_MAX = 40000,
TIMER_PORTAL = 25000
};
constexpr Milliseconds TIMER_ARCANE_MIN = 8s;
constexpr Milliseconds TIMER_ARCANE_MAX = 14s;
constexpr Milliseconds TIMER_CURSE_MIN = 20s;
//constexpr Milliseconds TIMER_CURSE_MAX = 30s;
constexpr Milliseconds TIMER_SHIELD_MIN = 30s;
//constexpr Milliseconds TIMER_SHIELD_MAX = 40s;
constexpr Milliseconds TIMER_PORTAL = 25s;
enum IdPortalSpells
{
@@ -335,18 +332,18 @@ public:
{
case SPELL_ARCANE_MISSILES:
DoCastVictim(SPELL_ARCANE_MISSILES);
events.ScheduleEvent(SPELL_ARCANE_MISSILES, urand(TIMER_ARCANE_MIN, TIMER_ARCANE_MAX));
events.ScheduleEvent(SPELL_ARCANE_MISSILES, TIMER_ARCANE_MIN, TIMER_ARCANE_MAX);
break;
case SPELL_CURSE_DARKMASTER:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
{
DoCast(target, SPELL_CURSE_DARKMASTER);
}
events.ScheduleEvent(SPELL_ARCANE_MISSILES, urand(TIMER_ARCANE_MIN, TIMER_ARCANE_MAX));
events.ScheduleEvent(SPELL_ARCANE_MISSILES, TIMER_ARCANE_MIN, TIMER_ARCANE_MAX);
break;
case SPELL_SHADOW_SHIELD:
DoCastSelf(SPELL_SHADOW_SHIELD);
events.ScheduleEvent(SPELL_ARCANE_MISSILES, urand(TIMER_ARCANE_MIN, TIMER_ARCANE_MAX));
events.ScheduleEvent(SPELL_ARCANE_MISSILES, TIMER_ARCANE_MIN, TIMER_ARCANE_MAX);
break;
case SPELL_SHADOW_PORTAL:

View File

@@ -399,17 +399,17 @@ public:
{
case 1:
me->CastSpell(me, BONE_ARMOR_SPELL, false);
events.RepeatEvent(60000);
events.Repeat(60s);
break;
case 2:
if (Unit* target = SelectUnitCasting())
{
me->CastSpell(target, COUNTER_SPELL, false);
events.RepeatEvent(urand(10000, 20000));
events.Repeat(10s, 20s);
}
else
{
events.RepeatEvent(400);
events.Repeat(400ms);
}
break;
case 3:
@@ -417,11 +417,11 @@ public:
{
me->CastSpell(target, DRAIN_MANA_SPELL, false);
}
events.RepeatEvent(urand(13000, 20000));
events.Repeat(13s, 20s);
break;
case 4:
me->CastSpell(me->GetVictim(), SHADOWBOLT_VOLLEY_SPELL, true);
events.RepeatEvent(urand(11000, 17000));
events.Repeat(11s, 17s);
break;
}

View File

@@ -135,14 +135,14 @@ public:
if (_slaughterProgress == 2)
{
for (uint32 i = 0; i < 33; ++i)
events.ScheduleEvent(EVENT_SPAWN_MINDLESS, 5000 + i * 210);
events.ScheduleEvent(EVENT_SPAWN_MINDLESS, Milliseconds(5000 + i * 210));
if (Creature* baron = instance->GetCreature(_baronRivendareGUID))
if (GameObject* gate = baron->FindNearestGameObject(GO_SLAUGHTER_GATE_SIDE, 200.0f))
gate->SetGoState(GO_STATE_ACTIVE);
}
if (_slaughterProgress == 3)
{
events.ScheduleEvent(EVENT_SPAWN_BLACK_GUARD, 20000);
events.ScheduleEvent(EVENT_SPAWN_BLACK_GUARD, 20s);
}
if (_slaughterProgress == 4)
{
@@ -296,7 +296,7 @@ public:
_baronRunProgress = DATA_BARON_RUN_GATE;
_baronRunTime = 45;
DoCastSpellOnPlayers(SPELL_BARON_ULTIMATUM);
events.ScheduleEvent(EVENT_BARON_TIME, 60000);
events.ScheduleEvent(EVENT_BARON_TIME, 60s);
if (Creature* baron = instance->GetCreature(_baronRivendareGUID))
baron->AI()->Talk(SAY_BARON_INIT_YELL);
@@ -379,12 +379,12 @@ public:
data >> _barthilasrunProgress;
if (_baronRunTime)
{
events.ScheduleEvent(EVENT_BARON_TIME, 60000);
events.ScheduleEvent(EVENT_BARON_TIME, 60s);
}
if (_slaughterProgress > 0 && _slaughterProgress < 4)
{
events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 5000);
events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 5s);
}
}
@@ -455,20 +455,20 @@ public:
if (i == 0)
{
// set timer to reset the trap
events.ScheduleEvent(EVENT_GATE1_TRAP, 30 * MINUTE * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_GATE1_TRAP, 1800s);
// set timer to reopen gates
events.ScheduleEvent(EVENT_GATE1_DELAY, 20 * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_GATE1_DELAY, 20s);
// set timer to spawn the plagued critters
events.ScheduleEvent(EVENT_GATE1_CRITTER_DELAY, 2 * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_GATE1_CRITTER_DELAY, 2s);
}
else if (i == 1)
{
// set timer to reset the trap
events.ScheduleEvent(EVENT_GATE2_TRAP, 30 * MINUTE * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_GATE2_TRAP, 1800s);
// set timer to reopen gates
events.ScheduleEvent(EVENT_GATE2_DELAY, 20 * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_GATE2_DELAY, 20s);
// set timer to spawn the plagued critters
events.ScheduleEvent(EVENT_GATE2_CRITTER_DELAY, 2 * IN_MILLISECONDS);
events.ScheduleEvent(EVENT_GATE2_CRITTER_DELAY, 2s);
}
}
}

View File

@@ -196,10 +196,10 @@ struct npc_madrigosa : public NullCreatureAI
me->RemoveDynamicFlag(UNIT_DYNFLAG_DEAD);
me->SendMovementFlagUpdate();
events.ScheduleEvent(EVENT_MAD_1, 2000);
events.ScheduleEvent(EVENT_MAD_1, 2s);
}
else if (param == ACTION_SPAWN_FELMYST)
events.ScheduleEvent(EVENT_SPAWN_FELMYST, 60000);
events.ScheduleEvent(EVENT_SPAWN_FELMYST, 60s);
}
void UpdateAI(uint32 diff) override
@@ -217,27 +217,27 @@ struct npc_madrigosa : public NullCreatureAI
}
me->GetMotionMaster()->MoveTakeoff(1, 1477.94f, 643.22f, 21.21f);
me->AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
events.ScheduleEvent(EVENT_MAD_2, 4000);
events.ScheduleEvent(EVENT_MAD_2, 4s);
break;
case EVENT_MAD_2:
Talk(SAY_MAD_1);
me->CastSpell(me, SPELL_MADRIGOSA_FREEZE, false);
events.ScheduleEvent(EVENT_MAD_2_1, 1000);
events.ScheduleEvent(EVENT_MAD_2_1, 1s);
break;
case EVENT_MAD_2_1:
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
me->SetDisableGravity(false);
me->CastSpell(me, SPELL_MADRIGOSA_FROST_BREATH, false);
events.ScheduleEvent(EVENT_MAD_3, 7000);
events.ScheduleEvent(EVENT_MAD_3, 7s);
break;
case EVENT_MAD_3:
Talk(SAY_MAD_2);
events.ScheduleEvent(EVENT_MAD_4, 7000);
events.ScheduleEvent(EVENT_MAD_4, 7s);
break;
case EVENT_MAD_4:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->AI()->Talk(YELL_INTRO);
events.ScheduleEvent(EVENT_MAD_5, 5000);
events.ScheduleEvent(EVENT_MAD_5, 5s);
break;
case EVENT_MAD_5:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -245,7 +245,7 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK1H);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK1H);
}
events.ScheduleEvent(EVENT_MAD_6, 10000);
events.ScheduleEvent(EVENT_MAD_6, 10s);
break;
case EVENT_MAD_6:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -255,21 +255,21 @@ struct npc_madrigosa : public NullCreatureAI
}
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
me->SetDisableGravity(true);
events.ScheduleEvent(EVENT_MAD_7, 4000);
events.ScheduleEvent(EVENT_MAD_7, 4s);
break;
case EVENT_MAD_7:
Talk(SAY_MAD_3);
me->CastSpell(me, SPELL_MADRIGOSA_FROST_BLAST, false);
events.ScheduleEvent(EVENT_MAD_8, 3000);
events.ScheduleEvent(EVENT_MAD_8, 5000);
events.ScheduleEvent(EVENT_MAD_8_1, 6000);
events.ScheduleEvent(EVENT_MAD_8, 6500);
events.ScheduleEvent(EVENT_MAD_8, 7500);
events.ScheduleEvent(EVENT_MAD_8, 8500);
events.ScheduleEvent(EVENT_MAD_8, 9500);
events.ScheduleEvent(EVENT_MAD_9, 11000);
events.ScheduleEvent(EVENT_MAD_8, 12000);
events.ScheduleEvent(EVENT_MAD_8, 14000);
events.ScheduleEvent(EVENT_MAD_8, 3s);
events.ScheduleEvent(EVENT_MAD_8, 5s);
events.ScheduleEvent(EVENT_MAD_8_1, 6s);
events.ScheduleEvent(EVENT_MAD_8, 6500ms);
events.ScheduleEvent(EVENT_MAD_8, 7500ms);
events.ScheduleEvent(EVENT_MAD_8, 8500ms);
events.ScheduleEvent(EVENT_MAD_8, 9500ms);
events.ScheduleEvent(EVENT_MAD_9, 11s);
events.ScheduleEvent(EVENT_MAD_8, 12s);
events.ScheduleEvent(EVENT_MAD_8, 14s);
break;
case EVENT_MAD_8:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -286,19 +286,19 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->CastSpell(brutallus, SPELL_BRUTALLUS_FEL_FIREBALL, false);
brutallus->AI()->Talk(YELL_INTRO_BREAK_ICE);
}
events.ScheduleEvent(EVENT_MAD_11, 6000);
events.ScheduleEvent(EVENT_MAD_11, 6s);
break;
//case EVENT_MAD_10:
case EVENT_MAD_11:
me->SetDisableGravity(false);
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
events.ScheduleEvent(EVENT_MAD_13, 2500);
events.ScheduleEvent(EVENT_MAD_13, 2500ms);
break;
case EVENT_MAD_13:
Talk(SAY_MAD_4);
me->RemoveAllAuras();
me->CastSpell(me, SPELL_MADRIGOSA_ENCAPSULATE, false);
events.ScheduleEvent(EVENT_MAD_14, 2000);
events.ScheduleEvent(EVENT_MAD_14, 2s);
break;
case EVENT_MAD_14:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -306,7 +306,7 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->SetDisableGravity(true);
brutallus->GetMotionMaster()->MovePoint(0, brutallus->GetPositionX(), brutallus->GetPositionY() - 30.0f, brutallus->GetPositionZ() + 15.0f, false, true);
}
events.ScheduleEvent(EVENT_MAD_15, 10000);
events.ScheduleEvent(EVENT_MAD_15, 10s);
break;
case EVENT_MAD_15:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
@@ -316,28 +316,28 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->GetMotionMaster()->MoveFall();
brutallus->AI()->Talk(YELL_INTRO_CHARGE);
}
events.ScheduleEvent(EVENT_MAD_16, 1400);
events.ScheduleEvent(EVENT_MAD_16, 1400ms);
break;
case EVENT_MAD_16:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->CastSpell(me, SPELL_BRUTALLUS_CHARGE, true);
events.ScheduleEvent(EVENT_MAD_17, 1200);
events.ScheduleEvent(EVENT_MAD_17, 1200ms);
break;
case EVENT_MAD_17:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->HandleEmoteCommand(EMOTE_ONESHOT_ATTACK1H);
events.ScheduleEvent(EVENT_MAD_18, 500);
events.ScheduleEvent(EVENT_MAD_18, 500ms);
break;
case EVENT_MAD_18:
Talk(SAY_MAD_5);
me->SetDynamicFlag(UNIT_DYNFLAG_DEAD);
me->SetStandState(UNIT_STAND_STATE_DEAD);
events.ScheduleEvent(EVENT_MAD_19, 6000);
events.ScheduleEvent(EVENT_MAD_19, 6s);
break;
case EVENT_MAD_19:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->AI()->Talk(YELL_INTRO_KILL_MADRIGOSA);
events.ScheduleEvent(EVENT_MAD_20, 7000);
events.ScheduleEvent(EVENT_MAD_20, 7s);
break;
case EVENT_MAD_20:
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
@@ -347,7 +347,7 @@ struct npc_madrigosa : public NullCreatureAI
brutallus->AI()->Talk(YELL_INTRO_TAUNT);
brutallus->CastSpell(brutallus, SPELL_BRUTALLUS_BREAK_ICE, false);
}
events.ScheduleEvent(EVENT_MAD_21, 4000);
events.ScheduleEvent(EVENT_MAD_21, 4s);
break;
case EVENT_MAD_21:
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))

View File

@@ -719,7 +719,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
me->SetCanFly(false);
me->SetDisableGravity(false);
me->CastSpell(me, SPELL_TELEPORT_AND_TRANSFORM, true);
events.ScheduleEvent(EVENT_SCENE_01, 35000);
events.ScheduleEvent(EVENT_SCENE_01, 35s);
}
}
@@ -775,21 +775,21 @@ struct npc_kalecgos_kj : public NullCreatureAI
{
case EVENT_SCENE_01:
Talk(SAY_KALECGOS_GOODBYE);
events.ScheduleEvent(eventId + 1, 15000);
events.ScheduleEvent(eventId + 1, 15s);
break;
case EVENT_SCENE_02:
me->SummonCreature(NPC_SHATTERED_SUN_RIFTWAKER, 1688.42f, 641.82f, 27.60f, 0.67f);
me->SummonCreature(NPC_SHATTERED_SUN_RIFTWAKER, 1712.58f, 616.29f, 27.78f, 0.76f);
events.ScheduleEvent(eventId + 1, 6000);
events.ScheduleEvent(eventId + 1, 6s);
break;
case EVENT_SCENE_03:
me->SummonCreature(NPC_SHATTRATH_PORTAL_DUMMY, 1727.08f + cos(5.14f), 656.82f + std::sin(5.14f), 28.37f + 2.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 10000);
me->SummonCreature(NPC_SHATTRATH_PORTAL_DUMMY, 1738.84f + cos(2.0f), 627.32f + std::sin(2.0f), 28.26f + 2.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 10000);
events.ScheduleEvent(eventId + 1, 11000);
events.ScheduleEvent(eventId + 1, 11s);
break;
case EVENT_SCENE_04:
me->SummonCreature(NPC_INERT_PORTAL, 1734.96f, 642.43f, 28.06f, 3.49f);
events.ScheduleEvent(eventId + 1, 4000);
events.ScheduleEvent(eventId + 1, 4s);
break;
case EVENT_SCENE_05:
if (Creature* first = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f, 640.49f, 28.06f, 3.49f))
@@ -800,7 +800,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
if (Creature* follower = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f + 5 * cos(i * 2.0f * M_PI / 9), 640.49f + 5 * std::sin(i * 2.0f * M_PI / 9), 28.06f, 3.49f))
follower->GetMotionMaster()->MoveFollow(first, 3.0f, follower->GetAngle(first));
}
events.ScheduleEvent(eventId + 1, 10000);
events.ScheduleEvent(eventId + 1, 10s);
break;
case EVENT_SCENE_06:
if (Creature* first = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f, 640.49f, 28.06f, 3.49f))
@@ -811,33 +811,33 @@ struct npc_kalecgos_kj : public NullCreatureAI
if (Creature* follower = me->SummonCreature(NPC_SHATTERED_SUN_SOLDIER, 1729.48f + 5 * cos(i * 2.0f * M_PI / 9), 640.49f + 5 * std::sin(i * 2.0f * M_PI / 9), 28.06f, 3.49f))
follower->GetMotionMaster()->MoveFollow(first, 3.0f, follower->GetAngle(first));
}
events.ScheduleEvent(eventId + 1, 12000);
events.ScheduleEvent(eventId + 1, 12s);
break;
case EVENT_SCENE_07:
me->SummonCreature(NPC_LADY_LIADRIN, 1719.87f, 644.265f, 28.06f, 3.83f);
me->SummonCreature(NPC_PROPHET_VELEN, 1717.97f, 646.44f, 28.06f, 3.94f);
events.ScheduleEvent(eventId + 1, 7000);
events.ScheduleEvent(eventId + 1, 7s);
break;
case EVENT_SCENE_08:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_01);
events.ScheduleEvent(eventId + 1, 25000);
events.ScheduleEvent(eventId + 1, 25s);
break;
case EVENT_SCENE_09:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_02);
events.ScheduleEvent(eventId + 1, 14500);
events.ScheduleEvent(eventId + 1, 14500ms);
break;
case EVENT_SCENE_10:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_03);
events.ScheduleEvent(eventId + 1, 12500);
events.ScheduleEvent(eventId + 1, 12500ms);
break;
case EVENT_SCENE_11:
me->SummonCreature(NPC_THE_CORE_OF_ENTROPIUS, 1698.86f, 628.73f, 92.83f, 0.0f);
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->CastSpell(velen, SPELL_CALL_ENTROPIUS, false);
events.ScheduleEvent(eventId + 1, 8000);
events.ScheduleEvent(eventId + 1, 8s);
break;
case EVENT_SCENE_12:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
@@ -845,32 +845,32 @@ struct npc_kalecgos_kj : public NullCreatureAI
velen->InterruptNonMeleeSpells(false);
velen->AI()->Talk(SAY_VELEN_04);
}
events.ScheduleEvent(eventId + 1, 20000);
events.ScheduleEvent(eventId + 1, 20s);
break;
case EVENT_SCENE_13:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->GetMotionMaster()->MovePoint(0, 1711.28f, 637.29f, 27.29f);
events.ScheduleEvent(eventId + 1, 6000);
events.ScheduleEvent(eventId + 1, 6s);
break;
case EVENT_SCENE_14:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->AI()->Talk(SAY_LIADRIN_01);
events.ScheduleEvent(eventId + 1, 10000);
events.ScheduleEvent(eventId + 1, 10s);
break;
case EVENT_SCENE_15:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_05);
events.ScheduleEvent(eventId + 1, 14000);
events.ScheduleEvent(eventId + 1, 14s);
break;
case EVENT_SCENE_16:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->AI()->Talk(SAY_LIADRIN_02);
events.ScheduleEvent(eventId + 1, 2000);
events.ScheduleEvent(eventId + 1, 2s);
break;
case EVENT_SCENE_17:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_06);
events.ScheduleEvent(eventId + 1, 3000);
events.ScheduleEvent(eventId + 1, 3s);
break;
case EVENT_SCENE_18:
if (Creature* core = summons.GetCreatureWithEntry(NPC_THE_CORE_OF_ENTROPIUS))
@@ -878,7 +878,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
core->RemoveAllAuras();
core->CastSpell(core, SPELL_BLAZE_TO_LIGHT, true);
}
events.ScheduleEvent(eventId + 1, 8000);
events.ScheduleEvent(eventId + 1, 8s);
break;
case EVENT_SCENE_19:
if (Creature* core = summons.GetCreatureWithEntry(NPC_THE_CORE_OF_ENTROPIUS))
@@ -886,34 +886,34 @@ struct npc_kalecgos_kj : public NullCreatureAI
core->SetObjectScale(0.75f);
core->GetMotionMaster()->MovePoint(0, core->GetPositionX(), core->GetPositionY(), 28.0f);
}
events.ScheduleEvent(eventId + 1, 2000);
events.ScheduleEvent(eventId + 1, 2s);
break;
case EVENT_SCENE_20:
if (Creature* core = summons.GetCreatureWithEntry(NPC_THE_CORE_OF_ENTROPIUS))
core->CastSpell(core, SPELL_SUNWELL_IGNITION, true);
events.ScheduleEvent(eventId + 1, 3000);
events.ScheduleEvent(eventId + 1, 3s);
break;
case EVENT_SCENE_21:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_07);
events.ScheduleEvent(eventId + 1, 15000);
events.ScheduleEvent(eventId + 1, 15s);
break;
case EVENT_SCENE_22:
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->AI()->Talk(SAY_LIADRIN_03);
events.ScheduleEvent(eventId + 1, 20000);
events.ScheduleEvent(eventId + 1, 20s);
break;
case EVENT_SCENE_23:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_08);
if (Creature* liadrin = summons.GetCreatureWithEntry(NPC_LADY_LIADRIN))
liadrin->SetStandState(UNIT_STAND_STATE_KNEEL);
events.ScheduleEvent(eventId + 1, 8000);
events.ScheduleEvent(eventId + 1, 8s);
break;
case EVENT_SCENE_24:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
velen->AI()->Talk(SAY_VELEN_09);
events.ScheduleEvent(eventId + 1, 5000);
events.ScheduleEvent(eventId + 1, 5s);
break;
case EVENT_SCENE_25:
if (Creature* velen = summons.GetCreatureWithEntry(NPC_PROPHET_VELEN))
@@ -921,7 +921,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
velen->GetMotionMaster()->MovePoint(0, 1739.38f, 643.79f, 28.06f);
velen->DespawnOrUnsummon(5000);
}
events.ScheduleEvent(eventId + 1, 3000);
events.ScheduleEvent(eventId + 1, 3s);
break;
case EVENT_SCENE_26:
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
@@ -931,7 +931,7 @@ struct npc_kalecgos_kj : public NullCreatureAI
summon->GetMotionMaster()->MovePoint(0, 1739.38f, 643.79f, 28.06f);
summon->DespawnOrUnsummon(summon->GetExactDist2d(1734.96f, 642.43f) * 100);
}
events.ScheduleEvent(eventId + 1, 7000);
events.ScheduleEvent(eventId + 1, 7s);
break;
case EVENT_SCENE_27:
me->setActive(false);

View File

@@ -161,72 +161,72 @@ static PlayerAbilityStruct PlayerAbility[13][3] =
// 0 UNK class (should never be set)
{
// Warrior as fallback behavior if for some reason UNK class
{ SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6000ms }
{ SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10s },
{ SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10s },
{ SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6s }
},
// 1 warrior
{ { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6000ms }
{ { SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10s },
{ SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10s },
{ SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6s }
},
// 2 paladin
{ { SPELL_PA_CONSECRATION, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_PA_HOLY_LIGHT, ABILITY_TARGET_HEAL, 10000ms },
{ SPELL_PA_AVENGING_WRATH, ABILITY_TARGET_SELF, 10000ms }
{ { SPELL_PA_CONSECRATION, ABILITY_TARGET_SELF, 10s },
{ SPELL_PA_HOLY_LIGHT, ABILITY_TARGET_HEAL, 10s },
{ SPELL_PA_AVENGING_WRATH, ABILITY_TARGET_SELF, 10s }
},
// 3 hunter
{ { SPELL_HU_EXPLOSIVE_TRAP, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_HU_FREEZING_TRAP, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_HU_SNAKE_TRAP, ABILITY_TARGET_SELF, 10000ms }
{ { SPELL_HU_EXPLOSIVE_TRAP, ABILITY_TARGET_SELF, 10s },
{ SPELL_HU_FREEZING_TRAP, ABILITY_TARGET_SELF, 10s },
{ SPELL_HU_SNAKE_TRAP, ABILITY_TARGET_SELF, 10s }
},
// 4 rogue
{ { SPELL_RO_WOUND_POISON, ABILITY_TARGET_VICTIM, 3000ms },
{ SPELL_RO_SLICE_DICE, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_RO_BLIND, ABILITY_TARGET_ENEMY, 10000ms }
{ { SPELL_RO_WOUND_POISON, ABILITY_TARGET_VICTIM, 3s },
{ SPELL_RO_SLICE_DICE, ABILITY_TARGET_SELF, 10s },
{ SPELL_RO_BLIND, ABILITY_TARGET_ENEMY, 10s }
},
// 5 priest
{ { SPELL_PR_PAIN_SUPP, ABILITY_TARGET_HEAL, 10000ms },
{ SPELL_PR_HEAL, ABILITY_TARGET_HEAL, 10000ms },
{ SPELL_PR_PSYCHIC_SCREAM, ABILITY_TARGET_SELF, 10000ms }
{ { SPELL_PR_PAIN_SUPP, ABILITY_TARGET_HEAL, 10s },
{ SPELL_PR_HEAL, ABILITY_TARGET_HEAL, 10s },
{ SPELL_PR_PSYCHIC_SCREAM, ABILITY_TARGET_SELF, 10s }
},
// 6 death knight
{
{ SPELL_DK_PLAGUE_STRIKE, ABILITY_TARGET_ENEMY, 2000ms },
{ SPELL_DK_DEATH_AND_DECAY, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_DK_BLOOD_WORMS, ABILITY_TARGET_ENEMY, 5000ms }
{ SPELL_DK_PLAGUE_STRIKE, ABILITY_TARGET_ENEMY, 2s },
{ SPELL_DK_DEATH_AND_DECAY, ABILITY_TARGET_SELF, 10s },
{ SPELL_DK_BLOOD_WORMS, ABILITY_TARGET_ENEMY, 5s }
},
// 7 shaman
{ { SPELL_SH_FIRE_NOVA, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_SH_HEALING_WAVE, ABILITY_TARGET_HEAL, 10000ms },
{ SPELL_SH_CHAIN_LIGHT, ABILITY_TARGET_ENEMY, 8000ms }
{ { SPELL_SH_FIRE_NOVA, ABILITY_TARGET_SELF, 10s },
{ SPELL_SH_HEALING_WAVE, ABILITY_TARGET_HEAL, 10s },
{ SPELL_SH_CHAIN_LIGHT, ABILITY_TARGET_ENEMY, 8s }
},
// 8 mage
{ { SPELL_MG_FIREBALL, ABILITY_TARGET_ENEMY, 5000ms },
{ SPELL_MG_FROSTBOLT, ABILITY_TARGET_ENEMY, 5000ms },
{ SPELL_MG_ICE_LANCE, ABILITY_TARGET_SPECIAL, 2000ms }
{ { SPELL_MG_FIREBALL, ABILITY_TARGET_ENEMY, 5s },
{ SPELL_MG_FROSTBOLT, ABILITY_TARGET_ENEMY, 5s },
{ SPELL_MG_ICE_LANCE, ABILITY_TARGET_SPECIAL, 2s }
},
// 9 warlock
{ { SPELL_WL_CURSE_OF_DOOM, ABILITY_TARGET_ENEMY, 10000ms },
{ SPELL_WL_RAIN_OF_FIRE, ABILITY_TARGET_ENEMY, 10000ms },
{ SPELL_WL_UNSTABLE_AFFL, ABILITY_TARGET_ENEMY, 10000ms }
{ { SPELL_WL_CURSE_OF_DOOM, ABILITY_TARGET_ENEMY, 10s },
{ SPELL_WL_RAIN_OF_FIRE, ABILITY_TARGET_ENEMY, 10s },
{ SPELL_WL_UNSTABLE_AFFL, ABILITY_TARGET_ENEMY, 10s }
},
// 10 UNK class (should never be set)
{
// Warrior as fallback behavior if for some reason UNK class
{ SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6000ms }
{ SPELL_WR_SPELL_REFLECT, ABILITY_TARGET_SELF, 10s },
{ SPELL_WR_WHIRLWIND, ABILITY_TARGET_SELF, 10s },
{ SPELL_WR_MORTAL_STRIKE, ABILITY_TARGET_VICTIM, 6s }
},
// 11 druid
{ { SPELL_DR_LIFEBLOOM, ABILITY_TARGET_HEAL, 10000ms },
{ SPELL_DR_THORNS, ABILITY_TARGET_SELF, 10000ms },
{ SPELL_DR_MOONFIRE, ABILITY_TARGET_ENEMY, 8000ms }
{ { SPELL_DR_LIFEBLOOM, ABILITY_TARGET_HEAL, 10s },
{ SPELL_DR_THORNS, ABILITY_TARGET_SELF, 10s },
{ SPELL_DR_MOONFIRE, ABILITY_TARGET_ENEMY, 8s }
},
// MISC shadow priest
{ { SPELL_PR_MIND_CONTROL, ABILITY_TARGET_ENEMY, 15000ms },
{ SPELL_PR_MIND_BLAST, ABILITY_TARGET_ENEMY, 5000ms },
{ SPELL_PR_SW_DEATH, ABILITY_TARGET_ENEMY, 10000ms }
{ { SPELL_PR_MIND_CONTROL, ABILITY_TARGET_ENEMY, 15s },
{ SPELL_PR_MIND_BLAST, ABILITY_TARGET_ENEMY, 5s },
{ SPELL_PR_SW_DEATH, ABILITY_TARGET_ENEMY, 10s }
}
};
@@ -244,7 +244,7 @@ struct boss_hexlord_malacrass : public BossAI
{
BossAI::Reset();
_currentClass = CLASS_NONE;
_classAbilityTimer = 10000ms;
_classAbilityTimer = 10s;
_timeUntilNextDrainPower = 0ms;
SpawnAdds();
ScheduleHealthCheckEvent(80, [&] {

View File

@@ -103,7 +103,7 @@ struct npc_forest_frog : public ScriptedAI
Talk(SAY_THANKS_FREED, player);
eventTimer = 2;
events.ScheduleEvent(eventTimer, urand(4000, 5000));
events.ScheduleEvent(eventTimer, 4s, 5s);
break;
case 2:
if (me->GetEntry() != NPC_GUNTER && me->GetEntry() != NPC_KYREN) // vendors don't kneel?
@@ -140,7 +140,7 @@ struct npc_forest_frog : public ScriptedAI
break;
}
eventTimer = 3;
events.ScheduleEvent(eventTimer, urand(6000, 7000));
events.ScheduleEvent(eventTimer, 6s, 7s);
break;
case 3:
me->SetStandState(EMOTE_ONESHOT_NONE);
@@ -152,9 +152,9 @@ struct npc_forest_frog : public ScriptedAI
eventTimer = 4;
if (me->GetEntry() == NPC_GUNTER || me->GetEntry() == NPC_KYREN)
events.ScheduleEvent(eventTimer, 5 * MINUTE * IN_MILLISECONDS); // vendors wait for 5 minutes before running away and despawning
events.ScheduleEvent(eventTimer, 300s); // vendors wait for 5 minutes before running away and despawning
else
events.ScheduleEvent(eventTimer, 6000);
events.ScheduleEvent(eventTimer, 6s);
break;
case 4:
me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE);
@@ -165,7 +165,7 @@ struct npc_forest_frog : public ScriptedAI
Talk(SAY_GOODBYE, player);
eventTimer = 5;
events.ScheduleEvent(eventTimer, 2000);
events.ScheduleEvent(eventTimer, 2s);
break;
case 5:
@@ -205,7 +205,7 @@ struct npc_forest_frog : public ScriptedAI
// start generic rp
eventTimer = 1;
events.ScheduleEvent(eventTimer, 3000);
events.ScheduleEvent(eventTimer, 3s);
me->UpdateEntry(cEntry);

View File

@@ -330,7 +330,7 @@ public:
if (Unit* arlokk = ObjectAccessor::GetUnit(*me, _instance->GetGuidData(NPC_ARLOKK)))
me->GetMotionMaster()->MovePoint(0, arlokk->GetPositionX(), arlokk->GetPositionY(), arlokk->GetPositionZ());
_events.ScheduleEvent(EVENT_ATTACK, 6000);
_events.ScheduleEvent(EVENT_ATTACK, 6s);
}
void JustEngagedWith(Unit* /*who*/) override

View File

@@ -156,7 +156,7 @@ public:
killCount = 0;
if (me->GetPositionZ() > 140.0f)
{
events.ScheduleEvent(EVENT_CHECK_START, 1000);
events.ScheduleEvent(EVENT_CHECK_START, 1s);
if (Creature* speaker = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_VILEBRANCH_SPEAKER)))
{
if (!speaker->IsAlive())

View File

@@ -207,7 +207,7 @@ public:
EnterEvadeMode();
return;
}
events.RepeatEvent(2000);
events.Repeat(2s);
break;
}
case EVENT_SUMMON_ARCHERS:
@@ -217,7 +217,7 @@ public:
_spoken = false;
SummonPeasants();
_spoken = false;
events.RepeatEvent(60 * IN_MILLISECONDS);
events.Repeat(60s);
break;
}
}

View File

@@ -139,7 +139,7 @@ struct npc_partygoer : public ScriptedAI
void Reset() override
{
_events.ScheduleEvent(EVENT_RANDOM_ACTION, urand(1000, 20000));
_events.ScheduleEvent(EVENT_RANDOM_ACTION, 1s, 20s);
}
void UpdateAI(uint32 diff) override

View File

@@ -136,25 +136,25 @@ public:
if (Creature* c = me->FindNearestCreature(NPC_THALORIEN_REMAINS, 100.0f, true))
c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
events.Reset();
events.ScheduleEvent(EVENT_CHECK_PLAYER, 5000);
events.ScheduleEvent(EVENT_SUMMON_SOLDIERS, 0);
events.ScheduleEvent(EVENT_TALK_INTRO_0, 3000);
events.ScheduleEvent(EVENT_TALK_INTRO_1, 8000);
events.ScheduleEvent(EVENT_TALK_INTRO_2, 15000);
events.ScheduleEvent(EVENT_TALK_INTRO_3, 22000);
events.ScheduleEvent(EVENT_SALUTE, 24000);
events.ScheduleEvent(EVENT_SOLDIERS_RUN_AWAY, 30000);
events.ScheduleEvent(EVENT_GO_FIGHTPOINT, 31000);
events.ScheduleEvent(EVENT_TALK_SPAWN_0, 38000);
events.ScheduleEvent(EVENT_SUMMON_MORLEN, 44000);
events.ScheduleEvent(EVENT_TALK_SPAWN_1, 47000);
events.ScheduleEvent(EVENT_TALK_MORLEN_0, 52000);
events.ScheduleEvent(EVENT_TALK_MORLEN_1, 58000);
events.ScheduleEvent(EVENT_SPAWN_WAVE_1, 61000);
events.ScheduleEvent(EVENT_CHECK_PLAYER, 5s);
events.ScheduleEvent(EVENT_SUMMON_SOLDIERS, 0ms);
events.ScheduleEvent(EVENT_TALK_INTRO_0, 3s);
events.ScheduleEvent(EVENT_TALK_INTRO_1, 8s);
events.ScheduleEvent(EVENT_TALK_INTRO_2, 15s);
events.ScheduleEvent(EVENT_TALK_INTRO_3, 22s);
events.ScheduleEvent(EVENT_SALUTE, 24s);
events.ScheduleEvent(EVENT_SOLDIERS_RUN_AWAY, 30s);
events.ScheduleEvent(EVENT_GO_FIGHTPOINT, 31s);
events.ScheduleEvent(EVENT_TALK_SPAWN_0, 38s);
events.ScheduleEvent(EVENT_SUMMON_MORLEN, 44s);
events.ScheduleEvent(EVENT_TALK_SPAWN_1, 47s);
events.ScheduleEvent(EVENT_TALK_MORLEN_0, 52s);
events.ScheduleEvent(EVENT_TALK_MORLEN_1, 58s);
events.ScheduleEvent(EVENT_SPAWN_WAVE_1, 61s);
events.ScheduleEvent(EVENT_SPELL_BLADESTORM, urand(6000, 15000));
events.ScheduleEvent(EVENT_SPELL_MORTAL_STRIKE, urand(3000, 7000));
events.ScheduleEvent(EVENT_SPELL_HEROIC_STRIKE, urand(4000, 10000));
events.ScheduleEvent(EVENT_SPELL_BLADESTORM, 6s, 15s);
events.ScheduleEvent(EVENT_SPELL_MORTAL_STRIKE, 3s, 7s);
events.ScheduleEvent(EVENT_SPELL_HEROIC_STRIKE, 4s, 10s);
}
void JustSummoned(Creature* summon) override
@@ -172,10 +172,10 @@ public:
me->RemoveAurasDueToSpell(67541);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->GetMotionMaster()->MoveCharge(11779.30f, -7065.43f, 24.92f, me->GetSpeed(MOVE_RUN), EVENT_CHARGE);
events.ScheduleEvent(EVENT_OUTRO_0, 0);
events.ScheduleEvent(EVENT_OUTRO_1, 5000);
events.ScheduleEvent(EVENT_OUTRO_2, 12000);
events.ScheduleEvent(EVENT_OUTRO_3, 19000);
events.ScheduleEvent(EVENT_OUTRO_0, 0ms);
events.ScheduleEvent(EVENT_OUTRO_1, 5s);
events.ScheduleEvent(EVENT_OUTRO_2, 12s);
events.ScheduleEvent(EVENT_OUTRO_3, 19s);
}
else if (summons.size() == 1)
{
@@ -184,13 +184,13 @@ public:
switch (summon->GetEntry())
{
case NPC_SCOURGE_ZOMBIE:
events.ScheduleEvent(EVENT_SPAWN_WAVE_2, 3000);
events.ScheduleEvent(EVENT_SPAWN_WAVE_2, 3s);
break;
case NPC_GHOUL_INVADER:
events.ScheduleEvent(EVENT_SPAWN_WAVE_3, 3000);
events.ScheduleEvent(EVENT_SPAWN_WAVE_3, 3s);
break;
case NPC_CRYPT_RAIDER:
events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3000);
events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3s);
break;
}
}
@@ -227,7 +227,7 @@ public:
if (Player* p = ObjectAccessor::GetPlayer(*me, playerGUID))
if (p->GetExactDist(me) <= 50.0f)
{
events.RepeatEvent(5000);
events.Repeat(5s);
break;
}
me->setActive(false);
@@ -266,7 +266,7 @@ public:
{
if (!summons.empty())
{
events.RepeatEvent(5000);
events.Repeat(5s);
return;
}
else
@@ -350,7 +350,7 @@ public:
break;
}
}
events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3000);
events.ScheduleEvent(EVENT_SUMMONS_ATTACK, 3s);
break;
case EVENT_SUMMONS_ATTACK:
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
@@ -370,13 +370,13 @@ public:
case EVENT_OUTRO_3:
Talk(SAY_OUTRO_0 + (evId - EVENT_OUTRO_0));
if (evId == EVENT_OUTRO_3)
events.ScheduleEvent(EVENT_OUTRO_KNEEL, 6000);
events.ScheduleEvent(EVENT_OUTRO_KNEEL, 6s);
break;
case EVENT_OUTRO_KNEEL:
if (Player* p = ObjectAccessor::GetPlayer(*me, playerGUID))
p->KilledMonsterCredit(NPC_THALORIEN_KILL_CREDIT);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
events.ScheduleEvent(EVENT_DISAPPEAR, 6000);
events.ScheduleEvent(EVENT_DISAPPEAR, 6s);
break;
case EVENT_DISAPPEAR:
me->SetVisible(false);
@@ -390,17 +390,17 @@ public:
case EVENT_SPELL_BLADESTORM:
if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim()))
me->CastSpell(me->GetVictim(), 67541, false);
events.RepeatEvent(urand(25000, 35000));
events.Repeat(25s, 35s);
break;
case EVENT_SPELL_MORTAL_STRIKE:
if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim()))
me->CastSpell(me->GetVictim(), 67542, false);
events.RepeatEvent(urand(7000, 12000));
events.Repeat(7s, 12s);
break;
case EVENT_SPELL_HEROIC_STRIKE:
if (me->GetVictim() && me->IsWithinMeleeRange(me->GetVictim()))
me->CastSpell(me->GetVictim(), 57846, false);
events.RepeatEvent(urand(5000, 10000));
events.Repeat(5s, 10s);
break;
}
@@ -410,7 +410,7 @@ public:
void MovementInform(uint32 type, uint32 id) override
{
if (type == POINT_MOTION_TYPE && id == EVENT_CHARGE)
events.ScheduleEvent(EVENT_SET_FACING, 0);
events.ScheduleEvent(EVENT_SET_FACING, 0ms);
}
void EnterEvadeMode(EvadeReason why) override
@@ -504,19 +504,19 @@ public:
me->SummonCreature(NPC_SUNWELL_VISUAL_BUNNY, 1688.24f, 621.769f, 29.1745f, 0.523177f, TEMPSUMMON_MANUAL_DESPAWN);
me->setActive(true);
events.Reset();
events.ScheduleEvent(1, 1000); // guard talk
events.ScheduleEvent(2, 4000); // theron talk
events.ScheduleEvent(3, 10000); // npcs walk
events.ScheduleEvent(4, 17000); // rommath talk
events.ScheduleEvent(5, 20000); // theron talk
events.ScheduleEvent(6, 28000); // theron talk
events.ScheduleEvent(7, 37000); // rommath talk
events.ScheduleEvent(8, 44000); // rommath talk
events.ScheduleEvent(9, 52000); // rommath talk
events.ScheduleEvent(10, 60000); // auric talk
events.ScheduleEvent(11, 66000); // auric talk
events.ScheduleEvent(12, 76000); // rommath talk
events.ScheduleEvent(13, 80000); // move home
events.ScheduleEvent(1, 1s); // guard talk
events.ScheduleEvent(2, 4s); // theron talk
events.ScheduleEvent(3, 10s); // npcs walk
events.ScheduleEvent(4, 17s); // rommath talk
events.ScheduleEvent(5, 20s); // theron talk
events.ScheduleEvent(6, 28s); // theron talk
events.ScheduleEvent(7, 37s); // rommath talk
events.ScheduleEvent(8, 44s); // rommath talk
events.ScheduleEvent(9, 52s); // rommath talk
events.ScheduleEvent(10, 60s); // auric talk
events.ScheduleEvent(11, 66s); // auric talk
events.ScheduleEvent(12, 76s); // rommath talk
events.ScheduleEvent(13, 80s); // move home
}
}

View File

@@ -328,7 +328,7 @@ public:
{
HasEnded = false;
TalkRNG = urand(0,1);
events.ScheduleEvent(EVENT_APPA_INTRO, 2000);
events.ScheduleEvent(EVENT_APPA_INTRO, 2s);
summons.DespawnAll();
}
@@ -387,31 +387,31 @@ public:
case EVENT_APPA_INTRO:
Talk(SAY_APPA_INTRO);
SummonCrowd();
events.ScheduleEvent(EVENT_APPA_SAY_1, 3000);
events.ScheduleEvent(EVENT_APPA_SAY_1, 3s);
break;
case EVENT_APPA_SAY_1:
Talk(TalkRNG ? SAY_APPA_OPTION_1_1 : SAY_APPA_OPTION_2_1);
events.ScheduleEvent(EVENT_APPA_SAY_2, 5000);
events.ScheduleEvent(EVENT_APPA_SAY_2, 5s);
break;
case EVENT_APPA_SAY_2:
Talk(TalkRNG ? SAY_APPA_OPTION_1_2 : SAY_APPA_OPTION_2_2);
events.ScheduleEvent(EVENT_APPA_SAY_3, 5000);
events.ScheduleEvent(EVENT_APPA_SAY_3, 5s);
break;
case EVENT_APPA_SAY_3:
Talk(TalkRNG ? SAY_APPA_OPTION_1_3 : SAY_APPA_OPTION_2_3);
events.ScheduleEvent(EVENT_APPA_SAY_4, 5000);
events.ScheduleEvent(EVENT_APPA_SAY_4, 5s);
break;
case EVENT_APPA_SAY_4:
Talk(TalkRNG ? SAY_APPA_OPTION_1_4 : SAY_APPA_OPTION_2_4);
events.ScheduleEvent(EVENT_APPA_OUTRO, 5000);
events.ScheduleEvent(EVENT_APPA_OUTRO, 5s);
break;
case EVENT_APPA_OUTRO:
Talk(SAY_APPA_OUTRO);
events.ScheduleEvent(EVENT_APPA_OUTRO_CROWD, 3000);
events.ScheduleEvent(EVENT_APPA_OUTRO_CROWD, 3s);
break;
case EVENT_APPA_OUTRO_CROWD:
EmoteCrowd();
events.ScheduleEvent(EVENT_APPA_OUTRO_END, 5000);
events.ScheduleEvent(EVENT_APPA_OUTRO_END, 5s);
break;
case EVENT_APPA_OUTRO_END: // Despawn for Apparition is handled via Areatrigger SAI (5m)
summons.DespawnAll();