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. Toast + compass blips. Co-op is not yet verified.
| Date uploaded | 13 hours ago |
| Version | 0.1.1 |
| Download link | CeruleanCutlass-DangerousRoads-0.1.1.zip |
| Downloads | 16 |
| Dependency string | CeruleanCutlass-DangerousRoads-0.1.1 |
This mod requires the following mods to function
CeruleanCutlass-ForgeKit
Dependency-free dev-tooling for Outward BepInEx mods: file-driven dev command loop, self-test harness, on-screen toasts, player-ready lifecycle wait, embedded/override table loaders, and a shared dev-verb pack (movement/combat/skill/status probes).
Preferred version: 0.4.1CeruleanCutlass-SpawnKit
[ALPHA] Runtime enemy spawner for Outward: spawn any donor-scene creature beside the player as a real vanilla hostile, with full AI, aggro, combat, and vanilla death/loot. Co-op supported. Early software — see README for known issues.
Preferred version: 0.4.2CeruleanCutlass-CompanionKit
Persistent-creature companion mechanics for Outward mods: clone/brain-strip body factory, navmesh follower, invisible combat anchor, manual combat. Donor-scene harvesting and template caching moved to DonorKit; aggro control to AggroKit.
Preferred version: 0.4.4README
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 from Thunderstore 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).
Dev verbs
Every verb below is read from BepInEx/config/DangerousRoads_cmd.txt — write the verb on a line of
its own and it runs on the next poll; results go to BepInEx/LogOutput.log. Meant for debugging,
not for play.
| Verb | What it does |
|---|---|
roadsstatus |
director state: armed/disarmed, next-wave timer, last wave, what's blocking |
roadsroster |
this region's species roster, with anything BLOCKED marked |
roadsfactions |
the faction each rostered species actually reports |
roadsledger |
the anchor ledger — where waves have been placed and from what source |
roadsanchors |
candidate anchors near you |
roadssquadpoints |
vanilla AISquadSpawnPoints in range |
roadsprobe / roadsmark |
probe a placement position / mark one for inspection |
roadsui / roadsblips |
toast and compass-blip state |
roadsnow |
force a wave immediately |
roadsarm / roadsdisarm |
arm the director so the next wave is due now / stop the timer |
roadswarm |
pre-warm species templates |
roadssweep |
despawn everything this mod has out |
selftest |
run the offline self-test ([SELFTEST] PASS/FAIL … DONE) |
Known gap: roadsstatus throws a NullReferenceException if called on a fresh boot before the
first wave has been computed. It self-heals once any wave fires.
⚠️ Known issues
- A Wolfgang can turn up on the wrong side. The Wolfgang family's allegiance is driven by your
plot and relationship progression in the base game, not by a fixed table value, so an ambush wave
that draws one can spawn it in an allegiance the mod didn't intend — including friendly. The fix
is to drop the whole family from the encounter roster (not to hard-code a faction for them, which
would just be wrong at a different point in the story); that isn't in 0.1.0. If you hit it and
want it gone now, add the names to
[Species] ExtraBlocklistin the config and relaunch —Wolfgang Captainis already blocked by default,Wolfgang VeteranandWolfgang Mercenaryare not. - A few other species report an unstable faction. The Mantis family (Rock/Mana Mantis, Mantis Shrimp), Veaber and Caldera's Boreo have each been seen reporting different factions on different spawns. Under investigation; the practical symptom is the same as above — an encounter that doesn't fight you.
- Multiplayer is untested. Only the host would ever run encounters, which is the right shape, but no real two-machine session has been played. Treat co-op as unsupported for now.
- Encounter frequency varies by region. Some parts of the map give the mod more good places to put things than others, so the wilds are livelier in some regions than in others.
- Three of the six regions have had a deep test pass; the rest have had less.
Compatibility
Outward must be on its Mono Steam beta branch, not the default IL2CPP build (Properties → Betas →
select mono). If the game runs but no mods load and there's no crash log, this is almost always why.
Works alongside Beastwhispering and the rest of this mod family.
License
Apache License 2.0 — see LICENSE.
CHANGELOG
DangerousRoads changelog
0.1.1 — 2026-08-02
- DangerousRoads 0.1.1 + SpawnKit 0.4.2: re-pin off CompanionKit 0.4.2
- Logging: answer "why did nothing happen?" without needing LogVerbose on in advance
- Cleanup: one anchor-collect loop, one ownership side-table
- DangerousRoads: exclude the whole Wolfgang family, and stop a fresh boot crashing roadsstatus
- Docs sweep: archive, condense, and validate the whole documentation tree
0.1.0 — 2026-08-02
- DangerousRoads: say what the creatures actually do, and cut the README to size
- DangerousRoads: Thunderstore release prep + icon
- Live-session findings + a DangerousRoads ambush-interval tweak
- DangerousRoads: cluster waves, compass blips, and stop combat starving the timer
- DangerousRoads: wandering encounters on SpawnKit
0.1.0 — initial release
- Wandering encounters in the six overworld regions. While you are out in Chersonese, Enmerkar Forest, Hallowed Marsh, Abrassar, Antique Plateau or Caldera, 1–3 hostile creatures turn up every 20–60 seconds, out of sight, 40–200 m away, and walk in. They fight, they die, and they drop their normal vanilla loot, because they are the ordinary wild version of that creature.
- Region-native species only, composed where possible from a real vanilla squad's roster, so a wave looks like something that already belonged there. Every member of a wave shares one species and therefore one faction — the thing that stops an "ambush" from fighting itself.
- Never in a town, never in a dungeon, never indoors. Cities, villages, dungeons, interiors and New Sirocco are all excluded, and an unrecognised area fails closed (no spawns) rather than open.
- Placement is the whole feature. Candidates come from a configurable chain of anchor sources — live creatures, gathering spots, vanilla's own hand-placed squad markers, world interactables, and a procedural fallback — and every one is put through the same verification: real navmesh ground, a flat plateau check that rejects tent roofs and boulder tops, a walking-vs-straight-line path ratio that rejects the far side of a gorge, and a line-of-sight test against every player.
- A throttled toast names the species, the count and the direction, and live spawns are marked on the game's HUD compass while they are within range.
- Never stalls the game. Only species whose body is already loaded are used; the rest are warmed quietly in the background between waves.
- Cooldown floor after each wave, a cap on how many creatures the mod may have alive at once, and a bounded hold-off while you are already in combat.
- Master kill-switch
[General] Enabled, and every knob is live-reloadable withreloadcfg— no relaunch needed to retune. - Dev/diagnostic verbs on
BepInEx/config/DangerousRoads_cmd.txt:roadsstatus,roadsroster,roadsledger,roadsanchors,roadsprobe,roadsmark,roadsnow,roadssweepand more. - Alpha. First live session passed 22 checks across three regions; the remaining three regions, co-op, and a couple of known issues are still open — see the README's Known issues.