mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 17:27:36 +01:00
Scripts/Instance: Transition Gnomeregan to boss states (instance spawn group prep)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user