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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user