Scripts/Instance: Transition Gnomeregan to boss states (instance spawn group prep)

This commit is contained in:
Treeston
2018-02-09 19:21:31 +01:00
parent 2994abeae6
commit a4fc32dd86
3 changed files with 38 additions and 56 deletions

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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
void OnUnitDeath(Unit* unit) override
{
switch (uiType)
{
case TYPE_EVENT:
m_auiEncounter[0] = uiData;
if (uiData == DONE)
SaveToDB();
break;
}
}
uint32 GetData(uint32 uiType) const 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;