aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp249
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp1
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp1
3 files changed, 112 insertions, 139 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp
index f8adc261570..e1bb2798032 100644
--- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp
+++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp
@@ -51,183 +51,154 @@ enum Creatures
NPC_FOCUS_FIRE = 18374
};
-class boss_shirrak_the_dead_watcher : public CreatureScript
+struct boss_shirrak_the_dead_watcher : public BossAI
{
-public:
- boss_shirrak_the_dead_watcher() : CreatureScript("boss_shirrak_the_dead_watcher") { }
-
- CreatureAI* GetAI(Creature* creature) const override
+ boss_shirrak_the_dead_watcher(Creature* creature) : BossAI(creature, DATA_SHIRRAK_THE_DEAD_WATCHER)
{
- return GetAuchenaiCryptsAI<boss_shirrak_the_dead_watcherAI>(creature);
+ Initialize();
}
- struct boss_shirrak_the_dead_watcherAI : public ScriptedAI
+ void Initialize()
{
- boss_shirrak_the_dead_watcherAI(Creature* creature) : ScriptedAI(creature)
- {
- Initialize();
- }
+ Inhibitmagic_Timer = 0;
+ Attractmagic_Timer = 28000;
+ Carnivorousbite_Timer = 10000;
+ FocusFire_Timer = 17000;
+ FocusedTargetGUID.Clear();
+ }
- void Initialize()
- {
- Inhibitmagic_Timer = 0;
- Attractmagic_Timer = 28000;
- Carnivorousbite_Timer = 10000;
- FocusFire_Timer = 17000;
- FocusedTargetGUID.Clear();
- }
+ uint32 Inhibitmagic_Timer;
+ uint32 Attractmagic_Timer;
+ uint32 Carnivorousbite_Timer;
+ uint32 FocusFire_Timer;
- uint32 Inhibitmagic_Timer;
- uint32 Attractmagic_Timer;
- uint32 Carnivorousbite_Timer;
- uint32 FocusFire_Timer;
+ ObjectGuid FocusedTargetGUID;
- ObjectGuid FocusedTargetGUID;
+ void Reset() override
+ {
+ Initialize();
+ _Reset();
+ }
- void Reset() override
+ void JustSummoned(Creature* summoned) override
+ {
+ if (summoned && summoned->GetEntry() == NPC_FOCUS_FIRE)
{
- Initialize();
- }
+ summoned->CastSpell(summoned, SPELL_FOCUS_FIRE_VISUAL, false);
+ summoned->SetFaction(me->GetFaction());
+ summoned->SetLevel(me->GetLevel());
+ summoned->AddUnitState(UNIT_STATE_ROOT);
- void JustEngagedWith(Unit* /*who*/) override
- { }
+ if (Unit* pFocusedTarget = ObjectAccessor::GetUnit(*me, FocusedTargetGUID))
+ summoned->AI()->AttackStart(pFocusedTarget);
+ }
+ BossAI::JustSummoned(summoned);
+ }
- void JustSummoned(Creature* summoned) override
+ void UpdateAI(uint32 diff) override
+ {
+ //Inhibitmagic_Timer
+ if (Inhibitmagic_Timer <= diff)
{
- if (summoned && summoned->GetEntry() == NPC_FOCUS_FIRE)
+ instance->instance->DoOnPlayers([this](Player* i_pl)
{
- summoned->CastSpell(summoned, SPELL_FOCUS_FIRE_VISUAL, false);
- summoned->SetFaction(me->GetFaction());
- summoned->SetLevel(me->GetLevel());
- summoned->AddUnitState(UNIT_STATE_ROOT);
+ float dist = i_pl->GetDistance(me);
+ if (i_pl->IsAlive() && i_pl->GetDistance(me) < 45.0f)
+ {
+ i_pl->RemoveAurasDueToSpell(SPELL_INHIBITMAGIC);
+ me->AddAura(SPELL_INHIBITMAGIC, i_pl);
+ if (dist < 35)
+ me->AddAura(SPELL_INHIBITMAGIC, i_pl);
+ if (dist < 25)
+ me->AddAura(SPELL_INHIBITMAGIC, i_pl);
+ if (dist < 15)
+ me->AddAura(SPELL_INHIBITMAGIC, i_pl);
+ }
+ });
+ Inhibitmagic_Timer = 3000 + (rand32() % 1000);
+ } else Inhibitmagic_Timer -= diff;
- if (Unit* pFocusedTarget = ObjectAccessor::GetUnit(*me, FocusedTargetGUID))
- summoned->AI()->AttackStart(pFocusedTarget);
- }
- }
+ //Return since we have no target
+ if (!UpdateVictim())
+ return;
- void UpdateAI(uint32 diff) override
+ //Attractmagic_Timer
+ if (Attractmagic_Timer <= diff)
{
- //Inhibitmagic_Timer
- if (Inhibitmagic_Timer <= diff)
- {
- me->GetMap()->DoOnPlayers([this](Player* player)
- {
- float dist = player->GetDistance(me);
-
- if (player->IsAlive() && dist < 45.f)
- {
- player->RemoveAurasDueToSpell(SPELL_INHIBITMAGIC);
- me->AddAura(SPELL_INHIBITMAGIC, player);
- if (dist < 35)
- me->AddAura(SPELL_INHIBITMAGIC, player);
- if (dist < 25)
- me->AddAura(SPELL_INHIBITMAGIC, player);
- if (dist < 15)
- me->AddAura(SPELL_INHIBITMAGIC, player);
- }
- });
- Inhibitmagic_Timer = 3000 + (rand32() % 1000);
- } else Inhibitmagic_Timer -= diff;
-
- //Return since we have no target
- if (!UpdateVictim())
- return;
-
- //Attractmagic_Timer
- if (Attractmagic_Timer <= diff)
- {
- DoCast(me, SPELL_ATTRACTMAGIC);
- Attractmagic_Timer = 30000;
- Carnivorousbite_Timer = 1500;
- } else Attractmagic_Timer -= diff;
+ DoCast(me, SPELL_ATTRACTMAGIC);
+ Attractmagic_Timer = 30000;
+ Carnivorousbite_Timer = 1500;
+ } else Attractmagic_Timer -= diff;
- //Carnivorousbite_Timer
- if (Carnivorousbite_Timer <= diff)
- {
- DoCast(me, SPELL_CARNIVOROUSBITE);
- Carnivorousbite_Timer = 10000;
- } else Carnivorousbite_Timer -= diff;
+ //Carnivorousbite_Timer
+ if (Carnivorousbite_Timer <= diff)
+ {
+ DoCast(me, SPELL_CARNIVOROUSBITE);
+ Carnivorousbite_Timer = 10000;
+ } else Carnivorousbite_Timer -= diff;
- //FocusFire_Timer
- if (FocusFire_Timer <= diff)
+ //FocusFire_Timer
+ if (FocusFire_Timer <= diff)
+ {
+ // Summon Focus Fire & Emote
+ Unit* target = SelectTarget(SelectTargetMethod::Random, 1);
+ if (target && target->GetTypeId() == TYPEID_PLAYER && target->IsAlive())
{
- // Summon Focus Fire & Emote
- Unit* target = SelectTarget(SelectTargetMethod::Random, 1);
- if (target && target->GetTypeId() == TYPEID_PLAYER && target->IsAlive())
- {
- FocusedTargetGUID = target->GetGUID();
- me->SummonCreature(NPC_FOCUS_FIRE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 5500ms);
- Talk(EMOTE_FOCUSED, target);
- }
- FocusFire_Timer = 15000 + (rand32() % 5000);
- } else FocusFire_Timer -= diff;
-
- DoMeleeAttackIfReady();
- }
- };
+ FocusedTargetGUID = target->GetGUID();
+ me->SummonCreature(NPC_FOCUS_FIRE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 5500ms);
+ Talk(EMOTE_FOCUSED, target);
+ }
+ FocusFire_Timer = 15000 + (rand32() % 5000);
+ } else FocusFire_Timer -= diff;
+ DoMeleeAttackIfReady();
+ }
};
-class npc_focus_fire : public CreatureScript
+struct npc_focus_fire : public ScriptedAI
{
-public:
- npc_focus_fire() : CreatureScript("npc_focus_fire") { }
-
- CreatureAI* GetAI(Creature* creature) const override
+ npc_focus_fire(Creature* creature) : ScriptedAI(creature)
{
- return GetAuchenaiCryptsAI<npc_focus_fireAI>(creature);
+ Initialize();
}
- struct npc_focus_fireAI : public ScriptedAI
+ void Initialize()
{
- npc_focus_fireAI(Creature* creature) : ScriptedAI(creature)
- {
- Initialize();
- }
-
- void Initialize()
- {
- FieryBlast_Timer = 3000 + (rand32() % 1000);
- fiery1 = fiery2 = true;
- }
+ FieryBlast_Timer = 3000 + (rand32() % 1000);
+ fiery1 = fiery2 = true;
+ }
- uint32 FieryBlast_Timer;
- bool fiery1, fiery2;
+ uint32 FieryBlast_Timer;
+ bool fiery1, fiery2;
- void Reset() override
- {
- Initialize();
- }
+ void Reset() override
+ {
+ Initialize();
+ }
- void JustEngagedWith(Unit* /*who*/) override
- { }
+ void UpdateAI(uint32 diff) override
+ {
+ //Return since we have no target
+ if (!UpdateVictim())
+ return;
- void UpdateAI(uint32 diff) override
+ //FieryBlast_Timer
+ if (fiery2 && FieryBlast_Timer <= diff)
{
- //Return since we have no target
- if (!UpdateVictim())
- return;
-
- //FieryBlast_Timer
- if (fiery2 && FieryBlast_Timer <= diff)
- {
- DoCast(me, SPELL_FIERY_BLAST);
+ DoCast(me, SPELL_FIERY_BLAST);
- if (fiery1) fiery1 = false;
- else if (fiery2) fiery2 = false;
+ if (fiery1) fiery1 = false;
+ else if (fiery2) fiery2 = false;
- FieryBlast_Timer = 1000;
- } else FieryBlast_Timer -= diff;
-
- DoMeleeAttackIfReady();
- }
- };
+ FieryBlast_Timer = 1000;
+ } else FieryBlast_Timer -= diff;
+ DoMeleeAttackIfReady();
+ }
};
void AddSC_boss_shirrak_the_dead_watcher()
{
- new boss_shirrak_the_dead_watcher();
- new npc_focus_fire();
+ RegisterAuchenaiCryptsCreatureAI(boss_shirrak_the_dead_watcher);
+ RegisterAuchenaiCryptsCreatureAI(npc_focus_fire);
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp
index d9d5ffcc551..b80e8c845f9 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp
@@ -46,6 +46,7 @@ public:
{
counter = DATA_FLAMECALLER_000;
LoadObjectData(creatureData, nullptr);
+ SetBossNumber(EncounterCount);
}
void OnCreatureCreate(Creature* creature) override
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp b/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp
index d78caa3c364..0529b427415 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp
@@ -30,6 +30,7 @@ class instance_the_botanica : public InstanceMapScript
instance_the_botanica_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
+ SetBossNumber(EncounterCount);
}
void OnCreatureCreate(Creature* creature) override