You are viewing a potentially older version of this package. View all versions.
evansvl-SingleplayerPause-0.1.10 icon

SingleplayerPause

Freezes gameplay ticks while preserving UI and frame updates in strict singleplayer only.

By evansvl
Date uploaded 2 weeks ago
Version 0.1.10
Download link evansvl-SingleplayerPause-0.1.10.zip
Downloads 34
Dependency string evansvl-SingleplayerPause-0.1.10

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305

README

Singleplayer Pause

Freezes gameplay time and the active boss departure countdown while the game's native pause menu is open in a strict singleplayer session.

Safety boundary

The mod changes Time.timeScale only when all of these conditions are true:

  • the player is outside the main menu;
  • the game is using its offline transport, not Steam;
  • the local process is both server and client;
  • exactly one client is connected;
  • the local player exists;
  • the native pause state is active.

Online hosts, online clients, offline clients, and local sessions containing more than one client are never frozen. The previous time scale is restored when the pause menu closes, a singleplayer condition becomes false, the mod is disabled, or the game exits.

FishNet normally advances from unscaled time even when Unity's Time.timeScale is zero. During a valid singleplayer pause, the mod blocks simulation tick advancement while leaving FishNet frame and late-frame updates active. Before acquiring that freeze, it waits for the current tool equip/draw transition and any firearm shot, cooldown, queued shot, or reload to reach a safe boundary. While frozen, it uses the game's native TryActivateAnimatedHands path to keep the held weapon or fishing rod renderer and IK active even if the separate hand-draw transition was interrupted. Native held-item reconciliation remains untouched. Weapons, rods, projectiles, hits, enemies, and boss deadlines then resume without accumulated catch-up, while chat, save notifications, and fishing-line frame maintenance continue to run.

Usage

  1. Start a Singleplayer world.
  2. Press ESC to open the game's normal pause menu.
  3. Gameplay freezes until the pause menu is closed.

There are no settings or custom keybinds. The mod follows the game's native pause action.

Compatibility

  • How to Fish 1.0.4
  • BepInEx 5.4.23.5

Development disclosure

This project was developed with substantial assistance from OpenAI Codex. The packaged code was reviewed and compiled against the game before release.

CHANGELOG

Changelog

0.1.11

  • Replaced the package icon with a real in-game pause-menu preview and a readable SINGLEPLAYER PAUSE title.
  • No pause, held-item, chat, or simulation behavior changed in this release.

0.1.10

  • Extends the held-tool sway guard through the zero-delta resume frame after closing the pause menu.
  • Prevents the first post-pause LateUpdate from poisoning a rod or weapon transform with NaN.

0.1.9

  • Prevents the native held-tool sway update from running with a zero Time.deltaTime while paused.
  • Fixes fishing rods and weapons disappearing after repeated pauses because their sway transform became NaN.

0.1.8

  • Adds bounded runtime state snapshots at pause request, during the freeze, and immediately before release.
  • Captures held/current tool identity, ownership, inventory flags, holders, renderer state, tool and sway positions, hand transition values, and fishing-line state so the remaining disappearance can be diagnosed from one run.
  • Repeats paused snapshots only when state changes, avoiding per-frame log spam.

0.1.7

  • Fixes the second native draw transition in PlayerHands, which could still be incomplete after the tool movement transition had reached 100%.
  • Uses the game's own Tool.TryActivateAnimatedHands path to keep weapon and fishing-rod renderers plus IK active during pause.
  • Removes the PlayerToolMovement.SetTool interception from 0.1.6 so native held-item reconciliation is never deferred or left out of sync.
  • Logs a single runtime recovery line when a hidden held-tool renderer is restored, making the live failure observable.

0.1.6

  • Extends the safe-boundary check from firearms to every held Tool, including fishing rods and melee tools.
  • Waits for the native tool equip/draw transition to finish before freezing scaled time.
  • Defers PlayerToolMovement.SetTool reconciliation while the freeze is owned, preventing the game from hiding the animated hands mesh and resetting draw progress to zero during pause.

0.1.5

  • Waits for the held firearm to finish an active shot, cooldown, queued shot, or reload before acquiring the freeze.
  • Removes the broad Weapon.Update interception so the game's own held-item reconciliation always keeps running.
  • Prevents repeated pauses and pauses during reload from leaving the weapon in a state where projectiles no longer deal damage.

0.1.4

  • Freezes Weapon.Update together with legacy weapon animations during an active singleplayer pause.
  • Prevents reload, cooldown, queued-shot, and visibility state from advancing against a frozen animation.
  • Handles pausing mid-reload and repeated rapid pause cycles without touching fishing-rod or chat updates.

0.1.3

  • Narrows the FishNet hook from the full frame update to simulation tick advancement only.
  • Keeps FishNet OnUpdate, OnLateUpdate, the chat, save notifications, and rod frame maintenance active in pause.
  • Still prevents OnTick, physics simulation, combat, and boss deadlines from advancing.
  • Avoids accumulating catch-up ticks while paused.

0.1.2

  • Freezes the complete FishNet offline simulation instead of compensating only the boss deadline.
  • Prevents weapons, reload state, projectiles, hits, and other tick-driven systems from advancing during pause.
  • Resumes without accumulated catch-up ticks, keeping client and server combat state synchronized.
  • Retains the strict offline host and exactly-one-client safety boundary.

0.1.1

  • Pauses the active boss departure countdown together with gameplay.
  • Compensates FishNet network ticks when the pause closes, so the boss keeps the exact remaining time.
  • Blocks only the boss departure check while the strict singleplayer pause is active.
  • Keeps all boss-timer changes disabled for Steam, multiplayer, clients, and sessions with more than one client.

0.1.0

  • Uses the short public name Singleplayer Pause.
  • Added gameplay freezing while the native pause menu is open.
  • Restricted freezing to offline host sessions with exactly one connected client.
  • Added automatic restoration when pause closes, session conditions change, the mod unloads, or the game exits.