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.
BossGate
Lock boss summoning by game day. Per-boss unlock day + master lock, set by the server. On-screen message when blocked, 15 languages. Live-editable with Ultimate Server Configuration Manager.
| Date uploaded | 3 days ago |
| Version | 1.0.1 |
| Download link | Igao-BossGate-1.0.1.zip |
| Downloads | 11 |
| Dependency string | Igao-BossGate-1.0.1 |
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.2351Igao-Ultimate_Server_Configuration_Manager
⚡ The LAST config mod you'll ever need. Edit ANY mod in-game with F1 — changes hit every player instantly. Admin-only controls, auto-translated descriptions, 15 languages, one-click undo. No more .cfg hell.
Preferred version: 1.0.0README
BossGate
💡 Suggestions, bugs and questions: https://discord.gg/aMkN89Cuas — when reporting a bug, attach your BepInEx
LogOutput.logand say what you expected to happen.
Lock boss summoning by game day. Put the offering on the altar before the boss is unlocked and you get a message on your screen instead of a fight. The offering is not consumed.
⭐ The settings panel is already included. When you download BossGate with a mod manager (Thunderstore / r2modman), Ultimate Server Configuration Manager is installed together with it. Press F1 in the game to open it. Every change is synchronized to the whole server instantly. 👉 Open it on Thunderstore
Features
| Per-boss unlock day | One setting per boss. 0 = disabled (default), up to 9999. The boss can be summoned from that day onwards. |
| Master lock | LockAllBosses (default false). When true, no boss can be summoned, on any day. |
| On-screen message | A short message in the middle of the player's screen, on two lines: "Boss unlocks on day X" and "Current day: Y" (or "Boss summoning is not possible right now."). Nothing is written to the text chat. |
| 15 languages | The message follows each player's own game language. |
| Server-controlled | The server's config is the only one that counts. |
| Live changes | Open the included panel with F1, change a setting, and every connected player gets it instantly while the server keeps running. |
Bosses: Eikthyr, The Elder, Bonemass, Moder, Yagluth, The Queen, Fader and Kall Fimbulbringer (Deep North, Valheim 1.0).
⭐ Change it in-game: the panel is included
BossGate comes with Ultimate Server Configuration Manager (Ultimate SCM), a panel that shows the settings of all your BepInEx mods in one place. It is a dependency of BossGate, so a mod manager (Thunderstore / r2modman) downloads and installs it for you, there is nothing extra to set up.
Everything is synchronized in real time, inside the game. When the admin applies a change in the panel, the server updates BossGate right away and BossGate sends the new rule to every connected player. The next offering placed on any altar already uses the new rule. Nobody has to relog, and the server does not restart.
How to use it:
- Press F1 to open the panel (or ESC → Mod Settings). As an admin, type
devcommandsin the console (F5) first. If F1 is already used by ConfigurationManager, change the key of one of the two. - Pick BossGate in the mod list.
- Set
1 - Eikthyr,2 - The Elder...8 - Kall Fimbulbringer, or turnLockAllBosseson. - Apply. Every connected player gets the new rule instantly.
Why it fits well:
- Every BossGate setting is tagged
scm:live, so the panel shows the LIVE badge: the change really takes effect immediately. - Undo (Ctrl+Z), draft mode (change several bosses, apply them all at once), admin notes and a "who changed what, and when" history come with the panel.
- You choose what players see: Hidden (default), View only (they can see the unlock days, but not change them) or Can edit. For BossGate the server's value is enforced for everyone in all three cases; Can edit does not let a player change their own rule.
- With a mod manager it is installed automatically, on the server and on every client. If you install mods by hand, copy Ultimate SCM to both as well.
If you install BossGate by hand and leave the panel out, BossGate still works: the server uses its BepInEx/config/Igao.BossGate.cfg and sends the values to every player when they join. See Known limitations about editing that file by hand.
Configuration
File: BepInEx/config/Igao.BossGate.cfg — edit it on the server. The values on a player's own .cfg are ignored (and never overwritten) when the player is connected to a server running BossGate.
[1 - General]
| Setting | Default | Values | What it does |
|---|---|---|---|
LockAllBosses |
false |
true / false |
Blocks every boss on every day, ignoring the unlock days below. Players see "Boss summoning is not possible right now." |
KickClientsWithoutMod |
false |
true / false |
Disconnects players who join without BossGate (or with an incompatible BossGate version) about 20 seconds after joining. Without it, a client that does not have the mod can still summon bosses. |
[2 - Boss Unlock Day]
All eight settings work the same way: default 0, range 0–9999. 0 means no restriction. Any other value means the boss can be summoned only when the current game day (the day number shown by the game) is equal to or greater than the value. Example: 3 - Bonemass = 20 blocks Bonemass until the game shows day 20.
| Setting | Boss |
|---|---|
1 - Eikthyr |
Eikthyr |
2 - The Elder |
The Elder |
3 - Bonemass |
Bonemass |
4 - Moder |
Moder |
5 - Yagluth |
Yagluth |
6 - The Queen |
The Queen |
7 - Fader |
Fader |
8 - Kall Fimbulbringer |
Kall Fimbulbringer |
Multiplayer
- Install the mod on the server and on every client.
- When a player joins, the server sends its config; the player's own
.cfgis ignored. - If the server does not run BossGate, the client does nothing.
- Singleplayer and the host of a listen server use their own
.cfg.
Known limitations
- The rule is checked on the player's own game, not by the server. A client without BossGate can still summon bosses unless
KickClientsWithoutModis on, and a player running a modified client can get around any client-side check.KickClientsWithoutModcannot stop modified clients. - BossGate does not watch its
.cfgfile. If you editIgao.BossGate.cfgby hand while the server is running, restart the server for the change to apply, or make the change in Ultimate SCM instead. (Ultimate SCM can also reload edited.cfgfiles on its own: it checks every 60 seconds.) - A player removed by
KickClientsWithoutModgets a plain disconnect; no explanation is sent. - The rule applies to every player, admins included. Bosses spawned with console commands are not affected, and bosses that are already alive are not touched: only placing the offering is blocked.
- The Queen has no offering on her first fight, so BossGate gates the Sealbreaker instead: while The Queen is locked (
6 - The Queenday, orLockAllBosses), the Infested Citadel door cannot be opened with the Sealbreaker and the player gets the on-screen message. Summoning her again with Seeker soldier trophies on the hive seat is gated by the same setting. The Sealbreaker is detected by the key item of the door (item idDvergrKey), so any door that uses that key follows The Queen's setting. Each door used is written once toLogOutput.log(Door used). The door is also blocked from being closed again while the lock is active. - Fader is summoned with 3 Bells on the coliseum's item stands: placing the bells is allowed, activating the altar is what gets blocked.
- Bosses are recognized by the names of the altar's boss and offering item. If a game update renames them, that boss stops being gated until BossGate is updated.
Languages
English, Portuguese (Brazil), Portuguese (Portugal), Spanish, French, German, Italian, Dutch, Polish, Swedish, Turkish, Russian, Japanese, Korean, Chinese. The files are in plugins/Translations/ and can be edited; keys are msg_locked_day ({boss}, {day}, {current}) and msg_locked.
Installation
Install with a mod manager (Thunderstore / r2modman): BossGate and the F1 settings panel are installed together. For a manual install, copy BossGate.dll and the Translations folder to BepInEx/plugins/, and also install Ultimate SCM if you want the panel.
AI tools were used to help review the code and hunt down bugs. All features were designed by the author.
Found a bug? Got an idea for BossGate?
💬 https://discord.gg/aMkN89Cuas
CHANGELOG
Changelog
1.1.1 — Boss progression, portal items and personal progress
- New optional setting
RequirePreviousBossDefeated(section3 - Progression, defaultfalse): a boss can only be summoned after all the bosses before it in the progression order (Eikthyr, The Elder, Bonemass, Moder, Yagluth, The Queen, Fader, Kall Fimbulbringer) have been defeated in the world. Example: Kall cannot be summoned while any of the other seven is alive; The Queen cannot be summoned while Eikthyr, The Elder, Bonemass, Moder or Yagluth is alive. Eikthyr is never affected. - It works together with the unlock days: the boss must be unlocked by the day and the previous bosses must be dead (also when the boss has no unlock day). The Queen's Sealbreaker door and hive seat follow the rule too.
LockAllBossesstill wins over everything. - Uses the same boss-kill records as the portal rule (world global keys, already synced by the game to every client).
- New on-screen message "Defeat the previous bosses first." (center of the screen); the offering is not consumed. New translation key
msg_previous_bossin the 15 languages. - New optional setting
PortalItemsRequireBossKill(section4 - Portals, defaultfalse): ores, metals and other items the game blocks from portals can go through once the boss of their biome has been defeated in the world (The Elder: copper/tin/bronze, Bonemass: iron, Moder: silver and dragon eggs, Yagluth: black metal, The Queen: mechanical spring and Dvergr extractor, Fader: flametal and charred cogwheel, Kall Fimbulbringer: gold). Hildir's quest chests are released once the miniboss that guards the chest and the boss of its biome have been defeated (Brass: Brenna + The Elder, Silver: Geirrhafa + Moder, Bronze: Zil & Thungr + Yagluth). The full table is in the README. - With the setting off nothing changes: portals behave exactly like vanilla.
- The rule only releases items the game already blocks and that are on the list; every other item keeps the vanilla behaviour, and one still-blocked item keeps the whole inventory from teleporting.
- Items the game never lets through any portal (not even with the world setting that allows every item) stay blocked: the rule never overrides that.
- The inventory follows the rule: the "cannot teleport" mark is hidden on items the player can already take through a portal.
- New optional setting
PerPlayerProgress(section3 - Progression, defaultfalse): personal progress. Whentrue, a boss only counts for the players who took part in killing it in this world (hit it, or were within 40 m when it died); kills in other worlds never count. Applies to the progression rule, the portal items and Hildir's chests. Kills are recorded even while the setting is off. New Harmony patches onCharacter.OnDeath,Game.StartandInventoryGrid.UpdateGui, each applied on its own. - Kall Fimbulbringer counts as defeated only when the whole fight is won (
defeated_frozenking_p3). - Server-controlled and synced like the other settings (tagged
scm:live, so it can be changed in-game with Ultimate Server Configuration Manager). The new values (portal rule, progression rule, personal progress) are appended to the existing sync message with the same protocol number, so 1.0.0 and 1.1.x clients and servers keep working together (an older side treats the new rules as off). - New Harmony patch on
Inventory.IsTeleportable, applied on its own like the others: if it fails, only a warning is logged and the rest of the mod keeps working. Errors in the rule keep the vanilla portal behaviour. - Settings saved by earlier 1.1 test builds under another section are moved to their new section automatically (the value is kept).
- The config is grouped by topic:
1 - Generaland2 - Boss Unlock Dayare unchanged from 1.0.0 (existing values are kept), the new settings are in3 - Progressionand4 - Portals. - README: new Boss progression, Portal items and Personal progress sections, new settings in the tables and new known limitations.
- Small optimizations: boss/item name hints are prepared once at startup instead of on every check, the Sealbreaker check no longer searches the boss list on every door, and the dungeon-entrance diagnostic log (and its Harmony patch on
Teleport) was removed.
1.0.0 — First release
- Per-boss unlock day (
0= disabled, up to9999), entries numbered in progression order (1 - Eikthyr...8 - Kall Fimbulbringer), for Eikthyr, The Elder, Bonemass, Moder, Yagluth, The Queen, Fader and Kall Fimbulbringer (Deep North final boss). - Master lock
LockAllBosses(defaultfalse) that blocks every boss on every day. - Translated on-screen message (center of the screen, not the text chat) when an offering is blocked, in 15 languages. The master-lock message is generic ("Boss summoning is not possible right now."). The offering is not consumed.
- Config defined by the server: clients ignore their own
.cfgand use the server's values. The server sends them when a player joins and again whenever a setting changes while the server is running. - Optional
KickClientsWithoutMod(off by default). - Settings are tagged
scm:live, so Ultimate Server Configuration Manager shows them as LIVE: an admin can change them in-game and every connected player gets the new rule instantly, without relogging or restarting the server. - Known limitations are listed in the README (client-side check,
.cfgedited by hand is not watched, recognition by altar names). - No external dependencies.
- The Queen: the Infested Citadel's Sealbreaker door and the hive seat offering (3 Seeker soldier trophies) follow her unlock day. Fader: bells can be placed, activating the altar is blocked.
- Each Harmony patch is applied on its own; a failing patch only logs a warning.