diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
index 1b1e13fc5fb..9aaaff42879 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
@@ -156,7 +156,7 @@ public:
//this mean she at some point evaded
void JustReachedHome() override
{
- instance->SetBossState(DATA_DELRISSA, FAIL);
+ instance->SetBossState(DATA_PRIESTESS_DELRISSA, FAIL);
}
void JustEngagedWith(Unit* who) override
@@ -175,7 +175,7 @@ public:
}
}
- instance->SetBossState(DATA_DELRISSA, IN_PROGRESS);
+ instance->SetBossState(DATA_PRIESTESS_DELRISSA, IN_PROGRESS);
}
void InitializeLackeys()
@@ -243,7 +243,7 @@ public:
Talk(SAY_DEATH);
if (instance->GetData(DATA_DELRISSA_DEATH_COUNT) == MAX_ACTIVE_LACKEY)
- instance->SetBossState(DATA_DELRISSA, DONE);
+ instance->SetBossState(DATA_PRIESTESS_DELRISSA, DONE);
else
{
if (me->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE))
@@ -389,10 +389,10 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
AcquireGUIDs();
// in case she is not alive and Reset was for some reason called, respawn her (most likely party wipe after killing her)
- if (Creature* pDelrissa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DELRISSA)))
+ if (Creature* delrissa = instance->GetCreature(DATA_PRIESTESS_DELRISSA))
{
- if (!pDelrissa->IsAlive())
- pDelrissa->Respawn();
+ if (!delrissa->IsAlive())
+ delrissa->Respawn();
}
}
@@ -413,26 +413,26 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
}
}
- if (Creature* pDelrissa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DELRISSA)))
+ if (Creature* delrissa = instance->GetCreature(DATA_PRIESTESS_DELRISSA))
{
- if (pDelrissa->IsAlive() && !pDelrissa->GetVictim())
+ if (delrissa->IsAlive() && !delrissa->GetVictim())
{
- who->SetInCombatWith(pDelrissa);
- pDelrissa->AddThreat(who, 0.0f);
+ who->SetInCombatWith(delrissa);
+ delrissa->AddThreat(who, 0.0f);
}
}
}
void JustDied(Unit* /*killer*/) override
{
- Creature* pDelrissa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DELRISSA));
+ Creature* delrissa = instance->GetCreature(DATA_PRIESTESS_DELRISSA);
uint32 uiLackeyDeathCount = instance->GetData(DATA_DELRISSA_DEATH_COUNT);
- if (!pDelrissa)
+ if (!delrissa)
return;
//should delrissa really yell if dead?
- pDelrissa->AI()->Talk(LackeyDeath[uiLackeyDeathCount].id);
+ delrissa->AI()->Talk(LackeyDeath[uiLackeyDeathCount].id);
instance->SetData(DATA_DELRISSA_DEATH_COUNT, SPECIAL);
@@ -442,28 +442,28 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
if (uiLackeyDeathCount == MAX_ACTIVE_LACKEY)
{
//time to make her lootable and complete event if she died before lackeys
- if (!pDelrissa->IsAlive())
+ if (!delrissa->IsAlive())
{
- if (!pDelrissa->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE))
- pDelrissa->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
+ if (!delrissa->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE))
+ delrissa->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
- instance->SetBossState(DATA_DELRISSA, DONE);
+ instance->SetBossState(DATA_PRIESTESS_DELRISSA, DONE);
}
}
}
void KilledUnit(Unit* victim) override
{
- if (Creature* Delrissa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DELRISSA)))
- Delrissa->AI()->KilledUnit(victim);
+ if (Creature* delrissa = instance->GetCreature(DATA_PRIESTESS_DELRISSA))
+ delrissa->AI()->KilledUnit(victim);
}
void AcquireGUIDs()
{
- if (Creature* Delrissa = (ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DELRISSA))))
+ if (Creature* delrissa = instance->GetCreature(DATA_PRIESTESS_DELRISSA))
{
for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
- m_auiLackeyGUIDs[i] = ENSURE_AI(boss_priestess_delrissa::boss_priestess_delrissaAI, Delrissa->AI())->m_auiLackeyGUID[i];
+ m_auiLackeyGUIDs[i] = ENSURE_AI(boss_priestess_delrissa::boss_priestess_delrissaAI, delrissa->AI())->m_auiLackeyGUID[i];
}
}
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
index a8f9c0e94c4..8e9b573fe55 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
@@ -73,7 +73,7 @@ class boss_selin_fireheart : public CreatureScript
struct boss_selin_fireheartAI : public BossAI
{
- boss_selin_fireheartAI(Creature* creature) : BossAI(creature, DATA_SELIN), _scheduledEvents(false) { }
+ boss_selin_fireheartAI(Creature* creature) : BossAI(creature, DATA_SELIN_FIREHEART), _scheduledEvents(false) { }
void Reset() override
{
@@ -267,9 +267,9 @@ class npc_fel_crystal : public CreatureScript
{
if (InstanceScript* instance = me->GetInstanceScript())
{
- Creature* Selin = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SELIN));
- if (Selin && Selin->IsAlive())
- Selin->AI()->DoAction(ACTION_SWITCH_PHASE);
+ Creature* selin = instance->GetCreature(DATA_SELIN_FIREHEART);
+ if (selin && selin->IsAlive())
+ selin->AI()->DoAction(ACTION_SWITCH_PHASE);
}
}
};
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
index 228e6719579..ad174631368 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2018 TrinityCore
+ * Copyright (C) 2008-2019 TrinityCore
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -35,18 +35,29 @@
ObjectData const creatureData[] =
{
+ { BOSS_SELIN_FIREHEART, DATA_SELIN_FIREHEART },
+ { BOSS_VEXALLUS, DATA_VEXALLUS },
+ { BOSS_PRIESTESS_DELRISSA, DATA_PRIESTESS_DELRISSA },
{ BOSS_KAELTHAS_SUNSTRIDER, DATA_KAELTHAS_SUNSTRIDER },
+ { NPC_KALECGOS, DATA_KALECGOS },
+ { NPC_HUMAN_KALECGOS, DATA_KALECGOS },
+ { 0, 0 } // END
+};
+
+ObjectData const gameObjectData[] =
+{
+ { GO_ESCAPE_ORB, DATA_ESCAPE_ORB },
{ 0, 0 } // END
};
DoorData const doorData[] =
{
- { GO_SELIN_DOOR, DATA_SELIN, DOOR_TYPE_PASSAGE },
- { GO_SELIN_ENCOUNTER_DOOR, DATA_SELIN, DOOR_TYPE_ROOM },
- { GO_VEXALLUS_DOOR, DATA_VEXALLUS, DOOR_TYPE_PASSAGE },
- { GO_DELRISSA_DOOR, DATA_DELRISSA, DOOR_TYPE_PASSAGE },
- { GO_ASYLUM_DOOR, DATA_KAELTHAS_SUNSTRIDER, DOOR_TYPE_ROOM },
- { 0, 0, DOOR_TYPE_ROOM } // END
+ { GO_SUNWELL_RAID_GATE_2 , DATA_SELIN_FIREHEART, DOOR_TYPE_PASSAGE },
+ { GO_ASSEMBLY_CHAMBER_DOOR, DATA_SELIN_FIREHEART, DOOR_TYPE_ROOM },
+ { GO_SUNWELL_RAID_GATE_5, DATA_VEXALLUS, DOOR_TYPE_PASSAGE },
+ { GO_SUNWELL_RAID_GATE_4, DATA_PRIESTESS_DELRISSA, DOOR_TYPE_PASSAGE },
+ { GO_ASYLUM_DOOR, DATA_KAELTHAS_SUNSTRIDER, DOOR_TYPE_ROOM },
+ { 0, 0, DOOR_TYPE_ROOM } // END
};
Position const KalecgosSpawnPos = { 164.3747f, -397.1197f, 2.151798f, 1.66219f };
@@ -63,7 +74,7 @@ class instance_magisters_terrace : public InstanceMapScript
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
- LoadObjectData(creatureData, nullptr);
+ LoadObjectData(creatureData, gameObjectData);
LoadDoorData(doorData);
Initialize();
}
@@ -113,16 +124,6 @@ class instance_magisters_terrace : public InstanceMapScript
switch (creature->GetEntry())
{
- case NPC_SELIN:
- SelinGUID = creature->GetGUID();
- break;
- case NPC_DELRISSA:
- DelrissaGUID = creature->GetGUID();
- break;
- case NPC_KALECGOS:
- case NPC_HUMAN_KALECGOS:
- KalecgosGUID = creature->GetGUID();
- break;
case NPC_COILSKAR_WITCH:
case NPC_SUNBLADE_WARLOCK:
case NPC_SUNBLADE_MAGE_GUARD:
@@ -177,33 +178,34 @@ class instance_magisters_terrace : public InstanceMapScript
case GO_KAEL_STATUE_2:
_statueGUIDs.push_back(go->GetGUID());
break;
+ case GO_ESCAPE_ORB:
+ if (GetBossState(DATA_KAELTHAS_SUNSTRIDER) == DONE)
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+ break;
default:
break;
}
}
- void OnGameObjectRemove(GameObject* go) override
- {
- InstanceScript::OnGameObjectRemove(go);
- }
-
void ProcessEvent(WorldObject* obj, uint32 eventId) override
{
if (eventId == EVENT_SPAWN_KALECGOS)
- if (!ObjectAccessor::GetCreature(*obj, KalecgosGUID) && Events.Empty())
- Events.ScheduleEvent(EVENT_SPAWN_KALECGOS, Minutes(1));
+ if (!GetCreature(DATA_KALECGOS) && _events.Empty())
+ _events.ScheduleEvent(EVENT_SPAWN_KALECGOS, 1min);
}
void Update(uint32 diff) override
{
- Events.Update(diff);
+ _events.Update(diff);
- if (Events.ExecuteEvent() == EVENT_SPAWN_KALECGOS)
+ if (_events.ExecuteEvent() == EVENT_SPAWN_KALECGOS)
+ {
if (Creature* kalecgos = instance->SummonCreature(NPC_KALECGOS, KalecgosSpawnPos))
{
kalecgos->GetMotionMaster()->MovePath(PATH_KALECGOS_FLIGHT, false);
kalecgos->AI()->Talk(SAY_KALECGOS_SPAWN);
}
+ }
}
bool SetBossState(uint32 type, EncounterState state) override
@@ -213,7 +215,7 @@ class instance_magisters_terrace : public InstanceMapScript
switch (type)
{
- case DATA_DELRISSA:
+ case DATA_PRIESTESS_DELRISSA:
if (state == IN_PROGRESS)
_delrissaDeathCount = 0;
break;
@@ -223,6 +225,9 @@ class instance_magisters_terrace : public InstanceMapScript
for (ObjectGuid guid : _statueGUIDs)
HandleGameObject(guid, false);
}
+ else if (state == DONE)
+ if (GameObject* orb = GetGameObject(DATA_ESCAPE_ORB))
+ orb->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -230,22 +235,6 @@ class instance_magisters_terrace : public InstanceMapScript
return true;
}
- ObjectGuid GetGuidData(uint32 type) const override
- {
- switch (type)
- {
- case DATA_SELIN:
- return SelinGUID;
- case DATA_DELRISSA:
- return DelrissaGUID;
- case DATA_ESCAPE_ORB:
- return EscapeOrbGUID;
- default:
- break;
- }
- return ObjectGuid::Empty;
- }
-
void WriteSaveDataMore(std::ostringstream& data) override
{
data << _kaelthasIntroState;
@@ -257,11 +246,7 @@ class instance_magisters_terrace : public InstanceMapScript
}
protected:
- EventMap Events;
- ObjectGuid SelinGUID;
- ObjectGuid DelrissaGUID;
- ObjectGuid EscapeOrbGUID;
- ObjectGuid KalecgosGUID;
+ EventMap _events;
GuidVector _statueGUIDs;
GuidSet _kaelthasPreTrashGUIDs;
uint8 _delrissaDeathCount;
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
index 72376d83c91..b80674239af 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
@@ -29,9 +29,9 @@ uint32 const EncounterCount = 4;
enum MTDataTypes
{
// Encounter states
- DATA_SELIN,
+ DATA_SELIN_FIREHEART,
DATA_VEXALLUS,
- DATA_DELRISSA,
+ DATA_PRIESTESS_DELRISSA,
DATA_KAELTHAS_SUNSTRIDER,
// Encounter related
@@ -40,7 +40,7 @@ enum MTDataTypes
// Additional data
DATA_KAELTHAS_INTRO_STATE,
-
+ DATA_KALECGOS,
DATA_ESCAPE_ORB
};
@@ -48,6 +48,9 @@ enum MTCreatureIds
{
// Bosses
BOSS_KAELTHAS_SUNSTRIDER = 24664,
+ BOSS_SELIN_FIREHEART = 24723,
+ BOSS_VEXALLUS = 24744,
+ BOSS_PRIESTESS_DELRISSA = 24560,
// Encounter related
/*Kael'thas Sunstrider*/
@@ -56,31 +59,30 @@ enum MTCreatureIds
NPC_PHOENIX = 24674,
NPC_PHOENIX_EGG = 24675,
- NPC_SELIN = 24723,
- NPC_DELRISSA = 24560,
+ /*Selin Fireheart*/
NPC_FEL_CRYSTAL = 24722,
- NPC_KALECGOS = 24844,
// Event related
+ NPC_KALECGOS = 24844,
NPC_HUMAN_KALECGOS = 24848,
NPC_COILSKAR_WITCH = 24696,
NPC_SUNBLADE_WARLOCK = 24686,
NPC_SUNBLADE_MAGE_GUARD = 24683,
NPC_SISTER_OF_TORMENT = 24697,
NPC_ETHEREUM_SMUGGLER = 24698,
- NPC_SUNBLADE_BLOOD_KNIGHT = 24684,
+ NPC_SUNBLADE_BLOOD_KNIGHT = 24684
};
enum MTGameObjectIds
{
- GO_VEXALLUS_DOOR = 187896,
- GO_SELIN_DOOR = 187979,
- GO_SELIN_ENCOUNTER_DOOR = 188065,
- GO_DELRISSA_DOOR = 187770,
- GO_ASYLUM_DOOR = 188064,
- GO_KAEL_STATUE_1 = 188165,
- GO_KAEL_STATUE_2 = 188166,
- GO_ESCAPE_ORB = 188173
+ GO_ASSEMBLY_CHAMBER_DOOR = 187979,
+ GO_SUNWELL_RAID_GATE_2 = 188065,
+ GO_SUNWELL_RAID_GATE_4 = 187770,
+ GO_SUNWELL_RAID_GATE_5 = 187896,
+ GO_ASYLUM_DOOR = 188064,
+ GO_KAEL_STATUE_1 = 188165,
+ GO_KAEL_STATUE_2 = 188166,
+ GO_ESCAPE_ORB = 188173
};
enum MTInstanceEventIds