SpecialCircumstances-UndoEverywhere icon

UndoEverywhere

Adds Restart Ring to the pause menu outside combat, undoing shop purchases, event choices and path picks back to the end of your last battle. Battles you already won stay won.

Last updated an hour ago
Total downloads 1
Total rating 0 
Categories
Dependency string SpecialCircumstances-UndoEverywhere-0.1.0
Dependants 0 other packages depend on this package

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
MT2-Trainworks_Reloaded-0.7.2 icon
MT2-Trainworks_Reloaded

A Data Loader and Injection Engine for Monster Train 2

Preferred version: 0.7.2
Conductor-Conductor-0.4.1 icon
Conductor-Conductor

Central library of reusable custom effects, status effects, and keywords to make modding Monster Train 2 safer and easier, used as a dependency for other mods.

Preferred version: 0.4.1

README

UndoEverywhere

A Monster Train 2 mod that adds a way to undo out-of-combat mistakes -- shop purchases, event choices, path picks -- that the game otherwise has no undo for outside of battle.

The pause menu's Restart Battle button now also works on the map, where it relabels itself to Restart Ring. Picking it rewinds the run to the moment the last battle ended -- or to the start of the run, if you haven't fought one yet -- and reloads from there. Any battles you've already won stay won; only the shop purchases, event choices and path picks made since are undone.

Under the hood the mod snapshots your save file at each of those boundaries (a .stagestart file next to the real save) and restores it through the game's own continue-run path, so gold, relics, deck and map position all come back exactly as the game itself would load them.

Configuration

None -- the mod has no config file. It's on whenever the plugin is loaded.

Install

Use a mod manager (r2modman / Thunderstore Mod Manager) and install SpecialCircumstances-UndoEverywhere. Dependencies are pulled in automatically:

  • BepInEx 5.4.2100
  • Trainworks Reloaded 0.7.2
  • Conductor 0.4.1

Manual install: drop UndoEverywhere.dll into BepInEx/plugins/.

Known limitations

  • Snapshots survive quitting and relaunching, but only exist once the mod has seen a run start or a battle end. Installing the mod part-way through a ring leaves the button hidden until your next battle finishes.
  • The button stays hidden during battle intros and at the game-over screen -- a lost run can't be rewound.
  • Rewinding is all-or-nothing back to the last battle. There's no step-by-step undo of a single shop purchase.
  • No confirmation-text customization yet -- it reuses the game's own restart confirmation dialog as-is.
  • Snapshot files are never cleaned up. They're tiny (one JSON per save slot, overwritten in place), just not tidied away when a run ends.

Build

dotnet build

The output DLL is copied to ../../mt2-plugins/UndoEverywhere after every build (PluginDeployDir in UndoEverywhere.csproj) -- point that at your BepInEx/plugins folder to test in-game directly.

Harmony patches live in UndoEverywhere/patches/: RestartStagePatches.cs wires the pause-menu button up outside of combat and performs the restart, and StageStartMarker.cs captures the snapshots it restores back to.

Publishing to Thunderstore is driven by thunderstore.toml via tcli; the GitHub workflows in .github/workflows/ build and validate the package.

License

See LICENSE.