mirror of
https://github.com/rehan-remade/universal-modder.git
synced 2026-11-05 01:37:40 +00:00
[PR #30] [MERGED] kb: Stick It To The Stickman - instant-fail choice prompts via Harmony death-path patches #69
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
rehan-remade/universal-modder#69
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/rehan-remade/universal-modder/pull/30
Author: @chickennan
Created: 10/3/2026
Status: ✅ Merged
Merged: 10/4/2026
Merged by: @rehan-remade
Base:
main← Head:kb/stick-it-to-the-stickman-instant-fail-choice-prompts-patching-a-unity-level-s📝 Commits (4)
2b4a0a3kb: Instant-fail choice prompts: patching a Unity level's death path with Harmony (Stick It To The Stickman)92966cfkb: record base death-handler suppression confirmed in a second played run6d82672kb: separate human-confirmed visual layout from agent-unverifiable capture078b85fMerge main into kb/stick-it-to-the-stickman-instant-fail-choice-prompts-patching-a-unity-level-s and regenerate the kb index📊 Changes
3 files changed (+253 additions, -1 deletions)
View changed files
📝
knowledge/INDEX.md(+2 -1)➕
knowledge/games/stick-it-to-the-stickman/instant-fail-choice-prompts-patching-a-unity-level-s-death-p.md(+221 -0)📝
knowledge/index.json(+30 -0)📄 Description
What this adds
A field note for Stick It To The Stickman (Steam 2085540, Unity 2022.3.4, Mono) covering a
BepInEx 5 / Harmony mod that puts choice prompts in a level and kills the hero instantly on a wrong
pick.
status: working, verified across two hand-played Normal Tower runs.Why it's worth reading even if you never touch this game
Three findings generalise past this title:
Patch the base of a virtual, not just the overrides. Only 8 of the game's level-logic
controllers override
TryManagePlayerDeath. Normal Tower's controller inherits it, so anoverrides-only patch reported "8 types patched" and did nothing in the very level it was
configured for. It looked fine anyway, because a time freeze and a defeat-UI intercept were
masking the hole — the guarantee was accidental. Patching base and overrides is required, and
neither alone suffices: an override that calls
basekeeps running its own post-base code if onlythe base is prefixed.
A patch that logs on engagement is how you find this. The absence of a
suppressed ...line in a log where a death had occurred was the only evidence that gave the bug away. Logging
the concrete
__instance.GetType().Namealso shows which path ran — it revealedLevelLogicControllerToweras the class inheriting rather than overriding.Unity lifecycle:
OnLevelDidStartfires mid-transition.LevelManager.Levelis still nullthere, so caching the level name at that event made an allowlist silently match nothing for the
entire run — every popup skipped, no error anywhere. Re-read identity at the point of use.
Also recorded: the game destroys the BepInEx plugin
GameObjectseconds after startup (long-livedstate needs its own
DontDestroyOnLoadhost and its own log file);ScriptableEnumcosts a ~35ssynchronous
Resources.LoadAllon first level access;Health.SetCurrentHealth(float)assignswithout ever calling
Die(); and why a "load a level by name" debug command was written, measuredand then deleted.
Gotchas section
Nine numbered symptom → cause → fix entries, including two about verification itself:
measured) — wait before concluding a command was dropped;
note leans on logs rather than screenshots, and why a decoy screenshot is gitignored in the mod repo.
Verification honesty
Visual layout was confirmed by a human looking at the screen — prompt and FAIL card both
rendered correctly, text alignment good. It could not be confirmed by an agent, because capture on
this machine doesn't show the Unity render. The note separates those two claims rather than blurring
them.
Still open: the other seven levels that declare their own
TryManagePlayerDeathoverride are patchedbut untested in play. Only Normal Tower has been run.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.