Skip to content

Repository files navigation

ProgressGuard

ProgressGuard keeps Valheim's post-boss ambient roamers from being imposed on characters who have not personally progressed that far. Protecting the earliest-stage connected character takes priority over preserving late-game roaming pressure for advanced characters.

The mod is required on the dedicated server and every client. ZenBossStone is the only automatic progression source: when a boss trophy is sacrificed, the server records that boss tier for every player within ZenBossStone's configured sacrifice range. The server then synchronizes the world-specific registry and gate configuration to all clients.

Existing ZenBossStone progression is imported automatically. After a character profile loads, the client reports only the highest exact guardian-power key recognized from ZenBossStone. The server resolves the reporting peer's character itself, applies MAX(storedTier, importedTier), persists the result, and synchronizes it. Clients cannot select another PlayerID or lower an existing tier.

Safety policy

By default, the least-progressed currently connected character sets a server-wide safety ceiling. A boss-key ambient spawn above that tier is blocked for everyone, even if the early character is elsewhere. This prevents an advanced player from creating roamers that persist and later attack an early player.

ProgressGuard manages every ambient SpawnSystem entry carrying a recognized vanilla boss-unlock key. Verified creature families retain their native-biome exemption; unknown future entries using a recognized boss key fail safe until classified. Raid/event spawns explicitly bypass the gate.

A secondary owner-side check removes known managed creatures that were already alive or loaded outside their native biome above the online safety ceiling. Event creatures, bosses, tamed creatures, and native-biome creatures are never removed.

Main late-game families

Trophy tier Ambient family Native biome kept unrestricted
Yagluth Fulings Plains
Queen Seekers, Seeker Broods, Ticks Mistlands
Fader Charred Archers and Warriors Ashlands

Eikthyr, Elder, Bonemass, and Moder boss-key ambient families are also protected by default.

Unknown characters are tier None. A character that activated boss stones before ProgressGuard was installed is backfilled from those existing ZenBossStone keys on its next spawn. Merely killing a boss without ever activating or sacrificing its trophy leaves no reliable per-character history; that exceptional case still requires a new sacrifice or the pg set command.

Requirements

  • BepInExPack for Valheim 5.4.2333
  • Jotunn 2.29.2
  • ZenBossStone 0.6.2
  • ProgressGuard 0.1.0 on the server and every client

Jotunn enforces the client requirement and exact ProgressGuard patch version. A missing or incompatible client cannot join and silently bypass the spawn gate.

Installation

Install the package in the shared r2modman profile and on the dedicated server. Restart the game/server after changing plugin DLLs.

The server registry is stored per world under:

BepInEx/config/jg224.progressguard.world-<worldUID>.json

Writes use a temporary file and replacement backup. A malformed registry is preserved with a .corrupt-<timestamp> suffix and the world starts with an empty registry.

Configuration

The server values are authoritative and synchronized to clients.

  • Enabled=true
  • NearbyPlayerRadius=100
  • ProtectLeastProgressedOnline=true
  • UseLowestNearbyProgression=true
  • GateYagluthRoamers=true
  • GateQueenRoamers=true
  • GateFaderRoamers=true
  • GateEarlyGameRoamers=true
  • LogBlockedSpawns=true

With ProtectLeastProgressedOnline=true, the lowest personal tier among all connected characters controls managed ambient spawning server-wide. NearbyPlayerRadius and UseLowestNearbyProgression apply only if the server administrator disables that stronger policy.

Administrator command

ProgressGuard registers the remote-admin command pg for Server Devcommands:

pg list
pg get <playerID|name>
pg set <playerID> <None|Eikthyr|Elder|Bonemass|Moder|Yagluth|Queen|Fader|0-7> [name]
pg reset <playerID>
pg reload

Build and verification

dotnet build .\ProgressGuard.slnx -c Release
dotnet run --project .\tests\ProgressGuard.CoreTests\ProgressGuard.CoreTests.csproj -c Release --no-build
dotnet run --project .\tests\ProgressGuard.ApiTests\ProgressGuard.ApiTests.csproj -c Release --no-build
tcli build --config-path .\thunderstore.toml

The API suite checks the installed Valheim, ZenBossStone, and Jotunn assemblies as well as the finished plugin metadata. Automated verification does not replace a real multiplayer smoke test after deployment.

About

Protects early-stage Valheim characters from post-boss ambient roamers.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages