Jump to content
  • Onyxia Raid Saving


    Arkadus
    • Status: In Progress
      Main Category: Script (Eluna / SD3)
      Sub-Category: sd2
      Version: 0.20 Milestone: 20 Priority: Normal
      Implemented Version: 0.20

    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


    User Feedback

    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 account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use