Risk Of Options

v2.8.6·Updated 2026-08-29

A convenient API for adding BepInEx ConfigEntry's to a option menu

Screenshots 1 screenshots

About this mod Author’s original text

RiskOfOptions

An API to provide a user interface in game to interact with BepInEx ConfigEntry's.

Currently supported options

  • CheckBoxes bool
  • Sliders float
  • StepSliders float
  • IntSliders int
  • FloatFields float
  • IntFields int
  • KeyBinds KeyboardShortcut
  • String Input Fields string
  • Choice DropDowns Enum
  • Color Picker UnityEngine.Color

Additional Components

  • GenericButtons

For feature requests or issues head over to my repository.

Developer Resources

  • RiskOfOptions Wiki
  • Usage Example

Getting Started

First you need to grab the latest release.

Extract the mod to your plugins folder, and then add a reference to the dll in your project in Visual Studio. [Project->Add Reference...->Browse]

Then add to where ever you will use this.

using RiskOfOptions;

Next you need to add Risk Of Options as a dependency for your mod.

[BepInDependency("com.rune580.riskofoptions")]

Finally make sure you know how to use [BepInEx Config](

)

Now you're ready to start adding options.

Adding an option

Given a ConfigEntry

ConfigEntry enableThing = Config.Bind(...);

ModSettingsManager.AddOption(new CheckBoxOption(enableThing);

Need a volume slider?

ConfigEntry volume = Config.Bind(...);

ModSettingsManager.AddOption(new SliderOption(volume));

Every option constructor can take a Config for the example above it would be SliderConfig.

Say you need a slider that only goes between 60 - 130. You would do:

ModSettingsManager.AddOption(new SliderOption(limitedRangeFloat, new SliderConfig() { min = 60, max = 130 }));

What about a slider that goes in increments of 0.15 and is limited between 1 - 5?

ModSettingsManager.AddOption(new StepSliderOption(incrementedFloat, new StepSliderConfig() { min = 1, max = 5, increment = 0.15f }));

Enough about floats, let's talk about the spaghetti and meatballs, KeyBinds.

ConfigEntry keyBind = Config.Bind(...);

ModSettingsManager.AddOption(new KeyBindOption(keyBind)); // This also has a KeyBindConfig but can be omitted if defaults are desired.

And that's it, said KeyboardShortcut will show up on the ModOptions menu.

Checkbox and Slider configs can be set with a delegate that will be used to check if said option should be disabled in the menu.

ConfigEntry disableThing = Config.Bind(...);

ConfigEntry overridenThing = Config.Bind(...);

ModSettingsManager.AddOption(new CheckBoxOption(disableThing));

ModSettingsManager.AddOption(new CheckBoxOption(overridenThing, new CheckBoxConfig() { checkIfDisabled = Check }));...

private bool Check()

{

return disabledThing.value;

}

When disableThing is enabled overridenThing will show up as non-interactable in the menu.

"Okay that's all fine but how do I, you know, do stuff when an value is changed?"

Well thankfully ConfigEntry's have this innately:

ConfigEntry toggleThing = Config.Bind(...);

toggleThing.SettingChanged += (object, args) => { Debug.Log(toggleThing.Value) };

Of course when an option changes the value of a passed ConfigEntry, the value updates in real time,

so in some cases where you are checking the value of the entry directly you don't need to do anything.

There may be cases where you just want a convenient button to open your own menu, as such you can do this:

ModSettingsManager.AddOption(new GenericButtonOption("Custom Menu", "Misc", "Configure stuff in here", "Open Custom Menu", OpenMenu));

private void OpenMenu()

{

/// Do stuff

}

The GenericButtonOption may be used to provide an entry point for opening your custom GUI's.

Setting the description of the mod

ModSettingsManager.SetModDescription("Describe your mod in incredible detail over the course of the next 2 hours");

Setting the icon of the mod

Sprite icon =...;

ModSettingsManager.SetModIcon(icon);

Quick Showcase

Showcase

Contact

Discord: @rune

Github: Rune580

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

bbepis-BepInExPack

File & checksum

Filename
Risk_Of_Options-2.8.6.zip
File size
7.2 MiB
SHA-256
cc20326d4e245f260985e3e791c0954c8faf17445d94121d74e5cab28f8b5de6
Stored at
2026-10-06 23:05