aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp5
-rw-r--r--src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.h10
-rw-r--r--src/scripts/eastern_kingdoms/blackrock_depths/boss_magmus.cpp11
-rw-r--r--src/scripts/eastern_kingdoms/blackrock_depths/instance_blackrock_depths.cpp51
4 files changed, 69 insertions, 8 deletions
diff --git a/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp b/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp
index e9256750d31..5ecc380019d 100644
--- a/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp
+++ b/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp
@@ -52,6 +52,11 @@ bool GOHello_go_shadowforge_brazier(Player* pPlayer, GameObject* pGo)
pInstance->SetData(TYPE_LYCEUM, DONE);
else
pInstance->SetData(TYPE_LYCEUM, IN_PROGRESS);
+ // If used brazier open linked doors (North or South)
+ if(pGo->GetGUID() == pInstance->GetData64(DATA_SF_BRAZIER_N))
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GOLEM_DOOR_N), true);
+ else if(pGo->GetGUID() == pInstance->GetData64(DATA_SF_BRAZIER_S))
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_GOLEM_DOOR_S), true);
}
return false;
}
diff --git a/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.h b/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.h
index c467e3873cf..edb340252b2 100644
--- a/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.h
+++ b/src/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.h
@@ -32,6 +32,14 @@ enum eTypes
DATA_GO_CHALICE = 19,
DATA_GHOSTKILL = 20,
- DATA_EVENSTARTER = 21
+ DATA_EVENSTARTER = 21,
+
+ DATA_GOLEM_DOOR_N = 22,
+ DATA_GOLEM_DOOR_S = 23,
+
+ DATA_THRONE_DOOR = 24,
+
+ DATA_SF_BRAZIER_N = 25,
+ DATA_SF_BRAZIER_S = 26
};
#endif
diff --git a/src/scripts/eastern_kingdoms/blackrock_depths/boss_magmus.cpp b/src/scripts/eastern_kingdoms/blackrock_depths/boss_magmus.cpp
index 773eaf913cd..1854a7b2adc 100644
--- a/src/scripts/eastern_kingdoms/blackrock_depths/boss_magmus.cpp
+++ b/src/scripts/eastern_kingdoms/blackrock_depths/boss_magmus.cpp
@@ -29,6 +29,11 @@ enum Spells
SPELL_WARSTOMP = 24375
};
+enum eEnums
+{
+ DATA_THRONE_DOOR = 24 // not id or guid of doors but number of enum in blackrock_depths.h
+};
+
struct boss_magmusAI : public ScriptedAI
{
boss_magmusAI(Creature *c) : ScriptedAI(c) {}
@@ -71,6 +76,12 @@ struct boss_magmusAI : public ScriptedAI
DoMeleeAttackIfReady();
}
+ // When he die open door to last chamber
+ void JustDied(Unit *who)
+ {
+ if(ScriptedInstance* pInstance = who->GetInstanceData())
+ pInstance->HandleGameObject(pInstance->GetData64(DATA_THRONE_DOOR), true);
+ }
};
CreatureAI* GetAI_boss_magmus(Creature* pCreature)
{
diff --git a/src/scripts/eastern_kingdoms/blackrock_depths/instance_blackrock_depths.cpp b/src/scripts/eastern_kingdoms/blackrock_depths/instance_blackrock_depths.cpp
index e04ed9e99c6..d376dea8b6e 100644
--- a/src/scripts/eastern_kingdoms/blackrock_depths/instance_blackrock_depths.cpp
+++ b/src/scripts/eastern_kingdoms/blackrock_depths/instance_blackrock_depths.cpp
@@ -47,6 +47,7 @@ enum eEnums
NPC_SEETHREL = 9038,
NPC_GLOOMREL = 9037,
NPC_DOOMREL = 9039,
+ NPC_MAGMUS = 9938,
GO_ARENA1 = 161525,
GO_ARENA2 = 161522,
@@ -62,9 +63,11 @@ enum eEnums
GO_TOMB_ENTER = 170576,
GO_TOMB_EXIT = 170577,
GO_LYCEUM = 170558,
- GO_GOLEM_ROOM_N = 170573,
- GO_GOLEM_ROOM_S = 170574,
- GO_THONE_ROOM = 170575,
+ GO_SF_N = 174745, // Shadowforge Brazier North
+ GO_SF_S = 174744, // Shadowforge Brazier South
+ GO_GOLEM_ROOM_N = 170573, // Magmus door North
+ GO_GOLEM_ROOM_S = 170574, // Magmus door Soutsh
+ GO_THRONE_ROOM = 170575, // Throne door
GO_SPECTRAL_CHALICE = 164869,
GO_CHEST_SEVEN = 169243
@@ -79,6 +82,7 @@ struct instance_blackrock_depths : public ScriptedInstance
uint64 EmperorGUID;
uint64 PhalanxGUID;
+ uint64 MagmusGUID;
uint64 GoArena1GUID;
uint64 GoArena2GUID;
@@ -94,9 +98,11 @@ struct instance_blackrock_depths : public ScriptedInstance
uint64 GoTombEnterGUID;
uint64 GoTombExitGUID;
uint64 GoLyceumGUID;
+ uint64 GoSFSGUID;
+ uint64 GoSFNGUID;
uint64 GoGolemNGUID;
uint64 GoGolemSGUID;
- uint64 GoThoneGUID;
+ uint64 GoThroneGUID;
uint64 GoChestGUID;
uint32 BarAleCount;
@@ -112,6 +118,7 @@ struct instance_blackrock_depths : public ScriptedInstance
EmperorGUID = 0;
PhalanxGUID = 0;
+ MagmusGUID = 0;
GoArena1GUID = 0;
GoArena2GUID = 0;
@@ -127,9 +134,11 @@ struct instance_blackrock_depths : public ScriptedInstance
GoTombEnterGUID = 0;
GoTombExitGUID = 0;
GoLyceumGUID = 0;
+ GoSFSGUID = 0;
+ GoSFNGUID = 0;
GoGolemNGUID = 0;
GoGolemSGUID = 0;
- GoThoneGUID = 0;
+ GoThroneGUID = 0;
GoChestGUID = 0;
BarAleCount = 0;
@@ -155,6 +164,11 @@ struct instance_blackrock_depths : public ScriptedInstance
case NPC_SEETHREL: TombBossGUIDs[4] = pCreature->GetGUID(); break;
case NPC_GLOOMREL: TombBossGUIDs[5] = pCreature->GetGUID(); break;
case NPC_ANGERREL: TombBossGUIDs[6] = pCreature->GetGUID(); break;
+ case NPC_MAGMUS:
+ MagmusGUID = pCreature->GetGUID();
+ if(!pCreature->isAlive())
+ HandleGameObject(GetData64(DATA_THRONE_DOOR), true); // if Magmus is dead open door to last boss
+ break;
}
}
@@ -182,9 +196,11 @@ struct instance_blackrock_depths : public ScriptedInstance
HandleGameObject(0, false, pGo);
break;
case GO_LYCEUM: GoLyceumGUID = pGo->GetGUID(); break;
+ case GO_SF_S: GoSFSGUID = pGo->GetGUID(); break;
+ case GO_SF_N: GoSFNGUID = pGo->GetGUID(); break;
case GO_GOLEM_ROOM_N: GoGolemNGUID = pGo->GetGUID(); break;
case GO_GOLEM_ROOM_S: GoGolemSGUID = pGo->GetGUID(); break;
- case GO_THONE_ROOM: GoThoneGUID = pGo->GetGUID(); break;
+ case GO_THRONE_ROOM: GoThroneGUID = pGo->GetGUID(); break;
case GO_CHEST_SEVEN: GoChestGUID = pGo->GetGUID(); break;
}
}
@@ -301,6 +317,16 @@ struct instance_blackrock_depths : public ScriptedInstance
return GoBarDoorGUID;
case DATA_EVENSTARTER:
return TombEventStarterGUID;
+ case DATA_SF_BRAZIER_N:
+ return GoSFNGUID;
+ case DATA_SF_BRAZIER_S:
+ return GoSFSGUID;
+ case DATA_THRONE_DOOR:
+ return GoThroneGUID;
+ case DATA_GOLEM_DOOR_N:
+ return GoGolemNGUID;
+ case DATA_GOLEM_DOOR_S:
+ return GoGolemSGUID;
}
return 0;
}
@@ -329,7 +355,7 @@ struct instance_blackrock_depths : public ScriptedInstance
m_auiEncounter[i] = NOT_STARTED;
if (GhostKillCount > 0 && GhostKillCount < 7)
GhostKillCount = 0;//reset tomb of seven event
- if (GhostKillCount > 7)
+ if (GhostKillCount >= 7)
GhostKillCount = 7;
OUT_LOAD_INST_DATA_COMPLETE;
@@ -401,6 +427,17 @@ struct instance_blackrock_depths : public ScriptedInstance
TombTimer = TIMER_TOMBOFTHESEVEN;
++TombEventCounter;
TombOfSevenEvent();
+ // Check Killed bosses
+ for (uint8 i = 0; i < 7; ++i)
+ {
+ if (Creature* boss = instance->GetCreature(TombBossGUIDs[i]))
+ {
+ if (!boss->isAlive())
+ {
+ GhostKillCount = i+1;
+ }
+ }
+ }
} else TombTimer -= diff;
}
if (GhostKillCount >= 7 && TombEventStarterGUID)