private static void UpdateHK(On.RainWorldGame.orig_Update orig, RainWorldGame self) { if (mainGame == null) { mainGame = self; } if (!self.lastPauseButton) { self.lastPauseButton = MonklandSteamManager.isInGame; } orig(self); try { if (MonklandSteamManager.isInGame) { if (MonklandSteamManager.monklandUI != null) { MonklandSteamManager.monklandUI.Update(self); } MonklandSteamManager.WorldManager.TickCycle(); bool flag = Input.GetKey(self.rainWorld.options.controls[0].KeyboardPause) || Input.GetKey(self.rainWorld.options.controls[0].GamePadPause) || Input.GetKey(KeyCode.Escape); if (flag && !lastMultiPauseButton && (self.cameras[0].hud != null || self.cameras[0].hud.map.fade < 0.1f) && !self.cameras[0].hud.textPrompt.gameOverMode) { (self.cameras[0].hud.parts.Find(x => x is MultiplayerHUD) as MultiplayerHUD).ShowMultiPauseMenu(); } lastMultiPauseButton = flag; } } catch (Exception e) { Debug.LogError(e); } }
static void RainWorldGame_Update(On.RainWorldGame.orig_Update orig, RainWorldGame self) { orig(self); if (self.Players.Count < 1) { return; } AbstractWorldEntity[] entities = self.world.offScreenDen.entitiesInDens.ToArray(); foreach (AbstractWorldEntity aEntity in entities) { if (aEntity is AbstractCreature aCreature && aCreature.creatureTemplate.type == CreatureTemplate.Type.Overseer) { OverseersPlugin.Logger_.LogInfo($"moving overseer {aCreature.ID} " + $"from offscreen den to {self.Players[0].Room.name}"); aCreature.ChangeRooms(new WorldCoordinate(self.Players[0].Room.index, 1, 1, 0)); self.world.offScreenDen.entitiesInDens.Remove(aCreature); } } }