Skip to content

Commit 114ea58

Browse files
committed
[2213] Use EntryGuidMap-Storage in Blood Furnace
1 parent e99ef53 commit 114ea58

File tree

3 files changed

+32
-93
lines changed

3 files changed

+32
-93
lines changed

scripts/outland/hellfire_citadel/blood_furnace/blood_furnace.h

+6-27
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ enum
1414
TYPE_BROGGOK_EVENT = 1,
1515
TYPE_KELIDAN_EVENT = 2,
1616

17-
NPC_THE_MAKER = 17381,
17+
// NPC_THE_MAKER = 17381,
1818
NPC_BROGGOK = 17380,
19-
NPC_KELIDAN_THE_MAKER = 17377,
19+
// NPC_KELIDAN_THE_BREAKER = 17377,
2020
NPC_NASCENT_FEL_ORC = 17398, // Used in the Broggok event
2121

2222
GO_DOOR_FINAL_EXIT = 181766,
@@ -26,10 +26,10 @@ enum
2626
GO_DOOR_BROGGOK_REAR = 181819,
2727
GO_DOOR_KELIDAN_EXIT = 181823,
2828

29-
GO_PRISON_CELL_MAKER1 = 181813, // The maker cell front right
30-
GO_PRISON_CELL_MAKER2 = 181814, // The maker cell back right
31-
GO_PRISON_CELL_MAKER3 = 181816, // The maker cell front left
32-
GO_PRISON_CELL_MAKER4 = 181815, // The maker cell back left
29+
// GO_PRISON_CELL_MAKER1 = 181813, // The maker cell front right
30+
// GO_PRISON_CELL_MAKER2 = 181814, // The maker cell back right
31+
// GO_PRISON_CELL_MAKER3 = 181816, // The maker cell front left
32+
// GO_PRISON_CELL_MAKER4 = 181815, // The maker cell back left
3333

3434
GO_PRISON_CELL_BROGGOK_1 = 181817, // Broggok cell back left (NE)
3535
GO_PRISON_CELL_BROGGOK_2 = 181818, // Broggok cell back right (SE)
@@ -62,7 +62,6 @@ class MANGOS_DLL_DECL instance_blood_furnace : public ScriptedInstance
6262
void OnCreatureDeath(Creature* pCreature);
6363
void OnCreatureEvade(Creature* pCreature);
6464

65-
uint64 GetData64(uint32 uiData);
6665
void SetData(uint32 uiType, uint32 uiData);
6766
uint32 GetData(uint32 uiType);
6867

@@ -80,26 +79,6 @@ class MANGOS_DLL_DECL instance_blood_furnace : public ScriptedInstance
8079
uint32 m_auiEncounter[MAX_ENCOUNTER];
8180
std::string m_strInstData;
8281

83-
uint64 m_uiMakerGUID;
84-
uint64 m_uiBroggokGUID;
85-
uint64 m_uiKelidanGUID;
86-
87-
uint64 m_uiDoorFinalExitGUID;
88-
uint64 m_uiDoorMakerFrontGUID;
89-
uint64 m_uiDoorMakerRearGUID;
90-
uint64 m_uiDoorBroggokFrontGUID;
91-
uint64 m_uiDoorBrokkokRearGUID;
92-
uint64 m_uiDoorKelidanExitGUID;
93-
94-
uint64 m_uiPrisonCell1GUID;
95-
uint64 m_uiPrisonCell2GUID;
96-
uint64 m_uiPrisonCell3GUID;
97-
uint64 m_uiPrisonCell4GUID;
98-
uint64 m_uiPrisonCell5GUID;
99-
uint64 m_uiPrisonCell6GUID;
100-
uint64 m_uiPrisonCell7GUID;
101-
uint64 m_uiPrisonCell8GUID;
102-
10382
BroggokEventInfo m_aBroggokEvent[MAX_ORC_WAVES];
10483

10584
uint32 m_uiBroggokEventTimer; // Timer for opening the event cages; only on heroic mode = 30 secs

scripts/outland/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp

+25-65
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,6 @@ EndScriptData */
2525
#include "blood_furnace.h"
2626

2727
instance_blood_furnace::instance_blood_furnace(Map* pMap) : ScriptedInstance(pMap),
28-
m_uiMakerGUID(0),
29-
m_uiBroggokGUID(0),
30-
m_uiKelidanGUID(0),
31-
32-
m_uiDoorFinalExitGUID(0),
33-
m_uiDoorMakerFrontGUID(0),
34-
m_uiDoorMakerRearGUID(0),
35-
m_uiDoorBroggokFrontGUID(0),
36-
m_uiDoorBrokkokRearGUID(0),
37-
m_uiDoorKelidanExitGUID(0),
38-
39-
m_uiPrisonCell1GUID(0),
40-
m_uiPrisonCell2GUID(0),
41-
m_uiPrisonCell3GUID(0),
42-
m_uiPrisonCell4GUID(0),
43-
m_uiPrisonCell5GUID(0),
44-
m_uiPrisonCell6GUID(0),
45-
m_uiPrisonCell7GUID(0),
46-
m_uiPrisonCell8GUID(0),
47-
4828
m_uiBroggokEventTimer(30000),
4929
m_uiBroggokEventPhase(0)
5030
{
@@ -60,9 +40,10 @@ void instance_blood_furnace::OnCreatureCreate(Creature* pCreature)
6040
{
6141
switch (pCreature->GetEntry())
6242
{
63-
case NPC_THE_MAKER: m_uiMakerGUID = pCreature->GetGUID(); break;
64-
case NPC_BROGGOK: m_uiBroggokGUID = pCreature->GetGUID(); break;
65-
case NPC_KELIDAN_THE_MAKER: m_uiKelidanGUID = pCreature->GetGUID(); break;
43+
case NPC_BROGGOK:
44+
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
45+
break;
46+
6647
case NPC_NASCENT_FEL_ORC:
6748
m_luiNascentOrcGUIDs.push_back(pCreature->GetGUID());
6849
break;
@@ -74,56 +55,35 @@ void instance_blood_furnace::OnObjectCreate(GameObject* pGo)
7455
switch (pGo->GetEntry())
7556
{
7657
case GO_DOOR_MAKER_FRONT: // the maker front door
77-
m_uiDoorMakerFrontGUID = pGo->GetGUID();
7858
break;
7959
case GO_DOOR_MAKER_REAR: // the maker rear door
80-
m_uiDoorMakerRearGUID = pGo->GetGUID();
81-
if (m_auiEncounter[TYPE_THE_MAKER_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY)
82-
DoUseDoorOrButton(m_uiDoorMakerRearGUID);
60+
if (m_auiEncounter[TYPE_THE_MAKER_EVENT] == DONE)
61+
pGo->SetGoState(GO_STATE_ACTIVE);
8362
break;
8463
case GO_DOOR_BROGGOK_FRONT: // broggok front door
85-
m_uiDoorBroggokFrontGUID = pGo->GetGUID();
8664
break;
8765
case GO_DOOR_BROGGOK_REAR: // broggok rear door
88-
m_uiDoorBrokkokRearGUID = pGo->GetGUID();
89-
if (m_auiEncounter[TYPE_BROGGOK_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY)
90-
DoUseDoorOrButton(m_uiDoorBrokkokRearGUID);
66+
if (m_auiEncounter[TYPE_BROGGOK_EVENT] == DONE)
67+
pGo->SetGoState(GO_STATE_ACTIVE);
9168
break;
9269
case GO_DOOR_KELIDAN_EXIT: // kelidan exit door
93-
m_uiDoorKelidanExitGUID = pGo->GetGUID();
94-
if (m_auiEncounter[TYPE_KELIDAN_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY)
95-
DoUseDoorOrButton(m_uiDoorKelidanExitGUID);
70+
if (m_auiEncounter[TYPE_KELIDAN_EVENT] == DONE)
71+
pGo->SetGoState(GO_STATE_ACTIVE);
9672
break;
9773
case GO_DOOR_FINAL_EXIT: // final exit door
98-
m_uiDoorFinalExitGUID = pGo->GetGUID();
99-
if (m_auiEncounter[TYPE_KELIDAN_EVENT] == DONE && pGo->GetGoState() == GO_STATE_READY)
100-
DoUseDoorOrButton(m_uiDoorFinalExitGUID);
74+
if (m_auiEncounter[TYPE_KELIDAN_EVENT] == DONE)
75+
pGo->SetGoState(GO_STATE_ACTIVE);
10176
break;
102-
case GO_PRISON_CELL_MAKER1: m_uiPrisonCell1GUID = pGo->GetGUID(); break;
103-
case GO_PRISON_CELL_MAKER2: m_uiPrisonCell2GUID = pGo->GetGUID(); break;
104-
case GO_PRISON_CELL_MAKER3: m_uiPrisonCell3GUID = pGo->GetGUID(); break;
105-
case GO_PRISON_CELL_MAKER4: m_uiPrisonCell4GUID = pGo->GetGUID(); break;
77+
10678
case GO_PRISON_CELL_BROGGOK_1: m_aBroggokEvent[0].m_cellGuid = pGo->GetObjectGuid(); return;
10779
case GO_PRISON_CELL_BROGGOK_2: m_aBroggokEvent[1].m_cellGuid = pGo->GetObjectGuid(); return;
10880
case GO_PRISON_CELL_BROGGOK_3: m_aBroggokEvent[2].m_cellGuid = pGo->GetObjectGuid(); return;
10981
case GO_PRISON_CELL_BROGGOK_4: m_aBroggokEvent[3].m_cellGuid = pGo->GetObjectGuid(); return;
110-
}
111-
}
112-
113-
uint64 instance_blood_furnace::GetData64(uint32 uiData)
114-
{
115-
switch (uiData)
116-
{
117-
case NPC_THE_MAKER: return m_uiMakerGUID;
118-
case NPC_BROGGOK: return m_uiBroggokGUID;
119-
case GO_PRISON_CELL_MAKER1: return m_uiPrisonCell1GUID;
120-
case GO_PRISON_CELL_MAKER2: return m_uiPrisonCell2GUID;
121-
case GO_PRISON_CELL_MAKER3: return m_uiPrisonCell3GUID;
122-
case GO_PRISON_CELL_MAKER4: return m_uiPrisonCell4GUID;
12382

12483
default:
125-
return 0;
84+
return;
12685
}
86+
m_mGoEntryGuidStore[pGo->GetEntry()] = pGo->GetObjectGuid();
12787
}
12888

12989
void instance_blood_furnace::SetData(uint32 uiType, uint32 uiData)
@@ -132,13 +92,13 @@ void instance_blood_furnace::SetData(uint32 uiType, uint32 uiData)
13292
{
13393
case TYPE_THE_MAKER_EVENT:
13494
if (uiData == IN_PROGRESS)
135-
DoUseDoorOrButton(m_uiDoorMakerFrontGUID);
95+
DoUseDoorOrButton(GO_DOOR_MAKER_FRONT);
13696
if (uiData == FAIL)
137-
DoUseDoorOrButton(m_uiDoorMakerFrontGUID);
97+
DoUseDoorOrButton(GO_DOOR_MAKER_FRONT);
13898
if (uiData == DONE)
13999
{
140-
DoUseDoorOrButton(m_uiDoorMakerFrontGUID);
141-
DoUseDoorOrButton(m_uiDoorMakerRearGUID);
100+
DoUseDoorOrButton(GO_DOOR_MAKER_FRONT);
101+
DoUseDoorOrButton(GO_DOOR_MAKER_REAR);
142102
}
143103
m_auiEncounter[uiType] = uiData;
144104
break;
@@ -147,7 +107,7 @@ void instance_blood_furnace::SetData(uint32 uiType, uint32 uiData)
147107
return;
148108

149109
// Combat door; the exit door is opened in event
150-
DoUseDoorOrButton(m_uiDoorBroggokFrontGUID);
110+
DoUseDoorOrButton(GO_DOOR_BROGGOK_FRONT);
151111
if (uiData == IN_PROGRESS)
152112
{
153113
if (m_uiBroggokEventPhase <= MAX_ORC_WAVES)
@@ -190,8 +150,8 @@ void instance_blood_furnace::SetData(uint32 uiType, uint32 uiData)
190150
case TYPE_KELIDAN_EVENT:
191151
if (uiData == DONE)
192152
{
193-
DoUseDoorOrButton(m_uiDoorKelidanExitGUID);
194-
DoUseDoorOrButton(m_uiDoorFinalExitGUID);
153+
DoUseDoorOrButton(GO_DOOR_KELIDAN_EXIT);
154+
DoUseDoorOrButton(GO_DOOR_FINAL_EXIT);
195155
}
196156
m_auiEncounter[uiType] = uiData;
197157
break;
@@ -223,9 +183,9 @@ void instance_blood_furnace::DoNextBroggokEventPhase()
223183
// Open door to the final boss now and move boss to the center of the room
224184
if (m_uiBroggokEventPhase >= MAX_ORC_WAVES)
225185
{
226-
DoUseDoorOrButton(m_uiDoorBrokkokRearGUID);
186+
DoUseDoorOrButton(GO_DOOR_BROGGOK_REAR);
227187

228-
if (Creature* pBroggok = instance->GetCreature(m_uiBroggokGUID))
188+
if (Creature* pBroggok = GetSingleCreatureFromStorage(NPC_BROGGOK))
229189
{
230190
pBroggok->RemoveSplineFlag(SPLINEFLAG_WALKMODE);
231191
pBroggok->GetMotionMaster()->MovePoint(0, dx, dy, pBroggok->GetPositionZ());
@@ -423,7 +383,7 @@ bool GOUse_go_prison_cell_lever(Player* pPlayer, GameObject* pGo)
423383
pInstance->SetData(TYPE_BROGGOK_EVENT, IN_PROGRESS);
424384

425385
// Yell intro
426-
if (Creature* pBroggok = pInstance->instance->GetCreature(pInstance->GetData64(NPC_BROGGOK)))
386+
if (Creature* pBroggok = pInstance->GetSingleCreatureFromStorage(NPC_BROGGOK))
427387
DoScriptText(SAY_BROGGOK_INTRO, pBroggok);
428388
}
429389

sd2_revision_nr.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#ifndef __SD2_REVISION_NR_H__
22
#define __SD2_REVISION_NR_H__
3-
#define SD2_REVISION_NR "2212"
3+
#define SD2_REVISION_NR "2213"
44
#endif // __SD2_REVISION_NR_H__

0 commit comments

Comments
 (0)