bool ReadModListFromSaveGame(const char* path) { _MESSAGE("Reading mod list from savegame"); IFileStream savefile; if (!savefile.Open(path)) { _MESSAGE("Couldn't open .ess file when attempting to read plugin list"); return false; } else { static const UInt32 kSaveHeaderSizeOffset = 34; savefile.SetOffset(kSaveHeaderSizeOffset); UInt32 headerSize = savefile.Read32(); savefile.SetOffset(headerSize + kSaveHeaderSizeOffset + sizeof(UInt32)); s_numPreloadMods = savefile.Read8(); char pluginName[0x100]; for (UInt32 i = 0; i < s_numPreloadMods; i++) { UInt8 nameLen = savefile.Read8(); savefile.ReadBuf(pluginName, nameLen); pluginName[nameLen] = 0; _MESSAGE("Save file contains plugin %s", pluginName); s_preloadModRefIDs[i] = (*g_dataHandler)->GetModIndex(pluginName); } savefile.Close(); } return true; }