A code-only, non-gameplay diagnostic mod for Slay the Spire 2. Press F8 at any time, or run moddoctor in the developer console.
- Reworked issue presentation: every recognized problem is shown as what was detected → why it happens → possible impact → recommended fix → technical evidence.
- Missing required dependencies are no longer treated as minor warnings:
- a loaded mod with a missing/unloaded/incompatible prerequisite is Critical;
- an installed but currently unloaded mod with a broken prerequisite is Error.
- Replaced the raw Harmony text wall with a selectable table:
- friendly game-behavior names instead of full CLR signatures;
- low-risk shared targets hidden by default;
- plain-language risk, impact, and recommendation details;
- raw method and patch names available through an explicit technical-details toggle.
- Added resource-based i18n with automatic game-locale detection plus manual Automatic / English / 简体中文 selection.
- Markdown, JSON, plain-text reports, recovery notes, console messages, and recognized log descriptions follow the selected language.
- Added direct Tools-page actions:
- export a report;
- generate recovery files;
- restart with
--nomodsafter confirmation; - start the dependency-aware local-mod bisection assistant after confirmation;
- open reports/tools folders;
- clear old crash markers.
- Toolbar actions now show immediate success/failure feedback.
- Existing scanners remain included: manifests, dependencies, game minimum versions, duplicate IDs, duplicate DLL names/hashes, Harmony risk combinations, recent logs, live errors, crash markers, and likely log suspects.
- Optional ModConfig integration through reflection. ModConfig and BaseLib are not required.
Extract the release so the game directory contains:
Slay the Spire 2/mods/HermitsModDoctor/
├── HermitsModDoctor.dll
└── HermitsModDoctor.json
No PCK is required.
- Install the .NET 9 SDK and the Godot .NET SDK used by the current STS2 mod template.
- Copy
local.props.templatetolocal.props. - Set
Sts2Dirto the game installation. - Build:
dotnet build -c ReleaseThe project copies the DLL and manifest into mods/HermitsModDoctor/ after a successful build.
Open Settings → Interface and report language and select:
- Automatic: follows the game locale;
- English;
- 简体中文.
Localization files are embedded from Localization/en.json and Localization/zh-CN.json.
moddoctor open
moddoctor scan
moddoctor export
moddoctor tools
moddoctor clear
The Tools tab can execute supported actions directly. Restart and bisection actions show a confirmation dialog because they close the current game process.
Generated files are stored under the game's user-data directory:
HermitsModDoctor/tools/
Start-STS2-NoMods.ps1waits for the current process to exit, then starts the game with--nomods.ModDoctor.Bisect.ps1moves local mod folders betweenmodsandmods.__moddoctor_disabledwhile preserving declared dependency closure.- Steam Workshop subscriptions are never moved by the bisection helper.
- Harmony collision scoring is diagnostic. Multiple ordinary Prefix/Postfix patches are common and are hidden as low-risk information by default.
- Log attribution is heuristic. A high score is evidence to test, not proof of fault.
- A failure that happens before Mod Doctor initializes cannot be intercepted live, but the next successful launch can analyze the previous log.
- Removing a content mod from an important in-progress run can invalidate the run. Back up saves first.
- Direct restart and bisection actions are currently Windows-only.
v0.2.0 was compiled against the user-supplied current sts2.dll and 0Harmony.dll using .NET 9 and Godot.NET.Sdk 4.5.1. The release build completed with 0 warnings and 0 errors. Localization resources, dependency severity, friendly Harmony target formatting, readable report structure, embedded recovery scripts, direct restart waiting, and PowerShell syntax were covered by smoke tests. See VALIDATION.md.