OdinBet ForgeOfPotential
Gamble on your gear. Or lose it. Set the odds at the Refinement Forge, choose what a failure costs, announce every win and wreck. Plus an in-game settings panel, a Hall of Fame, Elemental Infusions on Thunder Nights and Odin's visit.Changelog
All significant changes to this mod are recorded here. Minor improvements are not listed individually.
Report bugs on Discord: https://discord.gg/aMkN89Cuas
1.4.5 β Compatible with the Ultimate Server Configuration Manager panel
What's new
π§© Ultimate SCM panel compatibility
OdinBet's settings panel is now compatible with Ultimate Server Configuration Manager: when that mod is installed, OdinBet's panel registers itself there and opens from Ultimate SCM's own panel list, the same as any mod built for it.
- Fully optional: nothing changes if Ultimate SCM is not installed β
Shift + Eat the Refinement Forge andodinbet_configin the console keep opening the panel exactly as before. - Added
Igao-Ultimate_Server_Configuration_Manager-1.0.4as a dependency inmanifest.json.
Updating from 1.4.4
- Nothing to migrate: every
.cfgvalue, the Hall of Fame, histories and Infusions stay as they are.
1.4.4 β Forge on the map (optional visibility)
Performance Improvements
β‘ Significant optimization across all systems
- Item list parsing β Cached parsed configuration lists to eliminate re-parsing on every refine check (~50Γ faster for list lookups on high-traffic servers)
- Forge location detection β Replaced O(nΒ²) nested loop with HashSet-based lookup (~50% reduction in GC allocations, O(1) performance)
- Reflection caching β Cached PropertyInfo and MethodInfo lookups in RefreshCraftingUI to avoid repeated reflection (~30% speedup on UI updates)
- Per-frame loop optimization β Restructured Tick() method with early exits and short-circuit evaluation (~50-70% CPU reduction for infusion glow updates)
Result: Overall mod overhead reduced by 20-40% depending on world size and player count. More noticeable improvement on servers with many items and forge interactions.
What's new
πΊοΈ The Refinement Forge icon on everyone's map β optional
A new setting in the Overview page: Forge on the map (off by default).
| Setting | Default | What it does |
|---|---|---|
[Feature Toggles] ShowForgeOnMap |
false | On: the Refinement Forge's icon shows on the map for all players. Before the forge spawns in your world, all possible locations appear as hints so you can explore. Once one location is chosen (and built), only that forge shows on the map. Off (default): the game's own behavior β players discover the forge by exploring. Nothing is saved in characters: turning it off removes the icon (players already in the world lose it when they reconnect). |
How it works:
- ShowForgeOnMap OFF (default) β Vanilla: players find the forge by exploring, as the game plays.
- ShowForgeOnMap ON β Shows all possible forge locations before generation; once the forge spawns in one place, only that location is visible on the map for everyone.
Technical detail: The server temporarily flags the forge for display during map updates; nothing is saved. There is always only one Forge per world (as the vanilla Valheim rules say), so hints are only helpful for planning exploration.
Updating from 1.4.3
- Nothing to migrate: all your
.cfgfiles, Hall of Fame, histories and Infusions stay as they are. - New setting is off by default, so vanilla behavior is unchanged unless you turn it on.
- Update the server and all players together if anyone changes ShowForgeOnMap settings (protocol version bumped from 18 to 19).
1.4.3 β Items from other mods enabled in the Refinement Forge, including RandyKnapp's EpicLoot mod
Fixes
π§© Items from other mods now show up at the Refinement Forge
With Items from other mods can be refined on, items added by other mods still never appeared in the forge's list, so they could not be refined at all. From 1.4.3 on they show up and are refined like the game's own items β with any mod that adds equipment (Jotunn, ItemManager and the like) and with RandyKnapp's Epic Loot: an enchanted item from another mod now reaches the forge just like an enchanted item of the game.
Nothing to set up: it works as soon as the game loads.
What's new
πΏ The right idol for each item, automatically
Every item from another mod asks for the idol that fits it β Protection or Battle, at the tier that matches the item (Wood, Bronze, Iron, Silver, Black Metal, Black Marble, Flametal or Bloodgold) β and costs what a comparable item of the game costs, with your own Cost and time rules on top. When the mod is not sure, the item is marked to review so an admin can check it. The item's normal crafting recipe does not change.
π A new page in the settings panel: Idols of mod items
For admins with devcommands (Shift + E at the Refinement Forge), next to Allowed
items. One row per item from another mod, with its icon, its type, its base stat and the
idol it asks for:
- Released / Blocked with one click. It uses the same two lists as the page
Allowed items (
BlacklistedItems,RefinableModdedItems), so both pages always agree and nothing changes for a.cfgyou already have. Items from other mods can be refined decides how items start: released (block the ones you do not want) or blocked (release the ones you want). A blocked item simply does not show up at the forge. - Change the idol in a chooser with every idol of the game β Protection and Battle, Wood to Bloodgold, each tier with its own colour β or go back to Automatic. Default undoes a hand-picked idol.
- Search, filters (released, blocked, chosen by hand, to review, and by type of item) and actions on everything shown at once: release, block, back to automatic.
- Items not found: at the bottom, folded away. Choices saved for items that are not in the game any more (a mod removed) are kept, never deleted by themselves: if the mod comes back, the item returns to the list with the same choices. Forget clears one, Forget all every one of them. On a dedicated server, the server says which items it no longer has.
βοΈ New setting
| Setting | Default | What it does |
|---|---|---|
[Crafting] ModdedItemIdols |
(empty) | The items from other mods whose idol an admin changed, as ItemPrefab:IdolPrefab (for example BloodHelmet:Upgrader3Armor). Empty = every item on its automatic idol. Easiest to change on the new page. |
Good to know
- The log says what happened: at every start, one line with how many items from
other mods were found and how many can be refined. With
VerboseLoggingon, one line per item with the idol it got. - Statistics and the Hall of Fame count the idols an item from another mod used, like any other.
- Same rules as the game's own items: an item shows up at the forge when it is in your inventory and your character knows how to craft it. Items that cannot be crafted at all (ones that only drop from monsters, for example) and items the game never upgrades (a maximum quality of 1) are not listed.
Updating from 1.4.2
- Nothing to migrate: the
.cfg, the Hall of Fame, the histories and every Infusion stay as they are. The only new setting starts empty (every item on automatic), and the lists you already have keep their meaning. - Update the server and every player together: the sync layout changed
(
ProtocolVersion18), and the version lock keeps a 1.4.2 player out of a 1.4.3 server. - Copy the
Translations/ConfigPanelfolder again: it has the texts of the new page (47 new keys in every language) and one updated text (Page_Items_Intro). The message files did not change.
1.4.2 β Your statistics and a permanent server log
What's new
π Statistics β a page for every player
The Statistics page: your numbers, your place in the Hall of Fame and your history.
A new page in the settings panel (Shift + E at the Refinement Forge), for every player, admin or not:
- This character: refinements, success rate, successes, failures, items destroyed
(and items sent back to level 1, if the server uses
BreakReturnsItemAtLevel1), the best success streak and the worst failure streak, the highest level reached (with its Infusion), the last refinement and the idols used, per idol, with the game's own icons and names. - Hall of Fame β your account: your record and your place in each of the eight rankings, even far outside the top 10 the statues show (gold = in that top 10).
- History: every refinement as a card, newest first β date and time in your own time zone and date format, the item and its levels (level 5 β 6), the result (success, fell to level 4, kept level 5, destroyed, back to level 1), the Infusion after a success and the idols it used (3 Γ Silver Battle Idol). 50 at a time: scroll down and the next ones load. Nothing yet? The page says so.
- Per world and per character: switch character and you see that character's history; a single-player test world never mixes with the server's. The server keeps the last 500 refinements of each character; the totals count all of them.
- Kept on the server and read from there: the same on any computer, and private β the server works out who is asking from the connection itself (Steam ID and character name, like the Hall of Fame), so nobody can read someone else's history.
π Server log β for admins with devcommands
The Server log page: every change to the server's settings, newest first.
A new page next to Server: every change to the server's settings, newest first β
when (in your local time), who (the admin's name, and their Steam ID in the file),
which setting (its name in your language, with its .cfg
key) and before β after. It records:
- Save and apply in the settings panel, and Reload .cfg, with the admin who pressed it;
- a
.cfgedited while the server was off (noticed at the next start); - changes made while the server runs by Configuration Manager or another mod (changed outside the panel; a slider being dragged gives one line, once it settles).
Unlike LogOutput.log it survives restarts, has no size limit and cannot be
erased or reset from the game. The server checks its admin list on every request.
Players' own options (Your options) are never logged.
Both pages have a Refresh button. A Server log that is already open (and scrolled to the top) shows a change you just saved by itself, without pressing anything. If the server does not answer (it runs an older version, or is not ready yet), the page says so instead of staying empty.
Improvements
- Security: the server's rules are now applied more reliably when you join a server. Nothing to configure.
Good to know
- Where the files are: in
BepInEx/config/OdinBet_ForgeOfPotential_HallOfFame/, on whichever game is the server:History_<world>/<SteamID>_<character>_<code>.jsonβ one per character and world;ServerSettingsLog.jsonlβ the server log, one line per change, only ever added to;ServerSettingsLog_state.jsonβ the last value seen of each setting.
- Readable by hand: every entry has
"utc"(for example2026-09-26T21:50:30Z) next to"time", the Unix timestamp the panel turns into each player's local time. - Saved safely: through a temporary file, keeping the previous version as
.bak; a damaged file is kept as.corruptand the.bakis used; a file another program is holding open (an antivirus, a backup) is never overwritten β it is tried again, and the new refinements wait in memory until then. - Light: a history is loaded only while its owner uses it, the panel asks for 50 cards at a time, and the server answers a player at most a few times per second.
- Recorded from 1.4.2 on. Refinements made before have no history cards (the Hall of Fame and its rankings are unchanged and keep everything). The history is built from the report the Hall of Fame already receives, and the idols used are worked out on the server with its own rules (none are counted on a world with the no crafting cost modifier, where the game takes none).
- The texts are in 15 languages; item and idol names come from the game itself.
Updating from 1.4.0
- Nothing to migrate: the
.cfg, the Hall of Fame and every Infusion stay as they are, and no setting was added or changed. The sync layout is the same (ProtocolVersion17). - Update the server and every player together: the version lock keeps a 1.4.0 player
out of a 1.4.2 server. With
KickDifferentModVersion = false, a 1.4.0 player on a 1.4.2 server still gets a history, and a 1.4.2 player on a 1.4.0 server sees "The server did not answer" on the new pages β nothing breaks. - Copy the
Translations/ConfigPanelfolder again: it has the texts of the two new pages (48 new keys in every language) and one updated text (Ui_SubLocalOnly). The message files did not change.
1.4.0 β The settings panel, Refinement power and items from other mods
What's new
βοΈ An in-game settings panel
Every setting of the mod in one panel, in each player's own language (15 languages):
stand at the Refinement Forge and press Shift + E, or type odinbet_config in the
console.
- Twelve pages: Overview Β· The bet Β· Cost and time Β· Refinement power Β· Idol recipes Β· Notifications Β· Thunder Night Β· Infusions Β· Infusion effects Β· Allowed items Β· Server Β· Your options.
- Every setting explains itself: what it does, its default, its allowed range and
its
.cfgkey, with a live example computed from what you type ("Out of 100 refinements: 80 succeed, 15 fail and lose 1 level(s), 5 destroy the item", the idol cost and crafting time per level, the exact Thunder Night hours, how the Infusion bonus grows, a preview of the chat line...). - Alerts when settings get in each other's way: grey No effect now (another setting makes this one irrelevant), orange Warning (allowed, but probably not what you want) and red Error (blocks saving until fixed).
- No item names to type: the blacklist, the new lists below and the ingredients of the 16 idol recipes use an item picker with icons, a search in your language (or by prefab name) and categories, including one for items from other mods. Recipes take up to 4 ingredients with β / + for the amounts; the crafting station is picked from a list with icons.
- Live, for everyone: an admin with
devcommandson β in single player, as the host, or in the admin list of a dedicated server β presses Save and apply, checks the summary, and the new values take effect at once for every player: the server writes its.cfg, rebuilds the idol recipes and sends the new values to everyone connected. No restart, nobody has to reconnect. The server checks every request itself (admin list, known settings, types and ranges), refuses it whole if anything is wrong, and writes who changed what to its log. - Reload .cfg: after editing the
.cfgby hand, one button makes the server read it again and apply it to everyone. - Everybody else β including the host or an admin without
devcommandsβ sees only their own options (the last page): the server's odds and settings stay hidden. The host and admins get a notice there: typedevcommandsin the console (F5) to see the full panel. - The detailed log (
VerboseLogging) writes the server's odds only for who may see them in the panel. - The texts are in the new
Translations/ConfigPanel/folder.
πͺ Refinement power
Three new settings (new Refinement Power section) decide how much each Refinement
Forge level really adds, in percent of what the game itself adds per level:
RefinementStatMultiplierWeaponsβ weapon combat damage (not chop / pickaxe);RefinementStatMultiplierShieldsβ shield Block Power and parry force;RefinementStatMultiplierArmorβ Armor of helmets, chest and leg pieces, gloves and capes.
Default 100 (exactly the game's numbers), range 0 β 500. Only the levels above an
item's normal maximum quality (the ones only the forge gives) are affected. Durability
never changes, an Infusion adds its bonus on top, and items from other mods are scaled
the same way.
π§© Items from other mods
AllowRefiningModdedItems(Crafting, defaulttrue):false= items added by other mods cannot be refined at the forge (nothing is consumed; new messageModdedItemBlockedMessage, in 15 languages), except the ones inRefinableModdedItems.InfusionAllowModdedItems(Infusion, defaulttrue):false= items from other mods never get a new or stronger Infusion.InfusionBlacklistedItems(Infusion, empty): items that never get a new or stronger Infusion, but can still be refined.- Infusions that items already have always keep working. The mod recognises the game's own items by recording the item list the game starts with, before other mods add theirs; if that ever fails, every item counts as a game item (nothing gets blocked by mistake) and the log says so.
Fixes
- Frost and Poison armour now also shorten a new effect, not only one that was
refreshed. In 1.3.0 one of the hooks pointed at the wrong version of the game method,
so the log showed
Skipped patch 'SEMan_AddStatusEffect_InfusionPatch'and the first Wet / Frost / Freezing / Poison you received lasted its full time. The hook now finds the right method by itself. - A player's own
.cfgnever receives a server's values. While connected to a server with the mod, changing one of your own options (in the panel, or with Configuration Manager) used to write the whole file, server values included. Now only your own values are written. - A setting changed in single player (or on the host) is now also the value a player gets back after leaving a server later in the same game session (before, the value from the start of the game came back until a restart).
- No refining by your own rules on a server with other rules. A player whose
OdinBet version differs from the server's (only possible with
KickDifferentModVersion = false) could refine with the odds of their own.cfg. Refining at the forge is now refused for them on that server (new messageServerVersionMismatchMessage, in 15 languages); nothing is consumed.
Updating from 1.3.0
- Update the server and every player together. The sync layout changed
(
ProtocolVersion17), and the version lock keeps a 1.3.0 player out of a 1.4.0 server. - Keep your
.cfg: the new settings are added with values that change nothing. - Copy the whole
Translationsfolder again: it has the newConfigPanelfolder and two new keys (ModdedItemBlockedMessage,ServerVersionMismatchMessage) in every message file.
1.3.0 β Odin's visit, Infusions on armour, capes and shields, and a look for every element
What's new
Odin and Thor clash over who is worthy of the forge during a Thunder Night.
ποΈ Odin's visit
On a Thunder Night, each time you arrive within about 100 m of the Refinement Forge and no other player is standing at the forge, a short cutscene of about 25 seconds plays, starting the moment you arrive (a portal next to the forge included):
- the camera glides to the forge, the HUD hides and cinema bars slide in;
- Odin is already waiting beside the forge, and his two ravens land at his sides;
- he calls the storm with a column of light, and the sky answers with flashes and thunder;
- Odin and Thor have a short, subtitled exchange about who is worthy of the forge;
- he vanishes in his smoke, the ravens fly up and out of sight, and the camera turns to the sky;
- Thor's chariot rushes overhead hurling bolts at the ground, and a huge bolt strikes the forge, which then smokes and glows for a while;
- the camera returns to you.
Good to know about the scene:
- The weather is calm and clear while it plays (a snowstorm would hide it) and goes back to what it was afterwards, only on your screen. The Thunder Night show pauses meanwhile, so only one chariot crosses the sky.
- It plays again after you have been more than 200 m away from the forge and come back (walking, sailing or through a portal), or on the next Thunder Night.
- You cannot be hurt or act while it plays, as in the game's arrival intro. Esc skips it, and it ends by itself if an enemy comes close.
- Each player sees their own, on their own screen; players who arrive together see it at about the same moment. Nothing is sent over the network and nothing in the world changes.
- It only plays outdoors, with a clear view of the forge, and never in a menu, a dungeon, a bed, a seat or boat, the water or build mode.
- New local setting
EnableOdinScene(Thunder Nightsection, defaulttrue). The scene also needsEnableStorm. Admins withdevcommandson can play it right away near a forge with the console commandodinbet_odin.
Infusions now work on armour, capes and shields
- Armour protects you from its element. An infused helmet, chest, legs or cape makes you Resistant to its element, and Very Resistant from Infusion level 5. Two pieces with the same element don't stack. A piece that is weak to that element stays weak. A Frost piece also protects you from Freezing and Cold in the Mountains and the Deep North, like any frost protection in the game.
- Each armour element also has a small extra bonus:
- π₯ Fire: you suffer less from heat (Ashlands, lava, the boiling ocean).
- βοΈ Frost: being wet, slowed or frozen wears off sooner.
- β οΈ Poison: poison on you wears off sooner.
- β‘ Lightning: you get staggered less when hit.
- π» Spirit: you take less damage from the Undead.
- Capes make you faster in their biome. New cape Infusions are always Fire, Frost or Poison. A Fire cape is faster in the Ashlands and also reduces lava damage (never to zero). A Frost cape is faster in the Mountains and the Deep North. A Poison cape is faster in the Swamp. Only your speed changes; running, jumping and dodging cost the same stamina as before.
- Shields strike back. Blocking with an infused shield can burn, slow (for a few seconds), poison or stagger the attacker, or burn the Undead with spirit fire. A parry always triggers it; a normal block has a chance. The same attacker can only be hit once every 5 seconds. A Spirit shield also blocks harder against the Undead.
- Tooltips of armour, capes and shields show a "Bonus: β¦" line, in your language.
- All of this can be tuned in the new
[Infusion Effects]config section, which the server shares with every player.
Weapons
- Infused weapons now always deal a little elemental damage, even at a low Infusion level, so Fire reliably burns and Frost reliably slows.
Every element has its own look
An infused weapon or shield shows its element's effect over the whole item: in your hands, on your back and lying on the ground.
The new Infusion effects.
-
π₯ Fire: flames licking the item, bright embers rising off it, and a warm flickering light that lights up the area around you.
-
βοΈ Frost: cold air β a pale-blue mist flowing off the whole item and sinking, ice sparkles twinkling on it, and fine frost dust falling.
-
βοΈ Frost smoke: a monster chilled by your Frost weapon or Frost shield gives off a white, icy smoke that sinks to the ground while the chill lasts.
-
β οΈ Poison: green poison smoke rising off the whole item, bubbles swelling and popping on it, and drops dripping off.
-
β‘ Lightning: tiny sparks crackling on the item and, every moment, a bigger bolt running along it with a burst of sparks and a faint violet flash around you.
-
π» Spirit: pale-gold souls spiralling around the item, each leaving a ghostly trail β more on a longer item (about 5 on a sword, 9 on an atgeir).
-
Other players who have the mod see your effects too.
-
Armour and capes have no visual effect. Their Infusion shows in the tooltip.
-
The old light on infused items and the pulsing colour on the item are gone; the new effects replace them.
EnableInfusionEffects(the oldEnableInfusionGlow) turns them all off on your screen. -
Built to stay light: only a limited number of effects and lights are shown around you at once, and nothing farther than 40 m.
Hall of Fame
- The Forge Master now keeps a separate row for each Infusion element: a Fire Atgeir and a Frost Atgeir of the same player are two rows.
A cleaner config file
- The texts left the
.cfg. Every message, chat line and tooltip line now comes only from theTranslations/folder, in each player's own language (15 languages). The config file keeps just the switches and numbers. To change a wording, edit the file of your language; to hide a message, leave its text empty there. - One
Notificationssection replacesLocal MessagesandGlobal Notifications:EnableGlobalNotifications(chat for everyone),EnableLocalNotifications(the message on the screen of the player who refined),EnableThunderNightMessage(moved here fromThunder Night),NotifyOnSuccess,NotifyOnFailure,NotifyOnBreak,MinimumLevelToNotifyandNotificationPrefix. - Fewer settings to worry about.
InfusionElementsand the Tier lists (InfusionTierMultipliers,InfusionTierThresholdsWeapon,β¦Armor,β¦Shield) are built in: a new Infusion always draws from the five elements (capes: Fire, Frost or Poison), and every item gets the same percentage of bonus. - Shorter descriptions: one or two lines per setting. The default value and the allowed range are still written under each one, and the README explains everything in full.
Fixes
- A refinement whose recipe has no idol cost is no longer announced or recorded in the Hall of Fame as a destroyed item.
- A 1.2.1 Hall of Fame no longer shows the same item twice at the same level.
- When the mod corrects an item's level after a failed refinement, the inventory weight now updates too.
- The idol's own upgrade chances are always put back exactly as they were.
- Infused items on the ground no longer flicker in very crowded bases.
- A Fire or Lightning light is no longer lost when you swap to another infused item.
- Less work every frame in several places (Hall of Fame panel, statue text, effects, shield blocks, the ground-item scan). It makes little difference to FPS, because the mod was already light.
β¬οΈ Updating from 1.2.1
Players: just update and play. Update the mod (Thunderstore / r2modman do it in one click) and join. There is nothing to delete, move or configure.
Update the server and every player at the same time. With the version lock on
(KickDifferentModVersion, on by default), a player on 1.2.1 cannot join a 1.3.0
server, and the other way round; the server log says why. With the lock off, that
player plays with their own settings instead of the server's, and the Hall of Fame
statues show "not available" for them.
Do NOT delete your .cfg. It updates itself on the first start:
- The new settings are added with their default values.
- Your notification switches,
MinimumLevelToNotify, the prefix and the Thunder Night message switch move to the newNotificationssection with the values you had, andEnableInfusionGlowbecomesEnableInfusionEffectswith its value. - The message texts are removed from the file (the
Translations/files have them). A wording you had customized in the.cfgis not carried over β put it in theTranslations/file of your language instead. - Settings that no longer exist are removed: the six old glow settings
(
EnableInfusionGlowArmor,InfusionGlowIntensity,InfusionGlowRange,InfusionGlowEmission,InfusionGlowPulseDepth,InfusionGlowPulseSpeed),InfusionElements, the Tier lists, and leftovers of the old 1.1.0Forge Stormsection. If you had changedInfusionElementsor the Tier multipliers, those choices no longer apply. - Everything else you set (chances, costs, recipes, Thunder Nightβ¦) stays exactly as
it was. On a server, deleting the
.cfgwould only throw away the admin's own settings.
A few settings you may already have now do a little more:
EnableInfusionGlowis now calledEnableInfusionEffects: if you turned it off in 1.2.1, it stays off, and the new element effects are off too.InfusionMaxBonusPercent: it also sets how hard a shield strikes back. At0, weapons also lose the small minimum elemental damage.EnableLocalNotifications(the oldReplaceGameUpgradeMessages): off, it now also hides the "infused" message on screen.
The Hall of Fame keeps working, with no reset. The data stays in the same place
(BepInEx/config/OdinBet_ForgeOfPotential_HallOfFame/), and every ranking, streak and
record is kept. From now on, a player with both a plain and an infused copy of the
same item can appear twice in The Forge Master (one row per element).
Your items keep their Infusions. Nothing changes in how items are saved. Weapons and shields work as before, now with their new effect and the small minimum elemental damage. Armour and capes infused in 1.2.1 start giving their protection and bonus right away. Keep this in mind for your server's balance. Capes that got Lightning or Spirit in 1.2.1 keep them and give the protection, but have no speed bonus.
Replace the whole mod folder, not just the .dll. The Translations folder has
new texts (the "Bonus: β¦" lines, Odin's visit). With an old folder those lines show
in English. Thunderstore and r2modman do this for you.
Going back to 1.2.1 later? Items are safe. The Hall of Fame is not: 1.2.1 would
merge the rows of different elements and lose some. Back up the
OdinBet_ForgeOfPotential_HallOfFame folder first. The .cfg would come back with
1.2.1's defaults for the settings that moved or left.
1.2.1 β Thor flies by, and a switch for the Thunder Night message
What changed
Thor flying by over the Refinement Forge on a Thunder Night.
- Thor flies by. On Thunder Nights, Thor now passes flying across the night sky.
- New: a switch for the Thunder Night start message. The message players get
when a Thunder Night begins (
ThunderNightMessage) can now be turned off withEnableThunderNightMessage(Thunder Nightsection, on by default). Withfalse, nobody sees the message; the Thunder Night itself is unaffected β the storm and the Infusions work exactly as before. Emptying the text already hid the message, but the new switch leaves the text (and its translations) in place, so you can turn the message back on without rewriting anything. - Logic improvements. Internal improvements to the mod's logic.
Good to know
- Nothing changes until you switch it off. The message stays on by default, so a server that updates behaves as before.
- Server and players should update together, as always: a different version is disconnected by the version lock (on by default), or ignores the server's settings if the lock is off.
β Nothing to migrate
No need to delete your .cfg. BepInEx adds EnableThunderNightMessage to your
existing file at its default (true) and changes nothing else you set. Replace
OdinBet_ForgeOfPotential.dll and you are done.
1.2.0 β Thunder Night and Elemental Infusions
What changed
Thunder over the Refinement Forge. The Lightning storm is the show of a Thunder Night.
-
New: Thunder Night. Some nights are Thunder Nights. Each night is its own independent draw with a
ThunderNightChance(default 20%) β not "one night in five". Every game reaches the same answer for the same night on its own, so nothing is stored or sent over the network, it survives restarts, and a player who joins halfway through a Thunder Night sees the same night as everyone else. Players in the world get a centre-screen message when one begins (ThunderNightMessage), that is, when its hours start. -
New: Elemental Infusions. During a Thunder Night, a refinement that has already succeeded gets a second roll (
ThunderNightInfusionChance, default 30%) to give the item an Infusion: an element (Fire, Frost, Lightning, Poison or Spirit) and an Infusion level.- A failed refinement never gets the roll and is handled exactly as before. Thunder Night never changes the success chance, the cost, the levels lost, a destruction or a reset β it only reads a result that is already decided.
- No Infusion yet: the level is the item's new refinement level and the
element is drawn from
InfusionElements(a weapon that already deals an element keeps its own). - Already infused: the element never changes and the level grows by the item's new refinement level (Lightning 9, refined to level 10 β Lightning 19).
- The Infusion level has no cap. It is a progression counter, not the bonus.
-
What an Infusion does. Weapons gain damage of the Infusion's element, shields gain Block Power, armour gains Armor β always a small percentage of the item's own stat that flattens out towards
InfusionMaxBonusPercent(default 12%), however high the level goes. A Tier multiplier is available for tuning. The numbers in the item's tooltip already include the bonus, and one extra line names the Infusion. -
It stays with the item. The Infusion is saved by the game itself, on the item, so it survives restarts, chests, dropping and picking up, and equipping. The mod keeps no save file or database for it. Refining an infused item again keeps the Infusion (the mod carries it over to the item the game creates), and so does a failure that only costs levels. It is lost only if the item is destroyed or handed back as a new level-1 item (
BreakReturnsItemAtLevel1). -
New: Infusion glow. Every Infused item you wear β the weapon and shield in your hands and the armour pieces β gives off a small pulsing coloured light: orange for Fire, blue for Frost, violet for Lightning, green for Poison, gold for Spirit. It is one plain light without shadows per item, made once when the item is equipped and gone when it is put away, plus a glow on the item itself (its material's emission, through a property block, so the shared material is never edited). Light and item pulse together. No particles; the only per-frame work is the pulse, and at most 24 glow lights are alive around you (other players beyond 40 m are skipped). Other players with the mod see it on you too. Purely visual: it never changes the bonus. Local settings, never synced, in the
Infusionsection:EnableInfusionGlow(turns all of it off),EnableInfusionGlowArmor(only the hands glow),InfusionGlowIntensity(2.2),InfusionGlowRange(4.5 m),InfusionGlowEmission(1.5),InfusionGlowPulseDepth(0.35) andInfusionGlowPulseSpeed(2.5). -
Chat notices stay open for 4 seconds. When a refinement or Infusion notice arrives, the chat window is opened and now stays open for 4 seconds (it used to close after about 1), so the line can actually be read. Each new notice restarts the time.
-
The
[Infusion]section now comes right after[Feature Toggles]in the config file. Because the synced entries are sent in registration order, this changes the config-sync layout: client and server must both run this build. -
The Forge Master and The Relic of the Forge now rank differently. Both used to show near-identical lists (highest item level, one row per player and item type), which made the two panels feel like the same thing twice. They now read the same underlying records two different ways:
- The Forge Master lists every record, highest item level first β the same thing The Relic of the Forge used to show. This is the only change for players coming from 1.1.0: the panel named "Forge Master" now shows one row per item type instead of one row per player, so the same player can appear more than once.
- The Relic of the Forge now only lists records with an Infusion, ranked
by the strongest Infusion first. It stays empty (normal unclaimed
βrows, same as any other ranking with nothing in it yet) until a Thunder Night infuses someone's item. - A record still keeps one row per player + item type, still replaced when the item reaches a higher level, and now also replaced when the level is the same but the Infusion grew (an item that dropped a level and climbed back with a fresh Infusion roll used to keep showing the old, smaller Infusion).
- The 100-record safety cap on this list no longer just keeps the top 100 by item level β it keeps the top 100 by level and the top 100 by Infusion, so a low-level, heavily Infused item can't be evicted before it gets a chance to show up in The Relic of the Forge.
- When the ranking file is loaded, a player's old personal best is also written into the item records if those are missing it or lower, so The Forge Master never shows a lower level than a player actually reached (this covers records made before item records existed at all, older than 1.1.0).
- Nothing is migrated or reset. Every record from 1.1.0 (and earlier) loads exactly as before; only how the two panels sort and filter that same data changed. A world that already has 1.1.0 data shows both panels correctly the moment it loads on 1.2.0.
-
The Lightning storm is now part of Thunder Night. The storm of 1.1.0 (its own
Forge Stormsection, every night between two hours) is folded into Thunder Night: it plays over the Refinement Forge only on a Thunder Night, inside the same hours as the Infusion draw. TheForge Stormsection (Enabled,StartHour,EndHour) is gone β see Settings that changed below. -
Two independent switches, and the hours.
EnableStormturns only the lightning show off (Infusions keep working);EnableInfusionsturns only new Infusions off (the show keeps playing). With both off, Thunder Nights do nothing at all.ThunderNightStartHour/ThunderNightEndHourset the hours inside the night in which both the show and the Infusion draw are active (default 18 to 6, the whole night; the window may wrap midnight, and the same number twice means the whole night). The forge distance for the show is unchanged. -
New settings (all synced from the server):
EnableStorm,EnableInfusions,ThunderNightChance(default 20),ThunderNightInfusionChance(default 30),ThunderNightStartHourandThunderNightEndHourin the newThunder Nightsection;InfusionElements,InfusionMaxBonusPercent,InfusionHalfLevel,InfusionTierMultipliersand threeInfusionTierThresholdsβ¦lists in the newInfusionsection; and six new texts (ThunderNightMessage,LocalInfusionMessage,LocalInfusionStrengthenedMessage,InfusionTooltip,InfusionMessage,InfusionStrengthenedMessage). -
Infusions in the Hall of Fame. The two rankings that name an item β the Forge Master and the Relic of the Forge β now end a line with the Infusion the item carried when it reached that level, e.g.
Iron Sword - level 20 (Lightning Infusion 45). Only an Infusion this mod granted is shown (a refined Frostner that was never infused staysFrostner - level 13). The Forge Master ranking is still ordered by item level regardless of Infusion; the Relic of the Forge is ordered by Infusion strength instead (see above) and only shows records that have one. Records from 1.1.0 stay valid and simply have no Infusion. The new text (Hall_ValueItemLevelInfused) is in all 15 languages, and a long line shrinks to fit its column. -
Startup banner on dedicated servers. The server console and log now show a small banner with the mod name and version once the world is up.
-
Safer cost and duration settings.
CostStart,CostIncreasePerInterval,CostIncreaseInterval,CostScalingLevelStart,UpgradeBaseDurationandUpgradeDurationIncreasePerLevelnow have proper ranges (see the README), and the idol cost can never go below 0 even if a config says so. A value outside its range in an existing.cfgis pulled to the nearest limit when the game loads it. -
FailureAtMinimumLevelBreaksItemis described correctly. It applies whenever a failure would take the item belowMinimumLevelOnFailureβ withLevelsLostOnFailureof 2 or more that includes items a little above the floor, not only the ones already on it. The behaviour did not change; the description did. -
Fails safe after a game update. If a future Valheim update ever changes the game method the mod uses to see what happened to a refined item, the mod now leaves the game's own result and messages alone (and grants no Infusion) instead of reporting the wrong thing.
Good to know
- Thunder Nights and Infusions are on by default, so a server that updates
starts having them straight away. Set
EnableInfusionstofalseto opt out of the Infusions; Infusions that items already carry keep working either way. - The storm shows up in the same hours as the Infusions. Because both use the same window, narrowing the hours (for example 22 and 4) narrows both.
- The storm has bright, rapid flashes. If you or your players are sensitive to
flashing light, set
EnableStorm = false. A server's setting applies to everyone connected. - The Infusion is decided on the player's own game, like the rest of the refinement. The server enforces the numbers but cannot verify an item, so a modified game could give itself an Infusion β as it could edit any item.
- Only players with the mod get an Infusion's bonus.
- The default Tier thresholds are estimates for vanilla gear; adjust them to your modpack.
- The six new texts are translated in all 15 languages, through the same multi-language system as the others.
- The Hall of Fame messages between server and player also changed (they now carry the Infusion), so the rankings only work between the same version, like the rest.
- The new settings change the config sync packet, so the server and every player must update together β a different version is disconnected by the version lock (on by default), or ignores the server's settings if the lock is off.
β οΈ Settings that changed (only if you had 1.1.0)
Nothing you must do, but two things are worth a look. BepInEx adds every new
setting to your existing .cfg and changes nothing else you set.
Forge Stormis gone, and the storm no longer runs every night. The three old keys (Enabled,StartHour,EndHour) are ignored. The storm now plays only on Thunder Nights (20% of nights by default), betweenThunderNightStartHourandThunderNightEndHour.- If your storm was off, it stays off. In 1.1.0 the storm was off by default
because of its flashing lights, so an old
Enabled = falseis carried over: your newEnableStormstarts asfalse, and the update does not switch on flashing lights for anyone. Your.cfgkeeps whatever you set afterwards. If it was on, or you had noForge Stormsection at all,EnableStormstarts astrue. - Your old hours are not carried over, because the same hours now also limit the Infusion draw. The new defaults are the whole night (18 to 6).
- To get the 1.1.0 storm back exactly (every night, 22:00 to 04:00) set
ThunderNightChance = 100,ThunderNightStartHour = 22andThunderNightEndHour = 4. Careful: that makes every night a Thunder Night, so successful refinements can be infused every night in those hours. If you only want the show, also setEnableInfusions = false.
Nothing else needs migrating, and items refined before this version simply have no Infusion.
1.1.0 β Lightning storm, forge disable, version lock, and the Hall of Fame
What changed
The Lightning storm show over the Refinement Forge at night.
One of the eight statues of the Hall of Fame, and the panel it opens.
- New: a lightning storm over the Refinement Forge. At night, the sky above the forge comes alive β lightning strikes again and again, joined by a mix of other effects in the air, all within about 70 metres of the forge. It is purely a show: everything happens high above the ground, so your buildings are never damaged. It only uses effects Valheim already has, so there is nothing extra to download.
- You decide if and when. The storm is off by default. In the new
Forge Stormsection of the.cfgthere are just three settings:Enabledto switch it on, andStartHour/EndHourfor the hours it runs (game time, 22:00 to 04:00 by default). Set both hours to the same number and it runs all day and night. - It starts when you get close. The show plays while you are within about 200 metres of the forge.
- New: an option to disable the forge completely. With
EnableRefinementForge = false, nobody can open the Refinement Forge, refine gear, or repair anything there. The buttons are greyed out, and anyone who tries to use it sees a message in the middle of the screen. It is on by default (the forge works as always), so nothing changes until you switch it off. - Your own message. The text shown is
ForgeDisabledMessage(underLocal Messages), and the default is "The Refinement Forge is disabled." Write anything you like, or leave it empty to show nothing at all. - Speaks every language. Left at its default, the message appears in each
player's own language across all 15 languages that ship with the mod (now
also true for the new
ItemBlacklistedMessagebelow). If you write your own text, everyone sees exactly what you wrote. - Only the Refinement Forge is affected. Other crafting stations work as normal, and so do the storm, building near the forge, and crafting the Idols. (With the forge shut down, the Idols simply have nothing to be used on.)
- On a server with the mod, the server's choice applies to everyone connected.
- New: version lock for servers. A player who has the mod but a different
version than the server is disconnected a moment after joining, so nobody can
play with settings that differ from the server's. Controlled by
KickDifferentModVersion(newMultiplayersection, on by default, only matters on the server). - Optional:
RequireModToJoin(on by default). Also disconnects anyone who does not answer the version check within 30 seconds. Every version before this one cannot answer, so this is the only way to keep them out β but it also keeps out players who do not have the mod at all. It defaults to on in this mod specifically: since refinement odds and costs are changed by the mod itself, a player without it would gamble by different rules than everyone else on the server. Turn it off only if you're fine with that. Crafting Stationsection renamed toCrafting. Shorter, and about to hold more than just the station setting (see next point).- New:
BlacklistedItems, an upgrade blacklist. Some servers want specific items to never be refinable β a weapon that's already strong enough, an armor piece kept at its base stats for balance, whatever the reason. The newBlacklistedItemssetting (Craftingsection) takes a comma-separated list of item PrefabNames (same format as the recipes) that can never be refined at the Forge, checked before every other rule β not evenMaxUpgradeLevelor anything else gets a say. Empty by default, so nothing changes until you list something. Comes with its own message,ItemBlacklistedMessage(underLocal Messages), shown to a player who tries anyway. - New: the Hall of Fame. The eight standing statues around the Refinement
Forge now guard eight server-wide rankings: highest level ever reached on a
single item, most refinements in total, most successes, most failures, most
items destroyed, longest streak of successes in a row, longest streak of
failures in a row, and the single best item ever produced (with its owner).
Look at a statue and, if the feature is on,
[E] Consult the Hall of Fameappears β press it to open that ranking's panel. - The panel, in the game's own look: a title, an italic tag line, a boxed
description of what the ranking measures, and always ten rows (unclaimed
ones show as
β). Click a player's name to see their Steam profile link β it's copied to the clipboard automatically, and a separate "Open profile" button opens it in the browser (nothing opens on its own from a click on a name). A single OK button closes it, and so do Esc, pressing E again, walking away from the statue, or the toggle below being switched off while it's open. - Tracked by Steam ID, not by character. The same person keeps their record across characters and worlds hosted on the same server. A player on a platform without a Steam ID is still tracked, just without a profile to link.
- New:
EnableHallOfFametoggle (Feature Togglessection, on by default). Set it tofalseand the eight statues stop responding β no hover text, no panel β while the database underneath keeps recording every refinement exactly as before. Set it back totrueand the rankings are there, complete, the moment you do. - Persisted per world, next to the mod's own
.cfg(BepInEx/config/OdinBet_ForgeOfPotential_HallOfFame/), saved at most every ten seconds while results keep coming in, and always on world unload / game close. - Fully translated. Every new string β the Hall of Fame panel included β ships in all 15 languages, resolved to each player's own Valheim language the same way every other message in this mod is.
Fixes and safety
- Recipes follow the server. If a server turns the custom Idol recipes off
(
EnableCustomRecipes = false), players joining it no longer keep the recipes their own game had already loaded β they disappear, as the server intends. - Your own settings come back when you leave a server. Whichever way you leave β Logout, kick or the server shutting down β the mod puts your own settings back right away, so a server's choices (forge disabled, storm on, and so on) never follow you into singleplayer or another server.
- Safer settings sync. Server and players need the same version of the mod.
If a player's version is different, the server's settings are never applied
halfway: they are ignored completely, the player simply plays with their own
.cfg, and a warning is written in the log. (On a server with the version lock on β the default β that player is disconnected anyway.) - A failed refinement can no longer leave odds changed. If something goes wrong in the middle of a refinement, the Idol's own numbers are put back straight away, so later refinements are not affected.
- Cleaner chat announcements. Player and item names that arrive from other players are cleaned before they are shown β no formatting tags and a length limit β so a modified game cannot fill everyone's chat with odd formatting or huge names.
- The player can no longer walk around, swing weapons, or fight the camera behind an open Hall of Fame panel. Movement, actions and the mouse are handed to the panel while it's open, and given back the moment it closes.
- Esc closes the panel instead of also opening the game's own menu behind it.
- Every name and item that reaches the Hall of Fame panel is cleaned first β no formatting tags, no runaway length β same rule the chat announcements already follow.
Good to know
- Each player's own game draws the storm, so only players with the mod installed see it.
- The lock is applied by each player's own game, so it only works on players who
have the mod installed. Anyone without it can still use the forge. Players on a
different version of the mod are disconnected by the version lock (on by
default); if the lock is off, their game ignores the server's settings and
uses its own
.cfg. - A player disconnected by the version lock sees the game's normal disconnect screen; the reason is written in the server log. Every version before this one cannot answer the check, so the lock cannot tell an older version from a player without the mod at all.
- The storm has bright, rapid flashes. If you or your players are sensitive to flashing light, leave it off (the default). A server's setting applies to everyone connected.
- Hovering over the forge still shows the usual "use" hint. The message appears when the player presses the key.
- Hall of Fame: the Hall of Fame panel needs a mouse. With a gamepad, Esc / B still closes it, but a row's name and the profile-link button cannot be selected.
- Hall of Fame: which statue guards which ranking is fixed in this release (see the README) β the eight positions were matched to the ring around the Forge itself, not to any particular world, so this holds on every save.
- Hall of Fame: its text is not synced through the
.cfgβ it lives in theTranslations/*.jsonfiles (newHall_*keys) instead, since roughly forty new synced settings for wording alone would have bloated the config file for a purely cosmetic thing. - Hall of Fame: on a single-player game, or the game hosting the world,
there is no network round-trip β the database is read directly. Elsewhere, a
client only ever asks the server for the ten rows of the ranking currently
open, over the same authenticated per-connection channel the rest of this
mod's networking uses β never a broadcast β and the server refuses to answer
at all while
EnableHallOfFameisfalse.
β First release with this feature set β nothing to migrate
If you are updating from 1.0.6 or earlier, this is a big jump, but there is
still no need to delete your .cfg. BepInEx adds every new setting above
to your existing file automatically at the defaults listed (storm off, forge
working, nothing blacklisted, Hall of Fame on and unrestricted). Nothing you
already set is changed.
Replace OdinBet_ForgeOfPotential.dll and the whole Translations folder β
every language file gained new lines (the forge-disabled and item-blacklist
messages, plus the Hall of Fame panel's ~40 strings). Server and players
should update together so everyone runs the same version.
1.0.6 β Default crafting station changed to the Forge
What changed
GlobalStationnow defaults to$piece_forgeinstead of$piece_artisanstation.
Why
Every Idol recipe already carries its own progression gate: each tier requires
the boss trophy for its biome (TrophyEikthyr for the wooden tier, all the way
up to FrozenKingDrop for Bloodgold). GlobalStation is a single value shared
by all 16 recipes, and it was set to the Artisan Table β a station that only
unlocks after killing Moder, one of the last bosses before Ashlands.
That put every earlier tier behind a requirement far past its own: the wooden Idol only asks for the Eikthyr trophy and Tin (already a Black Forest material), yet the Artisan Table meant a player could not craft it until deep into the Mountain biome, long after they were meant to. The per-tier trophy requirements were doing the real gatekeeping; the station on top of them was fighting against that instead of matching it.
The Forge is unlocked right after Eikthyr, as soon as Copper and Tin are available β exactly the point the wooden tier's own trophy requirement already assumes. Using it as the single shared station lets every tier's own trophy decide when it becomes available, instead of an unrelated, much later requirement overriding all of them at once.
βοΈ No forced action, but check your .cfg if you want the new default
BepInEx never overwrites a setting you already have saved, so an existing
GlobalStation = $piece_artisanstation in your .cfg is untouched by this
update and keeps working exactly as before β nothing breaks either way.
If you want the new, better-aligned default, edit the line yourself:
GlobalStation = $piece_forge
Only a fresh install, or a deleted .cfg, picks up the new default
automatically.
1.0.4 β Multi-language messages (JSON translation files)
What changed
- All nine message templates can now show up in each player's own language.
A new
Translations/folder ships next to the DLL with one JSON file per language, using the same keys as theLocal MessagesandGlobal Notificationssettings (SuccessMessage,FailedMessage,BrokenMessage,ResetMessage,LocalSuccessMessage,LocalFailedMessage,LocalBrokenMessage,LocalResetMessage,MaxLevelReachedMessage). - Ships with 15 languages out of the box: English, German, French, Spanish,
Italian, Japanese, Korean, Chinese (Simplified), Polish, Portuguese (Brazil),
Portuguese (Europe), Russian, Turkish, Dutch, Swedish. Folder names match
Valheim's own internal language names exactly, so adding another one later is
just dropping a new
<LanguageName>.jsonfile intoTranslations/with the same nine keys β no code changes needed. - Customized wording still always wins. If a message in the
.cfgdiffers from its compiled English default β whether you changed it yourself, or a synced server enforced a custom value β that exact text is shown to everyone, exactly like every version before this one. Only unmodified defaults get auto-translated, and each player sees those in whatever language their own game client is set to. - Missing the
Translationsfolder, or missing a specific language file, quietly falls back to English and then to the.cfgdefault. A warning is written to the log either way; nothing breaks.
β No action required
Unlike 1.0.3, there is no need to delete your .cfg. No settings were
added, renamed or removed β existing customized messages keep working exactly
as before. Just make sure the Translations folder sits next to
OdinBet_ForgeOfPotential.dll in BepInEx/plugins/.
1.0.3 β Prefix, open chat, and colored chat lines
What changed
- Chat window now opens automatically. Global refinement notifications used to sit in the chat buffer unseen until a player manually opened the chat. The mod now forces the window open the same way pressing the chat key would, so nobody misses an announcement.
- Colored chat lines. Global Notification messages now render with color: the server name in yellow, the refined values (player, item, level) in coral, the rest of the sentence in white.
- Server name is now configurable. A new setting,
GlobalNotificationPrefix(underGlobal Notifications), controls the name shown at the start of every announcement β defaultOdinBet. Change it once and it updates (and stays colored correctly) everywhere, since the four message templates now use a{Prefix}placeholder instead of the name being typed into each one.
β οΈ Action required: delete your .cfg
If you're updating from an earlier version, delete BepInEx/config/OdinBet.ForgeOfPotential.cfg before starting the game.
Why: BepInEx never overwrites settings you've already saved. Your existing SuccessMessage, FailedMessage, BrokenMessage and ResetMessage templates still have the old hardcoded name typed directly into them β they don't contain the new {Prefix} placeholder, so GlobalNotificationPrefix will have nothing to plug into and won't take effect on those lines.
Deleting the file lets the mod regenerate it from scratch with the new templates. It will be recreated automatically on next launch with every option back at default β just reapply whatever custom values you had.
1.0.2 β Update link discord
1.0.0 β First public release
β οΈ About this release
- This is a first release. There may be bugs.
- The code was reviewed with AI assistance, including validating every patch
target against the metadata and IL of the game's
assembly_valheim.dll. That caught real problems before launch β among them a patch aimed atCharacter.Messagewhen the method that actually runs isPlayer.Message, which made the message replacement fail completely silently, with no error in the log at all. - Automated review is not a substitute for testing by real players. If
anything behaves differently from what your
.cfgsays, turn onVerboseLogging = trueand report it on Discord with the log.
What's in this release
The gamble (Upgrade Settings section)
UpgradeSuccessChance: success chance as a percentage (0β100, or-1to leave it alone).FailureBreaksItemChance: what share of the failures destroys the item instead of only lowering its level.LevelsLostOnFailureandMinimumLevelOnFailure: how many levels a failure takes, and the floor. The floor also fixes a Valheim bug that hands back a level 0 item when a level 1 item fails.FailureAtMinimumLevelBreaksItem: promotes a failure to a break when the item is already at the floor.BreakReturnsItemAtLevel1: instead of destroying the item and refunding metals (which cannot go through a portal), hand the finished item back at level 1.BreakReturnIngredientsPercent: how much comes back when the item really is destroyed.MaxUpgradeLevelandMaxLevelReachedMessage: a level cap. Vanilla Valheim deliberately has no cap at all at an upgrader station.- Cost scaling:
CostStart,CostIncreasePerInterval,CostIncreaseInterval,CostScalingLevelStart. - Duration:
UpgradeBaseDuration,UpgradeDurationIncreasePerLevel.
Recipes (Recipes and Crafting Station sections)
- Craft recipes for the game's 16 Idols (
Upgrader0ArmorthroughUpgrader7Weapon), all configurable inPrefab:Amountformat. - Every tier requires the boss trophy for its biome.
- Tier 7 uses
FrozenKingDrop(Sacrificial Blood): Valheim 1.0 ships no head trophy for Kall. GlobalStationsets the station required for every recipe.- If a prefab does not exist in the build, the mod logs a warning and builds the recipe without that ingredient instead of cancelling the whole recipe.
Local messages (Local Messages section)
ReplaceGameUpgradeMessagesplus the four corresponding texts.- Solves two problems at once: Valheim 1.0 builds that show a raw
[msg_upgrader_failed]because the token has no translation, and the fact that the game writes its text before the mod finishes deciding the outcome β which made the wording disagree with the item the player received.
Global announcements (Global Notifications section)
- Every refinement attempt becomes a line in every player's chat.
- Separate text for success, level loss, destruction, and reset to level 1.
MinimumLevelToNotifyfilters out low-level refinements.- Only structured data crosses the network, never a finished sentence: item
names appear in each player's own language, and nobody can broadcast arbitrary
text by editing their own
.cfg.
Forge area (Refinement Forge Area section)
AllowBuildingNearRefinementForgeandRefinementForgeBuildRadiuslift the no-build restriction around the Refinement Forge.- The exemption is not name-based: it requires an upgrader crafting station within the radius. Boss altars and other protected locations stay protected.
Server-side config sync
- Own implementation, no external dependency. When the server has the mod, it
enforces its values on every connecting client β in memory, without
overwriting anyone's
.cfgon disk. On disconnect, the client goes back to its own values. - All 52 settings are synced except
VerboseLogging.
Robustness
- Patches are applied class by class instead of via
PatchAll(). If a target does not exist in your game build, only that one patch drops out (with a log warning) β everything else keeps working.
Known limitations
MaxUpgradeLevelblocks on the click; it does not grey out the craft button.- Refinement is resolved on the client, as in the base game. Config sync covers
an edited
.cfg, not a modified DLL. - Client and server need matching mod versions for sync to apply.
