BlackRock Depths: Some improvements, by antihrists

Fix Tomb of Seven event
Fix Shadowforge braziers
GO handling for Magmus

--HG--
branch : trunk
This commit is contained in:
Tartalo
2010-03-25 13:33:49 +01:00
parent 5bd9bfcdda
commit 7d6923d8c7
4 changed files with 69 additions and 8 deletions
@@ -52,6 +52,11 @@ bool GOHello_go_shadowforge_brazier(Player* pPlayer, GameObject* pGo)
pInstance->SetData(TYPE_LYCEUM, DONE); pInstance->SetData(TYPE_LYCEUM, DONE);
else else
pInstance->SetData(TYPE_LYCEUM, IN_PROGRESS); 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; return false;
} }
@@ -32,6 +32,14 @@ enum eTypes
DATA_GO_CHALICE = 19, DATA_GO_CHALICE = 19,
DATA_GHOSTKILL = 20, 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 #endif
@@ -29,6 +29,11 @@ enum Spells
SPELL_WARSTOMP = 24375 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 struct boss_magmusAI : public ScriptedAI
{ {
boss_magmusAI(Creature *c) : ScriptedAI(c) {} boss_magmusAI(Creature *c) : ScriptedAI(c) {}
@@ -71,6 +76,12 @@ struct boss_magmusAI : public ScriptedAI
DoMeleeAttackIfReady(); 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) CreatureAI* GetAI_boss_magmus(Creature* pCreature)
{ {
@@ -47,6 +47,7 @@ enum eEnums
NPC_SEETHREL = 9038, NPC_SEETHREL = 9038,
NPC_GLOOMREL = 9037, NPC_GLOOMREL = 9037,
NPC_DOOMREL = 9039, NPC_DOOMREL = 9039,
NPC_MAGMUS = 9938,
GO_ARENA1 = 161525, GO_ARENA1 = 161525,
GO_ARENA2 = 161522, GO_ARENA2 = 161522,
@@ -62,9 +63,11 @@ enum eEnums
GO_TOMB_ENTER = 170576, GO_TOMB_ENTER = 170576,
GO_TOMB_EXIT = 170577, GO_TOMB_EXIT = 170577,
GO_LYCEUM = 170558, GO_LYCEUM = 170558,
GO_GOLEM_ROOM_N = 170573, GO_SF_N = 174745, // Shadowforge Brazier North
GO_GOLEM_ROOM_S = 170574, GO_SF_S = 174744, // Shadowforge Brazier South
GO_THONE_ROOM = 170575, 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_SPECTRAL_CHALICE = 164869,
GO_CHEST_SEVEN = 169243 GO_CHEST_SEVEN = 169243
@@ -79,6 +82,7 @@ struct instance_blackrock_depths : public ScriptedInstance
uint64 EmperorGUID; uint64 EmperorGUID;
uint64 PhalanxGUID; uint64 PhalanxGUID;
uint64 MagmusGUID;
uint64 GoArena1GUID; uint64 GoArena1GUID;
uint64 GoArena2GUID; uint64 GoArena2GUID;
@@ -94,9 +98,11 @@ struct instance_blackrock_depths : public ScriptedInstance
uint64 GoTombEnterGUID; uint64 GoTombEnterGUID;
uint64 GoTombExitGUID; uint64 GoTombExitGUID;
uint64 GoLyceumGUID; uint64 GoLyceumGUID;
uint64 GoSFSGUID;
uint64 GoSFNGUID;
uint64 GoGolemNGUID; uint64 GoGolemNGUID;
uint64 GoGolemSGUID; uint64 GoGolemSGUID;
uint64 GoThoneGUID; uint64 GoThroneGUID;
uint64 GoChestGUID; uint64 GoChestGUID;
uint32 BarAleCount; uint32 BarAleCount;
@@ -112,6 +118,7 @@ struct instance_blackrock_depths : public ScriptedInstance
EmperorGUID = 0; EmperorGUID = 0;
PhalanxGUID = 0; PhalanxGUID = 0;
MagmusGUID = 0;
GoArena1GUID = 0; GoArena1GUID = 0;
GoArena2GUID = 0; GoArena2GUID = 0;
@@ -127,9 +134,11 @@ struct instance_blackrock_depths : public ScriptedInstance
GoTombEnterGUID = 0; GoTombEnterGUID = 0;
GoTombExitGUID = 0; GoTombExitGUID = 0;
GoLyceumGUID = 0; GoLyceumGUID = 0;
GoSFSGUID = 0;
GoSFNGUID = 0;
GoGolemNGUID = 0; GoGolemNGUID = 0;
GoGolemSGUID = 0; GoGolemSGUID = 0;
GoThoneGUID = 0; GoThroneGUID = 0;
GoChestGUID = 0; GoChestGUID = 0;
BarAleCount = 0; BarAleCount = 0;
@@ -155,6 +164,11 @@ struct instance_blackrock_depths : public ScriptedInstance
case NPC_SEETHREL: TombBossGUIDs[4] = pCreature->GetGUID(); break; case NPC_SEETHREL: TombBossGUIDs[4] = pCreature->GetGUID(); break;
case NPC_GLOOMREL: TombBossGUIDs[5] = pCreature->GetGUID(); break; case NPC_GLOOMREL: TombBossGUIDs[5] = pCreature->GetGUID(); break;
case NPC_ANGERREL: TombBossGUIDs[6] = 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); HandleGameObject(0, false, pGo);
break; break;
case GO_LYCEUM: GoLyceumGUID = pGo->GetGUID(); 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_N: GoGolemNGUID = pGo->GetGUID(); break;
case GO_GOLEM_ROOM_S: GoGolemSGUID = 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; case GO_CHEST_SEVEN: GoChestGUID = pGo->GetGUID(); break;
} }
} }
@@ -301,6 +317,16 @@ struct instance_blackrock_depths : public ScriptedInstance
return GoBarDoorGUID; return GoBarDoorGUID;
case DATA_EVENSTARTER: case DATA_EVENSTARTER:
return TombEventStarterGUID; 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; return 0;
} }
@@ -329,7 +355,7 @@ struct instance_blackrock_depths : public ScriptedInstance
m_auiEncounter[i] = NOT_STARTED; m_auiEncounter[i] = NOT_STARTED;
if (GhostKillCount > 0 && GhostKillCount < 7) if (GhostKillCount > 0 && GhostKillCount < 7)
GhostKillCount = 0;//reset tomb of seven event GhostKillCount = 0;//reset tomb of seven event
if (GhostKillCount > 7) if (GhostKillCount >= 7)
GhostKillCount = 7; GhostKillCount = 7;
OUT_LOAD_INST_DATA_COMPLETE; OUT_LOAD_INST_DATA_COMPLETE;
@@ -401,6 +427,17 @@ struct instance_blackrock_depths : public ScriptedInstance
TombTimer = TIMER_TOMBOFTHESEVEN; TombTimer = TIMER_TOMBOFTHESEVEN;
++TombEventCounter; ++TombEventCounter;
TombOfSevenEvent(); 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; } else TombTimer -= diff;
} }
if (GhostKillCount >= 7 && TombEventStarterGUID) if (GhostKillCount >= 7 && TombEventStarterGUID)