public override void GetDataFromGame(KarmaLadderScreen.SleepDeathScreenDataPackage package) { int oldSeed = UnityEngine.Random.seed; UnityEngine.Random.seed = package.saveState.seed + package.saveState.cycleNumber; nextcycleLength = (int)(Mathf.Lerp(300f, 1000f, UnityEngine.Random.value) / 60f * 40f * 60f); if (nextcycleLength > 36000) { burstNum = 3; } else if (nextcycleLength > 32000) { burstNum = 2; } else if (nextcycleLength > 28000) { burstNum = 1; } UnityEngine.Random.seed = package.saveState.seed + package.saveState.cycleNumber + 1; nextcycleLength2 = (int)(Mathf.Lerp(300f, 1000f, UnityEngine.Random.value) / 60f * 40f * 60f); if (nextcycleLength2 > 36000) { burstNum2 = 3; } else if (nextcycleLength2 > 32000) { burstNum2 = 2; } else if (nextcycleLength2 > 28000) { burstNum2 = 1; } UnityEngine.Random.seed = package.saveState.seed + package.saveState.cycleNumber + 2; nextcycleLength3 = (int)(Mathf.Lerp(300f, 1000f, UnityEngine.Random.value) / 60f * 40f * 60f); if (nextcycleLength3 > 36000) { burstNum3 = 3; } else if (nextcycleLength3 > 32000) { burstNum3 = 2; } else if (nextcycleLength3 > 28000) { burstNum3 = 1; } UnityEngine.Random.seed = oldSeed; orig_GetDataFromGame(package); }
public override void CommunicateWithUpcomingProcess(MainLoopProcess nextProcess) { orig_CommunicateWithUpcomingProcess(nextProcess); if (nextProcess is MessageScreen) { int karma = this.GetStorySession.saveState.deathPersistentSaveData.karma; Debug.Log("savKarma: " + karma); if (this.sawAGhost > -1) { Debug.Log("Ghost end of process stuff"); this.manager.CueAchievement(GhostWorldPresence.PassageAchievementID((GhostWorldPresence.GhostID) this.sawAGhost), 2f); if (this.GetStorySession.saveState.deathPersistentSaveData.karmaCap == 8) { this.manager.CueAchievement(RainWorld.AchievementID.AllGhostsEncountered, 10f); } this.GetStorySession.saveState.GhostEncounter(this.sawAGhost, this.rainWorld); } int num = karma; if (nextProcess.ID == ProcessManager.ProcessID.DeathScreen && !this.GetStorySession.saveState.deathPersistentSaveData.reinforcedKarma) { num = Custom.IntClamp(num - 1, 0, this.GetStorySession.saveState.deathPersistentSaveData.karmaCap); } Debug.Log("next screen MAP KARMA: " + num); this.cameras[0].hud.map.mapData.UpdateData(this.world, 1 + this.GetStorySession.saveState.deathPersistentSaveData.foodReplenishBonus, num, this.GetStorySession.saveState.deathPersistentSaveData.karmaFlowerPosition, true); int num2 = this.Players[0].pos.room; Vector2 vector = this.Players[0].pos.Tile.ToVector2() * 20f; if (nextProcess.ID == ProcessManager.ProcessID.DeathScreen && this.cameras[0].hud != null && this.cameras[0].hud.textPrompt != null) { num2 = this.cameras[0].hud.textPrompt.deathRoom; vector = this.cameras[0].hud.textPrompt.deathPos; } else if (this.Players[0].realizedCreature != null) { vector = this.Players[0].realizedCreature.mainBodyChunk.pos; } if (this.Players[0].realizedCreature != null && this.Players[0].realizedCreature.room != null && num2 == this.Players[0].realizedCreature.room.abstractRoom.index) { vector = Custom.RestrictInRect(vector, this.Players[0].realizedCreature.room.RoomRect.Grow(50f)); } KarmaLadderScreen.SleepDeathScreenDataPackage package = new KarmaLadderScreen.SleepDeathScreenDataPackage((nextProcess.ID != ProcessManager.ProcessID.SleepScreen && nextProcess.ID != ProcessManager.ProcessID.Dream) ? this.cameras[0].hud.textPrompt.foodInStomach : this.GetStorySession.saveState.food, new IntVector2(karma, this.GetStorySession.saveState.deathPersistentSaveData.karmaCap), this.GetStorySession.saveState.deathPersistentSaveData.reinforcedKarma, num2, vector, this.cameras[0].hud.map.mapData, this.GetStorySession.saveState, this.GetStorySession.characterStats, this.GetStorySession.playerSessionRecords[0], this.GetStorySession.saveState.lastMalnourished, this.GetStorySession.saveState.malnourished); (nextProcess as MessageScreen).GetDataFromGame(((this.GetStorySession.saveState.dreamsState as patch_DreamsState).everSeenMissonComplete), ((this.GetStorySession.saveState.dreamsState as patch_DreamsState).everSeenTraitor), this.GetStorySession.saveState.dreamsState.UpcomingDreamID, package); } }
public override void GetDataFromGame(KarmaLadderScreen.SleepDeathScreenDataPackage package) { base.GetDataFromGame(package); this.food = package.food; this.playerRoom = package.playerRoom; this.playerPos = package.playerPos; this.mapData = package.mapData; this.startMalnourished = package.startMalnourished; this.goalMalnourished = package.goalMalnourished; ((Monkland.Patches.Menus.patch_HUD)base.hud).InitSleepHud(this, this.mapData, package.characterStats); if (this.IsAnyDeath) { if (this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreens < 2) { this.forceWatchAnimation = true; } this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreens++; if (package.karmaReinforced) { if (this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreensWithFlower < 2) { this.forceWatchAnimation = true; } this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreensWithFlower++; } this.showFlower = (package.karmaReinforced || (package.saveState != null && package.saveState.saveStateNumber == 1)); } else if (this.IsSleepScreen) { if (this.manager.rainWorld.progression.miscProgressionData.watchedSleepScreens < 2) { this.forceWatchAnimation = true; } this.manager.rainWorld.progression.miscProgressionData.watchedSleepScreens++; if (package.characterStats.name == SlugcatStats.Name.Red && package.sessionRecord != null && package.sessionRecord.kills.Count > 0) { this.killsDisplay = new SleepScreenKills(this, this.pages[0], new Vector2(base.LeftHandButtonsPosXAdd, 728f), package.sessionRecord.kills); this.pages[0].subObjects.Add(this.killsDisplay); this.killsDisplay.started = true; } if (this.goalMalnourished) { this.starvedLabel = new MenuLabel(this, this.pages[0], base.Translate("You are starving. Your game has not been saved."), new Vector2(0f, 24f), new Vector2(1366f, 20f), true); this.pages[0].subObjects.Add(this.starvedLabel); if (this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens < 6) { this.forceWatchAnimation = true; } this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens++; } if (this.startMalnourished) { base.hud.foodMeter.NewShowCount(base.hud.foodMeter.maxFood); if (this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens < 4) { this.forceWatchAnimation = true; } this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens++; } if (this.goalMalnourished || this.startMalnourished) { base.hud.foodMeter.MoveSurvivalLimit((float)base.hud.foodMeter.showCount, false); base.hud.foodMeter.eatCircles = base.hud.foodMeter.maxFood; } } if (this.startMalnourished) { base.hud.foodMeter.MoveSurvivalLimit((float)base.hud.foodMeter.maxFood, false); } if (this.IsSleepScreen || this.IsDeathScreen || this.IsStarveScreen) { if (package.characterStats.name != SlugcatStats.Name.Red) { this.endgameTokens = new EndgameTokens(this, this.pages[0], new Vector2(base.LeftHandButtonsPosXAdd + 140f, 15f), this.container, this.karmaLadder); this.pages[0].subObjects.Add(this.endgameTokens); } if (this.IsSleepScreen && package.saveState != null) { for (int i = 0; i < this.karmaLadder.endGameMeters.Count; i++) { if (!package.saveState.deathPersistentSaveData.endGameMetersEverShown[(int)this.karmaLadder.endGameMeters[i].tracker.ID]) { this.forceWatchAnimation = true; package.saveState.deathPersistentSaveData.endGameMetersEverShown[(int)this.karmaLadder.endGameMeters[i].tracker.ID] = true; this.manager.rainWorld.progression.SaveDeathPersistentDataOfCurrentState(false, false); break; } } } } if (this.manager.rainWorld.setup.devToolsActive) { this.forceWatchAnimation = false; } }
public void GetDataFromGame(DreamsState.DreamID dreamID, KarmaLadderScreen.SleepDeathScreenDataPackage package) { this.fromGameDataPackage = package; this.dreamID = new DreamsState.DreamID?(dreamID); }
public void GetDataFromGame(bool seenMissonComplete, bool seenTraitor, DreamsState.DreamID dreamID, KarmaLadderScreen.SleepDeathScreenDataPackage package) { SRSLikesPlayer = seenMissonComplete; SRSHatesPlayer = seenTraitor; base.GetDataFromGame(dreamID, package); base.endTime = 340; this.hud = new HUD.HUD(new FContainer[] { this.hudContainers[1].Container, this.hudContainers[0].Container }, this.manager.rainWorld, this); if (this.hud.dialogBox == null) { Debug.Log("DialogBox Init!!!"); this.hud.InitDialogBox(); } conversation = new SRSConversation(this, Conversation.ID.None, this.hud.dialogBox, (DreamsState.DreamID) this.dreamID); }
public extern void orig_GetDataFromGame(KarmaLadderScreen.SleepDeathScreenDataPackage package);