You are viewing a potentially older version of this package. View all versions.
CeruleanCutlass-DangerousRoads-0.1.1 icon

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

BepInEx-BepInExPack_Outward-5.4.19 icon
BepInEx-BepInExPack_Outward

BepInEx pack for Outward.

Preferred version: 5.4.19
CeruleanCutlass-ForgeKit-0.4.1 icon
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.1
CeruleanCutlass-SpawnKit-0.4.2 icon
CeruleanCutlass-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.2
CeruleanCutlass-CompanionKit-0.4.4 icon
CeruleanCutlass-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.4

README

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] ExtraBlocklist in the config and relaunch — Wolfgang Captain is already blocked by default, Wolfgang Veteran and Wolfgang Mercenary are 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 with reloadcfg — no relaunch needed to retune.
  • Dev/diagnostic verbs on BepInEx/config/DangerousRoads_cmd.txt: roadsstatus, roadsroster, roadsledger, roadsanchors, roadsprobe, roadsmark, roadsnow, roadssweep and 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.