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.
(note, requires updated mmhook or build will likely fail)
Added the ability to register an unlockable without associating it with an achievement. This is useful for setting up more complex systems such as the vanilla unlock for visiting x number of newt altars.
Using that feature, I added a helper function to add all 8 eclipse unlockables for a custom survivor.
In addition, only for modded survivors, I decoupled the name of the unlockable from survivorindex. Since modded survivors do not have named values in the survivor index enum, they would always be formatted as "Eclipse1.11" where 11 is the value of the index. This is problematic because if you were to add another mod that adds a survivor, 11 may not correspond to the same thing, causing weird discontinuity in your unlocks.
To resolve that, added a passthrough hook to the base token generation string that instead uses the mod name and the survivor name, only for modded characters. Anything that isn't recognized simply falls through as normal.
(Also: fixed a few style things with code in it as I found them)
(Also Also: added a deconstruct extension for keyvauepair that I wound up not needing, but don't see a reason to remove. It allows you to do
foreach(var (key, value) in myDictionary)
)