aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h14
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp76
3 files changed, 38 insertions, 56 deletions
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp
index 7f95f92d32f..8d7b5a8b434 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp
@@ -276,10 +276,10 @@ public:
switch (uiValue)
{
case 1:
- instance->SetData(TYPE_EVENT, IN_PROGRESS);
+ instance->SetBossState(DATA_BLASTMASTER_EVENT, IN_PROGRESS);
break;
case 2:
- instance->SetData(TYPE_EVENT, DONE);
+ instance->SetBossState(DATA_BLASTMASTER_EVENT, DONE);
NextStep(5000, false, 22);
break;
}
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
index fb3c9454d82..aef2610da2e 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
@@ -35,12 +35,22 @@ enum GNOCreatureIds
NPC_BLASTMASTER_EMI_SHORTFUSE = 7998,
NPC_CAVERNDEEP_AMBUSHER = 6207,
NPC_GRUBBIS = 7361,
- NPC_CHOMPER = 6215
+ NPC_VICIOUS_FALLOUT = 7079,
+ NPC_CHOMPER = 6215,
+ NPC_ELECTROCUTIONER = 6235,
+ NPC_CROWD_PUMMELER = 6229,
+ NPC_MEKGINEER = 7800,
};
enum GNOData
{
- TYPE_EVENT = 1
+ DATA_BLASTMASTER_EVENT = 0,
+ DATA_VICIOUS_FALLOUT = 1,
+ DATA_ELECTROCUTIONER = 2,
+ DATA_CROWD_PUMMELER = 3,
+ DATA_THERMAPLUGG = 4,
+
+ MAX_ENCOUNTER
};
enum GNOData64
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
index 30cc23467cb..1345fd308d8 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
@@ -24,8 +24,6 @@
#include "Map.h"
#include "Player.h"
-#define MAX_ENCOUNTER 1
-
class instance_gnomeregan : public InstanceMapScript
{
public:
@@ -41,43 +39,21 @@ public:
instance_gnomeregan_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+ SetBossNumber(MAX_ENCOUNTER);
}
- uint32 m_auiEncounter[MAX_ENCOUNTER];
-
ObjectGuid uiCaveInLeftGUID;
ObjectGuid uiCaveInRightGUID;
- ObjectGuid uiBastmasterEmiShortfuseGUID;
-
- void Load(char const* in) override
- {
- if (!in)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
-
- OUT_LOAD_INST_DATA(in);
-
- std::istringstream loadStream(in);
- loadStream >> m_auiEncounter[0];
-
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- {
- if (m_auiEncounter[i] == IN_PROGRESS)
- m_auiEncounter[i] = NOT_STARTED;
- }
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
+ ObjectGuid uiBlastmasterEmiShortfuseGUID;
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
{
- case NPC_BLASTMASTER_EMI_SHORTFUSE: uiBastmasterEmiShortfuseGUID = creature->GetGUID(); break;
+ case NPC_BLASTMASTER_EMI_SHORTFUSE:
+ uiBlastmasterEmiShortfuseGUID = creature->GetGUID();
+ break;
}
}
@@ -87,36 +63,32 @@ public:
{
case GO_CAVE_IN_LEFT:
uiCaveInLeftGUID = go->GetGUID();
- if (m_auiEncounter[0] == DONE || m_auiEncounter[0] == NOT_STARTED)
- HandleGameObject(ObjectGuid::Empty, false, go);
break;
case GO_CAVE_IN_RIGHT:
uiCaveInRightGUID = go->GetGUID();
- if (m_auiEncounter[0] == DONE || m_auiEncounter[0] == NOT_STARTED)
- HandleGameObject(ObjectGuid::Empty, false, go);
- break;
- }
- }
-
- void SetData(uint32 uiType, uint32 uiData) override
- {
- switch (uiType)
- {
- case TYPE_EVENT:
- m_auiEncounter[0] = uiData;
- if (uiData == DONE)
- SaveToDB();
break;
}
}
- uint32 GetData(uint32 uiType) const override
+ void OnUnitDeath(Unit* unit) override
{
- switch (uiType)
- {
- case TYPE_EVENT: return m_auiEncounter[0];
- }
- return 0;
+ Creature* creature = unit->ToCreature();
+ if (creature)
+ switch (creature->GetEntry())
+ {
+ case NPC_VICIOUS_FALLOUT:
+ SetBossState(DATA_VICIOUS_FALLOUT, DONE);
+ break;
+ case NPC_ELECTROCUTIONER:
+ SetBossState(DATA_ELECTROCUTIONER, DONE);
+ break;
+ case NPC_CROWD_PUMMELER:
+ SetBossState(DATA_CROWD_PUMMELER, DONE);
+ break;
+ case NPC_MEKGINEER:
+ SetBossState(DATA_THERMAPLUGG, DONE);
+ break;
+ }
}
ObjectGuid GetGuidData(uint32 uiType) const override
@@ -125,7 +97,7 @@ public:
{
case DATA_GO_CAVE_IN_LEFT: return uiCaveInLeftGUID;
case DATA_GO_CAVE_IN_RIGHT: return uiCaveInRightGUID;
- case DATA_NPC_BASTMASTER_EMI_SHORTFUSE: return uiBastmasterEmiShortfuseGUID;
+ case DATA_NPC_BASTMASTER_EMI_SHORTFUSE: return uiBlastmasterEmiShortfuseGUID;
}
return ObjectGuid::Empty;