Onyxia Raid Saving
Instance Onyxia .cpp
void instance_onyxias_lair::OnCreatureCreate(Creature* pCreature)
{
switch (pCreature->GetEntry())
{
case NPC_ONYXIA_TRIGGER:
if (m_uiEncounter == DONE)
{
pCreature->Despawn();
break;
}
case NPC_ONYXIA:
if (m_uiEncounter == DONE)
{
pCreature->Despawn();
break;
}
m_uiEncounter = NOT_STARTED;
m_mNpcEntryGuidStore[NPC_ONYXIA_TRIGGER] = pCreature->GetObjectGuid();
break;
}
}
void instance_onyxias_lair::Load(const char* chrIn)
{
if (!chrIn)
{
OUT_LOAD_INST_DATA_FAIL;
return;
}
OUT_LOAD_INST_DATA(chrIn);
std::istringstream loadStream(chrIn);
loadStream >> m_uiEncounter;
if (m_uiEncounter == IN_PROGRESS)
{
m_uiEncounter = NOT_STARTED;
}
OUT_LOAD_INST_DATA_COMPLETE;
}
void instance_onyxias_lair::SetData(uint32 uiType, uint32 uiData)
{
if (uiType != TYPE_ONYXIA)
{
return;
}
m_uiEncounter = uiData;
if (uiData == DATA_LIFTOFF)
{
m_tPhaseTwoStart = time(NULL);
}
if (uiData == DONE)
{
OUT_SAVE_INST_DATA;
std::ostringstream saveStream;
saveStream
m_strInstData = saveStream.str();
SaveToDB();
OUT_SAVE_INST_DATA_COMPLETE;
}
// Currently no reason to save anything
}
uint32 instance_onyxias_lair::GetData(uint32 uiType) const
{
if (uiType)
{
return m_uiEncounter;
}
return 0;
}
Instance Onyxia .h header file
enum
{
TYPE_ONYXIA = 0,
// Special data fields for Onyxia
DATA_LIFTOFF = 4,
NPC_ONYXIA = 10184,
NPC_ONYXIA_WHELP = 11262,
NPC_ONYXIA_TRIGGER = 12758
};
class instance_onyxias_lair : public ScriptedInstance
{
public:
instance_onyxias_lair(Map* pMap);
~instance_onyxias_lair() {}
void Initialize() override;
bool IsEncounterInProgress() const override;
void OnCreatureCreate(Creature* pCreature) override;
const char* Save() const override { return m_strInstData.c_str(); }
void Load(const char* chrIn) override;
void SetData(uint32 uiType, uint32 uiData) override;
uint32 GetData(uint32 uiType) const override;
protected:
uint32 m_uiEncounter;
std::string m_strInstData;
time_t m_tPhaseTwoStart;
};
#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