fix(Scripts/AzjolNerub): Rework Kirthik the Gatewatcher event (#23763)

This commit is contained in:
Andrew
2025-11-18 02:51:04 -03:00
committed by GitHub
parent 4e619ffa0c
commit 5978d33312
4 changed files with 74 additions and 18 deletions

View File

@@ -29,7 +29,11 @@ enum ANData
DATA_KRIKTHIR = 0,
DATA_HADRONOX = 1,
DATA_ANUBARAK = 2,
MAX_ENCOUNTERS = 3
MAX_ENCOUNTERS = 3,
DATA_GASHRA = 4,
DATA_NARJIL = 5,
DATA_SILTHIK = 6
};
enum ANIds

View File

@@ -16,6 +16,7 @@
*/
#include "AchievementCriteriaScript.h"
#include "CreatureGroups.h"
#include "CreatureScript.h"
#include "ScriptedCreature.h"
#include "azjol_nerub.h"
@@ -75,16 +76,6 @@ public:
{
BossAI::Reset();
me->SummonCreature(NPC_WATCHER_NARJIL, 511.8f, 666.493f, 776.278f, 0.977f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_SHADOWCASTER, 511.63f, 672.44f, 775.71f, 0.90f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_WARRIOR, 506.75f, 670.7f, 776.24f, 0.92f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_WATCHER_GASHRA, 526.66f, 663.605f, 775.805f, 1.23f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_SKIRMISHER, 522.91f, 660.18f, 776.19f, 1.28f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_WARRIOR, 528.14f, 659.72f, 776.14f, 1.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_WATCHER_SILTHIK, 543.826f, 665.123f, 776.245f, 1.55f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_SKIRMISHER, 547.5f, 669.96f, 776.1f, 2.3f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
me->SummonCreature(NPC_SHADOWCASTER, 548.64f, 664.27f, 776.74f, 1.77f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
ScheduleHealthCheckEvent(25, [&] {
DoCastSelf(SPELL_FRENZY, true);
@@ -100,6 +91,16 @@ public:
_canTalk = true;
_minionInCombat = false;
Creature* narjil = instance->GetCreature(DATA_NARJIL);
Creature* gashra = instance->GetCreature(DATA_GASHRA);
Creature* silthik = instance->GetCreature(DATA_SILTHIK);
for (Creature* watcher : { narjil, gashra, silthik })
{
if (watcher && watcher->GetFormation())
watcher->GetFormation()->RespawnFormation(true);
}
}
void MoveInLineOfSight(Unit* who) override
@@ -142,7 +143,17 @@ public:
uint32 GetData(uint32 data) const override
{
if (data == me->GetEntry())
return summons.HasEntry(NPC_WATCHER_NARJIL) && summons.HasEntry(NPC_WATCHER_GASHRA) && summons.HasEntry(NPC_WATCHER_SILTHIK);
{
Creature* narjil = instance->GetCreature(DATA_NARJIL);
Creature* gashra = instance->GetCreature(DATA_GASHRA);
Creature* silthik = instance->GetCreature(DATA_SILTHIK);
if (!narjil || !gashra || !silthik)
return false;
return narjil->IsAlive() && gashra->IsAlive() && silthik->IsAlive();
}
return 0;
}
@@ -192,12 +203,6 @@ public:
}
}
void JustSummoned(Creature* summon) override
{
summon->SetNoCallAssistance(true);
summons.Summon(summon);
}
void SummonedCreatureDies(Creature* summon, Unit*) override
{
summons.Despawn(summon);

View File

@@ -37,6 +37,9 @@ ObjectData const creatureData[] =
{ NPC_KRIKTHIR_THE_GATEWATCHER, DATA_KRIKTHIR },
{ NPC_HADRONOX, DATA_HADRONOX },
{ NPC_ANUBARAK, DATA_ANUBARAK },
{ NPC_WATCHER_GASHRA, DATA_GASHRA },
{ NPC_WATCHER_NARJIL, DATA_NARJIL },
{ NPC_WATCHER_SILTHIK, DATA_SILTHIK },
{ 0, 0 }
};