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