Skip to content

zampxdev/S1ModDoctor

Repository files navigation

S1 Mod Doctor

S1 Mod Doctor is a log-based diagnostic plugin for Schedule I MelonLoader installs.

It does not add an in-game menu and does not upload anything. It reads the local MelonLoader install layout and the latest MelonLoader log, then overwrites:

UserData\S1ModDoctor\diagnostics.txt
UserData\S1ModDoctor\diagnostics.json
UserData\S1ModDoctor\diagnostics-summary.txt

Install S1ModDoctor.dll into the game's Plugins folder. It is a plugin rather than a gameplay mod so it can run earlier and diagnose mod loading issues.

What It Checks

  • friendly Melon metadata such as mod/plugin name, author, version, and target game
  • MelonLoader folder layout
  • core Schedule I files such as Schedule I.exe, GameAssembly.dll, and UnityPlayer.dll
  • wrong-game, wrong-runtime, or wrong-architecture logs
  • Mods, Plugins, UserLibs, UserData, and log directories
  • empty DLL files from failed copies or bad extracts
  • archives left in load folders
  • nested DLLs that may not load
  • plugin DLLs in Mods or mod DLLs in Plugins
  • mod/plugin entry DLLs placed in UserLibs
  • duplicate assemblies
  • duplicate Melon mod/plugin names
  • assembly dependency status with plain-language names and fixes
  • dependency version checks when the required and installed versions can be read safely
  • package-level dependencies from nearby manifest.json files
  • duplicate package manifests from mixed old/new installs
  • missing dependencies, including likely missing S1API
  • stale generated IL2CPP assemblies after game updates
  • startup phase and likely stop phase from the latest log
  • report quality, including stale logs and incomplete logs
  • suspected source names from MelonLoader log prefixes
  • ranked possible-source guesses using confidence tiers for DLL paths, log tags, last-loaded assemblies, and dependency references
  • likely cause categories such as missing dependency, version mismatch, bad install layout, permission issue, and startup crash
  • runtime-aware IL2CPP checks, so Mono/Alternate logs are not treated as broken just for not being IL2CPP
  • a pasteable support summary with the main facts, top findings, likely causes, and next steps
  • a short recommended fix order at the top of the text report
  • repeated exception spam in the latest MelonLoader log
  • missing file/dependency errors
  • version mismatch symptoms such as MissingMethodException and TypeLoadException
  • Harmony patch failures
  • IL2CPP assembly generation failures
  • access denied errors

Build

dotnet build --configuration Release

By default the build copies S1ModDoctor.dll to:

C:\Program Files (x86)\Steam\steamapps\common\Schedule I\Plugins\

Set GamePath if your game is installed elsewhere, or set SkipCopyToPlugins=true to only build the DLL.

Tests

The repository includes a small console test runner for the diagnostic engine:

dotnet run --configuration Release --project tests\S1ModDoctor.Tests\S1ModDoctor.Tests.csproj

The tests create temporary fake Schedule I installs and check common cases such as missing S1API, satisfied manifest dependencies, repeated log spam, stale logs, source tracing, cause classification, DLL size accuracy, wrong-game logs, stale IL2CPP assemblies, duplicate manifests, misplaced DLLs, disabled MelonLoader, archive mistakes, incomplete startup logs, and access denied errors.

About

MelonLoader diagnostics for Schedule I

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages