DangerousRoads
[ALPHA] Wandering encounters for Outward: out in an overworld region, 1-3 hostiles native to that region turn up out of sight, 40-200m away, and walk in. Vanilla loot, never in a town or dungeon. Toas
About this mod Author’s original text
DangerousRoads — Aurai's wilds are not empty anymore
⚠️ Alpha, and single-player only for now. Multiplayer is not tested — see Known issues.
Back up saves you care about.
Aurai's overworld is hand-placed and finite. Once you've cleared the road between Cierzo and the
Vigil Pillar it stays cleared, and the walk back is a walk through an empty map.
DangerousRoads repopulates it. While you're travelling out in the wilds, hostile creatures can turn
up anywhere — out of sight, off the road, behind you. Every stretch of country is country you have
to watch again.
They're ordinary wild creatures native to the region you're in: Enmerkar sends beast golems and bandits,
Abrassar sends bugs and bandits. They wander, they notice you, they fight, and they drop their
normal loot.
What it won't do
- Never in towns or villages. Settlements stay safe.
- Never in dungeons, caves or interiors. Only out in the open.
- Never touches your save. These creatures are temporary — they're gone when you leave the area,
and nothing of them is written to your save file.
- No bosses, no story characters, no custom content. Everything it puts in the world is vanilla.
Installing
Install and the dependencies come with it. By hand: drop ForgeKit,
NetKit, DonorKit, CompanionKit, SpawnKit/ and DangerousRoads/ side by side into
BepInEx/plugins. All five are hard dependencies — BepInEx refuses to load a plugin whose
hard dependency is missing, so leaving one out means DangerousRoads silently never starts.
(DangerousRoads names ForgeKit, SpawnKit and CompanionKit directly; NetKit and DonorKit come in
underneath those two.)
Then just play. Nothing to turn on, no key to press — walk out of town and give it a minute.
Settings
BepInEx/config/cobalt.dangerousroads.cfg, created on first launch. The handful worth touching:
[General]
Enabled = true ## false = mod off
[Schedule]
MinIntervalSeconds = 20 ## shortest gap between encounters
MaxIntervalSeconds = 60 ## longest gap — raise both for a quieter world
[Wave]
MinCount = 1 ## how many creatures show up at once
MaxCount = 3
SkipWhileInCombat = true ## hold off while you're already fighting
[Placement]
MinDistanceMeters = 40 ## how close they can appear
MaxDistanceMeters = 200 ## how far away
[Notify]
ShowToast = true ## the on-screen warning
[Compass]
ShowBlips = true ## the compass markers
To turn it off: set Enabled = false and relaunch. To uninstall, delete the DangerousRoads/
folder from BepInEx/plugins/ — nothing of it lives in your save.
⚠ An existing cfg always wins over a new default. BepInEx writes the file once and never
migrates a changed default into it, so a value you (or an older version) put there keeps applying
silently. Each entry carries its shipped default in a # Default value: comment right above it —
if behaviour doesn't match this README, compare those first. Delete the file to regenerate it from
scratch (which also discards every other tweak).
Co-op: the room-wide warm predicate
SpeciesRoster used to ask Spawner.CanMintNow(key) — "is a body resident on this box". It now asks
CanMintNow(key) && Spawner.CanMintRoomWide(key), because a species the host holds and a guest
does not costs that guest a 3.6–14.7 s donor load mid-fight (the disconnect bug). CanMintRoomWide
subsumes the local half, but both are named at the call site on purpose: this is the predicate the
whole mod rests on and "local and room" is what it must be read as.
- SpawnableNow() re-asks both halves every call (SpawnKit's cache is a 12-entry LRU, and the peer
list moves too) and records LastShrink: species dropped purely because a peer is cold. A
locally-cold species comes back ColdLocally and is never reported as a peer's fault.
- RosterOrder.ForRoomWarm / ForPrewarm (pure, in DangerousRoads.Core) rank the region by how
much spawnable roster the work buys: tier 0 = the party lacks it but the host holds it (one
sk.want, free), tier 1 = nobody holds it (real local harvest), tier 2 = already r
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- 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.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- 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.
Install these first, or the mod will not work: