fix(Scripts/AzjolNerub): Modernize Krikthir the Gatewatcher script (#22647)

Co-authored-by: sudlud <sudlud@users.noreply.github.com>
This commit is contained in:
Andrew
2025-09-06 10:21:00 -03:00
committed by GitHub
parent 119af32649
commit 46f12f78e0
5 changed files with 137 additions and 150 deletions
@@ -0,0 +1,29 @@
-- Remove heroic casts as it is already handled by spelldifficulty_dbc and add on aggro engage
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28729);
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(28729, 0, 0, 0, 0, 0, 100, 0, 2000, 6000, 15000, 20000, 0, 0, 11, 52524, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Narjil - In Combat - Cast \'Blinding Webs\''),
(28729, 0, 2, 0, 0, 0, 100, 0, 6000, 15000, 20000, 25000, 0, 0, 11, 52086, 0, 0, 0, 0, 0, 5, 30, 0, 0, 0, 0, 0, 0, 0, 'Watcher Narjil - In Combat - Cast \'Web Wrap\''),
(28729, 0, 3, 0, 0, 0, 100, 0, 4000, 12000, 9000, 15000, 0, 0, 11, 52469, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Narjil - In Combat - Cast \'Infected Bite\''),
(28729, 0, 5, 0, 8, 0, 100, 0, 52343, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Narjil - On Spellhit \'Krik`Thir Subboss Aggro Trigger\' - Set In Combat With Zone'),
(28729, 0, 6, 0, 0, 0, 100, 1, 500, 500, 0, 0, 0, 0, 39, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Narjil - In Combat - Call For Help (No Repeat)'),
(28729, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 205, 0, 1, 0, 0, 0, 0, 0, 0, 'Watcher Narjil - On Aggro - Do Action ID 1');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28730);
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(28730, 0, 0, 0, 0, 0, 100, 0, 2000, 6000, 15000, 20000, 0, 0, 11, 52470, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Gashra - In Combat - Cast \'Enrage\''),
(28730, 0, 1, 0, 0, 0, 100, 0, 6000, 15000, 20000, 25000, 0, 0, 11, 52086, 0, 0, 0, 0, 0, 5, 30, 0, 0, 0, 0, 0, 0, 0, 'Watcher Gashra - In Combat - Cast \'Web Wrap\''),
(28730, 0, 2, 0, 0, 0, 100, 0, 4000, 12000, 9000, 15000, 0, 0, 11, 52469, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Gashra - In Combat - Cast \'Infected Bite\''),
(28730, 0, 4, 0, 8, 0, 100, 0, 52343, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Gashra - On Spellhit \'Krik`Thir Subboss Aggro Trigger\' - Set In Combat With Zone'),
(28730, 0, 5, 0, 0, 0, 100, 1, 500, 500, 0, 0, 0, 0, 39, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Gashra - In Combat - Call For Help (No Repeat)'),
(28730, 0, 3, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 205, 0, 1, 0, 0, 0, 0, 0, 0, 'Watcher Gashra - On Aggro - Do Action ID 1');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28731);
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(28731, 0, 0, 0, 0, 0, 100, 0, 2000, 6000, 15000, 20000, 0, 0, 11, 52493, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Silthik - In Combat - Cast \'Poison Spray\''),
(28731, 0, 2, 0, 0, 0, 100, 0, 6000, 15000, 20000, 25000, 0, 0, 11, 52086, 0, 0, 0, 0, 0, 5, 30, 0, 0, 0, 0, 0, 0, 0, 'Watcher Silthik - In Combat - Cast \'Web Wrap\''),
(28731, 0, 3, 0, 0, 0, 100, 0, 4000, 12000, 9000, 15000, 0, 0, 11, 52469, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Silthik - In Combat - Cast \'Infected Bite\''),
(28731, 0, 5, 0, 8, 0, 100, 0, 52343, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Silthik - On Spellhit \'Krik`Thir Subboss Aggro Trigger\' - Set In Combat With Zone'),
(28731, 0, 6, 0, 0, 0, 100, 1, 500, 500, 0, 0, 0, 0, 39, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Watcher Silthik - In Combat - Call For Help (No Repeat)'),
(28731, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 205, 0, 1, 0, 0, 0, 0, 0, 0, 'Watcher Silthik - On Aggro - Do Action ID 1');
UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` &~ 33554432 WHERE `entry` IN (28684, 31612);
@@ -26,14 +26,17 @@
enum ANData enum ANData
{ {
DATA_KRIKTHIR_THE_GATEWATCHER_EVENT = 0, DATA_KRIKTHIR = 0,
DATA_HADRONOX_EVENT = 1, DATA_HADRONOX = 1,
DATA_ANUBARAK_EVENT = 2, DATA_ANUBARAK_EVENT = 2,
MAX_ENCOUNTERS = 3 MAX_ENCOUNTERS = 3
}; };
enum ANIds enum ANIds
{ {
NPC_WATCHER_NARJIL = 28729,
NPC_WATCHER_GASHRA = 28730,
NPC_WATCHER_SILTHIK = 28731,
NPC_SKITTERING_SWARMER = 28735, NPC_SKITTERING_SWARMER = 28735,
NPC_SKITTERING_INFECTIOR = 28736, NPC_SKITTERING_INFECTIOR = 28736,
NPC_KRIKTHIR_THE_GATEWATCHER = 28684, NPC_KRIKTHIR_THE_GATEWATCHER = 28684,
@@ -84,7 +84,7 @@ public:
struct boss_hadronoxAI : public BossAI struct boss_hadronoxAI : public BossAI
{ {
boss_hadronoxAI(Creature* creature) : BossAI(creature, DATA_HADRONOX_EVENT) boss_hadronoxAI(Creature* creature) : BossAI(creature, DATA_HADRONOX)
{ {
} }
@@ -99,7 +99,7 @@ public:
{ {
if (param == ACTION_START_EVENT) if (param == ACTION_START_EVENT)
{ {
instance->SetBossState(DATA_HADRONOX_EVENT, IN_PROGRESS); instance->SetBossState(DATA_HADRONOX, IN_PROGRESS);
me->setActive(true); me->setActive(true);
events.ScheduleEvent(EVENT_HADRONOX_MOVE1, 20s); events.ScheduleEvent(EVENT_HADRONOX_MOVE1, 20s);
events.ScheduleEvent(EVENT_HADRONOX_MOVE2, 40s); events.ScheduleEvent(EVENT_HADRONOX_MOVE2, 40s);
@@ -342,7 +342,7 @@ public:
PreventDefaultAction(); PreventDefaultAction();
Unit* owner = GetUnitOwner(); Unit* owner = GetUnitOwner();
if (InstanceScript* instance = owner->GetInstanceScript()) if (InstanceScript* instance = owner->GetInstanceScript())
if (instance->GetBossState(DATA_HADRONOX_EVENT) != DONE) if (!instance->IsBossDone(DATA_HADRONOX))
{ {
if (!owner->HasAura(SPELL_WEB_FRONT_DOORS)) if (!owner->HasAura(SPELL_WEB_FRONT_DOORS))
owner->CastSpell(owner, _spellEntry, true); owner->CastSpell(owner, _spellEntry, true);
@@ -29,24 +29,8 @@ enum Spells
SPELL_FRENZY = 28747 SPELL_FRENZY = 28747
}; };
enum Events
{
EVENT_KRIK_START_WAVE = 1,
EVENT_KRIK_SUMMON = 2,
EVENT_KRIK_MIND_FLAY = 3,
EVENT_KRIK_CURSE = 4,
EVENT_KRIK_HEALTH_CHECK = 5,
EVENT_KRIK_ENTER_COMBAT = 6,
EVENT_KILL_TALK = 7,
EVENT_CALL_ADDS = 8,
EVENT_KRIK_CHECK_EVADE = 9
};
enum Npcs enum Npcs
{ {
NPC_WATCHER_NARJIL = 28729,
NPC_WATCHER_GASHRA = 28730,
NPC_WATCHER_SILTHIK = 28731,
NPC_WARRIOR = 28732, NPC_WARRIOR = 28732,
NPC_SKIRMISHER = 28734, NPC_SKIRMISHER = 28734,
NPC_SHADOWCASTER = 28733 NPC_SHADOWCASTER = 28733
@@ -62,6 +46,12 @@ enum Yells
SAY_SEND_GROUP = 5 SAY_SEND_GROUP = 5
}; };
enum MiscActions
{
ACTION_MINION_ENGAGED = 1,
GROUP_SWARM = 1
};
class boss_krik_thir : public CreatureScript class boss_krik_thir : public CreatureScript
{ {
public: public:
@@ -69,18 +59,21 @@ public:
struct boss_krik_thirAI : public BossAI struct boss_krik_thirAI : public BossAI
{ {
boss_krik_thirAI(Creature* creature) : BossAI(creature, DATA_KRIKTHIR_THE_GATEWATCHER_EVENT) boss_krik_thirAI(Creature* creature) : BossAI(creature, DATA_KRIKTHIR)
{ {
_initTalk = false; _initTalk = false;
} _canTalk = true;
_minionInCombat = false;
EventMap events2; scheduler.SetValidator([this]
bool _initTalk; {
return !me->HasUnitState(UNIT_STATE_CASTING);
});
}
void Reset() override void Reset() override
{ {
BossAI::Reset(); BossAI::Reset();
events2.Reset();
me->SummonCreature(NPC_WATCHER_NARJIL, 511.8f, 666.493f, 776.278f, 0.977f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000); 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_SHADOWCASTER, 511.63f, 672.44f, 775.71f, 0.90f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
@@ -91,6 +84,22 @@ public:
me->SummonCreature(NPC_WATCHER_SILTHIK, 543.826f, 665.123f, 776.245f, 1.55f, 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_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); me->SummonCreature(NPC_SHADOWCASTER, 548.64f, 664.27f, 776.74f, 1.77f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
ScheduleHealthCheckEvent(25, [&] {
DoCastSelf(SPELL_FRENZY, true);
scheduler.CancelGroup(GROUP_SWARM);
scheduler.Schedule(7s, 17s, GROUP_SWARM, [&](TaskContext context)
{
Talk(SAY_SWARM);
DoCastAOE(SPELL_SWARM);
context.Repeat(20s);
});
});
_canTalk = true;
_minionInCombat = false;
} }
void MoveInLineOfSight(Unit* who) override void MoveInLineOfSight(Unit* who) override
@@ -103,21 +112,25 @@ public:
_initTalk = true; _initTalk = true;
Talk(SAY_PREFIGHT); Talk(SAY_PREFIGHT);
} }
}
if (events.Empty() && who->GetPositionZ() < 785.0f) void DoAction(int32 actionId) override
{
if (actionId == ACTION_MINION_ENGAGED && !_minionInCombat)
{ {
events2.ScheduleEvent(EVENT_KRIK_START_WAVE, 10s); _minionInCombat = true;
events2.ScheduleEvent(EVENT_KRIK_START_WAVE, 40s);
events2.ScheduleEvent(EVENT_KRIK_START_WAVE, 70s);
events2.ScheduleEvent(EVENT_KRIK_ENTER_COMBAT, 100s);
events2.ScheduleEvent(EVENT_KRIK_CHECK_EVADE, 5s);
events.ScheduleEvent(EVENT_KRIK_HEALTH_CHECK, 1s); for (Seconds const& timer : { 10s, 40s, 70s })
events.ScheduleEvent(EVENT_KRIK_MIND_FLAY, 13s); {
events.ScheduleEvent(EVENT_KRIK_SUMMON, 17s); me->m_Events.AddEventAtOffset([this] {
events.ScheduleEvent(EVENT_KRIK_CURSE, 8s); me->CastCustomSpell(SPELL_SUBBOSS_AGGRO_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, me, true);
events.ScheduleEvent(EVENT_CALL_ADDS, 1s); Talk(SAY_SEND_GROUP);
me->setActive(true); }, timer);
}
me->m_Events.AddEventAtOffset([this] {
me->SetInCombatWithZone();
}, 100s);
} }
} }
@@ -132,7 +145,28 @@ public:
{ {
BossAI::JustEngagedWith(who); BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO); Talk(SAY_AGGRO);
events2.Reset();
me->m_Events.KillAllEvents(false);
scheduler.Schedule(8s, 14s, [&](TaskContext context)
{
DoCastVictim(SPELL_MIND_FLAY);
if (!IsInFrenzy())
context.Repeat(8s, 14s);
else
context.Repeat(5s, 9s);
}).Schedule(10s, 13s, GROUP_SWARM, [&](TaskContext context)
{
Talk(SAY_SWARM);
DoCastAOE(SPELL_SWARM);
context.Repeat(26s, 30s);
});
ScheduleTimedEvent(27s, 35s, [&] {
DoCastRandomTarget(SPELL_CURSE_OF_FATIGUE);
}, 27s, 35s);
summons.DoZoneInCombat();
} }
void JustDied(Unit* killer) override void JustDied(Unit* killer) override
@@ -141,12 +175,15 @@ public:
Talk(SAY_DEATH); Talk(SAY_DEATH);
} }
void KilledUnit(Unit* ) override void KilledUnit(Unit* /*victim*/) override
{ {
if (events.GetNextEventTime(EVENT_KILL_TALK) == 0) if (_canTalk)
{ {
_canTalk = false;
Talk(SAY_SLAY); Talk(SAY_SLAY);
events.ScheduleEvent(EVENT_KILL_TALK, 6s); me->m_Events.AddEventAtOffset([&] {
_canTalk = true;
}, 6s);
} }
} }
@@ -161,66 +198,12 @@ public:
summons.Despawn(summon); summons.Despawn(summon);
} }
void UpdateAI(uint32 diff) override private:
{ bool _initTalk;
events2.Update(diff); bool _canTalk;
switch (events2.ExecuteEvent()) bool _minionInCombat;
{
case EVENT_KRIK_START_WAVE:
me->CastCustomSpell(SPELL_SUBBOSS_AGGRO_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, me, true);
Talk(SAY_SEND_GROUP);
break;
case EVENT_KRIK_ENTER_COMBAT:
me->SetInCombatWithZone();
break;
case EVENT_KRIK_CHECK_EVADE:
if (!SelectTargetFromPlayerList(100.0f))
{
EnterEvadeMode();
return;
}
events2.ScheduleEvent(EVENT_KRIK_CHECK_EVADE, 5s);
break;
}
if (!UpdateVictim()) [[nodiscard]] bool IsInFrenzy() const { return me->HasAura(SPELL_FRENZY); }
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.ExecuteEvent())
{
case EVENT_KRIK_HEALTH_CHECK:
if (HealthBelowPct(10))
{
me->CastSpell(me, SPELL_FRENZY, true);
break;
}
events.ScheduleEvent(EVENT_KRIK_HEALTH_CHECK, 1s);
break;
case EVENT_KRIK_SUMMON:
Talk(SAY_SWARM);
me->CastSpell(me, SPELL_SWARM, false);
events.ScheduleEvent(EVENT_KRIK_SUMMON, 20s);
break;
case EVENT_KRIK_MIND_FLAY:
me->CastSpell(me->GetVictim(), SPELL_MIND_FLAY, false);
events.ScheduleEvent(EVENT_KRIK_MIND_FLAY, 15s);
break;
case EVENT_KRIK_CURSE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
me->CastSpell(target, SPELL_CURSE_OF_FATIGUE, true);
events.ScheduleEvent(EVENT_KRIK_CURSE, 10s);
break;
case EVENT_CALL_ADDS:
summons.DoZoneInCombat();
break;
}
DoMeleeAttackIfReady();
}
}; };
CreatureAI* GetAI(Creature* creature) const override CreatureAI* GetAI(Creature* creature) const override
@@ -25,7 +25,7 @@
DoorData const doorData[] = DoorData const doorData[] =
{ {
{ GO_KRIKTHIR_DOORS, DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DOOR_TYPE_PASSAGE }, { GO_KRIKTHIR_DOORS, DATA_KRIKTHIR, DOOR_TYPE_PASSAGE },
{ GO_ANUBARAK_DOORS1, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM }, { GO_ANUBARAK_DOORS1, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM },
{ GO_ANUBARAK_DOORS2, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM }, { GO_ANUBARAK_DOORS2, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM },
{ GO_ANUBARAK_DOORS3, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM }, { GO_ANUBARAK_DOORS3, DATA_ANUBARAK_EVENT, DOOR_TYPE_ROOM },
@@ -34,15 +34,25 @@ DoorData const doorData[] =
ObjectData const creatureData[] = ObjectData const creatureData[] =
{ {
{ NPC_KRIKTHIR_THE_GATEWATCHER, DATA_KRIKTHIR_THE_GATEWATCHER_EVENT }, { NPC_KRIKTHIR_THE_GATEWATCHER, DATA_KRIKTHIR },
{ NPC_HADRONOX, DATA_HADRONOX_EVENT }, { NPC_HADRONOX, DATA_HADRONOX },
{ 0, 0 } { 0, 0 }
};
ObjectData const summonData[] =
{
{ NPC_SKITTERING_SWARMER, DATA_KRIKTHIR },
{ NPC_SKITTERING_INFECTIOR, DATA_KRIKTHIR },
{ NPC_ANUB_AR_CHAMPION, DATA_HADRONOX },
{ NPC_ANUB_AR_NECROMANCER, DATA_HADRONOX },
{ NPC_ANUB_AR_CRYPTFIEND, DATA_HADRONOX },
{ 0, 0 }
}; };
BossBoundaryData const boundaries = BossBoundaryData const boundaries =
{ {
{ DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, new RectangleBoundary(400.0f, 580.0f, 623.5f, 810.0f) }, { DATA_KRIKTHIR, new RectangleBoundary(400.0f, 580.0f, 623.5f, 810.0f) },
{ DATA_HADRONOX_EVENT, new ZRangeBoundary(666.0f, 776.0f) }, { DATA_HADRONOX, new ZRangeBoundary(666.0f, 776.0f) },
{ DATA_ANUBARAK_EVENT, new CircleBoundary(Position(550.6178f, 253.5917f), 26.0f) } { DATA_ANUBARAK_EVENT, new CircleBoundary(Position(550.6178f, 253.5917f), 26.0f) }
}; };
@@ -60,52 +70,14 @@ public:
LoadBossBoundaries(boundaries); LoadBossBoundaries(boundaries);
LoadDoorData(doorData); LoadDoorData(doorData);
LoadObjectData(creatureData, nullptr); LoadObjectData(creatureData, nullptr);
LoadSummonData(summonData);
}; };
void OnCreatureCreate(Creature* creature) override void OnCreatureEvade(Creature* creature) override
{ {
switch (creature->GetEntry()) if (creature->EntryEquals(NPC_WATCHER_NARJIL, NPC_WATCHER_GASHRA, NPC_WATCHER_SILTHIK))
{ if (Creature* krikthir = GetCreature(DATA_KRIKTHIR))
case NPC_SKITTERING_SWARMER: krikthir->AI()->EnterEvadeMode();
case NPC_SKITTERING_INFECTIOR:
if (Creature* krikthir = GetCreature((DATA_KRIKTHIR_THE_GATEWATCHER_EVENT)))
krikthir->AI()->JustSummoned(creature);
break;
case NPC_ANUB_AR_CHAMPION:
case NPC_ANUB_AR_NECROMANCER:
case NPC_ANUB_AR_CRYPTFIEND:
if (Creature* hadronox = GetCreature(DATA_HADRONOX_EVENT))
hadronox->AI()->JustSummoned(creature);
break;
}
InstanceScript::OnCreatureCreate(creature);
}
void OnGameObjectCreate(GameObject* go) override
{
switch (go->GetEntry())
{
case GO_KRIKTHIR_DOORS:
case GO_ANUBARAK_DOORS1:
case GO_ANUBARAK_DOORS2:
case GO_ANUBARAK_DOORS3:
AddDoor(go);
break;
}
}
void OnGameObjectRemove(GameObject* go) override
{
switch (go->GetEntry())
{
case GO_KRIKTHIR_DOORS:
case GO_ANUBARAK_DOORS1:
case GO_ANUBARAK_DOORS2:
case GO_ANUBARAK_DOORS3:
RemoveDoor(go);
break;
}
} }
}; };