NUZLOCKer

NUZLOCKer 1.2

NUZLOCKer 1.2.0 - The STARLOCKE Update
=========================================

Previous release: 1.1.1
Version type: Minor feature release
Requires: Character Select
Optional integration: SIDEKICKer 1.1 or newer

NEW GAMEPLAY FEATURES
  • Added STARLOCKE as a host-controlled rules option.
  • In STARLOCKE, collecting a star awards one eligible character to that player's pool.
  • STARLOCKE rewards support both personal pools and the shared/global pool.
  • Added duplicate-interaction protection so one star object cannot award repeatedly during the same collection.
  • Added Persistent Corpses, enabled by default and configurable per player.
  • Added Boos At Revisited Death Sites as a separate optional corpse setting.
  • Added per-player SIDEKICKer Compatibility instead of restricting the toggle to the host.

PERSISTENT CORPSE SYSTEM
  • Records the level, area, act, position, facing direction, owner, and character model for each corpse.
  • Synchronizes corpse records through player sync data so corpses do not depend on the owner remaining nearby.
  • Reconstructs recorded corpses when another player enters or returns to the matching level and area.
  • Keeps corpse objects intangible, gravity-free, and fixed at their recorded transform.
  • Freezes corpse animation frames and neutralizes head and torso movement during rendering.
  • Captures the defeated Character Select character and costume before NUZLOCKer applies the replacement.
  • Prevents replacement pool characters from being used as the corpse model.
  • Applies the dead-eye facial state while rendering the corpse, then restores the living player's state.
  • Uses a deterministic white-grey metal appearance instead of borrowing unstable live player palettes.
  • Excludes pitfall deaths from corpse creation so bodies are not suspended over death planes.
  • Clears corpse records when a NUZLOCKer session ends or a new session begins.
  • Limits synchronized corpse history to 16 corpses per owner to control sync size and object count.

POOL AND CHARACTER SELECTION FIXES
  • Added protected-pool tracking for characters currently in use.
  • Prevented pool trimming from deleting a character currently used by the local player.
  • Prevented shared-pool trimming from deleting characters currently used by connected players.
  • Prevented random pool generation from selecting the same character already being played.
  • Prevented rerolls and replacement selection from choosing reserved or already active shared-pool entries.
  • Refilled pools from eligible entries when Character Select changes invalidate existing entries.
  • Preserved valid active entries while resizing or rebuilding a pool.
  • Added pool revision synchronization so integrations can detect pool changes reliably.
  • Exported deterministic pool ordering for SIDEKICKer instead of relying on unordered table iteration.
  • Aligned SIDEKICKer manual switching with the order displayed by NUZLOCKer's pool panel.
  • Reduced cases where manual SIDEKICKer switching skipped pool members.

PALETTE RESPAWN FIXES
  • Reworked PALETTE RESPAWN: ON so it selects a valid Character Select preset for the new character.
  • Preserved the existing CUSTOM and RANDOM palette modes.
  • Added synchronized palette state so remote players receive the selected respawn palette.
  • Added delayed palette application after character switching so Character Select initialization does not overwrite it.
  • Added controlled reapplication for palette overrides that need another frame to settle.
  • Clears local and remote palette overrides correctly when PALETTE RESPAWN is OFF.

MENU AND SETTINGS CHANGES
  • Moved SIDEKICKer Compatibility into the per-player section of the mod menu.
  • Replaced the old SIDEKICKer host slot with STARLOCKE.
  • Removed the unused ADVANCED ACTIONS button.
  • Added a RUN MANAGEMENT ACTIONS heading to the final menu page.
  • Grouped QUIT CURRENT NUZLOCKE, pool randomizers, character randomizers, and RESET MOD on the final page.
  • Restored QUIT CURRENT NUZLOCKE to a selectable menu position.
  • Fixed controls and labels bleeding through the page-navigation row.
  • Added Persistent Corpses and Boos At Revisited Death Sites menu toggles.
  • Persisted the new STARLOCKE, corpse, Boo, and per-player SIDEKICKer settings.

DEATH, EXIT, AND SESSION FIXES
  • Added a dedicated pitfall bridge to recognize death-exit actions and death-plane surfaces.
  • Added a pause-exit grace period so leaving through the pause menu does not spend a pool character.
  • Prevented non-death level exits from being treated as character losses.
  • Prevented duplicate pitfall losses from repeated action hooks.
  • Kept delayed loss handling from recording a corpse at the castle instead of the original death site.
  • Reset pending death state safely when a pause exit or invalid session transition occurs.

AUDIO AND STABILITY
  • Includes mk_itemloop.ogg and mk_itemselect.ogg in the release package.
  • Added guarded sample/stream loading with multiple valid relative path forms.
  • Isolated corpse, pitfall, exit-guard, audio, and manual-swap helpers from the release-critical main file.
  • Added protected calls and one-time corpse-handler error reporting to prevent repeating error spam.
  • Kept main.lua at 199 top-level locals, below sm64coopdx's 200-local limit.

KNOWN LIMITATIONS
  • Corpse persistence lasts for the current NUZLOCKer network session; it is not saved across server restarts.
  • Corpse history is capped at 16 records per owner.
  • Exact death palettes are not retained. Corpses intentionally use the white-grey fallback appearance.
  • Some highly customized Character Select models may implement their own metal or facial rendering.
  • Ordered SIDEKICKer switching requires the matching updated SIDEKICKer release.
  • Custom character compatibility still depends on those character mods exposing valid Character Select models.

INSTALLATION
1. Remove the old Nuzlocker folder.
2. Place the included NUZLOCKer folder in the sm64coopdx mods folder.
3. Do not merge the release with an older folder
- Characters were not being reliably lost from the current pool on pitfall deaths, or being lost on pause menu level exits. This should be now fixed, and pitfall deaths will now reliably remove a character, while level exits retain the current character in the pool.



- CONTINUE NUZLOCKE should now work more reliably on a per save file basis; however, changing options before selecting CONTINUE may still result in unforeseen consequences



- Based on player feedback, a RESTORE LOST and OFF rule has been added to 1-UP options. OFF results in a pure nuzlocke, with no characters being gained from 1-UPS. RESTORE LOST will only restore characters you've already lost from the current pool, with no new characters being added beyond the pool size. RANDOM still behaves as before, adding a random character to the current pool, and ignoring the pool size cap unless the 1-UP CAP option is on



- To prevent abuse, MANUAL SWITCHING now requires the player to be not moving on solid ground to use. This prevents players from quick swapping to another character right before a death.



- Some text spam has been addressed when it came to blasts in group pools
This small first update to NUZLOCKer looks to address some reported bugs, and adds a couple features:


NEW FEATURES:
- MANUAL SWITCHING:
When enabled by the host, allows players to hold L + R and pressed DPAD UP or DOWN to switch between different character in your pool on-the-fly. Keep an eye on those player indicators in a Group Pool Panel to see who's switching to whom.
- GAME OVER RULE: BUBBLE forces any players that receive a game over into a bubble, with any 1-ups collected by still-living players in group pools re-opening a slot for them to de-bubble into and return to the nuzlocke.
- CONTINUE NUZLOCKE (W.I.P.): A first attempt at saving Nuzlocke progress for a later session. Currently has some functionality: saves whenever the filesave does, and you can end the nuzlocke for now by having the host quit the session, or select 'End Nuzlocke'. The next time you select 'Continue Nuzlocke', it should reload your pools where you last left off. <<Warning>> Hitting 'Start Nuzlocke' will write over any currently saved nuzlocke on that file.
- QUICK DRAW CONTINUES: When getting a GAME OVER and becoming a ghost in a group pool, you can instead wait for a still-living player to collect a 1-up; at that point, the first game over'd player to press B will return to the nuzlocke alive

BUG FIXES
  • Non-bubble deaths, pitfalls or solo deaths should now properly always remove a character from your current pool
  • 1-UPs should now reliably add a new character to your pool in all circumstances
  • An accumulating lag resulting from random palettes and multiple player pools has been fixed
  • More focus on making sure new nuzlockes start with exactly the intended pool size (less +1 or -1 drifting)

KNOWN BUGS
- PALETTE RESPAWN: ON is supposed to choose a random preset palette on respawn, but currently usually selects custom or random instead
  • RANDOMIZE CURRENT POOLS sometimes not randomizing non-host player's personal pools, or adding +1 to their pool
  • CONTINUE NUZLOCKE reloading the wrong, or older, saved pool (this is likely due to an issue of when and how saving occurs -- more player feedback is needed)
  • Sometimes, START NUZLOCKE will start will +1 to the intended pool size
  • GAME OVER RULE: BUBBLE has had some softlocking issues solved, but suspect some may persist. more player feedback needed
  • Likewise with GAME OVER RULE: FREEROAM. Currently, the best work around is either select the 1-UP rule, which brings the game over'd player back into the nuzlock with 1 life, or do not engage the game over by pressing L + R, and wait for a living player to collect a 1-up to return to play
  • Switching nuzlocke options during a live run may work, but may run into unintended side effects. Eventually, option switching during a live run will be blocked/limited

----------------------------------------------------------------------------------------------------------------------------------------------------

COMING SOON:
  • PvP NUZLOCKE: Personal Pools where killing other players steals their character
  • TEAM NUZLOCKE: Personal Pools shared by multiple players. Will have PvP option, number of players per pool, and team selection.
  • STARLOCKE: Starting with 1 life, only stars reward new characters
  • SHOPLOCKE: Collect more coins, buy new characters, gain bigger pool
  • GAME OVER RULE - MARIOHUNT: Game Over'd players can attempt to stop living players from completing the run
  • PERSONAL RESPAWN PALETTES: Allows individual players to select their own palette respawn rule
  • ROUND ROBIN DRAFT: Starting a new personal pool nuzlocke will engage a take-turns round robin draft first, with drafted characters unable to be drafted twice.
  • TOETAGGer ICON SUPPORT: Display your next few characters on the ToeTagger panel
  • CHARACTER TRADES: On-the-fly trade with another player's current character