
RoR2Enemies
Risk of Rain 2 enemies for Muck: Lemurian, Jellyfish, Lesser Wisp and the Stone Titan boss. Every player should install it. Vanilla clients can join.RoR2 Enemies
Some night spawns become Risk of Rain 2 enemies. A Goblin can become a Lemurian. A lil Dave can become a Jellyfish or a Lesser Wisp. A Big Chunk boss can become a Stone Titan.
The host decides every conversion and sends it in the game's own spawn packet. Install the mod on every player so the new bodies and names show up. A vanilla client can still join a modded host.
Multiplayer
Modded host, vanilla client. Spawns, health, projectiles, spikes, attack choices, and loot come from the host through the game's own packets. The vanilla client sees the base mob, with the converted numbers and attack choices. The new body, the nova, and the laser are drawn only on modded players.
Modded host, modded client. Both players see the new bodies. The nova and the laser damage only the local player on that machine.
Vanilla host, modded client. The mod does nothing. No spawn tag decodes, so nothing adopts. Shrine names stay on the vanilla text, because the client never adopts a tagged mob.
Config mismatch. Spawns follow the host. Damage numbers are compiled into the mod, so two modded players agree on them. The Stone Titan shrine label can differ, because each peer reads its own shrine settings. Compare the RoR2 Enemies config line in the two logs.
Packets. The mod adds no packet types. It uses MobSpawn, MobAttack, MobSpawnProjectile, PlayerHitMob, and the shrine chat line the game already sends.
What you see
Lemurian
The base mob is the Goblin.
A modded player sees a hunched purple lizard named Lemurian, with a cream belly, glowing orange eyes, an open red mouth, dark spines down its back and tail, and claws. It throws fireballs and bites. The bone club is hidden. The bite on a modded player is harder than the Goblin club.
A vanilla client sees a Goblin named Goblin. That client takes the club bite and the same fireballs. Health is the converted value on every machine.
Jellyfish
The base mob is lil Dave.
A modded player sees a hovering jellyfish named Jellyfish: a pale blue ribbed bell with a scalloped skirt, a white glowing core, and wavy tentacles. It glows for about a second and then bursts. The lil Dave bite stays hidden. A burst leaves no corpse.
A vanilla client sees a lil Dave named lil Dave, on the ground. That client sees the bite, then a ragdoll and a hit number. There is no burst on that client.
A self-exploded Jellyfish drops no loot and does not count as a kill. A player who kills it during the glow still gets the lil Dave coins.
Lesser Wisp
The roll starts as a lil Dave. The spawned mob is a Wyvern.
A modded player sees a floating bone-white mask with horns and dark eye holes in a body of orange flame, named Lesser Wisp. It hovers about 5.6 m above the ground below it. Each attack is three fireballs that converge on the target.
A vanilla client sees a Wyvern named Wyvern and the same three fireballs. Between position updates it moves at Wyvern speed while the host moves it slower, so it slides back.
Stone Titan
The base mob is Big Chunk.
A modded player sees a faceted stone colossus named Stone Titan, with rock shoulders, two big fists, glowing orange cracks and one red eye. The eye fires a laser. The slam throws spikes. The leap is the Big Chunk leap. The boss bar reads Stone Titan. A shrine that rolled Titan reads Challenge Stone Titan after this client has adopted a tagged mob in the session.
A vanilla client sees Big Chunk on the boss bar. The chat line can say summoned Stone Titan. That client sees a swipe during the laser. The spikes and the leap hit that client too. Between position updates it walks at Big Chunk speed.
Wave Run
With Wave Run installed, its rounds convert too. Round mobs follow the same rules as night spawns (Director), so Lemurians appear from round 2 and Jellyfish from round 3 at the defaults. A Big Chunk boss round can be a Stone Titan (BossNight), and Wave Run's banner and HUD then say STONE TITAN. Without Wave Run nothing changes.
Blazing Elite (0.2.0 and later) and Glacial Elite never take these enemies, so a Jellyfish's burst is never doubled.
Mob zones
Daytime MobZone mobs stay vanilla. MobZone.ServerSpawnEntity never calls ServerSpawnNewMob, so those spawns cannot carry these enemies.
Config
BepInEx/config/evan.muck.ror2enemies.cfg, created on first launch. The host decides which spawns convert. Hotkeys are host only, and they stay off until Debug.SpawnHotkeys is true. F6 is Lemurian, F7 is Jellyfish, F8 is Lesser Wisp, and F9 is Stone Titan.
| Section | Key | Default | Meaning |
|---|---|---|---|
| Lemurian | Enabled |
true | Host conversions of Goblins. A client with this off still shows a mob the host tagged. |
| Lemurian | FirstDay |
1 | Earliest day that can convert a Goblin. Day 0 stays vanilla at the default. |
| Lemurian | Chance |
0.35 | Share of eligible Goblin spawns. |
| Lemurian | MaxAlive |
6 | Cap on live Lemurians. Past the cap, the Goblin still spawns. |
| Lemurian | Sources |
Director, BattleTotem |
Night director and Battle Totems. |
| Jellyfish | Enabled |
true | Host conversions of lil Daves into Jellyfish. A client with this off still shows a tagged mob. |
| Jellyfish | FirstDay |
2 | Earliest day that can convert a lil Dave into a Jellyfish. |
| Jellyfish | Chance |
0.25 | Share of eligible lil Dave spawns. |
| Jellyfish | MaxAlive |
3 | Cap on live Jellyfish. Past the cap, the lil Dave still spawns. |
| Jellyfish | Sources |
Director, BattleTotem |
Night director and Battle Totems. |
| Jellyfish | Hover |
1 | Metres the Jellyfish floats above lil Dave's walking height, 0 to 6. At 1 the bell is at head height. Cosmetic, applied by each modded player. Replaces 0.2.0's HoverOffset: a value you changed there carries over, the old 1.5 default does not. |
| LesserWisp | Enabled |
true | Host conversions of lil Daves into Lesser Wisps. A client with this off still shows a tagged mob. |
| LesserWisp | FirstDay |
3 | Earliest day that can convert a lil Dave into a Lesser Wisp. |
| LesserWisp | Chance |
0.20 | Share of eligible lil Dave spawns. |
| LesserWisp | MaxAlive |
4 | Cap on live Lesser Wisps. Past the cap, the lil Dave still spawns. |
| LesserWisp | Sources |
Director |
Night director only. |
| LesserWisp | HoverHeight |
5.6 | Metres above the ground under the wisp. Cosmetic, applied by each modded player. |
| StoneTitan | Enabled |
true | Host conversions of Big Chunk bosses. A client with this off still shows a tagged mob and does not relabel shrines. |
| StoneTitan | FirstDay |
1 | Earliest day for a Titan boss night and for the shrine label. |
| StoneTitan | Chance |
0.5 | Share of Big Chunk boss nights. |
| StoneTitan | ShrineChance |
0.34 | Seeded share of Big Chunk shrines labelled Stone Titan. |
| StoneTitan | MaxAlive |
1 | Cap on live Stone Titans from boss nights. A labelled shrine still spawns its Titan. Past the night cap, the Big Chunk still spawns. |
| StoneTitan | Sources |
BossNight, BossShrine |
Boss nights and boss shrines. |
| Cleanup | VanillaGroundFx |
true | Remove the Stone Golem and Big Chunk ground-slam effects 5 s after they spawn. Vanilla leaves them in the scene. Local only. |
| Debug | VerboseLogging |
false | One log line per conversion and one log line per adoption. |
| Debug | SpawnHotkeys |
false | Host only. F6 Lemurian, F7 Jellyfish, F8 Lesser Wisp, F9 Stone Titan. |
| Debug | LogRigs |
false | Log each rig's body height and joint positions on the first adoption. |
| Debug | LogHover |
false | Log where each Jellyfish and Lesser Wisp floats, once a second for its first 5 seconds: heights of the body, the ground, the parts and the collider, and how far the lowest part clears the ground. |
A Titan shrine uses ShrineChance. StoneTitan.Chance applies to boss nights.
Credits
The icon and the four enemy models are original. The models were built in Blender for this mod. This mod contains no assets from Risk of Rain or Muck.