Risk of Rain 2
Install with App

Details

Latest version
1.0.4
Last Updated
First Uploaded
Downloads
194
Likes
3
Size
43KB
Dependants

Revamp My Soul

Revamps the Artifact of Soul in Risk of Rain 2!

This mod aims to give the Artifact of Soul more bite and variety than just generic wisps you need to fight. Instead of spawning simple Lesser Wisps, defeated enemies spawn an exact soul clone of themselves. Souls render with the authentic Happiest Mask ghost shader, inherit Doppelganger status (InvadingDoppelganger), inherit elite essence (such as Blazing, Overloading, and Glacial), receive Artifact of Evolution items, grant XP on kill, feature a Dio's Best Friend (DBF) invulnerability spawn burst, take hits normally, and live for a strict 30-second timer.


Features

  • Authentic Ghost Skin: Defeated enemies spawn with the authentic Happiest Mask ghost shader (matGhostEffect), clearly distinguishing them as souls while maintaining full combat interaction.
  • Optional Wisp Soul Fire: Toggleable setting to envelope souls in bright cyan soul fire flames (BurnEffectController.helfireEffect).
  • Doppelganger Inheritance: Defeated Invading Doppelgangers pass down their Doppelganger item (InvadingDoppelganger) to create authentic Doppelganger souls.
  • Kill Credit & 5 XP Reward: Soul enemies grant 5 XP (configurable) upon defeat, allowing mods like Early Bird Sacrifice to reliably register kills.
  • Elite Essence Inheritance: Elite monsters (Blazing, Overloading, Glacial, Malachite, Celestine, Mending, Voidtouched, etc.) pass on their elite affixes to their soul clone, creating fiery Blazing souls, sparking Overloading souls, and more.
  • Full Combat Interaction: Hurtboxes remain active so players, turrets, and drones can target, hit, shoot, debuff, and damage soul enemies normally.
  • Dio's Best Friend Invulnerability: Souls spawn with the iconic Dio's Best Friend invulnerability buff (Immune) and revival sound/burst effect (default: 1.0s) to safely absorb spawn damage.
  • Artifact of Evolution Integration: When Artifact of Evolution is active, spawned souls automatically receive all monster team items on spawn.
  • 30-Second Lifetime Countdown: Souls die cleanly on a true timer rather than health decay, ensuring monster healing items (like Monster Tooth, Medkit, Bungus) do not grant eternal life.
  • No Infinite Loops: Defeated souls never spawn another soul upon dying.
  • Risk of Options Support: Fully configurable in-game in real time.

Configuration

All settings can be configured via the in-game Risk of Options menu or the generated config file:

Setting Default Description
Enabled true Enables or disables the mod entirely.
Require Artifact Of Soul true If true, souls only spawn when Artifact of Soul is active. If false, souls spawn in any run.
Enable Wisp Soul Fire false If true, attaches bright cyan wisp soul fire flames across the soul enemy's body.
Soul Lifetime Seconds 30.0s Duration in seconds before the spawned soul expires and suicides.
Spawn Invulnerability Seconds 1.0s Duration in seconds of Dio's Best Friend invulnerability granted on spawn.
Play Dio Spawn Effect true Plays the Dio's Best Friend revival burst & sound effect upon soul spawn.
Grant Evolution Items true If true, grants monster team items to souls when Artifact of Evolution is active.
Transfer Elite Essence true If true, defeated elite monsters pass their elite affixes (Blazing, Overloading, etc.) to their soul.
Soul Exp Reward 5 XP Experience reward granted on defeat (enables kill registration for mods like Early Bird Sacrifice).
Damage Boost Percentage 0% Optional extra damage bonus for soul enemies.
Enable Debug Logging false Enables verbose console logging.

Recent Patches

v1.0.4

  • Void Infestation Immunity for Souls: Fixed an issue where Void Infestors targeted and infested soul enemies.
    • Root Cause: Because soul enemies are hostile and have active hurtboxes, Void Infestors could target and strike them, changing their team to TeamIndex.Void, granting them Void elite equipment, and destroying the infestor. This caused regular monsters to attack the soul enemy while its hitboxes could become deactivated by desynced hurtbox counters.
    • Fix: Hooked EntityStates.VoidInfestor.Infest to treat soul enemies as uninfestable (just like mechanical drones and turrets). Void Infestors will neither lock onto soul enemies with BullseyeSearch nor infest them upon collision.
  • Definitive Multiplayer & Client Hurtbox Guarantee:
    • Root Cause: Vanilla's CharacterBody.UpdateHurtBoxesEnabled deactivates hurtboxes when RoR2Content.Items.Ghost is present. Previously, returning early from UpdateHurtBoxesEnabled could leave the internal hurtBoxesDeactivatorCounter stuck at 1 if it had ever been incremented before detection resolved (or on multiplayer clients where master is null).
    • Fix: Added an IL hook to CharacterBody.UpdateHurtBoxesEnabled that treats Ghost item count as 0 for soul enemies so vanilla never increments the deactivator counter. Additionally added a post-hook fail-safe on both UpdateHurtBoxesEnabled and CharacterBody.Start that resets hurtBoxesDeactivatorCounter to 0 whenever the enemy is not intangible, ensuring hurtboxes are always physically active and synchronized for both host and multiplayer clients.

v1.0.3

  • Team Void & Lunar Ghost Hurtboxes Fix: Fixed Void-touched and Team Void/Lunar ghost enemies lacking active hitboxes/hurtboxes (making them unhittable/intangible).
    • Root Cause: The client/server soul detection logic strictly checked for TeamIndex.Monster to distinguish soul enemies from player-allied Happiest Mask ghosts. When an enemy belonged to TeamIndex.Void (such as a Void-touched beetle, or a soul beetle infested by a Void Infestor) or TeamIndex.Lunar, vanilla RoR2's UpdateHurtBoxesEnabled saw the Ghost item on a non-Monster entity and deactivated all of its hurtbox GameObjects.
    • Fix: Updated IsSoulEnemy to only exclude TeamIndex.Player, ensuring any hostile ghost (Monster, Void, Lunar) keeps active hitboxes and can be targeted and damaged normally. Also updated soul spawning to properly handle Void and Lunar enemy deaths while preserving their team.

v1.0.2

v1.0.1

  • Multiplayer Networking Fix: Fixed soul enemies being untargetable/unhittable by clients in multiplayer. Shots no longer pass through soul enemies for non-host players.
    • Root Cause: The SoulMarker component (a plain MonoBehaviour) only existed on the server, so the client-side hurtbox override never activated — clients saw the ghost skin but couldn't interact with the souls.
    • Fix: Replaced SoulMarker-based detection in client-side hooks with inventory-based detection (Ghost item + Monster team), which uses RoR2's built-in Inventory network synchronization to work on all clients automatically.
    • Also fixes wisp soul fire VFX not appearing on clients when enabled.

v1.0.0

  • Initial Release:
    • Enemy Soul Clones: Spawns an exact AI clone of the defeated enemy upon death when Artifact of Soul is enabled.
    • Happiest Mask Ghost Visuals: Authentic ghost shader distinguishes souls while keeping hurtboxes 100% active and hittable.
    • Configurable Wisp Soul Fire: Optional toggle to add blazing cyan ethereal soul flames to soul bodies.
    • Doppelganger Inheritance: Passing down InvadingDoppelganger items from defeated doppelgangers.
    • Elite Essence Transfer: Inherits elite affixes (Blazing, Overloading, Glacial, Malachite, Celestine, Voidtouched, etc.).
    • Dio's Best Friend Invulnerability: Spawn effect, audio cue, and 1.0s invulnerability buff (Immune).
    • Artifact of Evolution Support: Automatically grants monster team inventory on spawn.
    • 30-Second Timed Lifetime: Strict lifetime timer preventing healing items from stalling death.
    • XP & Kill Registration: Grants 5 XP per soul kill for kill-counting mods.
    • Risk of Options Integration: Full in-game real-time configuration menu.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.