aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvah <dreadkiller@gmx.de>2019-01-28 16:14:58 -0300
committerShauren <shauren.trinity@gmail.com>2021-11-23 00:39:13 +0100
commit3027458338a4b3679b4a938d00be2c1bbbd56786 (patch)
treebfa76a70bca5ed64f089518b7d955a20acda6e5a /src
parent3847d7b2778c0799b8942f2ed70ee40771d28533 (diff)
Scripts/Magister Terrace: Update InstanceScript and more fixes
Cherrypicked of https://github.com/Ovahlord/TrinityCore/commits/4.3.4 (cherry picked from commit 1b346485e40ddee958c116579d93bcff063021a5)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp38
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp78
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h31
5 files changed, 77 insertions, 84 deletions
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
index 0cfae13f8ee..90bc62d3b12 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
@@ -258,7 +258,7 @@ struct boss_felblood_kaelthas : public BossAI
switch (summon->GetEntry())
{
case NPC_ARCANE_SPHERE:
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 70.0f, true, true))
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 70.0f, true))
summon->GetMotionMaster()->MoveFollow(target, 0.0f, 0.0f);
break;
case NPC_FLAME_STRIKE:
@@ -307,7 +307,7 @@ struct boss_felblood_kaelthas : public BossAI
break;
case EVENT_FLAME_STRIKE:
Talk(SAY_FLAME_STRIKE);
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true, 0))
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true))
DoCast(target, SPELL_FLAME_STRIKE);
events.Repeat(44s);
break;
@@ -319,7 +319,7 @@ struct boss_felblood_kaelthas : public BossAI
events.Repeat(1min);
break;
case EVENT_PYROBLAST:
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true, 0))
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true))
DoCast(target, SPELL_PYROBLAST);
break;
case EVENT_PHOENIX:
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
index e9e5de4cfc8..5a0b5a6395f 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
@@ -160,7 +160,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
@@ -172,7 +172,7 @@ public:
if (!pAdd->IsEngaged())
AddThreat(who, 0.0f, pAdd);
- instance->SetBossState(DATA_DELRISSA, IN_PROGRESS);
+ instance->SetBossState(DATA_PRIESTESS_DELRISSA, IN_PROGRESS);
}
void InitializeLackeys()
@@ -240,7 +240,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
me->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
}
@@ -378,10 +378,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();
}
}
@@ -395,21 +395,21 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
if (!pAdd->IsEngaged() && pAdd != me)
AddThreat(who, 0.0f, pAdd);
- if (Creature* pDelrissa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DELRISSA)))
- if (pDelrissa->IsAlive() && !pDelrissa->IsEngaged())
- AddThreat(who, 0.0f, pDelrissa);
+ if (Creature* delrissa = instance->GetCreature(DATA_PRIESTESS_DELRISSA))
+ if (delrissa->IsAlive() && !delrissa->IsEngaged())
+ AddThreat(who, 0.0f, delrissa);
}
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);
@@ -419,27 +419,27 @@ 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())
{
- pDelrissa->AddDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
+ delrissa->AddDynamicFlag(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 5e1bdfc522f..3d622233ef0 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 bcd8bff620c..a5f42c2e12f 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
@@ -36,18 +36,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 };
@@ -64,7 +75,7 @@ class instance_magisters_terrace : public InstanceMapScript
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
- LoadObjectData(creatureData, nullptr);
+ LoadObjectData(creatureData, gameObjectData);
LoadDoorData(doorData);
Initialize();
}
@@ -114,16 +125,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:
@@ -178,28 +179,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(GO_FLAG_NOT_SELECTABLE);
+ break;
default:
break;
}
}
- void ProcessEvent(WorldObject* obj, uint32 eventId) override
+ 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
@@ -209,7 +216,7 @@ class instance_magisters_terrace : public InstanceMapScript
switch (type)
{
- case DATA_DELRISSA:
+ case DATA_PRIESTESS_DELRISSA:
if (state == IN_PROGRESS)
_delrissaDeathCount = 0;
break;
@@ -219,6 +226,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(GO_FLAG_NOT_SELECTABLE);
break;
default:
break;
@@ -226,22 +236,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;
@@ -253,11 +247,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 9bfada78af2..0c6868ced35 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
@@ -28,9 +28,9 @@ uint32 const EncounterCount = 4;
enum MTDataTypes
{
// Encounter states
- DATA_SELIN,
+ DATA_SELIN_FIREHEART = 0,
DATA_VEXALLUS,
- DATA_DELRISSA,
+ DATA_PRIESTESS_DELRISSA,
DATA_KAELTHAS_SUNSTRIDER,
// Encounter related
@@ -40,6 +40,7 @@ enum MTDataTypes
// Additional data
DATA_KAELTHAS_INTRO_STATE,
+ DATA_KALECGOS,
DATA_ESCAPE_ORB
};
@@ -47,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*/
@@ -55,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