DvergrAllies
Tame, breed, and lead an army of custom Dvergr Allies! Features 4 custom classes (Warrior, Cleric, Spellsword, Elemental Mage), breeding genetics, star-level weapon scaling, and native combat AI.⚒️ Dvergr Allies
The dvergr said they would never serve a human. Then someone offered sausages. Three generations later their grandchildren swing blackmetal axes at whatever you point at, and still complain about the food.
Tame a dvergr. Breed an army.
Dvergr Allies overhauls Valheim's taming for the dvergr: tame the wild ones, breed them, and their bloodlines mutate into four combat classes and their elite hybrids — Warriors, Clerics, Spellswords and Elemental Mages, up to the blackmetal Berserker.
Their gear grows with their stars, their weapons and spells run on Valheim's own monster combat, and a Cleric keeps the line standing. Don't want to tame? Buy a contract from Haldor and a random, fully tamed class answers the call.
Ingvar, Valkyrie's Cargo's travelling merchant, trades with you — he is never one of your tames.
| You | It |
|---|---|
| Press E on Ingvar | opens his trade, as that mod intends |
| Try anything else | he can never be tamed, petted, renamed, commanded, bred, or counted among your Dvergr |
| Meet a wild Dvergr | nothing has changed — tame away |
🏷️ He is known by Valkyrie's Cargo's own tag on his save data, so a merchant left in a world after that mod is gone still stays out of your taming pens · 📜 The log shows it working each time he arrives.
| If… | Then… | |
|---|---|---|
| 🤝 | you play on a server | the server and every client must run the exact same Dvergr Allies version. A mismatched client is refused at connection, on a screen showing both versions. Update everyone together. |
| 📦 | you install by hand | it needs Jotunn and JsonDotNET as well as BepInEx. A mod manager fetches them for you. |
| 🪙 | the contract is missing from Haldor's stock | read the log — every way it can go missing now leaves a line (how-to below). |
Win them over with food, or buy their loyalty outright.
| You | It |
|---|---|
| Feed a wild Dvergr | Coins, CookedMeat, Sausages or YggdrasilWood — keep it fed and it is yours |
| Buy a Dvergr Contract from Haldor | 999 coins by default |
| Use the contract | a fully tamed Dvergr of a random class appears beside you — rare elites like Spellswords and Berserkers included |
| Tame and breed | offspring keep your name on them, so bloodlines stay credited to the right player |
Four classes and their elites — and their gear grows with their stars.
| Class · prefab | Role | Abilities and gear | |
|---|---|---|---|
Base Dvergr · AllyDvergr |
⛏️ | Foundation | The genetic baseline. Wields simple weapons. |
Warrior · AllyDvergrWarrior |
⚔️ | Tank / aggro | 0★ Bronze sword and buckler · 1★ Iron sword and silver shield |
Berserker · AllyDvergrBerserker |
🪓 | Ultimate melee | 2★ Blackmetal battleaxe with +50% slash damage, and a battle rage |
Cleric · AllyDvergrCleric |
🌿 | Support / healer | An area heal-over-time pulse; an iron mace for defence |
Spellsword · AllyDvergrSpellswordFire / Ice |
🔥 ❄️ | Elite hybrid | Casts a native Fireball or Icebolt, then rushes in for melee · Bronze → Iron → Blackmetal |
Elemental Mage · AllyDvergrMageElemental |
🌌 | Arcane artillery | Cycles element every 10 s: Fireball, Icebolt, Goblin Shaman fire |
📖 Read the saga — gear that levels up, and the Cleric's pulse
Stars are not just health. As an ally levels up, its gear physically changes: a 0★ Warrior carries a bronze sword, a 1★ one iron, and the 2★ Berserker a blackmetal battleaxe. Spellswords climb the same bronze, iron, blackmetal ladder. Health Multiplier and Damage Multiplier scale every ally's health pool and the slash, blunt and pierce damage of their weapons — and the elemental damage of every mage's staff.
The Cleric heals you and your tamed allies within 15 m the moment anyone in range drops below 80% health: a five-second heal-over-time that grows with the Cleric's stars, then a 15-second wait before the next pulse. Wild dvergr are never healed.
The Berserker's rage adds movement speed, faster stamina and a little regeneration on top of the battleaxe.
Elites are not found in the wild. They are bred.
| Parents | Offspring may become | |
|---|---|---|
| ⛏️ Rogue + ⛏️ Rogue | ➞ | ⚔️ Warrior — pure melee |
| ⛏️ Support Mage + ⛏️ Support Mage | ➞ | 🌿 Cleric — pure healing |
| ⛏️ Fire Mage + ⛏️ Ice Mage | ➞ | 🌌 Elemental Mage — dual magic |
| ⛏️ Rogue + ⛏️ Fire Mage | ➞ | 🔥 Fire Spellsword — melee + fire |
| ⛏️ Rogue + ⛏️ Ice Mage | ➞ | ❄️ Ice Spellsword — melee + ice |
| ⚔️ Warrior + ⚔️ Warrior | ➞ | 🪓 Berserker — the ultimate melee |
📖 Read the saga — how a bloodline works
The first three come straight from vanilla tames; the rest combine classes into elite hybrids. A valid pair produces the mutation at the Special Combo Chance (25% by default); otherwise the child simply inherits the class of one of its parents, so your bloodlines hold.
Breeding needs a partner within reach (Partner Check Range, 10 m), checks every Update Interval (10 s), and conceives at the Pregnancy Chance (0.33). A pregnancy lasts Pregnancy Duration (600 s), and breeding stops once Breeding Limit (4) Dvergr crowd a 10 m radius. A child may be born one star above its highest parent at the Level Up Chance (10%), up to Max Breeding Level (3, that is 2 stars).
An elite fighting force, not passive NPCs.
| ⚔️ Native combat AI | weapons and spells run on Valheim's own monster combat — real hits, real aggression, real particle effects |
| 🛡️ They hold their ground | tamed Dvergr fight, don't panic around fire, and don't wreck your buildings |
| 🪢 A follow leash | a follower chases an enemy at most Max Follow Leash (40 m) before dropping it and returning to you |
| 🌿 The Cleric's pulse | keeps the army alive through a raid |
Your server keeps score of your empire — and BarrkBOT reports it in Discord.
| 👑 The biggest warband | who commands the most Dvergr, counted across the whole world, not just what is loaded |
| 💀 The heaviest losses | deaths and births recorded the moment they happen, kept across restarts |
| 🎲 The luckiest pulls | who drew elites out of Haldor's contracts |
📖 Read the saga — how the count stays honest
The server writes the stats as JSON to BepInEx/config/DvergrAllies/; players' games do no work and write no files. It reads the save database directly, so Dvergr standing in zones nobody has visited for weeks are still counted. Births, deaths, contracts and pulls are banked to a per-world counter file as they happen — a dead Dvergr leaves nothing behind to count later. Every Dvergr carries whoever tamed or summoned it, offspring inherit it, and a player whose whole warband died still appears with their losses intact.
"We couldn't count" never pretends to be "nothing is alive." If the world cannot be scanned the files are still written, marked census_unavailable with the reason, and the population counts are null, not 0. A missing file means one thing only: the export never ran. Force Census Unavailable triggers that path on purpose, for testing — the export says outright that it was forced, history keeps recording, and in normal play it stays off.
Export Interval is 60 s by default; BarrkBOT only reads every 20 minutes, so going lower buys nothing.
First ten minutes: install with a mod manager, or unzip into BepInEx/plugins with Jotunn and JsonDotNET → find a wild Dvergr and feed it → or buy a contract from Haldor and use it → tame two of the right kinds and let them breed.
| Key | Item | ||
|---|---|---|---|
| E on a tame | pet · follow / stay | Coins · CookedMeat · Sausages · YggdrasilWood |
what wild Dvergr eat to tame and breed |
| Shift + E on a tame | rename | DvergrContract |
Haldor's Mercenary Contract — use it to summon a random tamed class |
🪙 The contract isn't in Haldor's stock
Check BepInEx/LogOutput.log for [Contract] lines. At startup: Dvergr Contract registered at 999 coins., or an error naming what stopped it. When Haldor wakes: Added to Haldor's stock at 999 coins (9 entries before, 10 after)., or a line saying it was already there, or that the item is missing.
If Haldor wakes and there is no [Contract] line at all, that is the answer. The game applies every mod's additions to a trader as one chain, so an error thrown by a mod ahead of this one cancels every addition behind it, this one included. Haldor's counter is busy — other mods sell there too — so look for that other mod's error.
| Set by the server, for everyone | The server alone | Needs Dvergr Allies on both ends |
|---|---|---|
| taming · breeding · AI · contract price · stats · debug logs | the war-ledger export and its files | everything — a player without the mod, or on another version, cannot join |
⚠️ Versions must match exactly. The whole version, not just the first two numbers: a mismatched client is turned away at the door by Jotunn's version screen, which shows both versions. A server upgrade is an "everyone update" moment.
| Mod | |
|---|---|
| Valkyrie's Cargo | Ingvar, its travelling merchant, is a vanilla Dverger underneath. Dvergr Allies knows him by that mod's tag and strips every taming, breeding and genetics part from him the moment he appears, so E trades with him. Wild Dvergr are unaffected. |
| Shadows of Midgard | Your allies carry the SoMStealthExempt flag, so its stealth AI leaves them to their combat AI. Wild, untamed Dvergr are not exempt — sneaking past them still works. |
| BalrondIdleActors | Balrond's actor scripts are stripped from the ally prefabs so your allies fight and follow instead of idling. When it is installed, Dvergr Allies leaves wild Dvergr's AI alone, so they keep their idle behaviours. |
| Other mods selling at Haldor | Share his counter. If one of them errors ahead of this mod, the contract can go missing — the log says so (see the toolbox). |
BepInEx/config/wubarrk.dvergrallies.cfg, or a configuration manager in game. Changes take effect live.
🔒 Server-synced — admin only, the server's values count
| Section | Setting | What it does |
|---|---|---|
| 1 – Taming | Taming Time |
seconds to tame a wild Dvergr (1800) |
| 1 – Taming | Taming Items |
what they eat to tame and breed |
| 1 – Taming | Fed Duration · Consume Range |
how long a meal lasts (600 s), and how close food must be (4 m) |
| 2 – Breeding | Pregnancy Duration · Pregnancy Chance · Breeding Limit |
how long (600 s), how likely (0.33), and the crowd limit in 10 m (4) |
| 2 – Breeding | Partner Check Range · Update Interval |
how far they look for a partner (10 m), and how often (10 s) |
| 2 – Breeding | Special Combo Chance · Level Up Chance · Max Breeding Level |
the mutation chance (25%), a bonus star (10%), the star cap (3 = 2 stars) |
| 2.5 – AI | Max Follow Leash |
how far a follower chases before returning to you (40 m) |
| 3 – Economy | Contract Cost |
coins for a Dvergr Contract (999) |
| 4 – Stats | Health Multiplier · Damage Multiplier |
every ally's health, and its weapon and staff damage |
| 5 – Debug | Enable Debug Logs · Debug Full · Debug AI · Debug Breeding · Debug Equipment |
see what your Dvergr are thinking, who they are mating with, and what they equip |
🖥️ Local to the machine — set on the server or host that writes the files
| Section | Settings |
|---|---|
| 6 – BarrkBOT Export | Enable Stats Export (on) · Export Interval (60 s) · Force Census Unavailable (testing only — leave off) |
Needs: BepInExPack Valheim 5.4.2360 · Jotunn, the Valheim Library, 2.30.0 · JsonDotNET 13.0.4, for the war ledger.
Made by Wubarrk — ravenirongames.com. BarrkBOT, bug reports and abuse on Discord. License: MIT — use, modify and redistribute freely, including commercially; just keep the copyright notice. Full text in LICENSE.md.
