Gunman Contracts - Stand Alone
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
2 days ago
Downloads
50
Size
15KB

FeelingBetterAlready 1.0.2

Health regeneration mod for Gunman Contracts – Stand Alone, built for the installed Windows x64 build using Unity 6000.0.41f1 / IL2CPP.

The stock game regenerates health only when you are sitting at exactly 1 HP, gives back exactly 1 point, and then parks its countdown at zero — so regeneration fires once per wound and stops at 2 HP, whatever the difficulty allows. This mod lifts both limits.

  • Health regenerates one point per regeneration interval (regainHealthTime, 5 seconds by default, with the game's existing in-combat multiplier).
  • It keeps going, interval after interval, up to playerHitPointsMaxRecharge — the value SetDifficulty derives from the difficulty's max HP, and the same ceiling the game already applies to health pickups and painkillers.
  • On a difficulty whose cap is 1 HP, regeneration stays off, which is the stock behaviour there.
  • Nothing else changes: damage, armour, the regeneration interval and the difficulty settings all behave as before.

Install

  1. Install BepInEx 6 Unity IL2CPP, Windows x64, build 755 or later. BepInEx 5 and Mono builds are not suitable.
  2. Extract the archive's BepInEx folder into the game folder, or copy FeelingBetterAlready.dll into BepInEx/plugins/FeelingBetterAlready/.
  3. Launch the game and check BepInEx/LogOutput.log for FeelingBetterAlready enabled.

Using MelonLoader 0.7 or later instead: put the FeelingBetterAlready-MelonLoader archive's FeelingBetterAlready.dll into Mods/, and check MelonLoader/Latest.log for the same line.

Patch data is embedded in the DLL. To uninstall, close the game and delete the DLL; game files are never modified, so nothing needs reverting.

It finds every patch site by signature when the game starts: IL2CPP names the method, and a byte pattern must match exactly once inside it. Game updates that leave those few instructions alone keep working without a new release; if one changes, nothing is patched and the log names the signature.

How it works

IL2CPP inlined ANBGameLogic.checkHealthRegeneration into ANBGameLogic.Update, and the inlined copy is the one that runs. Both copies get the same treatment: the health == 1.0 test becomes comiss against playerHitPointsMaxRecharge, whose offset is read from IL2CPP at startup with a jae that skips only once the cap is reached.

That alone still heals just once, because Update sets the countdown to zero after restoring a point and only HurtPlayer and StartRegainHealth ever start it again. So the plugin adds a Harmony postfix on Update: while the countdown has run out and health is below the cap, it calls the game's own StartRegainHealth(), which reloads regainHealthTime. The pacing stays the game's.

The patch engine (shared with IDGAFMan) locates every patch site before writing, restores page protection afterwards and rolls back if any write fails.

Compatibility

Coexists with IDGAFMan: different functions, no overlapping patch sites. It does not touch scoring, so a regenerated run scores exactly as the game intends.

Validation

analysis/verify.py runs the real instructions in Unicorn, both the standalone function and the inlined Update copy: the unpatched build stops at 2 HP, the patched build climbs to the cap and never past it on caps from 1 to 5, and the countdown is consumed only when a point is actually restored.

Not yet playtested in a mission. Drop below the cap, wait out the interval, and confirm health keeps climbing one point at a time.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.