VoidFiendAlternates
Eight paired alternate skills for Void Fiend, with sixteen form behaviors. Experimental public playtest; gameplay, multiplayer and balance unverified.Void Fiend Alternates 0.1.0 — experimental skill pack
Eight alternate choices with sixteen calm/corrupted behaviors. This modifies the existing Void Fiend; it does not add a new survivor. Compiled and source-rebuild checked; gameplay, multiplayer, save/load, balance, bespoke arm animation and final audiovisual polish remain incomplete or untested. Use a disposable test profile.
Void Fiend Alternates 0.1.0 — private test build
Eight native loadout choices, each paired with a corrupted form. This is an installable experimental build, not a game-verified finished release. No runnable Risk of Rain 2 installation was available in this development session. Start with a disposable solo profile. Do not use an important saved run for first acceptance.
| Slot | Choice | Controlled | Corrupted |
|---|---|---|---|
| Primary | Impale | 420%, 294%, 205.8% piercing needle; 0.8s | Three 220% needles; 70% retained per penetration; 0.5s burst |
| Primary | Lash | One 280% contact, 18m; 0.5s | 700% per enemy in an 8m, 100° forward volume; 0.4s |
| Secondary | Undertow | Six 120% pulses, 8m pull field; 7s recharge | 1000% implosion after 0.35s pull, 10m |
| Secondary | Condense | One 900% precision bolt; 6s recharge | Three stationary 600% pulses, 3m, 0.25s apart |
| Utility | Displace | Two 12m blinks; 7s recharge per stock | Two 16m blinks; 200% once along actual path |
| Utility | Breach | 400% departure blast; backward/up leap; 8s recharge | Forward/up leap; 800% impact blast |
| Special | Quarantine | 25% max health + shield as barrier; vent 25; 10s recharge | Same plus 600% blast in 8m |
| Special | Unleash | 0.6s channel, gain 35 corruption; 12s recharge | 0.5s windup, 2400% in 12m, then vent 35 |
The percentages multiply the body's effective damage stat. Cooldowns and stocks use GenericSkill, including native item modifiers. Attack speed scales casting and primary cadence, not field ticks, distance or recharge. Native corruption, healing interactions, armor, default skills, survivor unlock and DLC checks are retained. No achievements or existing profile files are edited. The plugin uses the installed model and native upper-body attack animation, with original procedural Void effects and 16 original icons. Native positional Wwise events are referenced in the installed game; no soundbanks are redistributed.
Install on Windows
- Create a separate r2modman profile named
VoidFiendAlternates-0.1.0-Test. Install the dependencies inmanifest.json, resolving their normal dependencies. Keep the existing working profile intact. - Close the game. In r2modman use Settings → Browse profile folder. Extract the ZIP's BepInEx directory into that profile root. The final path must be
BepInEx/plugins/VoidFiendAlternates/VoidFiendAlternates.dll, withicons/beside the DLL. - Launch modded with Survivors of the Void enabled and Void Fiend legitimately unlocked. Verify the two new choices in each native skill row. Keep the vanilla choices selected initially to verify non-interference.
- Test one pair at a time using the acceptance checklist. Add Quality, existing skins and other mods only after the minimal profile passes. Never enable duplicate copies of this DLL.
- After dependencies are installed, the mod has no internet requirement. Netlify serves the download; it does not run the game.
Required cached-reference versions: BepInExPack 5.4.2122, HookGenPatcher 1.2.9, RoR2BepInExPack 1.44.0, R2API Core 5.3.0, Language 1.1.0, Prefab 1.1.1, DamageType 1.1.7. These are build inputs, not proof of compatibility with a different installed game. Optional ProperSave adapter targets 3.0.7; Quality and RiskLens are not required.
Special stock and interruption rules
Quarantine and Unleash share stocks/recharge across their two forms. Transforming cannot refund these specials. Snapshots surround native CorruptMode entry/exit before the override index changes. Native Upgrade priority remains below Heresy Replacement priority. The vanilla special and restocks from items are not intercepted.
All stock-bearing casts spend one stock and trigger one native activation at state entry. A canceled channel retains that cost, and never grants its uncommitted effect. This deliberately chooses a predictable activation-cost policy instead of the prompt's optional completion-refund recommendation. Ordinary cooldowns begin at activation, up to one cast animation before launch. Existing projectiles/fields survive a form change, but expire when their owning body dies or the scene unloads. Uncommitted primary windups can be canceled by release; committed bursts finish.
Implementation details for testing
- Direct projectile damage snapshots effective damage and crit at launch. Fields retain launch damage; each pulse/victim rolls current native crit. Nothing recomputes damage from item counts.
- DamageInfo uses native damage processing and on-hit callbacks. DamageSource identifies the native slot; reserved R2API tags distinguish all sixteen states without occupying game-owned AttackIdentityIndex values.
- Each projectile deduplicates HealthComponents and respects world collision. Area events deduplicate health components and require line of sight. Fixed updates quantize event times to physics frames.
- Displace uses an authoritative capsule sweep, endpoint overlap check and map-zone trigger checks. It is instantaneous, so it leaves no lingering invulnerability. Its damage follows actual travel, not the requested maximum distance.
- Breach applies a server-origin native motor impulse, with a scoped invulnerability stack removed at 0.35s, impact or state exit. The native motor handles terrain. Movement speed affects horizontal impulse within 0.75–1.5×.
- Networked projectiles and registered effects use native replication. Effects use the native effect pool. Damage and corruption are server-only. Every peer must have the same mod version. Balance is immutable in this version; accessibility settings are cosmetic only.
- ProperSave records selected alternate-special stock/recharge and active stationary fields, including age and next pulse. Restore is scene-checked and sends the special resource to the owning client. Native death/respawn behavior is retained. Save/load and remote-client behavior are not yet game-verified.
Telemetry.Sampleis an optional C# event for adapters; native slot identities and modded damage tags are available on hits. Diagnostics aggregate direct raw damage, hit/proc/crit counts, barrier granted, meter deltas and transform stocks. This is not a complete damage-mitigation, barrier-absorption or item-descendant attribution system.
Configuration and known acceptance gaps
BepInEx generates com.rodanius.voidfiendalternates.cfg. Reduced flashing defaults on; low effect density is optional. No screen shake is added. Enable Diagnostics/Telemetry for aggregate log records. Combat balance is versioned in src/Balance.cs and the other named geometry constants; changing it requires a new matching package on every peer.
The default/Purified/Eclipse skins, all DLC and Quality item combinations, multiplayer/dedicated server, controller input, extreme attack speed, movement in every map, proper save restoration, visible animation and sound timing, and performance budgets remain unverified. Native animation plus procedural VFX is the current art implementation; bespoke arm deformation/trident animation, alternating full arm sweeps and polished sound layering are not finished. See docs/ACCEPTANCE.md for exact test status. No matched live balance adjustments have been made. The original requested design is retained in the source workspace.
Update, uninstall and rebuild
With the game closed, replace/remove only BepInEx/plugins/VoidFiendAlternates in the disposable profile. Keep the old ZIP for rollback. Do not remove shared dependencies, other mods, saves or your normal profile. Select vanilla skills before uninstalling for a clean loadout fallback.
Buildable C# source is included under source/. Set VFA_REFERENCES to a private folder containing the required game/framework references and build source/VoidFiendAlternates.csproj. The Windows gaming machine is the authoritative runtime target. The developer workspace also retains the pinned offline Roslyn build script, original-reference hashes, numeric tests and binary audit. Game/framework DLLs are never in this archive.
Report version, package SHA-256, game build, selected skills, item/mod list, reproducible steps, BepInEx/LogOutput.log, and video through the private hub's /feedback/ page.
