aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp216
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp34
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp43
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp118
4 files changed, 207 insertions, 204 deletions
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp
index b10edbf31c9..be92981a0a1 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp
@@ -15,93 +15,112 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/*
- * Comment: MAYBE need more improve the "Raptor Call".
- */
-
#include "ScriptMgr.h"
#include "drak_tharon_keep.h"
+#include "Containers.h"
#include "InstanceScript.h"
#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
-enum Spells
+enum DredTexts
{
- SPELL_BELLOWING_ROAR = 22686, // fears the group, can be resisted/dispelled
- SPELL_GRIEVOUS_BITE = 48920,
- SPELL_MANGLING_SLASH = 48873, // cast on the current tank, adds debuf
- SPELL_FEARSOME_ROAR = 48849,
- SPELL_PIERCING_SLASH = 48878, // debuff --> Armor reduced by 75%
- SPELL_RAPTOR_CALL = 59416, // dummy
- SPELL_GUT_RIP = 49710,
- SPELL_REND = 13738
+ EMOTE_SLASH = 0
};
-enum Misc
+enum DredSpells
{
- ACTION_RAPTOR_KILLED = 1,
- DATA_RAPTORS_KILLED = 2
+ // Dred
+ SPELL_BELLOWING_ROAR = 22686,
+ SPELL_GRIEVOUS_BITE = 48920,
+ SPELL_FEARSOME_ROAR = 48849,
+ SPELL_RAPTOR_CALL = 59416,
+ SPELL_MULTI_SLASH = 48856,
+ SPELL_PIERCING_SLASH = 48878,
+ SPELL_MANGLING_SLASH = 48873,
+
+ // Raptors
+ SPELL_GUT_RIP = 49710,
+ SPELL_REND = 13738
};
-enum Events
+enum DredEvents
{
- EVENT_BELLOWING_ROAR = 1,
+ EVENT_BELLOWING_ROAR = 1,
EVENT_GRIEVOUS_BITE,
- EVENT_MANGLING_SLASH,
EVENT_FEARSOME_ROAR,
+ EVENT_RAPTOR_CALL,
+ EVENT_MULTI_SLASH,
EVENT_PIERCING_SLASH,
- EVENT_RAPTOR_CALL
+ EVENT_MANGLING_SLASH
};
-struct boss_king_dred : public BossAI
+enum DredMisc
{
- boss_king_dred(Creature* creature) : BossAI(creature, DATA_KING_DRED)
- {
- Initialize();
- }
+ ACTION_RAPTOR_KILLED = 1,
+ DATA_RAPTORS_KILLED = 2
+};
- void Initialize()
- {
- raptorsKilled = 0;
- }
+// 27483 - King Dred
+struct boss_king_dred : public BossAI
+{
+ boss_king_dred(Creature* creature) : BossAI(creature, DATA_KING_DRED), _raptorsKilled(0) { }
void Reset() override
{
- Initialize();
_Reset();
+ _raptorsKilled = 0;
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
- events.ScheduleEvent(EVENT_BELLOWING_ROAR, 33s);
- events.ScheduleEvent(EVENT_GRIEVOUS_BITE, 20s);
- events.ScheduleEvent(EVENT_MANGLING_SLASH, 18500ms);
+ events.ScheduleEvent(EVENT_BELLOWING_ROAR, 15s, 25s);
+ events.ScheduleEvent(EVENT_GRIEVOUS_BITE, 15s, 20s);
events.ScheduleEvent(EVENT_FEARSOME_ROAR, 10s, 20s);
- events.ScheduleEvent(EVENT_PIERCING_SLASH, 15s);
- events.ScheduleEvent(EVENT_RAPTOR_CALL, 20s, 25s);
+ events.ScheduleEvent(EVENT_RAPTOR_CALL, 15s, 20s);
+ events.ScheduleEvent(EVENT_MULTI_SLASH, 18s, 22s);
+ }
+
+ void OnSpellCast(SpellInfo const* spell) override
+ {
+ if (spell->Id == SPELL_MULTI_SLASH)
+ Talk(EMOTE_SLASH);
+ }
+
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
+ {
+ if (spellInfo->Id == SPELL_MULTI_SLASH)
+ {
+ events.ScheduleEvent(EVENT_PIERCING_SLASH, 1s);
+ events.ScheduleEvent(EVENT_MANGLING_SLASH, 3s);
+ }
+
+ if (spellInfo->Id == SPELL_RAPTOR_CALL)
+ {
+ /// @todo: This is wrong. Engage nearby alive not yet engaged raptor instead
+ float x, y, z;
+
+ me->GetClosePoint(x, y, z, me->GetCombatReach() / 3, 10.0f);
+ me->SummonCreature(RAND(NPC_DRAKKARI_GUTRIPPER, NPC_DRAKKARI_SCYTHECLAW), x, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 1s);
+ }
}
void DoAction(int32 action) override
{
if (action == ACTION_RAPTOR_KILLED)
- ++raptorsKilled;
+ ++_raptorsKilled;
}
uint32 GetData(uint32 type) const override
{
if (type == DATA_RAPTORS_KILLED)
- return raptorsKilled;
+ return _raptorsKilled;
return 0;
}
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- }
-
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -118,32 +137,29 @@ struct boss_king_dred : public BossAI
{
case EVENT_BELLOWING_ROAR:
DoCastAOE(SPELL_BELLOWING_ROAR);
- events.ScheduleEvent(EVENT_BELLOWING_ROAR, 33s);
+ events.Repeat(15s, 20s);
break;
case EVENT_GRIEVOUS_BITE:
DoCastVictim(SPELL_GRIEVOUS_BITE);
- events.ScheduleEvent(EVENT_GRIEVOUS_BITE, 20s);
- break;
- case EVENT_MANGLING_SLASH:
- DoCastVictim(SPELL_MANGLING_SLASH);
- events.ScheduleEvent(EVENT_MANGLING_SLASH, 18500ms);
+ events.Repeat(20s);
break;
case EVENT_FEARSOME_ROAR:
DoCastAOE(SPELL_FEARSOME_ROAR);
- events.ScheduleEvent(EVENT_FEARSOME_ROAR, 10s, 20s);
+ events.Repeat(10s, 20s);
+ break;
+ case EVENT_RAPTOR_CALL:
+ DoCastSelf(SPELL_RAPTOR_CALL);
+ events.Repeat(30s);
+ break;
+ case EVENT_MULTI_SLASH:
+ DoCastSelf(SPELL_MULTI_SLASH);
+ events.Repeat(18s, 22s);
break;
case EVENT_PIERCING_SLASH:
DoCastVictim(SPELL_PIERCING_SLASH);
- events.ScheduleEvent(EVENT_PIERCING_SLASH, 15s);
break;
- case EVENT_RAPTOR_CALL:
- DoCastVictim(SPELL_RAPTOR_CALL);
-
- float x, y, z;
-
- me->GetClosePoint(x, y, z, me->GetCombatReach() / 3, 10.0f);
- me->SummonCreature(RAND(NPC_DRAKKARI_GUTRIPPER, NPC_DRAKKARI_SCYTHECLAW), x, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 1s);
- events.ScheduleEvent(EVENT_RAPTOR_CALL, 20s, 25s);
+ case EVENT_MANGLING_SLASH:
+ DoCastVictim(SPELL_MANGLING_SLASH);
break;
default:
break;
@@ -157,29 +173,32 @@ struct boss_king_dred : public BossAI
}
private:
- uint8 raptorsKilled;
+ uint8 _raptorsKilled;
};
+// 26641 - Drakkari Gutripper
struct npc_drakkari_gutripper : public ScriptedAI
{
- npc_drakkari_gutripper(Creature* creature) : ScriptedAI(creature)
+ npc_drakkari_gutripper(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
+
+ void Reset() override
{
- Initialize();
- instance = me->GetInstanceScript();
+ _scheduler.CancelAll();
}
- void Initialize()
+ void JustEngagedWith(Unit* /*who*/) override
{
- GutRipTimer = urand(10000, 15000);
+ _scheduler.Schedule(10s, 15s, [this](TaskContext task)
+ {
+ DoCastVictim(SPELL_GUT_RIP);
+ task.Repeat(10s, 15s);
+ });
}
- InstanceScript* instance;
-
- uint32 GutRipTimer;
-
- void Reset() override
+ void JustDied(Unit* /*killer*/) override
{
- Initialize();
+ if (Creature* dred = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_KING_DRED)))
+ dred->AI()->DoAction(ACTION_RAPTOR_KILLED);
}
void UpdateAI(uint32 diff) override
@@ -187,44 +206,39 @@ struct npc_drakkari_gutripper : public ScriptedAI
if (!UpdateVictim())
return;
- if (GutRipTimer <= diff)
- {
- DoCastVictim(SPELL_GUT_RIP, false);
- GutRipTimer = urand(10000, 15000);
- }
- else
- GutRipTimer -= diff;
+ _scheduler.Update(diff);
DoMeleeAttackIfReady();
}
- void JustDied(Unit* /*killer*/) override
- {
- if (Creature* Dred = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KING_DRED)))
- Dred->AI()->DoAction(ACTION_RAPTOR_KILLED);
- }
+private:
+ TaskScheduler _scheduler;
+ InstanceScript* _instance;
};
+// 26628 - Drakkari Scytheclaw
struct npc_drakkari_scytheclaw : public ScriptedAI
{
- npc_drakkari_scytheclaw(Creature* creature) : ScriptedAI(creature)
+ npc_drakkari_scytheclaw(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
+
+ void Reset() override
{
- Initialize();
- instance = me->GetInstanceScript();
+ _scheduler.CancelAll();
}
- void Initialize()
+ void JustEngagedWith(Unit* /*who*/) override
{
- uiRendTimer = urand(10000, 15000);
+ _scheduler.Schedule(10s, 15s, [this](TaskContext task)
+ {
+ DoCastVictim(SPELL_REND);
+ task.Repeat(10s, 15s);
+ });
}
- InstanceScript* instance;
-
- uint32 uiRendTimer;
-
- void Reset() override
+ void JustDied(Unit* /*killer*/) override
{
- Initialize();
+ if (Creature* dred = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_KING_DRED)))
+ dred->AI()->DoAction(ACTION_RAPTOR_KILLED);
}
void UpdateAI(uint32 diff) override
@@ -232,22 +246,14 @@ struct npc_drakkari_scytheclaw : public ScriptedAI
if (!UpdateVictim())
return;
- if (uiRendTimer <= diff)
- {
- DoCastVictim(SPELL_REND, false);
- uiRendTimer = urand(10000, 15000);
- }
- else
- uiRendTimer -= diff;
+ _scheduler.Update(diff);
DoMeleeAttackIfReady();
}
- void JustDied(Unit* /*killer*/) override
- {
- if (Creature* Dred = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KING_DRED)))
- Dred->AI()->DoAction(ACTION_RAPTOR_KILLED);
- }
+private:
+ TaskScheduler _scheduler;
+ InstanceScript* _instance;
};
class achievement_king_dred : public AchievementCriteriaScript
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
index 684982ff1f4..acdb2578d26 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
@@ -24,7 +24,7 @@
#include "ScriptedCreature.h"
#include "SpellScript.h"
-enum Yells
+enum NovosTexts
{
SAY_AGGRO = 0,
SAY_KILL = 1,
@@ -34,7 +34,7 @@ enum Yells
EMOTE_SUMMONING_ADDS = 5 // unused
};
-enum Spells
+enum NovosSpells
{
SPELL_BEAM_CHANNEL = 52106,
SPELL_ARCANE_FIELD = 47346,
@@ -52,7 +52,7 @@ enum Spells
SPELL_SUMMON_MINIONS = 59910
};
-enum Misc
+enum NovosMisc
{
ACTION_RESET_CRYSTALS,
ACTION_ACTIVATE_CRYSTAL,
@@ -77,6 +77,7 @@ const SummonerInfo summoners[] =
#define MAX_Y_COORD_OH_NOVOS -771.95f
+// 26631 - Novos the Summoner
struct boss_novos : public BossAI
{
boss_novos(Creature* creature) : BossAI(creature, DATA_NOVOS)
@@ -148,12 +149,12 @@ struct boss_novos : public BossAI
{
case EVENT_SUMMON_MINIONS:
DoCast(SPELL_SUMMON_MINIONS);
- events.ScheduleEvent(EVENT_SUMMON_MINIONS, 15s);
+ events.Repeat(15s);
break;
case EVENT_ATTACK:
if (Unit* victim = SelectTarget(SelectTargetMethod::Random))
DoCast(victim, RAND(SPELL_ARCANE_BLAST, SPELL_BLIZZARD, SPELL_FROSTBOLT, SPELL_WRATH_OF_MISERY));
- events.ScheduleEvent(EVENT_ATTACK, 3s);
+ events.Repeat(3s);
break;
default:
break;
@@ -274,6 +275,7 @@ private:
bool _bubbled;
};
+// 26712 - Crystal Channel Target
struct npc_crystal_channel_target : public ScriptedAI
{
npc_crystal_channel_target(Creature* creature) : ScriptedAI(creature)
@@ -334,17 +336,6 @@ private:
uint32 _temp;
};
-class achievement_oh_novos : public AchievementCriteriaScript
-{
-public:
- achievement_oh_novos() : AchievementCriteriaScript("achievement_oh_novos") { }
-
- bool OnCheck(Player* /*player*/, Unit* target) override
- {
- return target && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(DATA_NOVOS_ACHIEV);
- }
-};
-
// 59910 - Summon Minions
class spell_novos_summon_minions : public SpellScript
{
@@ -367,6 +358,17 @@ class spell_novos_summon_minions : public SpellScript
}
};
+class achievement_oh_novos : public AchievementCriteriaScript
+{
+public:
+ achievement_oh_novos() : AchievementCriteriaScript("achievement_oh_novos") { }
+
+ bool OnCheck(Player* /*player*/, Unit* target) override
+ {
+ return target && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(DATA_NOVOS_ACHIEV);
+ }
+};
+
void AddSC_boss_novos()
{
RegisterDrakTharonKeepCreatureAI(boss_novos);
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
index 8fd09c0642b..ea0d311b30c 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
@@ -15,6 +15,10 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+/*
+ * Known Issues: Spell 49356 and 53463 will be interrupted for an unknown reason
+ */
+
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
@@ -22,11 +26,16 @@
#include "Player.h"
#include "drak_tharon_keep.h"
-/*
- * Known Issues: Spell 49356 and 53463 will be interrupted for an unknown reason
- */
+enum TharonjaTexts
+{
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_FLESH = 2,
+ SAY_SKELETON = 3,
+ SAY_DEATH = 4
+};
-enum Spells
+enum TharonjaSpells
{
// Skeletal Spells (phase 1)
SPELL_CURSE_OF_LIFE = 49527,
@@ -45,7 +54,7 @@ enum Spells
SPELL_DUMMY = 49551
};
-enum Events
+enum TharonjaEvents
{
EVENT_CURSE_OF_LIFE = 1,
EVENT_RAIN_OF_FIRE,
@@ -61,20 +70,12 @@ enum Events
EVENT_GOING_SKELETAL
};
-enum Yells
-{
- SAY_AGGRO = 0,
- SAY_KILL = 1,
- SAY_FLESH = 2,
- SAY_SKELETON = 3,
- SAY_DEATH = 4
-};
-
-enum Models
+enum TharonjaMisc
{
MODEL_FLESH = 27073
};
+// 26632 - The Prophet Tharon'ja
struct boss_tharon_ja : public BossAI
{
boss_tharon_ja(Creature* creature) : BossAI(creature, DATA_THARON_JA) { }
@@ -128,30 +129,30 @@ struct boss_tharon_ja : public BossAI
case EVENT_CURSE_OF_LIFE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
DoCast(target, SPELL_CURSE_OF_LIFE);
- events.ScheduleEvent(EVENT_CURSE_OF_LIFE, 10s, 15s);
+ events.Repeat(10s, 15s);
return;
case EVENT_SHADOW_VOLLEY:
DoCastVictim(SPELL_SHADOW_VOLLEY);
- events.ScheduleEvent(EVENT_SHADOW_VOLLEY, 8s, 10s);
+ events.Repeat(8s, 10s);
return;
case EVENT_RAIN_OF_FIRE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
DoCast(target, SPELL_RAIN_OF_FIRE);
- events.ScheduleEvent(EVENT_RAIN_OF_FIRE, 14s, 18s);
+ events.Repeat(14s, 18s);
return;
case EVENT_LIGHTNING_BREATH:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
DoCast(target, SPELL_LIGHTNING_BREATH);
- events.ScheduleEvent(EVENT_LIGHTNING_BREATH, 6s, 7s);
+ events.Repeat(6s, 7s);
return;
case EVENT_EYE_BEAM:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
DoCast(target, SPELL_EYE_BEAM);
- events.ScheduleEvent(EVENT_EYE_BEAM, 4s, 6s);
+ events.Repeat(4s, 6s);
return;
case EVENT_POISON_CLOUD:
DoCastAOE(SPELL_POISON_CLOUD);
- events.ScheduleEvent(EVENT_POISON_CLOUD, 10s, 12s);
+ events.Repeat(10s, 12s);
return;
case EVENT_DECAY_FLESH:
DoCastAOE(SPELL_DECAY_FLESH);
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
index e90e23b2cf0..90c4b3b8f75 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
@@ -24,7 +24,16 @@
#include "SpellAuraEffects.h"
#include "SpellScript.h"
-enum Spells
+enum TrollgoreTexts
+{
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_CONSUME = 2,
+ SAY_EXPLODE = 3,
+ SAY_DEATH = 4
+};
+
+enum TrollgoreSpells
{
SPELL_INFECTED_WOUND = 49637,
SPELL_CRUSH = 49639,
@@ -43,48 +52,32 @@ enum Spells
#define SPELL_CONSUME_BUFF_HELPER DUNGEON_MODE<uint32>(SPELL_CONSUME_BUFF, SPELL_CONSUME_BUFF_H)
-enum Yells
+enum TrollgoreEvents
{
- SAY_AGGRO = 0,
- SAY_KILL = 1,
- SAY_CONSUME = 2,
- SAY_EXPLODE = 3,
- SAY_DEATH = 4
+ EVENT_CONSUME = 1,
+ EVENT_CRUSH,
+ EVENT_INFECTED_WOUND,
+ EVENT_CORPSE_EXPLODE,
+ EVENT_SPAWN
};
-enum Misc
+enum TrollgoreMisc
{
DATA_CONSUMPTION_JUNCTION = 1,
POINT_LANDING = 1
};
-enum Events
-{
- EVENT_CONSUME = 1,
- EVENT_CRUSH,
- EVENT_INFECTED_WOUND,
- EVENT_CORPSE_EXPLODE,
- EVENT_SPAWN
-};
-
Position const Landing = { -263.0534f, -660.8658f, 26.50903f, 0.0f };
+// 26630 - Trollgore
struct boss_trollgore : public BossAI
{
- boss_trollgore(Creature* creature) : BossAI(creature, DATA_TROLLGORE)
- {
- Initialize();
- }
-
- void Initialize()
- {
- _consumptionJunction = true;
- }
+ boss_trollgore(Creature* creature) : BossAI(creature, DATA_TROLLGORE), _consumptionJunction(true) { }
void Reset() override
{
_Reset();
- Initialize();
+ _consumptionJunction = true;
}
void JustEngagedWith(Unit* who) override
@@ -99,6 +92,34 @@ struct boss_trollgore : public BossAI
events.ScheduleEvent(EVENT_SPAWN, 30s, 40s);
}
+ uint32 GetData(uint32 type) const override
+ {
+ if (type == DATA_CONSUMPTION_JUNCTION)
+ return _consumptionJunction ? 1 : 0;
+
+ return 0;
+ }
+
+ void JustSummoned(Creature* summon) override
+ {
+ summon->GetMotionMaster()->MovePoint(POINT_LANDING, Landing);
+ summons.Summon(summon);
+ }
+
+ void KilledUnit(Unit* victim) override
+ {
+ if (victim->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ Talk(SAY_SLAY);
+ }
+
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ Talk(SAY_DEATH);
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -116,27 +137,27 @@ struct boss_trollgore : public BossAI
case EVENT_CONSUME:
Talk(SAY_CONSUME);
DoCastAOE(SPELL_CONSUME);
- events.ScheduleEvent(EVENT_CONSUME, 15s);
+ events.Repeat(15s);
break;
case EVENT_CRUSH:
DoCastVictim(SPELL_CRUSH);
- events.ScheduleEvent(EVENT_CRUSH, 10s, 15s);
+ events.Repeat(10s, 15s);
break;
case EVENT_INFECTED_WOUND:
DoCastVictim(SPELL_INFECTED_WOUND);
- events.ScheduleEvent(EVENT_INFECTED_WOUND, 25s, 35s);
+ events.Repeat(25s, 35s);
break;
case EVENT_CORPSE_EXPLODE:
Talk(SAY_EXPLODE);
DoCastAOE(SPELL_CORPSE_EXPLODE);
- events.ScheduleEvent(EVENT_CORPSE_EXPLODE, 15s, 19s);
+ events.Repeat(15s, 19s);
break;
case EVENT_SPAWN:
for (uint8 i = 0; i < 3; ++i)
if (Creature* trigger = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TROLLGORE_INVADER_SUMMONER_1 + i)))
trigger->CastSpell(trigger, RAND(SPELL_SUMMON_INVADER_A, SPELL_SUMMON_INVADER_B, SPELL_SUMMON_INVADER_C), me->GetGUID());
- events.ScheduleEvent(EVENT_SPAWN, 30s, 40s);
+ events.Repeat(30s, 40s);
break;
default:
break;
@@ -156,38 +177,11 @@ struct boss_trollgore : public BossAI
DoMeleeAttackIfReady();
}
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- Talk(SAY_DEATH);
- }
-
- uint32 GetData(uint32 type) const override
- {
- if (type == DATA_CONSUMPTION_JUNCTION)
- return _consumptionJunction ? 1 : 0;
-
- return 0;
- }
-
- void KilledUnit(Unit* victim) override
- {
- if (victim->GetTypeId() != TYPEID_PLAYER)
- return;
-
- Talk(SAY_KILL);
- }
-
- void JustSummoned(Creature* summon) override
- {
- summon->GetMotionMaster()->MovePoint(POINT_LANDING, Landing);
- summons.Summon(summon);
- }
-
- private:
- bool _consumptionJunction;
+private:
+ bool _consumptionJunction;
};
+// 27709, 27753, 27754 - Drakkari Invader
struct npc_drakkari_invader : public ScriptedAI
{
npc_drakkari_invader(Creature* creature) : ScriptedAI(creature) { }