private static SaveState PlayerProgression_GetOrInitiateSaveState(On.PlayerProgression.orig_GetOrInitiateSaveState orig, PlayerProgression self, int saveStateNumber, RainWorldGame game, ProcessManager.MenuSetup setup, bool saveAsDeathOrQuit) { if (File.Exists(Custom.RootFolderDirectory() + "extraInventory.txt")) { string text = File.ReadAllText("extraInventory.txt"); int size; if (int.TryParse(text, out size)) { if (size >= 0) { KarmaAppetite_ExtraInventory.MaxSize = size; } } } return(orig.Invoke(self, saveStateNumber, game, setup, saveAsDeathOrQuit)); }
// Called with saveAsDeathOrQuit=true from StoryGameSession; =false from loading Red's statistics internal static SaveState PlayerProgression_GetOrInitiateSaveState(On.PlayerProgression.orig_GetOrInitiateSaveState orig, PlayerProgression self, int saveStateNumber, RainWorldGame game, ProcessManager.MenuSetup setup, bool saveAsDeathOrQuit) { bool loadedFromStarve = self.currentSaveState == null && self.starvedSaveState != null && self.starvedSaveState.saveStateNumber == saveStateNumber; bool loadedFromMemory = loadedFromStarve || (self.currentSaveState != null && self.currentSaveState.saveStateNumber == saveStateNumber); getOrInitSavePersLock = true; SaveState saveState = orig(self, saveStateNumber, game, setup, saveAsDeathOrQuit); getOrInitSavePersLock = false; LoadOIsSave(saveState, loadedFromMemory, loadedFromStarve); if (saveAsDeathOrQuit) { SaveOIsPers(true, true); } return(saveState); }
private static SaveState PlayerProgression_GetOrInitiateSaveState(On.PlayerProgression.orig_GetOrInitiateSaveState orig, PlayerProgression self, int saveStateNumber, RainWorldGame game, ProcessManager.MenuSetup setup, bool saveAsDeathOrQuit) { int slot = self.rainWorld.options.saveSlot; SlugBaseCharacter ply = PlayerManager.GetCustomPlayer(saveStateNumber); if (ply == null) { return(orig(self, saveStateNumber, game, setup, saveAsDeathOrQuit)); } // Copied from PlayerProgression.GetOrInitiateSaveState if (self.currentSaveState == null && self.starvedSaveState != null) { Debug.Log("LOADING STARVED STATE"); self.currentSaveState = self.starvedSaveState; self.currentSaveState.deathPersistentSaveData.winState.ResetLastShownValues(); self.starvedSaveState = null; } if (self.currentSaveState != null && self.currentSaveState.saveStateNumber == saveStateNumber) { if (saveAsDeathOrQuit) { self.SaveDeathPersistentDataOfCurrentState(true, true); } return(self.currentSaveState); } // Create a CustomSaveState instance instead self.currentSaveState = ply.CreateNewSave(self); if (!File.Exists(self.saveFilePath) || !setup.LoadInitCondition) { self.currentSaveState.LoadGame(string.Empty, game); } else { // Read the save state from a separate file instead of from prog lines CustomSaveState css = self.currentSaveState as CustomSaveState; if (css != null && HasCustomSaveData(ply.Name, slot)) { string inSave = File.ReadAllText(GetSaveFilePath(ply.Name, slot)); self.currentSaveState.LoadGame(inSave, game); if (saveAsDeathOrQuit) { self.SaveDeathPersistentDataOfCurrentState(true, true); } return(self.currentSaveState); } // By default, load an empty string self.currentSaveState.LoadGame(string.Empty, game); } if (saveAsDeathOrQuit) { self.SaveDeathPersistentDataOfCurrentState(true, true); } return(self.currentSaveState); // End copied section }