Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Lockstep
The next boss stays sealed until every player on the server has defeated the previous one. Server synced.
| Date uploaded | 3 days ago |
| Version | 0.2.0 |
| Download link | MilkyTeam-Lockstep-0.2.0.zip |
| Downloads | 12 |
| Dependency string | MilkyTeam-Lockstep-0.2.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
Lockstep
The next boss stays sealed until every player on the server has defeated the previous one. Fast players wait for the group; nobody skips ahead. Server synced, live config reload.
Features
- Each boss altar only works once everyone in the group has defeated the boss before it. The altar says who the group is still waiting for.
- Credit is per player: everyone who hit the boss is credited, plus everyone within a configurable distance when it dies. Admins can grant or revoke credit.
- The roster fills itself as players log in. Players who have been away for a configurable number of days stop holding the group back, and admins can ignore or forget players.
- New players catch up automatically with everything the world has already cleared (configurable).
- Installing mid-playthrough is safe: bosses the world had already defeated count as cleared for everyone.
- The chain is a YAML file, so modded bosses can be added and the order changed.
- Server enforces its settings for all connected players; "Lock Configuration" prevents clients from overriding them
How to Install
- Install BepInEx for Valheim.
- Install this mod on the server and on every client. Clients without it are rejected by the server.
For manual install, drag Lockstep.dll into the BepInEx/plugins folder.
Console commands
Run from the in-game console (F5). The changes are made on the server and answered there.
lockstep status every stage: open or waiting for whom, and the roster
lockstep grant <player> <stage> credit a player with a boss (admin)
lockstep revoke <player> <stage> take that credit away (admin)
lockstep ignore <player> the player never holds the group back (admin)
lockstep unignore <player> count the player again (admin)
lockstep forget <player> remove the player from the roster (admin)
<player> is a name or a player ID, <stage> is a stage name from the chain (Eikthyr, TheElder, Bonemass,
Moder, Yagluth, TheQueen, Fader) or its global key.
Files
Lockstep.cfg: credit radius, inactive days, late joiner mode, gate options. Hot reloaded, synced.LockstepChain.yml: the chain of stages, one entry per boss with its order, global key and boss prefab. Hot reloaded, synced.Lockstep.<world>.roster.yml: written by the server, one entry per player with last seen, ignored flag and cleared stages. Hot reloaded when an admin edits it.
Building
Requirements: .NET SDK 8, Valheim installed with BepInEx, and the ValheimModLibs repository checked out next to this
one. pack.ps1 builds the mod and creates a Thunderstore zip in thunderstore/.
dotnet build Lockstep/Lockstep.csproj -c Release
Bugs and feature requests
The source lives on GitHub. Found a bug or want a feature? Open an issue at https://github.com/geraldjglasgow/ValheimMods/issues and name the mod, its version and what happened.
License
MIT. Copy it, change it, build on it, ship it, free of charge. The only condition is keeping the copyright and license notice from the LICENSE file.
CHANGELOG
Changelog
0.3.0
- The settings layer between server and players is now Charter, our own library, replacing the third-party one
merged into earlier builds. Existing config files and the
Lock Configurationsetting work unchanged. - Joining a server with a missing or mismatched version of the mod shows one screen naming the mod and both versions, with a refusal code that also appears in the server and client logs.
- New console command
charter:charter statusshows whether the server binds your settings,charter difflists where the server's values differ from your own file,charter versionslists the mods on both sides. - Reworded the Lock Configuration description. No gameplay change.
0.2.1
- New store icon.
0.2.0
- Renamed from OathBound to Lockstep, renamed to avoid confusion with LionAndOtter's unrelated Oathbound. Versions up to 0.1.4 below were published under the old name.
- Everything carries the new name: plugin GUID
com.Lockstep, config filecom.Lockstep.cfg, chain fileLockstepChain.yml, roster fileLockstep.<world>.roster.yml, console commandlockstep. The old OathBound files are not read. To keep your settings, rename the files and remove the OathBound DLL and its files from the server and every client.
0.1.4
- The store page now links to the GitHub repository and asks for bugs and feature requests to be filed as issues there.
0.1.3
- The chain file is read by the rewritten YAML library. A stage without
keyorbossis an error and the previous chain stays in force, duplicateordervalues are warned about, an empty chain is an error, and every message names the file and the path of the mistake. - Rebuilt on the rewritten shared configuration libraries (server sync, hot reload).
- MIT license file added and noted on the store page.
0.1.2
- Fixed a frame rate loss caused by the exception-tagging finalizer the shared library attached to every patched game method; it is removed.
- YAML files starting with a byte order mark are accepted.
0.1.1
- Config hot reload polls the file every five seconds instead of using a file watcher, which on Linux dedicated servers fired for the mod itself reading the file and hung the server at startup in an endless reload loop. The roster file is polled the same way.
- No warning on the first run when the example LockstepChain.yml is written.
0.1.0
- First working version: roster, credit by attackers and radius, altar gate with spawn guard, console commands, YAML chain, late joiner catch-up, inactive days, mid-playthrough backfill