refactor(Scripts/SunwellPlateau): Modernize instance script (#20519)

This commit is contained in:
Andrew
2024-11-12 12:49:11 -03:00
committed by GitHub
parent cc03798123
commit 17ae7c86ff
6 changed files with 83 additions and 189 deletions

View File

@@ -235,7 +235,7 @@ struct npc_madrigosa : public NullCreatureAI
{
case EVENT_MAD_1:
me->SetVisible(true);
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
me->SetTarget(brutallus->GetGUID());
brutallus->SetReactState(REACT_PASSIVE);
@@ -261,12 +261,12 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_4, 7000);
break;
case EVENT_MAD_4:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->AI()->Talk(YELL_INTRO);
events.ScheduleEvent(EVENT_MAD_5, 5000);
break;
case EVENT_MAD_5:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK1H);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK1H);
@@ -274,7 +274,7 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_6, 10000);
break;
case EVENT_MAD_6:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
@@ -297,11 +297,11 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_8, 14000);
break;
case EVENT_MAD_8:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
me->CastSpell(brutallus, SPELL_MADRIGOSA_FROSTBOLT, false);
break;
case EVENT_MAD_9:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->CastSpell(brutallus, SPELL_BRUTALLUS_FLAME_RING, true);
brutallus->RemoveAllAuras();
@@ -323,7 +323,7 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_14, 2000);
break;
case EVENT_MAD_14:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->SetDisableGravity(true);
brutallus->GetMotionMaster()->MovePoint(0, brutallus->GetPositionX(), brutallus->GetPositionY() - 30.0f, brutallus->GetPositionZ() + 15.0f, false, true);
@@ -331,7 +331,7 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_15, 10000);
break;
case EVENT_MAD_15:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->RemoveAllAuras();
brutallus->SetDisableGravity(false);
@@ -341,12 +341,12 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_16, 1400);
break;
case EVENT_MAD_16:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->CastSpell(me, SPELL_BRUTALLUS_CHARGE, true);
events.ScheduleEvent(EVENT_MAD_17, 1200);
break;
case EVENT_MAD_17:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->HandleEmoteCommand(EMOTE_ONESHOT_ATTACK1H);
events.ScheduleEvent(EVENT_MAD_18, 500);
break;
@@ -357,14 +357,14 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_19, 6000);
break;
case EVENT_MAD_19:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
brutallus->AI()->Talk(YELL_INTRO_KILL_MADRIGOSA);
events.ScheduleEvent(EVENT_MAD_20, 7000);
break;
case EVENT_MAD_20:
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetFaction(FACTION_FRIENDLY);
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->AI()->Talk(YELL_INTRO_TAUNT);
brutallus->CastSpell(brutallus, SPELL_BRUTALLUS_BREAK_ICE, false);
@@ -372,7 +372,7 @@ struct npc_madrigosa : public NullCreatureAI
events.ScheduleEvent(EVENT_MAD_21, 4000);
break;
case EVENT_MAD_21:
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
if (Creature* brutallus = instance->GetCreature(DATA_BRUTALLUS))
{
brutallus->SetReactState(REACT_AGGRESSIVE);
brutallus->SetHealth(brutallus->GetMaxHealth());
@@ -382,7 +382,7 @@ struct npc_madrigosa : public NullCreatureAI
break;
case EVENT_SPAWN_FELMYST:
me->DespawnOrUnsummon(1);
if (Creature* felmyst = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_FELMYST)))
if (Creature* felmyst = instance->GetCreature(DATA_FELMYST))
felmyst->AI()->DoAction(ACTION_START_EVENT);
break;
}

View File

@@ -184,7 +184,7 @@ struct boss_kalecgos : public BossAI
events.Reset();
events2.ScheduleEvent(EVENT_TALK_GOOD_1, 1000);
ClearPlayerAuras();
if (Creature* Sath = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_SATHROVARR)))
if (Creature* Sath = instance->GetCreature(DATA_SATHROVARR))
{
Sath->RemoveAllAuras();
Sath->GetMotionMaster()->MovementExpired();
@@ -243,7 +243,7 @@ struct boss_kalecgos : public BossAI
events2.ScheduleEvent(EVENT_TALK_GOOD_2, 1000);
break;
case EVENT_TALK_GOOD_2:
if (Creature* Sath = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_SATHROVARR)))
if (Creature* Sath = instance->GetCreature(DATA_SATHROVARR))
{
summons.Despawn(Sath);
Unit::Kill(me, Sath);
@@ -329,7 +329,7 @@ struct boss_kalecgos : public BossAI
case EVENT_CHECK_HEALTH:
if (me->HealthBelowPct(10))
{
if (Creature* Sath = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_SATHROVARR)))
if (Creature* Sath = instance->GetCreature(DATA_SATHROVARR))
Sath->AI()->DoAction(ACTION_ENRAGE_OTHER);
DoAction(ACTION_ENRAGE);
break;
@@ -403,7 +403,7 @@ struct boss_kalec : public ScriptedAI
void JustDied(Unit*) override
{
if (InstanceScript* instance = me->GetInstanceScript())
if (Creature* kalecgos = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS)))
if (Creature* kalecgos = instance->GetCreature(DATA_KALECGOS))
kalecgos->AI()->DoAction(ACTION_KALEC_DIED);
}
@@ -576,7 +576,7 @@ struct boss_sathrovarr : public ScriptedAI
case EVENT_CHECK_HEALTH2:
if (me->HealthBelowPct(1))
{
if (Creature* kalecgos = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS)))
if (Creature* kalecgos = instance->GetCreature(DATA_KALECGOS))
kalecgos->AI()->DoAction(ACTION_SATH_BANISH);
DoAction(ACTION_BANISH);
break;

View File

@@ -176,8 +176,8 @@ struct npc_kiljaeden_controller : public NullCreatureAI
void ResetOrbs()
{
for (uint8 i = 0; i < 4; ++i)
if (GameObject* orb = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 + i)))
for (uint8 i = DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1; i < DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_4 + 1; ++i)
if (GameObject* orb = instance->GetGameObject(i))
orb->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
}
@@ -333,7 +333,7 @@ struct boss_kiljaeden : public ScriptedAI
{
Talk(SAY_KJ_DEATH);
instance->SetBossState(DATA_KILJAEDEN, DONE);
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KILJAEDEN_CONTROLLER)))
if (Creature* controller = instance->GetCreature(DATA_KJ_CONTROLLER))
Unit::Kill(controller, controller);
}
@@ -393,17 +393,17 @@ struct boss_kiljaeden : public ScriptedAI
me->CastSpell(me, SPELL_REBIRTH, false);
break;
case EVENT_EMPOWER_ORBS1:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_READY1);
EmpowerOrb(false);
break;
case EVENT_EMPOWER_ORBS2:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_READY2);
EmpowerOrb(false);
break;
case EVENT_EMPOWER_ORBS3:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_READY_ALL);
EmpowerOrb(true);
break;
@@ -413,56 +413,56 @@ struct boss_kiljaeden : public ScriptedAI
me->SetInCombatWithZone();
return;
case EVENT_TEXT_SPEACH11:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_JOIN);
break;
case EVENT_TEXT_SPEACH21:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_AWAKEN);
break;
case EVENT_TEXT_SPEACH22:
if (Creature* anveena = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ANVEENA)))
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
sCreatureTextMgr->SendChat(anveena, SAY_ANVEENA_IMPRISONED, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_ZONE);
break;
case EVENT_TEXT_SPEACH23:
Talk(SAY_KJ_PHASE3);
break;
case EVENT_TEXT_SPEACH31:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_LETGO);
break;
case EVENT_TEXT_SPEACH32:
if (Creature* anveena = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ANVEENA)))
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
sCreatureTextMgr->SendChat(anveena, SAY_ANVEENA_LOST, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_ZONE);
break;
case EVENT_TEXT_SPEACH33:
Talk(SAY_KJ_PHASE4);
break;
case EVENT_TEXT_SPEACH41:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_FOCUS);
break;
case EVENT_TEXT_SPEACH42:
if (Creature* anveena = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ANVEENA)))
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
sCreatureTextMgr->SendChat(anveena, SAY_ANVEENA_KALEC, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_ZONE);
break;
case EVENT_TEXT_SPEACH43:
if (Creature* kalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KALECGOS_KJ)))
if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ))
kalec->AI()->Talk(SAY_KALECGOS_FATE);
break;
case EVENT_TEXT_SPEACH44:
if (Creature* anveena = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ANVEENA)))
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
sCreatureTextMgr->SendChat(anveena, SAY_ANVEENA_GOODBYE, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_ZONE);
break;
case EVENT_TEXT_SPEACH45:
if (Creature* anveena = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ANVEENA)))
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
{
anveena->RemoveAllAuras();
anveena->DespawnOrUnsummon(3500);
}
break;
case EVENT_TEXT_SPEACH46:
if (Creature* anveena = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ANVEENA)))
if (Creature* anveena = instance->GetCreature(DATA_ANVEENA))
{
anveena->CastSpell(anveena, SPELL_SACRIFICE_OF_ANVEENA, true);
me->CastSpell(me, SPELL_CUSTOM_08_STATE, true);
@@ -627,9 +627,9 @@ struct boss_kiljaeden : public ScriptedAI
void EmpowerOrb(bool empowerAll)
{
for (uint8 i = 0; i < 4; ++i)
for (uint8 i = DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1; i < DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_4 + 1; ++i)
{
if (GameObject* orb = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 + i)))
if (GameObject* orb = instance->GetGameObject(i))
{
if (orb->HasGameObjectFlag(GO_FLAG_NOT_SELECTABLE))
{
@@ -637,7 +637,7 @@ struct boss_kiljaeden : public ScriptedAI
if (Creature* trigger = me->SummonTrigger(orb->GetPositionX(), orb->GetPositionY(), orb->GetPositionZ(), 0, 10 * MINUTE * IN_MILLISECONDS))
{
trigger->CastSpell(trigger, SPELL_RING_OF_BLUE_FLAMES, true, nullptr, nullptr, trigger->GetGUID());
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_KILJAEDEN_CONTROLLER)))
if (Creature* controller = instance->GetCreature(DATA_KJ_CONTROLLER))
controller->AI()->JustSummoned(trigger);
}

View File

@@ -166,7 +166,7 @@ struct boss_entropius : public ScriptedAI
void EnterEvadeMode(EvadeReason why) override
{
if (InstanceScript* instance = me->GetInstanceScript())
if (Creature* muru = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_MURU)))
if (Creature* muru = instance->GetCreature(DATA_MURU))
if (!muru->IsInEvadeMode())
muru->AI()->EnterEvadeMode(why);
@@ -195,7 +195,7 @@ struct boss_entropius : public ScriptedAI
void JustDied(Unit* /*killer*/) override
{
if (InstanceScript* instance = me->GetInstanceScript())
if (Creature* muru = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_MURU)))
if (Creature* muru = instance->GetCreature(DATA_MURU))
Unit::Kill(muru, muru);
}

View File

@@ -35,10 +35,28 @@ DoorData const doorData[] =
ObjectData const creatureData[] =
{
{ NPC_LADY_SACROLASH, DATA_SACROLASH },
{ NPC_GRAND_WARLOCK_ALYTHESS, DATA_ALYTHESS },
{ NPC_MADRIGOSA, DATA_MADRIGOSA },
{ 0, 0, }
{ NPC_KALECGOS, DATA_KALECGOS },
{ NPC_BRUTALLUS, DATA_BRUTALLUS },
{ NPC_FELMYST, DATA_FELMYST },
{ NPC_MURU, DATA_MURU },
{ NPC_LADY_SACROLASH, DATA_SACROLASH },
{ NPC_GRAND_WARLOCK_ALYTHESS, DATA_ALYTHESS },
{ NPC_MADRIGOSA, DATA_MADRIGOSA },
{ NPC_SATHROVARR, DATA_SATHROVARR },
{ NPC_KILJAEDEN_CONTROLLER, DATA_KJ_CONTROLLER },
{ NPC_ANVEENA, DATA_ANVEENA },
{ NPC_KALECGOS_KJ, DATA_KALECGOS_KJ },
{ 0, 0, }
};
ObjectData const gameObjectData[] =
{
{ GO_ICE_BARRIER, DATA_ICEBARRIER },
{ GO_ORB_OF_THE_BLUE_DRAGONFLIGHT1, DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 },
{ GO_ORB_OF_THE_BLUE_DRAGONFLIGHT2, DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_2 },
{ GO_ORB_OF_THE_BLUE_DRAGONFLIGHT3, DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_3 },
{ GO_ORB_OF_THE_BLUE_DRAGONFLIGHT4, DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_4 },
{ 0, 0 }
};
class instance_sunwell_plateau : public InstanceMapScript
@@ -53,36 +71,17 @@ public:
SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTERS);
LoadDoorData(doorData);
LoadObjectData(creatureData, nullptr);
LoadObjectData(creatureData, gameObjectData);
}
void OnPlayerEnter(Player* player) override
{
instance->LoadGrid(1477.94f, 643.22f);
instance->LoadGrid(1641.45f, 988.08f);
if (GameObject* gobj = instance->GetGameObject(IceBarrierGUID))
if (GameObject* gobj = GetGameObject(DATA_ICEBARRIER))
gobj->SendUpdateToPlayer(player);
}
Player const* GetPlayerInMap() const
{
Map::PlayerList const& players = instance->GetPlayers();
if (!players.IsEmpty())
{
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
{
Player* player = itr->GetSource();
if (player && !player->HasAura(45839))
return player;
}
}
//else
// LOG_DEBUG("scripts", "Instance Sunwell Plateau: GetPlayerInMap, but PlayerList is empty!");
return nullptr;
}
void OnCreatureCreate(Creature* creature) override
{
if (creature->GetSpawnId() > 0 || !creature->GetOwnerGUID().IsPlayer())
@@ -90,55 +89,24 @@ public:
switch (creature->GetEntry())
{
case NPC_KALECGOS:
KalecgosDragonGUID = creature->GetGUID();
break;
case NPC_SATHROVARR:
SathrovarrGUID = creature->GetGUID();
break;
case NPC_BRUTALLUS:
BrutallusGUID = creature->GetGUID();
break;
case NPC_FELMYST:
FelmystGUID = creature->GetGUID();
break;
case NPC_MURU:
MuruGUID = creature->GetGUID();
break;
case NPC_KILJAEDEN:
KilJaedenGUID = creature->GetGUID();
break;
case NPC_KILJAEDEN_CONTROLLER:
KilJaedenControllerGUID = creature->GetGUID();
break;
case NPC_ANVEENA:
AnveenaGUID = creature->GetGUID();
break;
case NPC_KALECGOS_KJ:
KalecgosKjGUID = creature->GetGUID();
break;
// Xinef: Felmyst encounter
case NPC_DEMONIC_VAPOR_TRAIL:
case NPC_UNYIELDING_DEAD:
if (Creature* felmyst = instance->GetCreature(FelmystGUID))
if (Creature* felmyst = GetCreature(DATA_FELMYST))
felmyst->AI()->JustSummoned(creature);
break;
// Xinef: M'uru encounter
case NPC_DARKNESS:
case NPC_VOID_SENTINEL:
case NPC_VOID_SPAWN:
if (Creature* muru = instance->GetCreature(MuruGUID))
if (Creature* muru = GetCreature(DATA_MURU))
muru->AI()->JustSummoned(creature);
break;
// Xinef: Kil'jaeden encounter
case NPC_FELFIRE_PORTAL:
case NPC_VOLATILE_FELFIRE_FIEND:
case NPC_SHIELD_ORB:
case NPC_SINISTER_REFLECTION:
if (Creature* kiljaedenC = instance->GetCreature(KilJaedenControllerGUID))
if (Creature* kiljaedenC = GetCreature(DATA_KJ_CONTROLLER))
kiljaedenC->AI()->JustSummoned(creature);
break;
default:
@@ -147,87 +115,6 @@ public:
InstanceScript::OnCreatureCreate(creature);
}
void OnGameObjectCreate(GameObject* go) override
{
switch (go->GetEntry())
{
case GO_FORCE_FIELD:
case GO_BOSS_COLLISION_1:
case GO_BOSS_COLLISION_2:
case GO_FIRE_BARRIER:
case GO_MURUS_GATE_1:
case GO_MURUS_GATE_2:
AddDoor(go);
break;
case GO_ICE_BARRIER:
IceBarrierGUID = go->GetGUID();
go->setActive(true);
break;
case GO_ORB_OF_THE_BLUE_DRAGONFLIGHT1:
blueFlightOrbGUID[0] = go->GetGUID();
break;
case GO_ORB_OF_THE_BLUE_DRAGONFLIGHT2:
blueFlightOrbGUID[1] = go->GetGUID();
break;
case GO_ORB_OF_THE_BLUE_DRAGONFLIGHT3:
blueFlightOrbGUID[2] = go->GetGUID();
break;
case GO_ORB_OF_THE_BLUE_DRAGONFLIGHT4:
blueFlightOrbGUID[3] = go->GetGUID();
break;
default:
break;
}
}
ObjectGuid GetGuidData(uint32 id) const override
{
switch (id)
{
case NPC_KALECGOS:
return KalecgosDragonGUID;
case NPC_SATHROVARR:
return SathrovarrGUID;
case NPC_BRUTALLUS:
return BrutallusGUID;
case NPC_FELMYST:
return FelmystGUID;
case NPC_MURU:
return MuruGUID;
case NPC_ANVEENA:
return AnveenaGUID;
case NPC_KALECGOS_KJ:
return KalecgosKjGUID;
case NPC_KILJAEDEN_CONTROLLER:
return KilJaedenControllerGUID;
case NPC_KILJAEDEN:
return KilJaedenGUID;
// Orbs
case DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1:
case DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_2:
case DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_3:
case DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_4:
return blueFlightOrbGUID[id - DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1];
}
return ObjectGuid::Empty;
}
protected:
ObjectGuid KalecgosDragonGUID;
ObjectGuid SathrovarrGUID;
ObjectGuid BrutallusGUID;
ObjectGuid FelmystGUID;
ObjectGuid MuruGUID;
ObjectGuid KilJaedenGUID;
ObjectGuid KilJaedenControllerGUID;
ObjectGuid AnveenaGUID;
ObjectGuid KalecgosKjGUID;
ObjectGuid IceBarrierGUID;
ObjectGuid blueFlightOrbGUID[4];
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override

View File

@@ -38,15 +38,22 @@ enum BossIds
enum DataTypes
{
DATA_SACROLASH = 0,
DATA_ALYTHESS = 1,
DATA_MADRIGOSA = 2,
DATA_SACROLASH = 7,
DATA_ALYTHESS = 8,
DATA_MADRIGOSA = 9,
DATA_SATHROVARR = 10,
DATA_KJ_CONTROLLER = 11,
DATA_ANVEENA = 12,
DATA_KALECGOS_KJ = 13
};
// GameObject GUIDs
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 = 10,
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_2 = 11,
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_3 = 12,
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_4 = 13
enum DataTypesObjects
{
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 = 0,
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_2 = 1,
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_3 = 2,
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_4 = 3,
DATA_ICEBARRIER = 4,
};
enum CreatureIds