diff options
author | Blaymoira <none@none> | 2009-02-11 20:07:44 +0100 |
---|---|---|
committer | Blaymoira <none@none> | 2009-02-11 20:07:44 +0100 |
commit | 6e19ea23c296f3d95cb6c69269e9d0857bd7526f (patch) | |
tree | 9bf33cf9f893f3758ec6d7e6557a47a5a1c5824c /src | |
parent | 46078aeec9edf7dd077cdaee975756ab223e8432 (diff) |
*Save/Load function for Steam Vault - by Iskander
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp index a0063a4eef9..8771cf2abdd 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp @@ -43,10 +43,10 @@ bool GOHello_go_main_chambers_access_panel(Player *player, GameObject* _GO) if (!pInstance) return false; - if (_GO->GetEntry() == ACCESS_PANEL_HYDRO && pInstance->GetData(TYPE_HYDROMANCER_THESPIA) == DONE) + if (_GO->GetEntry() == ACCESS_PANEL_HYDRO && (pInstance->GetData(TYPE_HYDROMANCER_THESPIA) == DONE || pInstance->GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL)) pInstance->SetData(TYPE_HYDROMANCER_THESPIA,SPECIAL); - if (_GO->GetEntry() == ACCESS_PANEL_MEK && pInstance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == DONE) + if (_GO->GetEntry() == ACCESS_PANEL_MEK && (pInstance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == DONE || pInstance->GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL)) pInstance->SetData(TYPE_MEKGINEER_STEAMRIGGER,SPECIAL); return true; @@ -174,6 +174,9 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance Encounter[3] = data; break; } + + if(data == DONE || data == SPECIAL) + SaveToDB(); } uint32 GetData(uint32 type) @@ -205,6 +208,37 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance } return 0; } + + const char* Save() + { + OUT_SAVE_INST_DATA; + std::ostringstream stream; + stream << Encounter[0] << " " << Encounter[1] << " " << Encounter[2] << " " << Encounter[3]; + char* out = new char[stream.str().length() + 1]; + strcpy(out, stream.str().c_str()); + if(out) + { + OUT_SAVE_INST_DATA_COMPLETE; + return out; + } + return NULL; + } + + void Load(const char* in) + { + if(!in) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } + OUT_LOAD_INST_DATA(in); + std::istringstream stream(in); + stream >> Encounter[0] >> Encounter[1] >> Encounter[2] >> Encounter[3]; + for(uint8 i = 0; i < ENCOUNTERS; ++i) + if(Encounter[i] == IN_PROGRESS) + Encounter[i] = NOT_STARTED; + OUT_LOAD_INST_DATA_COMPLETE; + } }; InstanceData* GetInstanceData_instance_steam_vault(Map* map) |