diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-09-23 09:59:58 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-09-30 20:17:18 +0200 |
commit | 8cadc10dd56609750a573f417c51a2d9eb2197cd (patch) | |
tree | a14fd6e0249f0067a20a258afd997874ca980de3 /src/server | |
parent | 29d639d311cec2581fb196fd50f8de53e76f7a7f (diff) |
Scripts: Fixed missing boss count initialization in The Slave Pens and The Botanica as well as incorrect map id assignment to Auchenai Crypts spawn groups
Closes #28278
(cherry picked from commit 01f0f83139e7c60ca8ef96edf8ab2b1534885d62)
Diffstat (limited to 'src/server')
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 |