TeamSaltyBois-SimPassiveLevelingOverhaul icon

SimPassiveLevelingOverhaul

Overhauls Erenshor's Sim level progression with passive XP over time.

Last updated 11 hours ago
Total downloads 20
Total rating 1 
Categories Mods
Dependency string TeamSaltyBois-SimPassiveLevelingOverhaul-1.1.0
Dependants 0 other packages depend on this package

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

Sim Passive Leveling Overhaul — v1.1

Erenshor game update (2026-07-15): Confirmed working with the guild/UI patch. Mod updated to 1.1, see changelog for details.

Description

This mod replaces the vanilla sim XP catchup system with a highly configurable passive XP drip that runs in the background while you play, and only while you play. No offline catch-up. This mod was made as I found the vanilla catchup system for simulated players (levels mostly granted in abrupt bursts each time you log in, depending on sims assigned slot) a bit too immersion breaking with my style of play (frequent logging out, able to play a couple times a week).

Many values are exposed and configurable to tweak the leveling to your liking. Mod can be added or deleted mid playthrough with no issues.

Recommended to pair with my companion mod, Sim Start At Level 1, if you are starting fresh and want a bit more of a "day 1" mmo experience.


Features

Passive XP for All Eligible Sims

  • Unassigned generic sims gain XP on the standard curve.
  • Rival sims level roughly 20% faster.
  • Your own character-slot sims gain XP on the standard curve up to a cap of two levels above you, with a configurable catch-up multiplier when behind.
  • Active party members and Sims tied to other character slots do not receive passive XP. They gain levels through combat or when you play those characters.

1–35 Leveling Curve (~110 Hours Total)

  • Levels 1–5: 12–18 minutes per level
  • Levels 6–10: 30 minutes to 1 hour 18 minutes per level
  • Levels 11–15: 1 hour to 1 hour 36 minutes per level
  • Levels 16–20: 1 hour 48 minutes to 3 hours 30 minutes per level
  • Levels 21–25: 3 hours 48 minutes to 5 hours per level
  • Levels 26–30: 5 hours 12 minutes to 6 hours 30 minutes per level
  • Levels 31–35: 6 hours 12 minutes to 7 hours 30 minutes per level

Per-Sim Variance (Configurable, default 0.5× – 1.5×)

XP modifier from random seed, which re-rolls on zone changes. Produces organic variation across the roster.


Configuration

All settings are stored in BepInEx/config/erenshor.simxpovertime.cfg. Edit this file while the game is closed to adjust behavior.

  • TickIntervalSeconds — Default: 120
    Interval in seconds between XP grants. XP granted is scaled accordingly, so leveling speed will not change, only how often the XP is granted. Lower values will equate to slightly more CPU usage.

  • MaxLevel — Default: 35
    Maximum level cap for Sims. Sims will not gain passive XP beyond this level.

  • VarianceMin — Default: 0.5
    Minimum per-Sim speed variance. A value of 0.5 means the slowest Sim levels at half speed.

  • VarianceMax — Default: 1.5
    Maximum per-Sim speed variance. A value of 1.5 means the fastest Sim levels at 1.5× speed.

  • UseFixedSeed — Default: false
    If enabled, uses a fixed seed for per-sim variance. All sims will level at the same pace every session instead of randomizing each login.

  • FixedSeedValue — Default: 12345
    The seed value used when UseFixedSeed is enabled.

  • SeedIncrementOnZoneChange — Default: true
    If enabled, re-rolls per-sim variance when you change zones. Set to false for stable variance throughout an entire session.

  • RivalSpeedMultiplier — Default: 1.25
    XP speed multiplier for rival Sims (Friends' Club). Set to 1.0 for no bonus.

  • SlotCatchupPerLevel — Default: 0.10
    Catch-up boost applied per level behind. For example, if a Sim is 5 levels behind, they receive a 0.5 (50%) boost.

  • SlotCatchupMax — Default: 3.0
    Upper limit for the catch-up multiplier. Prevents extreme catch-up boosts.

  • SlotLevelCapOffset — Default: 2
    How many levels above the player a character tied sim can passively reach. Set to 35 to effectively disable this cap.

  • DebugLogging — Default: false
    Enables verbose logging for troubleshooting.


Requirements

  • BepInEx 5.4.23.5

Installation

  1. Install BepInEx for Erenshor.
  2. Place SimXPOverTime.dll in your BepInEx/plugins/ folder.
  3. Launch the game. The configuration file generates in BepInEx/config/ automatically on the first run .

Compatibility

The mod is compatible with any other mod that doesn't also try to transpile SimPlayerMngr.Update or prefix SimPlayerCatchupCode.


Methods Patched

  • SimPlayerMngr.Update — Transpiler
    Injects timer logic and redirects TimeInZone writes to our XP processor.

  • SimPlayerMngr.LoadSimPlayersIntoGame — Prefix
    Takes a snapshot of all sim levels before loading begins.

  • SimPlayer.SaveSim — Prefix
    Syncs cache with the sim's current XP before the game saves.

  • SimPlayerMngr.CollectActiveSimData — Prefix
    Syncs all active sim XP to cache and increments zone seed on zone change.

  • SimPlayerDataManager.SaveAllSimData — Prefix
    Syncs all sim XP to cache before full save (logout/shutdown).

  • SimPlayerMngr.SimPlayerCatchupCode — Prefix (skips original)
    Blocks the vanilla catchup mechanic entirely.


Performance

The mod is lightweight and has minimal CPU overhead. It performs a static boolean check every frame. On the single frame where XP is granted, it executes roughly 0.15ms of work.

The primary performance consideration is the save queue drain on zone changes, where ~168(default) save files are written sequentially, capped at 1 per frame. Players with slower mechanical hard drives (e.g., 5200 RPM) may experience a slight stutter in the first couple seconds after a zone change.


Notes

  • This passive XP stops at level 35 by default. Reccommended to keep this, so it does not cause sims to become cracked gamer gods by getting too many ascension levels.

To-DO

  • Expose direct leveling curve (1-35) for indiviual tweaking
  • Scrubby specific multiplier of .2 to simulate his true leveling speed.