Add Corpse Run enhancement mode#6790
Open
jdperos wants to merge 12 commits into
Open
Conversation
…ess rewriting the same names over and over
serprex
reviewed
Jun 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This adds a new enhancement mode: Corpse Run.
When enabled, dying drops a “remnant” at Link’s death location containing the consumable resources he was carrying. After respawning, the remnant appears in the world as a small collectible marker. Touching it restores the lost contents.
Currently dropped contents are:
This is meant to add a bit of Dark Souls-ish tension without getting too hostile or softlock-prone. For now, it intentionally avoids dropping progression items, equipment, keys, quest state, etc.
Behavior
Implementation notes
The mode is registered behind the
CorpseRunenhancement CVar and binds into the existing GameInteractor hook system.It currently uses:
OnPlayerDeathto capture Link’s current location and move supported resources into the remnant.OnPlayerInitto reactivate a dropped remnant after respawn/load, instead of making it recoverable immediately during the death flow.OnGameFrameUpdateto check whether Link is close enough to recover the remnant.OnPlayDrawEndto draw the remnant marker in-world after the scene/room/actor draw pass.The remnant data is stored in a small custom save section named
corpseRun, registered throughSaveManagerwith init/load/save callbacks.The drawn marker currently reuses the randomizer mystery item draw helper with a small bob/spin transform. It is just presentation... the saved remnant data is the actual source of truth.
For the resource data, ammo-backed consumables use a small descriptor table mapping:
That keeps the repeated bomb/arrow/stick/nut/seed/bombchu save/capture/restore logic compact, while keeping rupees and magic explicit since they do not behave exactly like normal ammo.
Possible next steps
There are a few obvious places this could go next, but I intentionally kept this first version conservative.
For now, consumables felt like the safest and cleanest starting point: enough to change how death feels, without immediately turning the save file into a softlock machine.
Build Artifacts