orror-DirectorStageFixes icon

DirectorStageFixes

Balances stage interactable credits, spawn caps, director weights, purchase costs, and shrine rewards. Includes multiplayer credit scaling fixes.

Last updated 3 days ago
Total downloads 92
Total rating 0 
Categories Tweaks Server-side AI Generated
Dependency string orror-DirectorStageFixes-0.1.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

bbepis-BepInExPack-5.4.2111 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.4.2111
RiskofThunder-HookGenPatcher-1.2.9 icon
RiskofThunder-HookGenPatcher

MMHOOK generation at runtime.

Preferred version: 1.2.9
RiskofThunder-RoR2BepInExPack-1.46.0 icon
RiskofThunder-RoR2BepInExPack

Simplify the modding ecosystem of Risk of Rain 2, making it easier for modders to create and maintain their mods while preventing harmful bugs.

Preferred version: 1.46.0

README

DirectorStageFixes

This Risk of Rain 2 mod aims to improve balance and game feel, by adjusting stage interactable budgets, spawn caps, selection weights, and director credit costs.

Current changes

All values below are defaults. Director credits are the budget used to place objects, not the gold or other currency players pay to use them.

Stage interactable budgets

Stage Internal scene name(s) Credits
Distant Roost blackbeach, blackbeach2 280
Titanic Plains golemplains, golemplains2 280
Siphoned Forest snowyforest 300
Shattered Abodes village 280
Disturbed Impact villagenight 310
Abandoned Aqueduct (stage 2) goolake 280

Note these are the solo base budgets. The game scales them by 1x / 1.5x / 2x / 2.5x for 1 / 2 / 3 / 4 participating players, then adds enabled conditional bonus credits. For example, a configured 280-credit budget becomes 420 with two players and 700 with four. Later population modifiers still apply.

Other stages retain their existing stage-credit budgets.

Maximum spawns per stage

Type Maximum
Printers, shared across all rarities 4
Item scrappers 1
Drone scrappers, counted separately from item scrappers 1
Gunner turrets 3
Cleansing pools, shared across normal/sandy/snowy variants 1
Equipment multishops, counted as whole shops 2
Temporary item dispensers 1
Shrines of Order, shared across normal/sandy/snowy variants 1

Caps count successful SceneDirector spawns and reset for each stage. They are maximums, not guaranteed spawn counts. Manually placed objects and objects spawned outside SceneDirector population are not included. Drone scrappers are separate from item scrappers.

Director credit costs

Object Original cost Mod default
TC-280 40 20
Legendary chest 50 40
Halcyon shrine 50 40
Green multishop 40 30
Shrine of Order 30 5
Shrine of Shaping 20 10
Void Stalk 15 5

These values have been adjusted to reflect the interactables value. Their stage weight has been adjusted as well, which is documented lower.

Shrine of Chance retry prices

Failed attempts keep the current gold price. Successful rewards still increase the next price by 1.4x, rounded down. The 17-gold base price, initial difficulty scaling, reward odds, and two-success limit remain unchanged.

Shrine of Order reward

Using Shrine of Order performs its normal item shuffle, then grants one Irradiant Pearl directly to the activating player's inventory.

Lunar Pod rewards

Lunar Pods drop a regular Pearl instead of a lunar item or equipment.

Gold purchase costs

Object Original base price Mod default
Temporary Item Distributor 25 10
Radar Scanner 150 30
Legendary chest 400 300

Temporary items are bad and legendary items are not worth more than 10x the price of a green.

Selection weights and availability

Object or pool Current behavior
Yellow/boss printers Blocked on the first stage of the run; allowed from stage 2 in pools that include them. Share the four-printer cap.
Red printers Default 2x card weight; blocked during the first three stages of a run, then eligible starting on stage 4. Early-stage maps in later loops can spawn them. They share the total printer cap.
TC-280 Effective card weight 0.5, down from 1.
Drones categories originally weighted 14 Set to 10.
Other Drones categories Subtract 1, clamped at zero. Rallypoint Delta: 4.5 -> 3.5; Siren's Call: 11 -> 10.
Shrine of Order Effective card weight 0.2, down from 1; remains in the weighted pool.
Shrine of Shaping Final selection weight multiplied by 0.5 after category normalization, including pools where it is the category's only card.
Void Stalk Card weight 2, down from 3, including the Void Seed CampDirector pool.

Weights are relative selection values, not fixed per-stage spawn percentages. Affordability, eligibility, repeated selections, and placement failures affect actual spawns. Lower credit costs can allow more objects to fit into a budget even when their selection weights are reduced.

For reference, when all relevant cards are eligible and affordable:

  • TC-280 has a 20% share of Rallypoint Delta's Drones category, compared with 33.3% originally.
  • Shrine of Order has about a 2.17% share of Rallypoint Delta's Shrines category, compared with 10% originally.
  • Void Stalk has a 40% share of the normal Void Seed interactable pool, compared with 50% originally.

Configuration

Launch the mod once to generate BepInEx/config/westonkl.DirectorStageFixes.cfg. Restart the game after editing it.

Config section Settings
Stage Credits The eight supported scene budgets
Spawn Limits Shared type caps
Printer Tweaks Red printer weight multiplier, default 2; zero disables red printers
Drone Tweaks TC-280 director cost and category weight reduction; original weight-14 pools always use 10
Interactable Costs Chest, shrine, multishop, and Void Stalk director costs
Purchase Costs Temporary Item Distributor, Radar Scanner, and legendary chest base gold prices

TC-280's effective weight, Shrine of Order's effective weight, Shaping's 0.5 multiplier, and Void Stalk's weight are currently defined in code.

Build and test

  1. Open DirectorStageFixes.sln in Visual Studio and build in Debug mode.
  2. Install BepInExPack, HookGenPatcher, and RoR2BepInExPack in a separate r2modman development profile.
  3. Copy DirectorStageFixes/bin/Debug/netstandard2.1/DirectorStageFixes.dll and .pdb into the profile's BepInEx/plugins/DirectorStageFixes/ folder. Remove old StageDirectorBalancing.dll or ExamplePlugin.dll copies when switching to this build.
  4. Launch with Start modded, start a fresh run, and inspect the console logs for budget changes, costs, weights, and spawn counts.

The active implementation is DirectorStageFixes/StageCreditPlugin.cs, targeting .NET Standard 2.1. Build outputs and local backups are ignored by Git. Adjusted cards and spawn assets are copied so the original game assets retain their values.

See development notes, the original interactable credit-cost table, its CSV, and inspected original red-printer weights.