You are viewing a potentially older version of this package. View all versions.
Strazer-CrashoutCrewExtraTime-1.0.0 icon

CrashoutCrewExtraTime

Configure nearly every timer in Crashout Crew through a BepInEx config file. Adjust delivery times, shift durations, coroutine delays, and more.

By Strazer
Date uploaded 15 hours ago
Version 1.0.0
Download link Strazer-CrashoutCrewExtraTime-1.0.0.zip
Downloads 2
Dependency string Strazer-CrashoutCrewExtraTime-1.0.0

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

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

Preferred version: 5.4.2100

README

Crashout Crew Extra Time

A BepInEx 5 plugin that lets you configure nearly every timer in Crashout Crew through a generated configuration file.

Features

  • Adjustable timer multipliers for deliveries, shifts, coroutines, and more.
  • Automatic config generation on first launch.
  • Harmony patches using HarmonyX.
  • Runtime timer discovery — finds and patches timer fields automatically.
  • Graceful failure — continues loading even if some patches fail after game updates.

Installation

  1. Install BepInEx 5 for Crashout Crew.
  2. Place the CrashoutCrewExtraTime.dll into BepInEx/plugins/.
  3. Launch the game once to generate the config file.
  4. Edit BepInEx/config/com.strazer.extratime.cfg to your liking.
  5. Restart the game.

Configuration

The config file is at BepInEx/config/com.strazer.extratime.cfg.

[Timers]

## Timer multiplier.
## 0.0 = Instant (when safe)
## 0.5 = Twice as fast
## 1.0 = Vanilla
## 2.0 = Twice as long
DeliveryMultiplier = 1.0
ShiftMultiplier = 1.0
GameSpeedMultiplier = 1.0
CoroutineMultiplier = 1.0
AutoDiscoveredMultiplier = 1.0

Timer Descriptions

Config Key Default Affects
DeliveryMultiplier 1.0 Truck arrival duration (GameUtil.truckArriveDuration)
ShiftMultiplier 1.0 Shift/work duration (GameUtil.shiftDuration)
GameSpeedMultiplier 1.0 Base game duration (GameUtil.duration)
CoroutineMultiplier 1.0 All WaitForSeconds / WaitForSecondsRealtime delays
AutoDiscoveredMultiplier 1.0 Any float/int fields matching timer keywords

Value Reference

Value Effect
0.0 Instant (set responsibly)
0.5 Twice as fast
1.0 Vanilla (default)
2.0 Twice as long
10.0 Ten times as long

How It Works

The plugin uses HarmonyX to patch the following at runtime:

Patch Target Type Effect
GameUtil.get_truckArriveDuration Postfix Multiplies return value
GameUtil.get_shiftDuration Postfix Multiplies return value
GameUtil.get_duration Postfix Multiplies return value
WaitForSeconds(float) constructor Prefix Multiplies seconds parameter
WaitForSecondsRealtime(float) constructor Prefix Multiplies seconds parameter
Auto-discovered timer fields Postfix Multiplies return value

All game timer fields are discovered by analyzing the #Strings metadata heap in Assembly-CSharp.dll. The following fields were confirmed present:

  • truckArriveDuration — truck arrival timing
  • shiftDuration — work shift length
  • duration — base duration reference

Coroutines discovered include LoadCo, InitializeGameCo, RefreshGlobalStatsCo, and WaitForTask. These are covered by the global CoroutineMultiplier which patches the WaitForSeconds constructor.

Compatibility

  • Game: Crashout Crew (current version)
  • Mod Loader: BepInEx 5.x
  • Patcher: HarmonyX (bundled with BepInEx)

Building from Source

Requires .NET Framework 4.8 SDK or csc.exe.

csc /target:library /out:CrashoutCrewExtraTime.dll ^
    /reference:0Harmony.dll ^
    /reference:BepInEx.dll ^
    CrashoutCrewExtraTimePlugin.cs

License

MIT License — see LICENSE.txt in the game folder or GitHub.

Credits

CHANGELOG

Changelog

1.0.1 (2026-08-08)

Added

  • UI Countdown timer multiplier (UICountdownMultiplier).
  • All 12 independent timer multipliers now available in config:
    • ShiftStartMultiplier, ShiftDurationMultiplier
    • TruckPatienceMultiplier, TruckArrivalMultiplier, TruckDepartureMultiplier
    • PauseMultiplier, LockInMultiplier
    • RespawnMultiplier, BoxSpawnMultiplier
    • WarehouseMultiplier, UICountdownMultiplier

Changed

  • Timer discovery now uses Mono.Cecil analysis of febjam.dll for accurate method targeting.
  • Patch methods use thread-safe dictionary storage to prevent race conditions.
  • Configuration generation improved with individual descriptions for each timer.
  • Logging includes resolved type paths and patch counts for easier debugging.
  • OnEntityCreated field patches verify declaring type with IsAssignableFrom before modifying fields.

Fixed

  • Harmony patch stability: all HarmonyMethod constructors verified against real HarmonyX 2.9 API.
  • Timer patch reliability: fields correctly identified via AccessTools.Field and type resolution with fallback enumeration.
  • Reflection/type resolution: ShiftManager found via AccessTools.TypeByName with fallback to runtime assembly scan.
  • Configuration generation: all entries now generate with proper defaults and descriptions.
  • Multiplayer compatibility: host-authoritative timer fields correctly targeted on server-side methods.
  • DLL caching: stale builds prevented by deleting output file before each compilation.

Notes

  • First stable public release of Strazer's Extra Time.
  • All timer fields verified against febjam.dll (429 types, 118 SetTimer(Single) call sites).
  • Core game timer is Timer struct using DecrementTimer(Int32) per frame via OnUpdateSimulation.
  • Shift duration calculated in ShiftManager.ServerPrepareShift from ContractShift.truckPatienceDuration.