mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
refactor(Scripts/Arcatraz): Modernize Dalliah the Doomsayer script (#14978)
This commit is contained in:
@@ -72,10 +72,17 @@ enum SpellIds
|
|||||||
SPELL_SOUL_STEAL = 36782
|
SPELL_SOUL_STEAL = 36782
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Texts
|
||||||
|
{
|
||||||
|
SAY_RIVAL_DIED = 6 // Soccothrates & Delliah
|
||||||
|
};
|
||||||
|
|
||||||
template <class AI, class T>
|
template <class AI, class T>
|
||||||
inline AI* GetArcatrazAI(T* obj)
|
inline AI* GetArcatrazAI(T* obj)
|
||||||
{
|
{
|
||||||
return GetInstanceAI<AI>(obj, ArcatrazScriptName);
|
return GetInstanceAI<AI>(obj, ArcatrazScriptName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define RegisterArcatrazCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetArcatrazAI)
|
||||||
|
|
||||||
#endif // ARCATRAZ_H
|
#endif // ARCATRAZ_H
|
||||||
|
|||||||
@@ -42,143 +42,107 @@ enum Spells
|
|||||||
SPELL_SHADOW_WAVE = 39016
|
SPELL_SHADOW_WAVE = 39016
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Events
|
struct boss_dalliah_the_doomsayer : public BossAI
|
||||||
{
|
{
|
||||||
EVENT_GIFT_OF_THE_DOOMSAYER = 1,
|
boss_dalliah_the_doomsayer(Creature* creature) : BossAI(creature, DATA_DALLIAH), _percentHealthCheck(false) { }
|
||||||
EVENT_WHIRLWIND = 2,
|
|
||||||
EVENT_HEAL = 3,
|
|
||||||
EVENT_SHADOW_WAVE = 4,
|
|
||||||
EVENT_ME_FIRST = 5,
|
|
||||||
EVENT_SOCCOTHRATES_DEATH = 6,
|
|
||||||
EVENT_CHECK_HEALTH = 7,
|
|
||||||
};
|
|
||||||
|
|
||||||
class boss_dalliah_the_doomsayer : public CreatureScript
|
void Reset() override
|
||||||
{
|
|
||||||
public:
|
|
||||||
boss_dalliah_the_doomsayer() : CreatureScript("boss_dalliah_the_doomsayer") { }
|
|
||||||
|
|
||||||
struct boss_dalliah_the_doomsayerAI : public BossAI
|
|
||||||
{
|
{
|
||||||
boss_dalliah_the_doomsayerAI(Creature* creature) : BossAI(creature, DATA_DALLIAH) { }
|
_Reset();
|
||||||
|
_percentHealthCheck = false;
|
||||||
void Reset() override
|
me->SetImmuneToAll(false);
|
||||||
{
|
|
||||||
_Reset();
|
|
||||||
events2.Reset();
|
|
||||||
me->SetImmuneToAll(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void InitializeAI() override
|
|
||||||
{
|
|
||||||
BossAI::InitializeAI();
|
|
||||||
if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE)
|
|
||||||
me->SetImmuneToAll(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JustDied(Unit* /*killer*/) override
|
|
||||||
{
|
|
||||||
_JustDied();
|
|
||||||
Talk(SAY_DEATH);
|
|
||||||
|
|
||||||
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SOCCOTHRATES)))
|
|
||||||
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
|
|
||||||
soccothrates->AI()->SetData(1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EnterCombat(Unit* /*who*/) override
|
|
||||||
{
|
|
||||||
_EnterCombat();
|
|
||||||
Talk(SAY_AGGRO);
|
|
||||||
|
|
||||||
events.ScheduleEvent(EVENT_GIFT_OF_THE_DOOMSAYER, urand(1000, 4000));
|
|
||||||
events.ScheduleEvent(EVENT_WHIRLWIND, urand(7000, 9000));
|
|
||||||
events.ScheduleEvent(EVENT_ME_FIRST, 6000);
|
|
||||||
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
|
|
||||||
|
|
||||||
if (IsHeroic())
|
|
||||||
events.ScheduleEvent(EVENT_SHADOW_WAVE, urand(11000, 16000));
|
|
||||||
}
|
|
||||||
|
|
||||||
void KilledUnit(Unit* victim) override
|
|
||||||
{
|
|
||||||
if (victim->GetTypeId() == TYPEID_PLAYER)
|
|
||||||
Talk(SAY_SLAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetData(uint32 /*type*/, uint32 data) override
|
|
||||||
{
|
|
||||||
if (data == 1)
|
|
||||||
events2.ScheduleEvent(EVENT_SOCCOTHRATES_DEATH, 6000);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateAI(uint32 diff) override
|
|
||||||
{
|
|
||||||
events2.Update(diff);
|
|
||||||
switch (events2.ExecuteEvent())
|
|
||||||
{
|
|
||||||
case EVENT_SOCCOTHRATES_DEATH:
|
|
||||||
Talk(SAY_SOCCOTHRATES_DEATH);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!UpdateVictim())
|
|
||||||
return;
|
|
||||||
|
|
||||||
events.Update(diff);
|
|
||||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (events.ExecuteEvent())
|
|
||||||
{
|
|
||||||
case EVENT_GIFT_OF_THE_DOOMSAYER:
|
|
||||||
me->CastSpell(me->GetVictim(), SPELL_GIFT_OF_THE_DOOMSAYER, false);
|
|
||||||
events.ScheduleEvent(EVENT_GIFT_OF_THE_DOOMSAYER, urand(16000, 21000));
|
|
||||||
break;
|
|
||||||
case EVENT_WHIRLWIND:
|
|
||||||
me->CastSpell(me, SPELL_WHIRLWIND, false);
|
|
||||||
Talk(SAY_WHIRLWIND);
|
|
||||||
events.ScheduleEvent(EVENT_WHIRLWIND, urand(19000, 21000));
|
|
||||||
events.ScheduleEvent(EVENT_HEAL, 6000);
|
|
||||||
break;
|
|
||||||
case EVENT_HEAL:
|
|
||||||
me->CastSpell(me, SPELL_HEAL, false);
|
|
||||||
Talk(SAY_HEAL);
|
|
||||||
break;
|
|
||||||
case EVENT_SHADOW_WAVE:
|
|
||||||
me->CastSpell(me->GetVictim(), SPELL_SHADOW_WAVE, false);
|
|
||||||
events.ScheduleEvent(EVENT_SHADOW_WAVE, urand(11000, 16000));
|
|
||||||
break;
|
|
||||||
case EVENT_ME_FIRST:
|
|
||||||
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SOCCOTHRATES)))
|
|
||||||
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
|
|
||||||
soccothrates->AI()->Talk(SAY_AGGRO_DALLIAH_FIRST);
|
|
||||||
break;
|
|
||||||
case EVENT_CHECK_HEALTH:
|
|
||||||
if (HealthBelowPct(25))
|
|
||||||
{
|
|
||||||
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SOCCOTHRATES)))
|
|
||||||
soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
events.ScheduleEvent(EVENT_CHECK_HEALTH, 1000);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
EventMap events2;
|
|
||||||
};
|
|
||||||
|
|
||||||
CreatureAI* GetAI(Creature* creature) const override
|
|
||||||
{
|
|
||||||
return GetArcatrazAI<boss_dalliah_the_doomsayerAI>(creature);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InitializeAI() override
|
||||||
|
{
|
||||||
|
BossAI::InitializeAI();
|
||||||
|
|
||||||
|
if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE)
|
||||||
|
{
|
||||||
|
me->SetImmuneToAll(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
_JustDied();
|
||||||
|
Talk(SAY_DEATH);
|
||||||
|
|
||||||
|
if (Creature* soccothrates = instance->GetCreature(DATA_SOCCOTHRATES))
|
||||||
|
{
|
||||||
|
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
|
||||||
|
{
|
||||||
|
soccothrates->AI()->Talk(SAY_RIVAL_DIED, 6s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnterCombat(Unit* /*who*/) override
|
||||||
|
{
|
||||||
|
_EnterCombat();
|
||||||
|
Talk(SAY_AGGRO);
|
||||||
|
|
||||||
|
if (Creature* soccothrates = instance->GetCreature(DATA_SOCCOTHRATES))
|
||||||
|
{
|
||||||
|
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
|
||||||
|
{
|
||||||
|
soccothrates->AI()->Talk(SAY_AGGRO_DALLIAH_FIRST, 6s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scheduler.Schedule(1s, 4s, [this](TaskContext context)
|
||||||
|
{
|
||||||
|
DoCastVictim(SPELL_GIFT_OF_THE_DOOMSAYER);
|
||||||
|
context.Repeat(16s, 21s);
|
||||||
|
}).Schedule(7s, 9s, [this](TaskContext context)
|
||||||
|
{
|
||||||
|
Talk(SAY_WHIRLWIND);
|
||||||
|
DoCastAOE(SPELL_WHIRLWIND);
|
||||||
|
context.Repeat(19s, 21s);
|
||||||
|
|
||||||
|
scheduler.Schedule(7s, [this](TaskContext)
|
||||||
|
{
|
||||||
|
Talk(SAY_HEAL);
|
||||||
|
DoCastSelf(SPELL_HEAL);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (IsHeroic())
|
||||||
|
{
|
||||||
|
scheduler.Schedule(11s, 16s, [this](TaskContext context)
|
||||||
|
{
|
||||||
|
DoCastVictim(SPELL_SHADOW_WAVE);
|
||||||
|
context.Repeat(11s, 16s);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellSchoolMask /*damageSchoolMask*/) override
|
||||||
|
{
|
||||||
|
if (me->HealthBelowPctDamaged(25, damage) && !_percentHealthCheck)
|
||||||
|
{
|
||||||
|
if (Creature* soccothrates = instance->GetCreature(DATA_SOCCOTHRATES))
|
||||||
|
{
|
||||||
|
soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
_percentHealthCheck = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KilledUnit(Unit* victim) override
|
||||||
|
{
|
||||||
|
if (victim->IsPlayer())
|
||||||
|
{
|
||||||
|
Talk(SAY_SLAY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool _percentHealthCheck;
|
||||||
};
|
};
|
||||||
|
|
||||||
void AddSC_boss_dalliah_the_doomsayer()
|
void AddSC_boss_dalliah_the_doomsayer()
|
||||||
{
|
{
|
||||||
new boss_dalliah_the_doomsayer();
|
RegisterArcatrazCreatureAI(boss_dalliah_the_doomsayer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,10 +64,9 @@ enum Events
|
|||||||
EVENT_PREFIGHT_8 = 10,
|
EVENT_PREFIGHT_8 = 10,
|
||||||
EVENT_PREFIGHT_9 = 11,
|
EVENT_PREFIGHT_9 = 11,
|
||||||
EVENT_ME_FIRST = 12,
|
EVENT_ME_FIRST = 12,
|
||||||
EVENT_DALLIAH_DEATH = 13,
|
EVENT_CHECK_HEALTH = 13,
|
||||||
EVENT_CHECK_HEALTH = 14,
|
EVENT_SPELL_CHARGE = 14,
|
||||||
EVENT_SPELL_CHARGE = 15,
|
EVENT_FELFIRE = 15,
|
||||||
EVENT_FELFIRE = 16,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class boss_wrath_scryer_soccothrates : public CreatureScript
|
class boss_wrath_scryer_soccothrates : public CreatureScript
|
||||||
@@ -102,9 +101,13 @@ public:
|
|||||||
_JustDied();
|
_JustDied();
|
||||||
Talk(SAY_DEATH);
|
Talk(SAY_DEATH);
|
||||||
|
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
|
{
|
||||||
if (dalliah->IsAlive() && !dalliah->IsInCombat())
|
if (dalliah->IsAlive() && !dalliah->IsInCombat())
|
||||||
dalliah->AI()->SetData(1, 1);
|
{
|
||||||
|
dalliah->AI()->Talk(SAY_RIVAL_DIED + 1, 6s);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* /*who*/) override
|
void EnterCombat(Unit* /*who*/) override
|
||||||
@@ -134,19 +137,13 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetData(uint32 /*type*/, uint32 data) override
|
|
||||||
{
|
|
||||||
if (data == 1)
|
|
||||||
events2.RescheduleEvent(EVENT_DALLIAH_DEATH, 6000);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateAI(uint32 diff) override
|
void UpdateAI(uint32 diff) override
|
||||||
{
|
{
|
||||||
events2.Update(diff);
|
events2.Update(diff);
|
||||||
switch (events2.ExecuteEvent())
|
switch (events2.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_PREFIGHT_1:
|
case EVENT_PREFIGHT_1:
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_1);
|
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_1);
|
||||||
events2.ScheduleEvent(EVENT_PREFIGHT_2, 3000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_2, 3000);
|
||||||
break;
|
break;
|
||||||
@@ -155,7 +152,7 @@ public:
|
|||||||
events2.ScheduleEvent(EVENT_PREFIGHT_3, 3000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_3, 3000);
|
||||||
break;
|
break;
|
||||||
case EVENT_PREFIGHT_3:
|
case EVENT_PREFIGHT_3:
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_2);
|
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_2);
|
||||||
events2.ScheduleEvent(EVENT_PREFIGHT_4, 6000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_4, 6000);
|
||||||
break;
|
break;
|
||||||
@@ -164,7 +161,7 @@ public:
|
|||||||
events2.ScheduleEvent(EVENT_PREFIGHT_5, 2000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_5, 2000);
|
||||||
break;
|
break;
|
||||||
case EVENT_PREFIGHT_5:
|
case EVENT_PREFIGHT_5:
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_3);
|
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_3);
|
||||||
events2.ScheduleEvent(EVENT_PREFIGHT_6, 3000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_6, 3000);
|
||||||
break;
|
break;
|
||||||
@@ -173,7 +170,7 @@ public:
|
|||||||
events2.ScheduleEvent(EVENT_PREFIGHT_7, 2000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_7, 2000);
|
||||||
break;
|
break;
|
||||||
case EVENT_PREFIGHT_7:
|
case EVENT_PREFIGHT_7:
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
dalliah->GetMotionMaster()->MovePoint(0, 118.6048f, 96.84852f, 22.44115f);
|
dalliah->GetMotionMaster()->MovePoint(0, 118.6048f, 96.84852f, 22.44115f);
|
||||||
events2.ScheduleEvent(EVENT_PREFIGHT_8, 4000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_8, 4000);
|
||||||
break;
|
break;
|
||||||
@@ -182,7 +179,7 @@ public:
|
|||||||
events2.ScheduleEvent(EVENT_PREFIGHT_9, 4000);
|
events2.ScheduleEvent(EVENT_PREFIGHT_9, 4000);
|
||||||
break;
|
break;
|
||||||
case EVENT_PREFIGHT_9:
|
case EVENT_PREFIGHT_9:
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
{
|
{
|
||||||
dalliah->SetFacingToObject(me);
|
dalliah->SetFacingToObject(me);
|
||||||
dalliah->SetImmuneToAll(false);
|
dalliah->SetImmuneToAll(false);
|
||||||
@@ -192,9 +189,6 @@ public:
|
|||||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 4.725722f);
|
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 4.725722f);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EVENT_DALLIAH_DEATH:
|
|
||||||
Talk(SAY_DALLIAH_DEATH);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
@@ -230,14 +224,14 @@ public:
|
|||||||
me->CastSpell(me, SPELL_FELFIRE, true);
|
me->CastSpell(me, SPELL_FELFIRE, true);
|
||||||
break;
|
break;
|
||||||
case EVENT_ME_FIRST:
|
case EVENT_ME_FIRST:
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
if (dalliah->IsAlive() && !dalliah->IsInCombat())
|
if (dalliah->IsAlive() && !dalliah->IsInCombat())
|
||||||
dalliah->AI()->Talk(SAY_AGGRO_SOCCOTHRATES_FIRST);
|
dalliah->AI()->Talk(SAY_AGGRO_SOCCOTHRATES_FIRST);
|
||||||
break;
|
break;
|
||||||
case EVENT_CHECK_HEALTH:
|
case EVENT_CHECK_HEALTH:
|
||||||
if (HealthBelowPct(25))
|
if (HealthBelowPct(25))
|
||||||
{
|
{
|
||||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
if (Creature* dalliah = instance->GetCreature(DATA_DALLIAH))
|
||||||
dalliah->AI()->Talk(SAY_SOCCOTHRATES_25_PERCENT);
|
dalliah->AI()->Talk(SAY_SOCCOTHRATES_25_PERCENT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,13 @@ DoorData const doorData[] =
|
|||||||
{ 0, 0, DOOR_TYPE_ROOM } // END
|
{ 0, 0, DOOR_TYPE_ROOM } // END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ObjectData const creatureData[] =
|
||||||
|
{
|
||||||
|
{ NPC_DALLIAH, DATA_DALLIAH },
|
||||||
|
{ NPC_SOCCOTHRATES, DATA_SOCCOTHRATES },
|
||||||
|
{ NPC_MELLICHAR, DATA_WARDEN_MELLICHAR }
|
||||||
|
};
|
||||||
|
|
||||||
class instance_arcatraz : public InstanceMapScript
|
class instance_arcatraz : public InstanceMapScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -38,22 +45,7 @@ public:
|
|||||||
SetHeaders(DataHeader);
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUTER);
|
SetBossNumber(MAX_ENCOUTER);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
}
|
LoadObjectData(creatureData, nullptr);
|
||||||
|
|
||||||
void OnCreatureCreate(Creature* creature) override
|
|
||||||
{
|
|
||||||
switch (creature->GetEntry())
|
|
||||||
{
|
|
||||||
case NPC_DALLIAH:
|
|
||||||
DalliahGUID = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
case NPC_SOCCOTHRATES:
|
|
||||||
SoccothratesGUID = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
case NPC_MELLICHAR:
|
|
||||||
MellicharGUID = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnGameObjectCreate(GameObject* go) override
|
void OnGameObjectCreate(GameObject* go) override
|
||||||
@@ -87,19 +79,6 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnGameObjectRemove(GameObject* go) override
|
|
||||||
{
|
|
||||||
switch (go->GetEntry())
|
|
||||||
{
|
|
||||||
case GO_CONTAINMENT_CORE_SECURITY_FIELD_ALPHA:
|
|
||||||
case GO_CONTAINMENT_CORE_SECURITY_FIELD_BETA:
|
|
||||||
AddDoor(go, false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetData(uint32 type, uint32 data) override
|
void SetData(uint32 type, uint32 data) override
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@@ -111,25 +90,16 @@ public:
|
|||||||
case DATA_WARDEN_5:
|
case DATA_WARDEN_5:
|
||||||
if (data < FAIL)
|
if (data < FAIL)
|
||||||
HandleGameObject(StasisPodGUIDs[type - DATA_WARDEN_1], data == IN_PROGRESS);
|
HandleGameObject(StasisPodGUIDs[type - DATA_WARDEN_1], data == IN_PROGRESS);
|
||||||
if (Creature* warden = instance->GetCreature(MellicharGUID))
|
if (Creature* warden = GetCreature(DATA_WARDEN_MELLICHAR))
|
||||||
warden->AI()->SetData(type, data);
|
warden->AI()->SetData(type, data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 GetData(uint32 /*type*/) const override
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ObjectGuid GetGuidData(uint32 data) const override
|
ObjectGuid GetGuidData(uint32 data) const override
|
||||||
{
|
{
|
||||||
switch (data)
|
switch (data)
|
||||||
{
|
{
|
||||||
case DATA_DALLIAH:
|
|
||||||
return DalliahGUID;
|
|
||||||
case DATA_SOCCOTHRATES:
|
|
||||||
return SoccothratesGUID;
|
|
||||||
case DATA_WARDENS_SHIELD:
|
case DATA_WARDENS_SHIELD:
|
||||||
return WardensShieldGUID;
|
return WardensShieldGUID;
|
||||||
}
|
}
|
||||||
@@ -156,10 +126,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ObjectGuid DalliahGUID;
|
|
||||||
ObjectGuid SoccothratesGUID;
|
|
||||||
ObjectGuid StasisPodGUIDs[5];
|
ObjectGuid StasisPodGUIDs[5];
|
||||||
ObjectGuid MellicharGUID;
|
|
||||||
ObjectGuid WardensShieldGUID;
|
ObjectGuid WardensShieldGUID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user