Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
UniversalSurvivorUnlocks
Adds configurable, multiplayer-aware unlock challenges and creator presets to compatible modded Risk of Rain 2 survivors.
| Date uploaded | a month ago |
| Version | 0.1.9 |
| Download link | Shleidericks-UniversalSurvivorUnlocks-0.1.9.zip |
| Downloads | 259 |
| Dependency string | Shleidericks-UniversalSurvivorUnlocks-0.1.9 |
This mod requires the following mods to function
bbepis-BepInExPack
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.2121RiskofThunder-R2API_Language
API for modifying the language localisation of the game
Preferred version: 1.1.0RiskofThunder-R2API_Unlockable
API for adding custom achievements and unlockables
Preferred version: 1.0.2RiskofThunder-R2API_Networking
Networking API around the Unity UNet Low Level API (LLAPI)
Preferred version: 1.0.4README
Universal Survivor Unlocks
Universal Survivor Unlocks (USU) is a configurable progression framework for modded survivors in Risk of Rain 2.
USU automatically detects compatible modded survivors, respects characters that already provide their own unlock requirement, and can give progression challenges to survivors that would otherwise be available immediately.
Current release: 0.1.9
GitHub / Source Code · Support development / Donate · Discord: @shleiderick
Support / Apoyo
Donations help me keep the project updated and continue developing new presets, compatibility fixes, multiplayer improvements, and the universal mission system.
Los donativos ayudan a mantener el proyecto actualizado y a continuar desarrollando nuevos presets, correcciones de compatibilidad, mejoras multijugador y el sistema universal de misiones.
Questions, bug reports, survivor requests, preset ideas, and suggestions are welcome on Discord.
Preguntas, reportes de errores, solicitudes de personajes, ideas de presets y sugerencias son bienvenidas en Discord.
AI Usage Notice
Universal Survivor Unlocks has been developed with assistance from artificial intelligence tools during parts of the programming, design, writing, debugging, documentation, and visual-resource workflow.
This notice is included for transparency so players who prefer to avoid AI-assisted content can make an informed decision before installing the mod.
Aviso sobre uso de IA: Universal Survivor Unlocks ha sido desarrollado con asistencia de herramientas de inteligencia artificial durante parte del proceso de programación, diseño, redacción, depuración, documentación y recursos visuales.
Este aviso se incluye por transparencia para que quienes prefieran evitar contenido desarrollado con estas herramientas puedan decidir antes de instalar el mod.
What does USU do?
USU adds progression to compatible modded survivors without replacing the systems created by other survivor authors.
Main goals:
- Automatically detect installed modded survivors.
- Respect survivors that already have their own native unlock requirements.
- Lock compatible survivors when USU assigns them a challenge.
- Unlock survivors through gameplay instead of making every compatible character immediately available.
- Provide built-in creator-made challenge presets.
- Store survivor and challenge information in
Survivors.json. - Preserve survivor configuration when character mods are temporarily disabled or uninstalled.
- Support host-authoritative multiplayer.
- Support both shared-progress and per-player challenge designs.
- Keep vanilla and official DLC progression untouched.
- Evolve toward a reusable mission framework instead of requiring one hardcoded script for every character.
Important behavior
Vanilla and DLC survivors
USU does not replace or interfere with the normal unlock requirements of vanilla or official DLC survivors.
Characters such as Commando, Huntress, Loader, Railgunner, and other official survivors keep their normal Risk of Rain 2 progression.
Modded survivors with their own unlock system
If a modded survivor already defines its own unlockable/progression requirement, USU respects it and leaves that survivor under the control of the original mod.
Modded survivors without an unlock system
Compatible survivors without their own unlock requirement can receive a USU challenge and start locked until that challenge is completed.
Creator presets and custom missions
USU is moving toward a preset-based mission system with a clear ownership rule.
Creator preset
A built-in preset created for USU is the official source preset.
Creator presets are intended to remain unchanged so updates can improve or rebalance them without destroying the original definition.
Player customization
When a player customizes a creator preset, the intended model is to create/use a separate custom mission based on that preset instead of editing the creator preset itself.
This allows USU to keep:
- The original creator preset.
- The player's customized version.
- The technical relationship between the custom mission and the preset it came from.
The public in-game editing workflow is still under development. Existing challenge configuration remains available through Survivors.json, while the newer mission/preset architecture is integrated progressively.
Multiplayer
USU uses a host-authoritative model.
Host configuration
During a multiplayer session, the host's effective challenge configuration is the authoritative mission for that lobby.
A client may have different local values or a different personal configuration, but the host determines the mission rules used during that session.
The host's session configuration is not intended to permanently overwrite the client's personal Survivors.json.
Shared progress
Shared challenges allow multiple players and valid team entities to contribute toward the same session objective.
Examples:
- Sora
- Ralsei
Per-player progress
Per-player challenges keep independent counters, streaks, inventories, or route state for each player.
Examples:
- HUNK
- Tinkaton
Players cannot combine partial individual streaks or personal requirements unless the challenge is explicitly designed as shared progress.
Session-wide completion
When a valid route is completed, USU can grant the corresponding survivor unlock to connected players who still need it.
Current built-in presets
The following creator-made presets are currently included in USU.
Sora — Elegido de la Llave Espada
Apply 100 valid simultaneous status effects during a single run.
Valid effects include:
- Negative effects on enemies.
- Positive effects on allies.
- Stackable effects counted by active stack.
- Non-stackable effects counted once per affected entity.
- Effects from multiple valid living entities at the same time.
Expired effects, removed effects, and effects on dead entities stop contributing.
Progress: Shared
Completion: Session-wide
Ralsei — Oración de Esperanza
Restore a total of 10,000 health to valid allied entities during a single run.
The challenge can include valid healing received by:
- Players.
- Allied drones.
- Turrets.
- Other friendly entities.
Passive regeneration is ignored. Barrier, shields, and overhealing are not treated as restored health.
Progress: Shared
Completion: Session-wide
Jhin — El Cuarto Acto
Deliver the final blow to a boss with a sufficiently powerful critical hit.
The current preset uses a lethal critical-hit requirement of at least 44,444 damage.
Spy — Sin que me veas venir
Kill a boss with a valid fatal backstab.
The preset is designed around a lethal backstab route and uses Risk of Rain 2's backstab/damage information to validate the finishing hit.
Scout — Energía Atómica
Accumulate 15 Energy Drinks on a single player during the run.
Player inventories are tracked independently and are not combined between players.
Rocket / Soldier — La gravedad es opcional
Kill 15 enemies with valid explosions while the owning player remains airborne.
The challenge is designed around explosive Rocket/Soldier-style combat and validates the player ownership of qualifying explosive damage.
Touching the ground can reset the relevant airborne streak/progress according to the configured challenge rules.
HUNK — La Parca No Falla
Complete one of the following individual routes:
- Land 24 consecutive Railgunner M99 weak-point hits, OR
- Score 24 consecutive kills with Bandit's Luces fuera / Lights Out.
Important multiplayer rules:
- Each player's streak is independent.
- Two players cannot combine partial streaks.
- Other Bandit abilities do not reset the Lights Out streak.
- A real Lights Out use that fails to kill resets that player's Lights Out streak.
- If one player completes a valid route, the challenge can complete for the session.
Example:
Railgunner A = 12 / 24
Railgunner B = 12 / 24
Result:
A remains at 12 / 24
B remains at 12 / 24
They do NOT become 24 / 24 combined.
Progress: Per-player
Completion: Session-wide
Tinkaton — Forjada en Chatarra
Recicla 6 objetos; obtén Justicia demoledora y derriba
a la Unidad de Aleación con Bote explosivo de MUL-T.
Current requirements:
- Play as MUL-T.
- Convert at least 6 items into Scrap during the same run.
- Have Justicia demoledora / Shattering Justice in your inventory.
- Defeat the Alloy Worship Unit.
- The final hit must come from Bote explosivo / Blast Canister or a valid child bomblet generated by the same skill.
Scrap progress belongs to the player who performed the conversions and remains remembered for the run even if the Scrap is later consumed.
Different players cannot combine Tinkaton's personal requirements.
Progress: Per-player
Completion: Session-wide
Challenge systems currently used by presets
USU already includes multiple reusable gameplay challenge systems:
ApplyStatusEffectsHealHealthBossCriticalKillBackstabBossKillHoldItemStackAirborneExplosionKillsPrecisionExecutionStreakScrapItemBossFinisherKillEnemies
These systems are progressively being moved toward a more general mission architecture.
Mission System v2 foundation
Version 0.1.9 includes development groundwork for the next-generation mission format.
The new model is designed around:
MissionDefinitionMissionRouteMissionObjectiveMissionConditionMissionRulesMissionTargetMissionPreset- Preset/custom mission source tracking
SharedandPerPlayerprogress scopes- Session reward scope
- Multiple alternative routes
Route logic
Conditions inside one route are treated as AND requirements.
Different routes are treated as OR alternatives.
Conceptually:
Route A:
Objective
AND Condition
AND Condition
OR
Route B:
Objective
AND Condition
This model is useful for challenges such as HUNK, where two completely different gameplay routes can unlock the same survivor.
Target system
The mission model is being built to support reusable target categories such as:
- Any enemy.
- Enemy.
- Elite.
- Boss.
- Specific body.
- Specific boss.
Specific entities use stable internal body IDs instead of localized display names.
Examples:
BrotherBody
SuperRoboBallBossBody
ScavBody
This allows future missions to target bosses by their internal body identity without depending on the language selected by the player.
Current v2 runtime status
The v2 architecture is being integrated progressively.
The current foundation includes evaluation for the Kill objective and initial conditions/targets, including:
AirborneGroundedRequiredSurvivorEnemyBossEliteSpecificBodySpecificBoss
Existing creator presets continue to use the established gameplay trackers while they are migrated to the universal mission format.
This section documents the architecture already present in the project; it does not mean every planned objective or editor option is already available to players.
Configuration
USU stores detected survivor and challenge information in:
BepInEx/config/UniversalSurvivorUnlocks/Survivors.json
When using Thunderstore Mod Manager or r2modman, this file is inside the selected profile.
USU can also maintain backup configuration data so survivor information is not lost unnecessarily when configuration is synchronized.
Important
Survivors.json is a persistence/configuration layer.
Metadata identifying a survivor is maintained by USU. Avoid changing internal survivor IDs unless you know exactly what the game/mod uses.
Because the mission system is evolving, making a backup before manually editing complex challenge data is recommended.
Built-in preset synchronization in 0.1.9
Built-in creator presets are still treated as source definitions by the current authoring/synchronization layer.
This means direct edits to a known built-in preset inside Survivors.json may be replaced by the creator preset when USU synchronizes configuration.
This is intentional while the separate custom-copy workflow is being integrated: the creator preset remains preserved, and future player customization is intended to live in a separate custom mission instead of modifying the source preset itself.
Persistence
USU stores its progression/configuration separately from the survivor mod itself.
This allows the project to remember information about a modded survivor when that character mod is temporarily removed and later installed again.
USU reconciles its detected survivor catalog with the stored configuration during startup.
Locked survivor presentation
For survivors locked by USU, the mod integrates the lock into the character selection experience.
The intended presentation includes:
- Darkened/locked survivor portrait.
- Vanilla-like locked framing.
- Challenge information on hover.
- Unlock notification when the requirement is completed.
- Normal full-color presentation after unlocking.
Official survivors and survivors controlled by another mod's own unlock system are not given USU's generated lock presentation.
Installation
Thunderstore Mod Manager / r2modman
- Install Universal Survivor Unlocks.
- Install it with dependencies.
- Install any compatible modded survivors you want to use.
- Launch Risk of Rain 2.
- USU will detect/reconcile compatible survivors and configuration automatically.
The survivor mods referenced by USU presets are not hard dependencies of Universal Survivor Unlocks.
Manual installation
Manual installation is intended for users already familiar with BepInEx.
Place the USU plugin in the appropriate BepInEx plugin directory and install every dependency listed in the package manifest.json.
Using a mod manager is recommended.
Dependencies
The Thunderstore package currently declares:
bbepis-BepInExPack-5.4.2121RiskofThunder-R2API_Core-5.3.0RiskofThunder-R2API_ContentManagement-1.0.11RiskofThunder-R2API_Language-1.1.0RiskofThunder-R2API_Unlockable-1.0.2RiskofThunder-R2API_Networking-1.0.4
Always treat the manifest.json included with the current release as the authoritative dependency list.
Compatibility
USU is designed to coexist with:
- Vanilla survivor progression.
- Official DLC survivor progression.
- Modded survivors with native unlock systems.
- Modded survivors without native unlock systems.
- Multiplayer sessions using compatible mod profiles.
Risk of Rain 2 mods can modify skills, networking, damage behavior, content loading, unlockables, and UI in many different ways, so compatibility with every third-party mod cannot be guaranteed.
If another mod changes a skill or mechanic used by a USU preset, that challenge may require a compatibility adjustment.
Reporting bugs / requesting presets
The most useful bug report includes:
- Universal Survivor Unlocks version.
- Risk of Rain 2 version.
- Whether the problem happened as host or client.
- Survivor used.
- Challenge/preset being attempted.
- Relevant mod list.
- What happened.
- What you expected to happen.
LogOutput.logfrom the affected session.
For multiplayer issues, logs from both host and client are especially useful.
You can use:
- Discord / Direct contact:
@shleiderick- Original Discord alias:
Shleider#3336
- Original Discord alias:
- GitHub: https://github.com/Danileonardo/Rain2CharacterUnlock
You can contact me on Discord for:
- Questions.
- Survivor requests.
- Challenge/preset ideas.
- Suggestions.
- Compatibility reports.
- General project discussion.
Supporting development / Donativos
Universal Survivor Unlocks is free.
If you enjoy the project and want to support continued development, you can use GitHub Sponsors:
https://github.com/sponsors/Danileonardo
Donations help support continued work on:
- New survivor presets.
- Multiplayer validation.
- Compatibility fixes.
- Mission System v2.
- Configuration tools.
- Documentation.
- Localization.
- Maintenance after Risk of Rain 2 updates.
Donations are optional and do not grant gameplay advantages or affect unlock requirements.
Español: Los donativos son completamente opcionales. Ayudan a mantener el proyecto actualizado y a continuar desarrollando presets, compatibilidad, multijugador y el sistema universal de misiones. No entregan ventajas dentro del juego ni cambian los requisitos de desbloqueo.
Survivor mod credits
Universal Survivor Unlocks does not own the third-party survivors used by its built-in presets.
Those characters, assets, survivor implementations, and original mod projects belong to their respective authors and rights holders.
Built-in USU presets currently reference/test against projects including:
-
Sora — mod by Dragonyck
https://thunderstore.io/c/riskofrain2/p/Dragonyck/Sora/ -
RalseiSurvivor — package by GodRayProductions and its credited contributors
https://thunderstore.io/c/riskofrain2/p/GodRayProductions/RalseiSurvivor/ -
Jhin — mod by SeroRonin
https://thunderstore.io/c/riskofrain2/p/SeroRonin/Jhin/ -
Spy — mod by tsuyoikenko
https://thunderstore.io/c/riskofrain2/p/tsuyoikenko/Spy/ -
Scout — mod by tsuyoikenko
https://thunderstore.io/c/riskofrain2/p/tsuyoikenko/Scout/ -
Rocket — mod by EnforcerGang
https://thunderstore.io/c/riskofrain2/p/EnforcerGang/Rocket/ -
HUNK — mod by public_ParticleSystem
https://thunderstore.io/c/riskofrain2/p/public_ParticleSystem/HUNK/ -
Tinkaton — package by DragonycksModdingComms
https://thunderstore.io/c/riskofrain2/p/DragonycksModdingComms/Tinkaton/
These survivor packages are referenced for compatibility/preset design and are not automatically dependencies of USU.
Please support the original survivor mod authors as well.
General credits
Universal Survivor Unlocks is an independent Risk of Rain 2 modding project.
- Risk of Rain 2, its original characters, items, skills, and assets belong to their respective owners.
- Third-party characters and franchises belong to their respective rights holders.
- Third-party survivor mods belong to their respective mod authors/contributors.
- USU does not claim ownership over those characters or their original assets.
AI Transparency
USU uses AI-assisted tools as part of its development workflow.
This may include assistance with:
- Programming.
- Debugging.
- Refactoring.
- Challenge design.
- Documentation.
- Writing.
- Visual-resource ideation or generation.
Final implementation decisions, testing, balancing, packaging, project direction, and release decisions remain part of a human-led development process.
This disclosure is intentionally visible so users can decide for themselves whether they are comfortable installing AI-assisted content.
License
Universal Survivor Unlocks is distributed under the MIT License.
See the included LICENSE file for the complete license terms.
Project direction
USU is evolving from a collection of individual unlock scripts into a general-purpose configurable progression framework for modded survivors.
Long-term goals include:
- A reusable creator-preset library.
- Safe player-created copies/custom missions.
- An in-game mission editor.
- Reusable objectives and conditions.
- Configurable enemy, elite, boss, and specific-body targets.
- Multi-route challenges.
- Preset sharing/importing.
- Better localization.
- Strong multiplayer synchronization.
- Persistent configuration without overwriting each player's personal setup.
Links
Source / Issues
https://github.com/Danileonardo/Rain2CharacterUnlock
Support development / Donate
https://github.com/sponsors/Danileonardo
Discord / Direct Contact
Current username: @shleiderick
Original alias: Shleider#3336
Thank you for playing and helping test Universal Survivor Unlocks.
Gracias por jugar y ayudar a probar Universal Survivor Unlocks.
CHANGELOG
Changelog
All notable changes to Universal Survivor Unlocks are documented here for Thunderstore and GitHub releases.
0.3.0 — Adaptive Generated Missions & Runtime Authority
Highlights
- Added the first public adaptive Generated mission pipeline for modded survivors that do not currently have an applicable Original, Official USU, or player CUSTOM mission.
- Generated missions are temporary runtime fallbacks: they are rebuilt from the currently installed survivor/profile context and are not persisted as player CUSTOM content.
- Added survivor gameplay/profile analysis, local power assessment, challenge-tier resolution, template compatibility scoring, deterministic candidate generation, and runtime mission materialization.
- Preserved creator-owned unlock content: vanilla/DLC progression and mod-author Original unlocks remain authoritative when present. USU Generated content does not replace them.
- Kept the 10 Official Mission v2 presets authoritative over Generated candidates and retained the 12 Legacy recipes as hidden reusable compatibility/editor assets.
Generated mission system
- Added
MissionProfileAnalyzerand related profile models to classify survivor bodies, skills, effects, usage patterns, and mission-relevant capabilities. - Added local power/complexity assessment plus ChallengeTier resolution used to scale generated mission difficulty without hardcoding individual survivor names.
- Added compatibility-scored reusable mission template families and a deterministic generator that selects temporary mission candidates from the local installed/unlocked context.
- Added runtime materialization for the currently supported Generated families:
ExecutionHealingSupportResourceMasteryMeleeCombatProjectileCombat
- Generated missions use compatible alternative performers rather than requiring the target survivor itself, and the generated target is never used to unlock itself.
- Added generated presentation formatting with compact vanilla-style text, including the existing two-line / 50-character-per-line presentation rule. Generic mechanic missions no longer expose internal performer counts such as
+7; character suffixes are reserved for missions that actually require specific characters. - Retained the historical 100-kill challenge only as an emergency compatibility fallback. Its presence is not used as a reason to replace Original creator content.
Runtime, authority, and presentation
- Added a runtime Generated materialization bridge into
SessionMissionRegistryso Generated candidates become real Mission v2 definitions without writing them intoSurvivors.json. - Added effective mission routing so Mission v2 Generated content is used for challenge evaluation instead of accidentally progressing the historical fallback in parallel.
- Added
AllowedPerformerSkillruntime condition support and generalized skill-token/internal-skill matching for generated performer constraints. - Added Mission v2 objective support used by the new generated families for healing and compatible skill/resource actions.
- Added an effective presentation bridge for Character Select / achievement-facing text so Generated and Official USU missions present the mission that is actually active.
- Original providers now explicitly bypass USU EFFECTIVE token refresh, preserving the creator's own presentation for Artillerist, Shock Trooper, Aurelion Sol, Auriel, Enforcer, Nemesis Enforcer, Miner while Original is selected, and future compatible Original providers.
- Miner remains the intentional curated exception where the player can explicitly choose between the creator's Original unlock and USU's separate
Excavación / Excavationpreset.
Multiplayer/session groundwork
- Generated missions participate in the same host-authoritative session snapshot model as other effective missions.
- Host Character Select snapshots include Generated/Official/selected mission data without persisting host choices into a client's local configuration.
- Generated progress scopes are materialized as shared session progress where required by the current generated templates.
- Host-side lobby snapshot construction and fragmented dispatch were validated with the current 23-survivor test profile. Broader client/run validation continues during the public release test cycle.
Validation
- Current test profile: 7 Generated candidates → 7 materialized, with
Unsupported families: 0andInvalid materializations: 0. - Confirmed that Original provider presentation is preserved while Generated/Official USU presentation continues to refresh normally.
- Confirmed that generated mission data remains temporary (
Persistencia: no) and does not become a stored CUSTOM mission.
0.2.2 — Mission Authority & Persistence Foundation
Highlights
- Separated the 10 current official Mission System v2 presets from the 12 hidden Legacy recipes. Legacy recipes remain preserved for compatibility, future CUSTOM missions, and later editor/generator work.
- Added Miner's independent USU preset Excavación / Excavation while preserving MinerUnearthed's native Original unlock. Miner remains Original by default and can explicitly switch Original ↔ USU.
- Added stable survivor identity using
ContentPack + Body(survivor:<source>:<body>) so persisted mission ownership no longer depends only on a transient runtime entry. - Upgraded
Survivors.jsonto schema v2 withdormantMissionsand the explicitPendingContentstate for survivor mods that are temporarily absent. - Reinstalled survivors now rehydrate the same persisted mission/configuration by stable identity while rebuilding runtime metadata from the currently installed mod.
Persistence and compatibility
- Absent survivor mods persist only the minimum required data: stable identity, Body/Source, challenge/Mission v2 configuration, provider/selection state, preset relationship, CUSTOM data, and forward-compatible mission metadata.
- Runtime character snapshots such as skills, skins, prefabs, lore, stats, Unity objects, and ContentProfile data are not stored as dormant truth.
- Added migration from the previous
MissingContentpersistence model to mission-only dormant records. - Official USU missions may remain prepared while their referenced survivor mod is not installed.
Provider,SelectionMode,BasePresetId,CustomMission, Mission v2 data, and unknown forward-compatible fields are preserved during normalization.- Future unsupported
schemaVersionvalues put persistence into read-only mode instead of allowing an older build to overwrite newer data. - Saves continue to use a temporary file before replacement and keep a previous-version backup.
Mission authority and provider handling
- Added centralized authority validation for the fixed current set of 10 Official / 12 Legacy presets, stable IDs, Body/Source bindings, Mission v2 metadata, localization bindings, reward ranges, and Legacy isolation.
- Centralized provider policy and provider selection so the embedded Risk Of Options UI, fallback UI, persistence, and runtime assignment paths share the same Original/USU/CUSTOM precedence rules.
- Preserved the global Original-first policy. Explicit
UserSelectedchoices are not silently replaced by automatic fallback logic. - Miner is the current curated direct Original ↔ USU exception and targets
creator.official.miner.excavation.
Runtime and maintenance
- Consolidated gameplay bootstrap, Mission v2 run lifecycle, Legacy run lifecycle, shared gameplay event hooks, polling tiers, and duplicated scrapper handling without intentionally changing mission semantics.
- Reduced duplicated high-frequency engine subscriptions and retained full-rate polling only where mission behavior requires it.
- Removed closed development-only migration/dead-code paths and reorganized survivor, persistence, provider, UI, Mission preset, and runtime files by responsibility.
- Public release builds now keep preset
AuthoringModedisabled; official assigned snapshots continue to refresh through their stableBasePresetIdpath.
Release validation
- Mission Authority runtime validation: 10 Official / 12 Legacy / Miner direct Original ↔ USU.
- Miner persistence workflow validated through installed → absent/PendingContent → reinstalled, preserving the same stable identity,
Excavación,Provider=USU, andSelectionMode=UserSelectedwithout leaving a duplicate dormant record. - This release does not introduce adaptive mission generation, power scoring, ChallengeTier resolution, or random template generation; those remain future work.
0.2.1 — Survivor Definitions & Mission Library Update
Release focus
- Closed the current curated survivor presentation/localization pass for the installed/tested survivor set.
- Added the first public Mission Library/provider-management interface while keeping the full mission editor for a later release.
- Kept the nine creator-made unlock missions on the existing Mission System v2 backend; this release does not migrate native/legacy unlock logic into Survivor Definitions.
Added
- Added the central
SurvivorDefinition/SurvivorDefinitionRegistrysystem. - Added curated Definitions for 15 survivor integrations:
- Aurelion Sol
- Auriel
- Enforcer
- Ralsei
- Sora
- Wooper
- Tinkaton
- HUNK
- Jhin
- Miner
- Rocket
- Scout
- Spy
- Heretic
- Nemesis Enforcer
- Added manual curated Spanish localization (
es-419/es-ES) plus English repairs for visible modded-survivor content where needed. - Added survivor content profiles covering overview/details, skills, keywords, skins, unlock information, and Logbook-facing lore/Notes.
- Added runtime content catalog services for survivors, items, equipment, skills, bodies, and stages, including discovery-aware presentation support.
- Added Mission Library UI with an optional embedded Risk Of Options integration.
- Added a Character Select launcher fallback when Risk Of Options is not installed.
- Added provider/assignment services for Original/USU/Custom state, preset assignment, restore-original behavior, preset snapshot refresh, and runtime mission refresh.
- Added centralized
UsuLogpolicy withLogging.VerboseLogging=falseby default. - Added runtime context tracking used by mission/content systems.
Changed
- Updated Jhin's active El Cuarto Acto requirement to 4,444+ lethal critical damage in the current preset/configuration source.
- Expanded survivor detection/content-profile handling so curated Definitions can activate without hard references to external survivor DLLs.
- Heretic now uses a special Definition path compatible with Moffein-Heretic exposing the vanilla
HereticBody/SurvivorDef instead of registering a separate modded SurvivorDef. - Updated locked-survivor presentation, browser/profile refresh behavior, and configuration reconciliation for the new profile/Definition layers.
- Improved runtime refresh and assignment handling so provider changes can be reflected without replacing the player's unrelated personal configuration.
- Risk Of Options is now a soft dependency/integration, not a required package dependency.
Localization / survivor presentation
- Curated visible-content coverage now includes character overview/details, skills, keyword panels, skins, achievements/requirements, and lore where available for the registered Definitions.
Notescontinues to represent Logbook lore only and follows the real native Logbook discovery state instead of a separate USU-known flag.- Removed the runtime automatic-translation direction from the current release path; 0.2.1 uses curated manual localization.
Compatibility and release metadata
- Bumped plugin, assembly project metadata, source manifest, and Thunderstore staging manifest to
0.2.1. - Updated README documentation for the current Mission Library, optional Risk Of Options integration, Definitions, and provider behavior.
- Preserved native survivor unlock providers when they exist; Definitions do not replace creator-owned unlock logic.
- Full visual mission authoring/editing remains planned for a later release.
0.2.0 — Creator Challenges Update
Release focus
- This release is focused on public testing and balance feedback for the current 9 creator-made survivor unlock challenges.
- The in-game preset library, preset reassignment UI, editable copies, and full mission editor are not included yet.
- Internal preset/library architecture is included so future releases can build on the same stable mission definitions without reverting the current challenge work.
Added
- Added/finished the current official Mission System v2 presets for:
- Sora — Elegido de la Llave Espada
- Ralsei — El poder de la bondad
- Jhin — El Cuarto Acto
- Spy — Sin que me veas venir
- Scout — Sed Termonuclear
- Rocket — La gravedad es opcional
- HUNK — La Parca No Falla
- Tinkaton — Forjada en Chatarra
- Wooper — De vuelta al agua
- Added localized official challenge names/descriptions for English and Spanish (
es-419/es-ES), with English fallback. - Added Lunar Coin rewards to the official generated achievements:
- Sora:
+4 - Ralsei:
+3 - Jhin:
+4 - Spy:
+3 - Scout:
+2 - Rocket:
+4 - HUNK:
+5 - Tinkaton:
+5 - Wooper:
+2
- Sora:
- Added
MissionConfig/ preset-origin metadata so official missions can retain a stable source preset identity for the upcoming library/editor workflow. - Added the read-only
MissionPresetLibraryServicelayer over the built-in preset catalog. - Added internal library access for assignable missions, official missions, legacy missions, Objective templates, and Condition templates.
- Added/expanded reusable Mission v2 runtime handlers for current official mission compositions, including:
KillHoldItemStackPickupItem/ no-item-pickup trackingCompleteTeleporterScrapItemsBombingRunCarryEquipmentCompleteEndingRecruitMinionsDefeatUmbraWavesLeaveStage
- Added reusable tracking/evaluation support for skill history and pre-damage target status so conditions can validate actions such as Wooper's poisoned Ravenous Bite requirement.
- Added global Mission v2 progress logging with milestone-based output to reduce log spam while retaining useful progress diagnostics.
Current official challenge changes
- Sora — Elegido de la Llave Espada
- Replaced the old 100-status-effect challenge with a Bulwark's Ambry / Artifact of Vengeance mission.
- Requires Mercenary to be represented in the party, the Vengeance Umbra encounter to be completed, and the Ambry to be exited successfully.
- Uses Shared mission progress.
- Ralsei — El poder de la bondad
- Replaced the old 10,000-healing challenge with a Devotion-focused mission.
- Requires Captain or Seeker, recruiting 3 Lemurian allies, and completing the teleporter route.
- Jhin — El Cuarto Acto
- Preserves the lethal boss critical-hit concept at 44,444+ damage.
- Added a dedicated
JhinOfficialpreset identity so Jhin is consistent with the other official creator presets.
- Spy — Sin que me veas venir
- Requires Bandit, Serrated Dagger, a valid boss backstab, and a fatal finishing hit.
- Removed the older Smoke Bomb prerequisite.
- Scout — Sed Termonuclear
- Reworked into two alternative routes:
- Hold 8 Energy Drinks, OR
- Complete the first-stage teleporter within 4 minutes without picking up items.
- Reworked into two alternative routes:
- Rocket — La gravedad es opcional
- Reworked into 3 successful bombing runs.
- Each bombing run requires 5 qualifying explosion kills before landing, with landing required between successful runs.
- HUNK — La Parca No Falla
- Replaced the old 24-hit / 24-kill execution streak challenge.
- Requires continuously protecting the Fuel Array and either escaping the Moon or obliterating at the Obelisk.
- Losing the required equipment or dying invalidates the route.
- Tinkaton — Forjada en Chatarra
- Reworked into a three-objective Mission v2 composition:
- Scrap 6 items.
- Hold Shattering Justice.
- Defeat a valid mechanical Eye boss target.
- Removed the old mandatory MUL-T + Blast Canister finishing-hit requirement.
- Reworked into a three-objective Mission v2 composition:
- Wooper — De vuelta al agua
- Reworked to require Acrid in Wetland Aspect.
- Requires 20 kills with Ravenous Bite against enemies that were already poisoned before the qualifying bite.
- Removed the old Bison Steak and stage-completion requirements.
Multiplayer
- Continued the host-authoritative session mission model.
- Mission snapshots are frozen/synchronized for the active multiplayer session instead of replacing each client's personal configuration.
- Shared and PerPlayer mission scopes are represented explicitly in Mission v2.
- Improved multiplayer completion routing and session unlock delivery.
- Preserved independent personal progress for PerPlayer mission routes.
Performance and diagnostics
- Added runtime activity planning so inactive legacy/runtime trackers can avoid unnecessary work.
- Added runtime budgets/throttling for periodic mission scans.
- Reduced repetitive progress/status/healing/kill logging.
- Added milestone-based progress output based on objective size.
- Prevented completed mission routes from continuing to emit unnecessary progress logs.
- Suppressed normal local progress/reward logging when all local profiles already own the survivor unlock, while preserving required network/session processing.
- Prevented repeated
Unlock temprano asignadomessages when the same generated unlock is revisited during ContentPack construction. - Hardened Ralsei's Devotion recruitment detection:
LemurianHarnessis resolved through the item catalog when available and falls back toDevotedLemurianControllerwhen the static marker asset is unavailable.
Preset catalog cleanup
- Normalized the internal built-in preset catalog before exposing it to players.
- The current library reports:
- 9 assignable official missions
- 12 hidden legacy mission recipes
- 26 Objective templates
- 35 Condition templates
- Legacy mission recipes remain available internally for compatibility/history but are no longer treated as new assignable missions.
- Official missions are returned as fresh copies from catalog factories so source presets are not mutated.
Changed
- Bumped the public release version to
0.2.0. - Updated README documentation to match the actual current nine official mission designs.
- Updated README multiplayer examples/scopes to match the Mission v2 definitions.
- Updated HUNK attribution to the current
rob-HUNKpackage and added Wooper to survivor credits. - Clarified that Risk Of Options and the in-game mission editor are not dependencies/features of 0.2.0.
- Clarified that current official presets are still source-synchronized and that permanent editable copies are a future feature.
Known validation focus
- Public testing is especially useful for balance/theme feedback across all nine official challenges.
- HUNK, Tinkaton, Sora, and Ralsei benefit from additional end-to-end testing across different mod profiles/multiplayer sessions.
- Devotion/Lemurian content can produce asset-assignment warnings in some profiles; reports should include
LogOutput.logso compatibility issues can be separated from unrelated third-party warnings.
Planned after 0.2.0
- Preset assignment service for assigning an official mission to another compatible detected survivor.
- In-game preset library entry point/configuration.
- Safe editable copies of official presets.
- Full Mission System v2 editor.
- User-created/shareable presets.
0.1.9
Added
- Added the first foundation of the new Mission System v2.
- Added reusable mission models for:
MissionDefinitionMissionRouteMissionObjectiveMissionConditionMissionRulesMissionTargetMissionPreset
- Added support in the new mission model for alternative mission routes:
- Conditions inside a route use
AND. - Different routes can work as
ORalternatives.
- Conditions inside a route use
- Added mission progress scope definitions for:
SharedPerPlayer
- Added the creator-preset / custom-mission ownership model.
- Creator presets are treated as original source definitions and are not intended to be edited directly.
- Added groundwork for player-created custom missions based on creator presets without replacing the original preset.
- Added initial
Killobjective evaluation for Mission System v2. - Added initial reusable mission conditions:
AirborneGroundedRequiredSurvivor
- Added reusable mission target categories:
AnyEnemyBossEliteSpecificBodySpecificBoss
- Added support for identifying specific enemies and bosses through stable internal body IDs such as
BrotherBodyorSuperRoboBallBossBody. - Added runtime
KillEnemieschallenge tracking. - Added GitHub Sponsors integration through
.github/FUNDING.yml. - Added bilingual project support and donation information to the README.
- Added Discord community sections for questions, bug reports, survivor requests, preset ideas and suggestions.
- Added detailed credits for the third-party survivor mods referenced by USU presets.
Multiplayer
- Reworked challenge completion routing around a centralized multiplayer-aware completion system.
- Improved session-wide unlock delivery.
- Preserved the host-authoritative challenge model.
- The host's effective challenge configuration remains authoritative during multiplayer sessions.
- Shared challenges can receive valid progress from multiple players.
- Per-player challenges continue to maintain independent player progress.
- A valid individual route can complete its challenge for the session without combining invalid partial player progress.
- The mission architecture now explicitly represents
SharedandPerPlayerprogress scopes. - Player-local configuration is intended to remain separate from the host's effective session configuration.
Changed
- Bumped Universal Survivor Unlocks to version
0.1.9. - Updated package metadata for Thunderstore.
- Updated the Thunderstore website link to the project's GitHub Sponsors page.
- Reworked the README to better explain:
- Built-in creator presets.
- Multiplayer behavior.
- Configuration persistence.
- Mission System v2.
- Support and donations.
- Discord/community support.
- Survivor mod attribution.
- AI usage transparency.
- Updated Jhin documentation to match the current preset requirement of 44,444 critical damage.
- Updated Scout documentation to match the current preset name Energía Atómica.
- Documented Rocket's current requirement of 15 airborne explosion kills.
- Clarified that Ralsei's challenge ignores passive regeneration.
- Improved separation between currently functional challenge trackers and the next-generation universal mission architecture.
Fixed
- Fixed outdated project version metadata that was still reporting
0.1.6in the.csproj. - Fixed inconsistent package version metadata between the plugin and Thunderstore manifests.
- Corrected outdated README and CHANGELOG information that no longer matched current preset values.
- Removed outdated documentation implying that all multiplayer challenge tracking was still experimental.
- Improved documentation around creator presets so users are not encouraged to directly overwrite source presets.
Development
- Existing challenge trackers remain functional while presets are progressively migrated to Mission System v2.
- Mission System v2 currently provides architectural groundwork and initial event evaluation; not every planned objective or condition is exposed to players yet.
- The future in-game mission editor will operate on custom mission copies instead of directly modifying creator presets.
0.1.8
Added
- Added Tinkaton preset: Forjada en Chatarra.
- Added the new
ScrapItemBossFinisherchallenge type. - Added tracking for items converted into Scrap during a run.
- Added final-hit validation for MUL-T's Bote explosivo against the Alloy Worship Unit.
- Added an AI usage transparency notice to the README.
Changed
- Increased Ralsei's Oración de Esperanza healing requirement from 5,000 to 10,000.
- Updated Bandit's multiplayer HUNK route to reduce false streak resets for remote clients.
- Shortened Tinkaton's challenge description to fit correctly in the survivor selection UI.
Testing
- Continued multiplayer validation for HUNK.
- Added diagnostic logging for Tinkaton's Scrap and final-hit conditions.
0.1.6
Added
-
Added built-in unlock presets for additional supported modded survivors:
- Sora —
Elegido de la Llave Espada - Ralsei —
Oración de Esperanza - Jhin —
El Cuarto Acto - Scout —
Sed Termonuclear - Spy —
Sin que me veas venir - Rocket —
La gravedad es opcional - HUNK —
La Parca No Falla
- Sora —
-
Added the
descriptionfield to survivor challenge configuration. -
Added support for custom challenge descriptions displayed by generated unlocks.
-
Added the
HealHealthchallenge type.- Tracks actual health restored to Player-team entities during a run.
- Supports players, allied summons, drones and turrets.
- Does not count barrier, shields or overhealing.
-
Added the
BossCriticalKillchallenge type.- Supports boss kills requiring a minimum critical-hit damage value.
- The current Jhin preset requires a lethal critical hit of at least 4444 damage.
-
Added the
HoldItemStackchallenge type.- Tracks item stacks independently for each player.
- Player inventories are never combined.
- The current Scout preset requires one player to hold 15 Energy Drinks.
-
Added the
BackstabBossKillchallenge type.- Uses Risk of Rain 2's backstab detection.
- The current Spy preset requires Bandit's Serrated Dagger to deliver the lethal backstab to a boss.
-
Added the
AirborneExplosionKillschallenge type.- Tracks lethal explosion / blast kills while the owning player remains airborne.
- Touching the ground resets that player's streak.
- Supports blast and shockwave kills.
- Supports player-owned explosive drones and minions.
- Drone or minion airborne state does not affect progress; only the owning player's airborne state is checked.
- Damage-over-time kills occurring after an explosion do not count.
-
Added the
PrecisionExecutionStreakchallenge type.- Supports consecutive Railgunner M99 weak-point hits.
- Supports consecutive Bandit Lights Out kills.
- The current HUNK preset requires either 24 consecutive Railgunner weak-point hits or 24 consecutive Lights Out kills.
-
Added player ownership resolution for gameplay events generated by drones and minions.
-
Added server-side tracking systems for the new challenge types.
-
Added built-in preset authoring synchronization support for development.
Changed
- Renamed Sora's built-in challenge from
Guerrero de la llavetoElegido de la Llave Espada. - Updated built-in survivor presets to use explicit challenge descriptions.
- Expanded gameplay challenge architecture to support multiple reusable server-tracked challenge types.
- Improved individual-player tracking so challenge progress from different players is not incorrectly combined.
- Improved handling of current Risk of Rain 2 APIs for item counts, damage sources and bullet hit information.
Development / Validation
- The new gameplay challenge implementations compile successfully.
- A general gameplay validation pass is still pending for the newly added survivor presets.
- Full multiplayer behavior remains experimental and requires additional validation.
0.1.3
- Added the built-in default unlock preset for Dragonyck's Sora.
- Sora now automatically receives the
Guerrero de la llavechallenge when first detected by Universal Survivor Unlocks. - The default Sora challenge uses
ApplyStatusEffectsand requires 100 valid active status effects simultaneously during a single run. - Added automatic migration for Sora configurations using the legacy default
KillEnemies 100challenge. - Existing customized Sora challenge configurations are preserved and are not overwritten.
0.1.1
- Added initial support for configurable survivor challenges.
- Added
ApplyStatusEffectschallenge tracking. - Status effect progress is calculated from effects currently active during a run.
- Negative status effects are counted only on enemies.
- Positive status effects are counted only on allies.
- Stackable effects contribute once per active stack.
- Non-stackable effects contribute once per affected entity.
- Multiple enemies and allies can contribute to the total simultaneously.
- Status effects stop contributing when they expire, are removed, or the affected entity dies.
- Added server-side tracking groundwork for multiplayer-compatible challenges.
- Improved dynamic survivor unlock handling and challenge configuration.
[0.1.0] - Initial Public Release
Added
- Automatic detection of modded survivors.
- Support for modded survivors loaded through different ContentPack implementations.
- Automatic creation of unlock requirements for modded survivors that do not provide their own character unlock.
- Automatic locking of newly detected supported modded survivors on first startup.
- Preservation of unlock requirements created by original survivor mod authors.
- Vanilla and official DLC survivors are excluded from the custom unlock system.
- Automatic generation of
Survivors.json. - Automatic preservation of unavailable survivor configurations.
- Automatic creation of
Survivors.backup.jsonwhen updating an existing configuration. - Default challenge configuration for newly detected supported survivors:
type:KillEnemiesamount:100
- Custom
UnlockableDefgeneration for supported modded survivors. - Custom achievement definitions used by generated survivor unlocks.
- Modded survivor portrait support for generated achievement icons.
- Locked survivor portrait handling in the character selection screen.
- Compatibility with RealerCheatUnlocks for manually granting and revoking generated unlocks.
- Logging for survivor detection, source identification, unlock generation and configuration synchronization.
Tested Compatibility
The detection and locking system has been tested with several modded survivors using different loading implementations, including:
- Sora
- Ralsei
- HUNK
These survivor mods are not dependencies.
Configuration
The generated configuration file is located at:
BepInEx/config/UniversalSurvivorUnlocks/Survivors.json
When using r2modman or Thunderstore Mod Manager, the file is located inside the selected profile.
Known Limitations
- Gameplay challenge progress tracking is not yet implemented.
- Challenge definitions such as
KillEnemiesare currently stored in the JSON and used to define generated unlock requirements, but they do not yet automatically complete through gameplay. - Additional challenge types are planned for future versions.
Planned
- Functional gameplay challenge tracking.
- Additional challenge types.
- Boss-related unlock conditions.
- Elite enemy challenges.
- Stage progression challenges.
- Difficulty-based challenges.
- Run completion challenges.
- Custom challenge presets for exceptionally powerful modded survivors.
- Additional compatibility testing with survivor frameworks and character packs.