You are viewing a potentially older version of this package. View all versions.
Shleidericks-UniversalSurvivorUnlocks-0.2.2 icon

UniversalSurvivorUnlocks

Adds creator-made, configurable and multiplayer-aware unlock challenges to compatible modded Risk of Rain 2 survivors.

Date uploaded 2 weeks ago
Version 0.2.2
Download link Shleidericks-UniversalSurvivorUnlocks-0.2.2.zip
Downloads 124
Dependency string Shleidericks-UniversalSurvivorUnlocks-0.2.2

This mod requires the following mods to function

bbepis-BepInExPack-5.4.2121 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.4.2121
RiskofThunder-R2API_Core-5.3.0 icon
RiskofThunder-R2API_Core

Core R2API module

Preferred version: 5.3.0
RiskofThunder-R2API_ContentManagement-1.0.11 icon
RiskofThunder-R2API_ContentManagement

API for adding content to the game

Preferred version: 1.0.11
RiskofThunder-R2API_Language-1.1.0 icon
RiskofThunder-R2API_Language

API for modifying the language localisation of the game

Preferred version: 1.1.0
RiskofThunder-R2API_Unlockable-1.0.2 icon
RiskofThunder-R2API_Unlockable

API for adding custom achievements and unlockables

Preferred version: 1.0.2
RiskofThunder-R2API_Networking-1.0.4 icon
RiskofThunder-R2API_Networking

Networking API around the Unity UNet Low Level API (LLAPI)

Preferred version: 1.0.4

README

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, normally respects characters that already provide their own unlock requirement, and can give progression challenges to survivors that would otherwise be available immediately. Curated compatibility cases can also expose a separate USU-owned alternative without modifying the creator's Original system.

Current release: 0.2.2

Thunderstore · 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, balance feedback, and suggestions are welcome on Discord.

Preguntas, reportes de errores, solicitudes de personajes, ideas de presets, comentarios de balance 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.
  • Use a reusable Mission System v2 instead of requiring a unique hardcoded tracker for every future challenge.
  • Localize the official challenge names/descriptions according to the game's active language.
  • Reward official USU challenges with configurable Lunar Coin rewards.

0.2.2 release focus

Version 0.2.2 establishes the current Mission Authority & Persistence Foundation.

Highlights:

  • The canonical library now contains 10 official USU missions while keeping the 12 historical Legacy recipes hidden and reusable for compatibility and future CUSTOM/editor/generator work.
  • Survivors now receive a stable USU identity derived from their content source and Body, allowing mission ownership to survive temporary mod removal.
  • Survivors.json uses schema v2 and stores absent survivor missions in dormantMissions with PendingContent instead of keeping a stale runtime character snapshot.
  • Reinstalling a survivor mod rebuilds its runtime/profile data from the real installed content and rehydrates the persisted mission/provider selection from its stable identity.
  • Explicit player choices such as UserSelected, provider selection, official preset relationship, and stored CUSTOM mission data are preserved across the dormant/reinstall flow.
  • Public builds keep development-only preset AuthoringMode disabled. Official assigned preset snapshots are refreshed through their stable BasePresetId relationship instead.

Miner also receives the official USU preset Excavación / Excavation:

  • Reach Abyssal Depths.
  • Defeat the teleporter boss there.
  • The mission is owned and evaluated by USU and can be selected explicitly from the Mission Library.
  • MinerUnearthed's original Adrenaline Rush achievement is not patched, intercepted, rewritten, or deleted.
  • Miner stays on the creator's Original provider by default; the Original provider remains stored and can always be selected/restored.
  • If MinerUnearthed changes or fixes its native unlock later, USU's Miner preset remains independent.

0.2.1 release focus

Version 0.2.1 closes the current survivor presentation/localization pass while keeping the nine creator-made unlock challenges on Mission System v2.

Highlights of this release:

  • Added a curated SurvivorDefinition layer for 15 survivor integrations: Aurelion Sol, Auriel, Enforcer, Ralsei, Sora, Wooper, Tinkaton, HUNK, Jhin, Miner, Rocket, Scout, Spy, Heretic, and Nemesis Enforcer.
  • Added curated Spanish localization (es-419 / es-ES) and English repairs for visible modded-survivor content when the original mod does not provide the required text.
  • Added survivor content profiles for overview/details, skills, keywords, skins, unlock information, and Logbook-facing lore/Notes.
  • Kept Notes tied to the real native Logbook state instead of creating a separate USU discovery flag.
  • Added the in-game Mission Library/provider interface. When Risk Of Options is installed, USU embeds its interface there; otherwise a Character Select launcher is used as fallback.
  • Added provider selection/restoration flows for Original, USU, and stored Custom configuration state, while protecting native creator unlock systems from unintended replacement.
  • Added a runtime content catalog used by the survivor browser and future mission-editor work.
  • Added quieter default logging with optional verbose diagnostics through BepInEx config.

The full visual mission editor and general-purpose custom mission authoring workflow are not part of 0.2.1 yet. The current release focuses on stable survivor presentation, preset assignment/provider handling, localization, and runtime foundations.


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 normally respects it and leaves that survivor under the control of the original mod.

A curated compatibility entry may expose a separate USU-owned alternative without changing the creator's achievement. Miner is the first such case in 0.2.2: Original remains the default, while the player may explicitly switch to USU's Excavación preset.

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.

Version 0.2.2 includes 10 official USU presets. These source presets are kept separate from the reusable Objective and Condition templates used internally by Mission System v2.

Creator presets are intended to remain unchanged so future updates can improve or rebalance them without destroying the original definition.

Player customization

When a player customizes a creator preset in a future version, 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.

Version 0.2.2 exposes the current preset/provider library in-game. Official built-in presets remain source definitions and are refreshed from their stable BasePresetId, so editing a preset-backed snapshot directly in Survivors.json is not a reliable way to create a permanent custom variant. Stored custom mission data is kept separate from the official preset source. The full visual editor for creating arbitrary custom missions is still planned for a later release.


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/run.

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

A Shared mission can receive valid progress from multiple players/entities according to that mission's rules.

Current example:

  • Sora — Elegido de la Llave Espada

Per-player progress

Per-player challenges keep independent counters, inventories, route state, and other personal requirements for each player.

Current official examples include:

  • Ralsei
  • Jhin
  • Spy
  • Scout
  • Rocket
  • HUNK
  • Tinkaton
  • Wooper
  • Miner

Players cannot combine partial personal progress unless the mission is explicitly configured as Shared.

Session completion and unlock delivery

Mission progress is evaluated using the host-authoritative session snapshot. When an authoritative route completes, USU routes the survivor unlock through its multiplayer-aware session unlock system for eligible connected players.

For multiplayer bugs, logs from both host and client are especially useful.


Current built-in presets

The following 10 official USU presets are included in USU 0.2.2.

Official challenge names/descriptions are currently localized for English and Spanish (es-419 / es-ES), with English used as fallback.

Sora — Elegido de la Llave Espada

Abre paso entre mundos en Baluarte de Ambry; vence a sombras y completa Venganza - Mercenary

Current mission:

  1. The party must include Mercenary.
  2. Enter Bulwark's Ambry (artifactworld).
  3. Complete the Artifact of Vengeance encounter by defeating the required Umbra waves.
  4. Successfully leave the Ambry after the encounter.

USU currently tracks 3 Vengeance Umbra waves and then the stage exit.

Progress: Shared Lunar Coin reward: +4


Ralsei — El poder de la bondad

Usa Devoción y reúne 3 nuevos amigos Lemurianos; completa el portal con ellos - Captain o Seeker

Current mission:

  1. Play as Captain or Seeker.
  2. Use Devotion to recruit 3 Lemurian allies.
  3. Complete the teleporter while satisfying the mission route.

Progress: Per-player Lunar Coin reward: +3

Public feedback for this preset is especially welcome because Devotion/minion behavior can be affected by game-content and mod interactions.


Jhin — El Cuarto Acto

Convierte a un jefe en tu gran final; asesta un crítico mortal de 4.444 de daño o más.

Current mission:

  • Deliver the fatal hit to a boss.
  • The hit must be critical.
  • The lethal hit must deal at least 4,444 damage.

Progress: Per-player Lunar Coin reward: +4


Spy — Sin que me veas venir

Que el jefe nunca vea venir tu golpe final; remátalo por detrás con Daga serrada - Bandit

Current mission:

  1. Play as Bandit.
  2. Use Serrated Dagger / Daga serrada.
  3. Deliver a valid backstab to a boss.
  4. The backstab must be the fatal hit.

Progress: Per-player Lunar Coin reward: +3


Scout — Sed Termonuclear

Sacia tu sed con 8 Bebidas energéticas; o completa el primer sector sin objetos en 4 min.

Complete either route:

Route A — Drink collection

  • Hold 8 Energy Drinks on the same player during the run.

Route B — Fast and itemless

  • Complete the first stage teleporter within 4 minutes.
  • Do not pick up items before completing that route.

The two routes are alternatives (OR), not requirements that must both be completed.

Progress: Per-player Lunar Coin reward: +2


Rocket — La gravedad es opcional

Haz llover explosiones desde el cielo; derriba 5 antes de caer; haz la hazaña 3 veces.

Current mission:

  • Kill 5 enemies with qualifying explosions before landing.
  • Land after a successful bombing run.
  • Repeat the successful bombing run 3 times.
  • Progress is personal to the player; owned minions are not used for this preset's bombing-run count.
  • The bombing-run objective uses stage-scoped progress.

Progress: Per-player Lunar Coin reward: +4


HUNK — La Parca No Falla

Protege la batería y sobrevive a toda costa; escapa de la Luna o sacrifícate en el Obelisco.

Complete either route while protecting the Fuel Array:

Route A — Escape

  • Carry the Fuel Array continuously.
  • Reach and complete the Moon escape ending.

Route B — Obliterate

  • Carry the Fuel Array continuously.
  • Obliterate at the Obelisk.

Important rules:

  • Losing/swapping the required Fuel Array invalidates the continuous-carry requirement.
  • Death invalidates the route.
  • The two endings are alternatives (OR).

Progress: Per-player Lunar Coin reward: +5


Tinkaton — Forjada en Chatarra

Haz de 6 chatarras el inicio de tu gran golpe; ten Justicia demoledora y vence un Ojo mecánico.

Current mission uses three objectives in the same route (AND):

  1. Convert 6 items into Scrap during the run.
  2. Hold Shattering Justice / Justicia demoledora.
  3. Defeat a valid mechanical Eye boss target. The current mission accepts the internal body IDs SuperRoboBallBossBody or RoboBallBossBody.

The old MUL-T + Blast Canister requirement is no longer part of the current official preset.

Progress: Per-player Lunar Coin reward: +5


Wooper — De vuelta al agua

Haz de los Humedales tu hogar; marca territorio; caza y muerde a 20 presas envenenadas - Acrid

Current mission:

  1. Play as Acrid.
  2. Be in Wetland Aspect / Aspecto de los Humedales (foggyswamp).
  3. Poison an enemy before the qualifying finishing action.
  4. Kill that poisoned target with Ravenous Bite / Mordida voraz.
  5. Repeat until 20 valid poisoned-bite kills are completed in the stage-scoped objective.

A target that was not already poisoned before the qualifying bite does not satisfy the status-before-action requirement.

Progress: Per-player Lunar Coin reward: +2


Miner — Excavación

Desciende a las Profundidades Abisales; vence al jefe del portal y despeja el camino.

Current mission:

  1. Reach Abyssal Depths (dampcavesimple).
  2. Defeat the real teleporter boss in that stage with the qualifying final hit.
  3. The route is evaluated by USU Mission System v2 and does not hook MinerUnearthed's Adrenaline Rush achievement.

This preset is deliberately independent from MinerUnearthed's Original unlock. The creator's Original provider remains available and is still the default until the player explicitly chooses the USU provider/preset.

Progress: Per-player Lunar Coin reward: +3


Challenge systems currently used by presets

The ten official presets now run through Mission System v2 compositions instead of being represented as nine independent monolithic challenge scripts.

Current runtime building blocks used by the official missions include objectives such as:

  • Kill
  • HoldItemStack
  • CompleteTeleporter
  • BombingRun
  • CarryEquipment
  • CompleteEnding
  • ScrapItems
  • RecruitMinions
  • DefeatUmbraWaves
  • LeaveStage
  • Item-pickup / no-item-pickup tracking

And conditions/modifiers such as:

  • Boss / specific-body targets
  • CriticalHit
  • FatalHit
  • MinimumDamage
  • Backstab
  • RequiredSurvivor
  • RequiredSkill
  • RequiredStage
  • StageSequence
  • TimeLimit
  • NoItemPickup
  • StatusPresent with before-action timing
  • Party-survivor requirements

Legacy challenge trackers remain in the project where they are still useful for compatibility/event sources, but the current creator missions are defined through the reusable Mission v2 model.


Mission System v2 foundation

Version 0.2.2 keeps Mission System v2 as the active foundation and extends it with centralized mission authority, stable survivor identity, and dormant mission-only persistence.

The model is built around:

  • MissionDefinition
  • MissionRoute
  • MissionObjective
  • MissionCondition
  • MissionRules
  • MissionTarget
  • MissionPreset
  • Preset/custom mission source tracking through MissionConfig
  • Shared and PerPlayer progress scopes
  • Host-authoritative session snapshots
  • Multiple alternative routes

Route logic

Objectives/conditions inside one route are treated as AND requirements.

Different routes are treated as OR alternatives.

Conceptually:

Route A:
Objective
AND Objective
AND Condition

OR

Route B:
Objective
AND Condition

This is already used by current presets such as Scout and HUNK.

Target system

The mission model supports reusable target categories such as:

  • Any target.
  • Enemy.
  • Elite.
  • Boss.
  • Specific body.
  • Specific boss/body combinations.

Specific entities use stable internal IDs instead of localized display names.

Examples:

BrotherBody
SuperRoboBallBossBody
RoboBallBossBody

This allows mission logic to remain independent from the player's selected language.

Current v2 runtime status

In 0.2.2, the current official missions are represented by 10 assignable official Mission v2 presets built from reusable objectives, conditions, targets, routes, and rules.

The internal catalog also retains hidden legacy recipes and reusable Objective/Condition templates for compatibility and future editing workflows.

The public Mission Library can now browse survivor profiles and assign compatible USU presets. Provider handling distinguishes Original, USU, and stored Custom state, and runtime refresh support applies valid assignment changes without requiring USU to overwrite the creator's native unlock system.

The full drag-and-drop/general-purpose mission editor and unrestricted custom mission authoring UI are still planned follow-up features.


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 format contains nested routes/objectives/conditions, making a backup before manually editing complex challenge data is recommended.

Built-in preset synchronization in 0.2.2

Official creator presets remain immutable source definitions. BasePresetId is treated as the authority for preset-backed assignments, and USU refreshes the persisted mission snapshot when the corresponding built-in preset changes between releases.

This means manual edits to the snapshot of a known official preset inside Survivors.json can be replaced during synchronization. Player-owned CustomMission data is stored separately and is not the same thing as editing the creator preset itself.

Using Restore original returns the character to its base provider policy and removes the player's stored Custom copy for that character, while never deleting or modifying the creator's native unlock implementation or the built-in USU source preset.


Persistence

USU stores its progression/configuration separately from the survivor mod itself.

Starting with 0.2.2, each known survivor can carry a stable USU identity based on its content source and Body. Survivors.json uses schema v2 and separates physically absent content into the dormantMissions collection.

When a survivor mod is temporarily disabled or uninstalled, USU keeps only the mission-facing data required to restore that configuration later:

  • Stable survivor identity.
  • Body and content Source.
  • Mission/challenge configuration.
  • Provider and SelectionMode.
  • BasePresetId relationship.
  • Stored CUSTOM mission data when present.

USU does not treat old runtime data such as skills, skins, prefabs, lore, stats, Unity objects, or a previous ContentProfile as persistent truth while the mod is absent. The dormant record is marked PendingContent.

When the survivor mod returns, USU detects the real current content again, rebuilds the runtime/profile information from that installed mod, rehydrates the persisted mission by stable identity, and removes the redundant dormant record.

Mission session progress is run/session state and is not intended to replace persistent unlock/profile progression.


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.
  • Vanilla-style unlock notification.
  • Chat unlock announcement.
  • 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

  1. Install Universal Survivor Unlocks.
  2. Install it with dependencies.
  3. Install any compatible modded survivors you want to use.
  4. Launch Risk of Rain 2.
  5. 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.

Recommended plugin path:

BepInEx/plugins/UniversalSurvivorUnlocks/UniversalSurvivorUnlocks.dll

Using a mod manager is recommended.


Dependencies

The Thunderstore package for 0.2.2 declares:

  • bbepis-BepInExPack-5.4.2121
  • RiskofThunder-R2API_Core-5.3.0
  • RiskofThunder-R2API_ContentManagement-1.0.11
  • RiskofThunder-R2API_Language-1.1.0
  • RiskofThunder-R2API_Unlockable-1.0.2
  • RiskofThunder-R2API_Networking-1.0.4

Risk Of Options is an optional soft integration in version 0.2.2, not a hard Thunderstore dependency. When it is installed, USU embeds the Mission Library inside Mod Options. Without it, USU uses its Character Select launcher fallback.

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.
  • RealerCheatUnlocks/manual re-locking workflows used during testing.

Risk of Rain 2 mods can modify skills, networking, damage behavior, content loading, unlockables, inventory state, and UI in many different ways, so compatibility with every third-party mod cannot be guaranteed.

If another mod changes a skill, boss body, item, stage, artifact mechanic, or damage rule 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 being unlocked.
  • Survivor used to attempt the challenge.
  • Challenge/preset being attempted.
  • Relevant mod list/profile code when possible.
  • What happened.
  • What you expected to happen.
  • LogOutput.log from the affected session.

For multiplayer issues, logs from both host and client are especially useful.

For 0.2.2, reports about provider switching, dormant/reinstalled survivor persistence, the Mission Library, Logbook/Notes behavior, and multiplayer challenge completion are especially valuable.

You can use:

You can contact me on Discord for:

  • Questions.
  • Survivor requests.
  • Challenge/preset ideas.
  • Balance feedback.
  • 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.
  • The future preset library.
  • The future in-game mission editor.
  • 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:

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.

With the stable identity and dormant persistence foundation in 0.2.2, future development can build on:

  • Survivor gameplay/profile analysis for mission compatibility.
  • Local power/complexity assessment and challenge-tier resolution.
  • Compatibility-filtered reusable mission templates.
  • Deterministic generated-mission selection that remains reproducible across restarts/reinstalls.
  • Revalidation when a survivor mod changes, without silently overwriting player-owned CUSTOM missions.
  • A full visual mission editor and safer custom-mission authoring workflow.
  • Preset sharing/importing and additional curated survivor integrations.
  • Continued multiplayer synchronization, localization, and compatibility testing.

Adaptive mission generation is not part of 0.2.2; these are follow-up development goals.


Links

Thunderstore https://thunderstore.io/c/riskofrain2/p/Shleidericks/UniversalSurvivorUnlocks/

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 MissionProfileAnalyzer and 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:
    • Execution
    • HealingSupport
    • ResourceMastery
    • MeleeCombat
    • ProjectileCombat
  • 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 SessionMissionRegistry so Generated candidates become real Mission v2 definitions without writing them into Survivors.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 AllowedPerformerSkill runtime 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 / Excavation preset.

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: 0 and Invalid 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.json to schema v2 with dormantMissions and the explicit PendingContent state 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 MissingContent persistence 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 schemaVersion values 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 UserSelected choices 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 AuthoringMode disabled; official assigned snapshots continue to refresh through their stable BasePresetId path.

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, and SelectionMode=UserSelected without 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 / SurvivorDefinitionRegistry system.
  • 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 UsuLog policy with Logging.VerboseLogging=false by 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.
  • Notes continues 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
  • 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 MissionPresetLibraryService layer 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:
    • Kill
    • HoldItemStack
    • PickupItem / no-item-pickup tracking
    • CompleteTeleporter
    • ScrapItems
    • BombingRun
    • CarryEquipment
    • CompleteEnding
    • RecruitMinions
    • DefeatUmbraWaves
    • LeaveStage
  • 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 JhinOfficial preset 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.
  • 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.
  • 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 asignado messages when the same generated unlock is revisited during ContentPack construction.
  • Hardened Ralsei's Devotion recruitment detection: LemurianHarness is resolved through the item catalog when available and falls back to DevotedLemurianController when 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-HUNK package 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.log so 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:
    • MissionDefinition
    • MissionRoute
    • MissionObjective
    • MissionCondition
    • MissionRules
    • MissionTarget
    • MissionPreset
  • Added support in the new mission model for alternative mission routes:
    • Conditions inside a route use AND.
    • Different routes can work as OR alternatives.
  • Added mission progress scope definitions for:
    • Shared
    • PerPlayer
  • 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 Kill objective evaluation for Mission System v2.
  • Added initial reusable mission conditions:
    • Airborne
    • Grounded
    • RequiredSurvivor
  • Added reusable mission target categories:
    • Any
    • Enemy
    • Boss
    • Elite
    • SpecificBody
    • SpecificBoss
  • Added support for identifying specific enemies and bosses through stable internal body IDs such as BrotherBody or SuperRoboBallBossBody.
  • Added runtime KillEnemies challenge 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 Shared and PerPlayer progress 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.6 in 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 ScrapItemBossFinisher challenge 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
  • Added the description field to survivor challenge configuration.

  • Added support for custom challenge descriptions displayed by generated unlocks.

  • Added the HealHealth challenge 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 BossCriticalKill challenge 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 HoldItemStack challenge 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 BackstabBossKill challenge 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 AirborneExplosionKills challenge 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 PrecisionExecutionStreak challenge 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 llave to Elegido 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 llave challenge when first detected by Universal Survivor Unlocks.
  • The default Sora challenge uses ApplyStatusEffects and requires 100 valid active status effects simultaneously during a single run.
  • Added automatic migration for Sora configurations using the legacy default KillEnemies 100 challenge.
  • Existing customized Sora challenge configurations are preserved and are not overwritten.

0.1.1

  • Added initial support for configurable survivor challenges.
  • Added ApplyStatusEffects challenge 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.json when updating an existing configuration.
  • Default challenge configuration for newly detected supported survivors:
    • type: KillEnemies
    • amount: 100
  • Custom UnlockableDef generation 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 KillEnemies are 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.