diff options
Diffstat (limited to 'src')
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; |