Instance ZG Raid Saving
Instance ZG .cpp
void instance_zulgurub::OnCreatureCreate(Creature* pCreature)
{
switch (pCreature->GetEntry())
{
case NPC_VENOXIS:
if (m_auiEncounter[TYPE_VENOXIS] == DONE)
{
pCreature->Despawn();
break;
}
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
break;
case NPC_JEKLIK:
if (m_auiEncounter[TYPE_JEKLIK] == DONE)
{
pCreature->Despawn();
break;
}
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
break;
case NPC_LORKHAN:
case NPC_ZATH:
case NPC_THEKAL:
if (m_auiEncounter[TYPE_THEKAL] == DONE)
{
pCreature->Despawn();
break;
}
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
break;
case NPC_JINDO:
if (m_auiEncounter[TYPE_JINDO] == DONE)
{
pCreature->Despawn();
break;
}
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
break;
case NPC_HAKKAR:
if (m_auiEncounter[TYPE_HAKKAR] == DONE)
{
pCreature->Despawn();
break;
}
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
break;
case NPC_BLOODLORD_MANDOKIR:
if (m_auiEncounter[TYPE_OHGAN] == DONE)
{
pCreature->Despawn();
break;
}
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
break;
case NPC_MARLI:
if (m_auiEncounter[TYPE_MARLI] == DONE)
{
pCreature->Despawn();
break;
}
m_mNpcEntryGuidStore[pCreature->GetEntry()] = pCreature->GetObjectGuid();
break;
case NPC_PANTHER_TRIGGER:
if (pCreature->GetPositionY() {
m_lLeftPantherTriggerGUIDList.push_back(pCreature->GetObjectGuid());
}
else
{
m_lRightPantherTriggerGUIDList.push_back(pCreature->GetObjectGuid());
}
case NPC_ARLOKK:
if (m_auiEncounter[TYPE_ARLOKK] == DONE)
{
pCreature->Despawn();
break;
}
}
}
Instance ZG .h header file
enum
{
MAX_ENCOUNTER = 10,
MAX_PRIESTS = 5,
TYPE_JEKLIK = 0,
TYPE_VENOXIS = 1,
TYPE_MARLI = 2,
TYPE_THEKAL = 3,
TYPE_ARLOKK = 4,
TYPE_OHGAN = 5, // Do not change, used by Acid
TYPE_LORKHAN = 6,
TYPE_ZATH = 7,
TYPE_JINDO = 8,
TYPE_HAKKAR = 9,
NPC_LORKHAN = 11347,
NPC_ZATH = 11348,
NPC_THEKAL = 14509,
NPC_JINDO = 11380,
NPC_HAKKAR = 14834,
NPC_ARLOKK = 14515,
NPC_PANTHER_TRIGGER = 15091,
NPC_BLOODLORD_MANDOKIR = 11382,
NPC_MARLI = 14510,
NPC_VENOXIS = 14507,
NPC_JEKLIK = 14517,
GO_SPIDER_EGG = 179985,
GO_GONG_OF_BETHEKK = 180526,
GO_FORCEFIELD = 180497,
SAY_MINION_DESTROY = -1309022,
SAY_HAKKAR_PROTECT = -1309023,
HP_LOSS_PER_PRIEST = 60000,
AREATRIGGER_ENTER = 3958,
AREATRIGGER_ALTAR = 3960,
};
static const float aMandokirDownstairsPos[3] = { -12196.30f, -1948.37f, 130.31f};
class instance_zulgurub : public ScriptedInstance
{
public:
instance_zulgurub(Map* pMap);
~instance_zulgurub() {}
void Initialize() override;
// IsEncounterInProgress() const override { return false; } // not active in Zul'Gurub
void OnCreatureCreate(Creature* pCreature) override;
void OnObjectCreate(GameObject* pGo) override;
void SetData(uint32 uiType, uint32 uiData) override;
uint32 GetData(uint32 uiType) const override;
const char* Save() const override { return m_strInstData.c_str(); }
void Load(const char* chrIn) override;
void DoYellAtTriggerIfCan(uint32 uiTriggerId);
Creature* SelectRandomPantherTrigger(bool bIsLeft);
protected:
void DoLowerHakkarHitPoints();
uint32 m_auiEncounter[MAX_ENCOUNTER];
std::string m_strInstData;
GuidList m_lRightPantherTriggerGUIDList;
GuidList m_lLeftPantherTriggerGUIDList;
GuidList m_lSpiderEggGUIDList;
bool m_bHasIntroYelled;
bool m_bHasAltarYelled;
};
#endif
Recommended Comments
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now