Risk of Rain 2
Install

Details

Last Updated
First Uploaded
Downloads
20
Likes
0
Size
15KB
Dependency string
The_Nerdgasm_Community-PartialCommand-0.1.0
Dependants

PartialCommand

Artifact of Command lets you choose every item you pick up. These three do the same for a fraction of your drops.

Artifact Choosable drops Icon
Artifact of Direct 75%
Artifact of Suggest 50%
Artifact of Ask 25%

Each drop rolls separately. Every icon is a pie wedge showing that artifact's chance, redrawn when you change the config.

Beta

This release is a beta. Bug reports welcome.

A useful report includes:

  • The [Info: PartialCommand] line from the BepInEx console for that run.
  • Which of the three artifacts were enabled.
  • Your MultipleArtifacts and MaximumChance settings.
  • Singleplayer or multiplayer, and whether you were the host.
  • Any other mods that touch items, drops or artifacts.

How it works

Command operates through a flag. A spawning pickup droplet is tagged with PickupArtifactFlag.COMMAND when Command is enabled, and PickupDropletController.CreatePickup reads that tag to spawn a command cube in place of the item.

Every command-eligible drop funnels through one method:

PickupDropletController.CreatePickupDroplet(CreatePickupInfo, Vector3, Vector3)

This mod puts a Harmony prefix there and sets the same flag on a percentage of droplets. The cube-spawning code stays untouched. Coverage matches Command: chests, shrines, printers, scrappers, boss drops, Scavenger bags.

Deliberate limits:

  • Rolls happen on the server only.
  • With real Artifact of Command enabled, all three go dormant.
  • Droplets already flagged COMMAND (command chests) or DELUSION are left alone.
  • Pickups Command itself skips stay skipped: artifacts, void coins, anything without an item tier.

Rolls come from a dedicated Xoroshiro128Plus seeded from the run seed, separate from the drop tables' own generators.

Config

BepInEx/config/com.zackman.partialcommand.cfg, written on first launch.

Key Default Meaning
Chances.Direct 75 Percent of drops that become choosable.
Chances.Suggest 50 "
Chances.Ask 25 "
Behaviour.MultipleArtifacts Highest How several enabled artifacts combine.
Behaviour.MaximumChance 100 Hard ceiling on the final number. 100 disables it.

Turning on more than one

MultipleArtifacts resolves the combination:

  • Highest (default): only the most generous enabled artifact counts.
  • Independent: each enabled artifact rolls on its own, and any success wins.
Enabled Highest Independent
Direct 75% 75%
Suggest 50% 50%
Ask 25% 25%
Direct + Suggest 75% 87.5%
Direct + Ask 75% 81.25%
Suggest + Ask 50% 62.5%
Direct + Suggest + Ask 75% 90.625%

Both modes clamp the result into [0, MaximumChance] before rolling, and every config value is scrubbed of NaN and infinities on the way in.

The first drop of each run logs the result, repeating only when the answer changes:

[Info: PartialCommand] Artifact of Direct 75% + Artifact of Ask 25% [Highest] -> 75% of drops choosable this run.

Common surprises

Artifact of Command is also enabled. All three go dormant. The console reports it on the first drop of the run.

A chance is set to 0. The artifact still appears in the lobby and can still be selected, and it never fires. The console reports this too.

Config edited while the game is running. BepInEx does not watch the file, so hand edits take effect at the next restart. Under ConfigurationManager the rolls change immediately while the tooltip keeps showing the old percentage, since descriptions are language tokens built at startup.

Percentages read as "per chest". They apply per droplet. A boss dropping three items rolls three times, so 25% gives roughly a 58% chance that at least one is choosable.

Coverage you might expect and will not get. Anything without an item tier is skipped, including artifact pickups and void coins. Void cradles and multishop terminals carry their own choice and stay untouched. Real Command strips multishops, shop terminals and scrappers out of stages; these artifacts leave them in place.

Hot-reloading the plugin. Registration has to happen before ArtifactCatalog initialises, so a ScriptEngine-style reload logs rejections instead. Restart the game after changing artifact registration.

Resuming a saved run. The roll stream reseeds from the run seed on every run start, including resume, so the sequence after a reload will not line up with an uninterrupted run.

A game update moving the hook. If CreatePickupDroplet changes shape, Harmony logs a patch failure at startup and the mod loads inert. Check the console before suspecting the config.

Multiplayer

Everyone in the lobby needs this installed. A mismatched rule catalog refuses the connection.

Rolls happen on the server, so the host's config governs the lobby. A client with different numbers in their own .cfg sees those numbers in the tooltip while the host's values drive the game.

Building

Requires the .NET SDK. Directory.Build.props holds the paths to the game assemblies and to the BepInEx profile the R2API references resolve against.

dotnet build src/PartialCommand.csproj -c Release

The DLL lands in src/bin/Release/PartialCommand.dll. The helper script builds and writes a Thunderstore zip to dist/:

pwsh ./build.ps1 -Package

Renaming an artifact

Names and chances are paired in src/PartialArtifacts.cs:

Add(new PartialArtifact("Direct",  "Artifact of Direct",  ModConfig.DirectChance));
Add(new PartialArtifact("Suggest", "Artifact of Suggest", ModConfig.SuggestChance));
Add(new PartialArtifact("Ask",     "Artifact of Ask",     ModConfig.AskChance));

The second argument is the display name, safe to change at any time.

The first argument is the internal key. It feeds cachedName and from there the rule id Artifacts.PARTIALCOMMAND_<Key>. Changing a key resets saved lobby selections, and a host and client running different keys cannot connect. The order of the three Add calls fixes each artifact's index. Leave the order alone.

Custom icons

Icons are drawn at runtime. To override one, drop a PNG next to the DLL at icons/<key>_on.png or icons/<key>_off.png, for example icons/ask_on.png. Anything missing falls back to the generated wedge.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.