Confirm with your password

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.

Client & Server Combat Npc Taming Valheim 1.0

· Website

Stars
1
Downloads
257
Version
1.0.8
Updated
Author
Wubarrk
Virus scan
✓ Scan successful
Runs on
Client & Server

Compatibility

Required 2

Install these too — Gale pulls them in for you.

Description

⚒️ Dvergr Allies

Tame, breed, and lead an army of custom Dwarven warriors.

Valheim BepInEx Jotunn

[!NOTE] Dvergr Allies is a massive overhaul to the Valheim taming system, allowing you to tame vanilla Dvergrs, breed them, and genetically evolve them into four distinct custom combat classes. Featuring dynamic weapon scaling, complex genetics, and custom-built Native Monster AI, your Dvergrs are no longer just passive NPCs—they are an elite fighting force.


🛡️ Features

[!TIP] Mercenary Contracts: Don't want to tame? Buy Dvergr Contracts from Haldor the Trader! Consuming a contract will instantly summon a fully-tamed, randomized Dvergr class (including rare elites like Spellswords or Berserkers!).

  • Taming & Breeding: Tame wild vanilla Dvergrs using Coins, Cooked Meat, Sausages, or Yggdrasil Wood.
  • Genetic Class System: Breed your Dvergrs to discover specialized classes. Cross-breed existing classes to unlock powerful elite hybrids.
  • Dynamic Equipment Scaling: Your allies don't just get more health when they level up. Their physical gear dynamically upgrades! A 0-star Warrior wields a Bronze Sword. A 1-star upgrades to Iron. A 2-star wields a devastating Blackmetal Battleaxe.
  • Native Combat AI: Weapons and magic have been flawlessly integrated into the native Valheim monster physics engine, ensuring perfect hit registration, aggression, and particle effects.
  • Cleric AoE Healing: Clerics pulse massive Area-of-Effect Heal-over-Time spells to keep your army alive during raids.
  • Discord Stats via BarrkBOT: Your server tracks your empire and reports it to Discord — who commands the largest warband, whose bloodlines have taken the heaviest losses, and who got lucky pulling elites out of Haldor's contracts. Deaths and births are recorded as they happen and survive server restarts.

🧬 The Classes & Prefabs

Class Icon Role Abilities & Upgrades
Base Dvergr
AllyDvergr
⛏️ Foundation The genetic baseline. Wields simple weapons.
The Warrior
AllyDvergrWarrior
⚔️ Tank / Aggro 0★: Bronze Sword & Buckler
1★: Iron Sword & Silver Shield
2★ (Berserker): Blackmetal Battleaxe (+50% Slash Damage buff)
The Cleric
AllyDvergrCleric
🌿 Support / Healer Ability: Pulses 15 HP/s AoE Heal-over-Time.
Defense: Wields an Iron Mace.
The Spellsword
AllyDvergrSpellswordFire / Ice
🔥 / ❄️ Elite Hybrid Ability: Casts native Fireball or Icebolt, then rushes in for melee.
Gear: Bronze (0★) → Iron (1★) → Blackmetal (2★)
The Elemental Mage
AllyDvergrMageElemental
🌌 Arcane Artillery Ability: Cycles elements every 10s (Fireball, Icebolt, Goblin Shaman Fire).

🌳 The Breeding Tree

[!IMPORTANT] You can't just find an elite unit in the wild—you have to breed one. When two Dvergrs mate, their offspring has a chance to mutate into a higher-tier class based on their parents' genetics.

🧬 Tier 1 Mutations (From Vanilla Tames)

Combining two base Dvergr tames has a chance to produce a specialized unit.

  • ⛏️ Rogue + ⛏️ Rogue⚔️ Warrior (Pure Melee)
  • ⛏️ Support Mage + ⛏️ Support Mage🌿 Cleric (Pure Healing)
  • ⛏️ Fire Mage + ⛏️ Ice Mage🌌 Elemental Mage (Dual Magic)

🧬 Tier 2 Mutations (Hybrids & Elites)

Combining different classes passes down their traits into an Elite Hybrid.

  • ⛏️ Rogue + ⛏️ Fire Mage🔥 Fire Spellsword (Melee + Fire)
  • ⛏️ Rogue + ⛏️ Ice Mage❄️ Ice Spellsword (Melee + Ice)
  • ⚔️ Warrior + ⚔️ Warrior🪓 Berserker (Ultimate Melee)

[!NOTE] (Note: In the code, offspring that don't trigger the "Special Combo Chance" simply inherit the exact class of one of their parents, maintaining your bloodlines!).


⚙️ Configuration Options

Dvergr Allies is highly customizable via the BepInEx/config/DvergrAllies.cfg file. You can adjust almost every aspect of the mod in real-time.

🥩 Taming
  • Taming Time: Time required to tame a wild Dvergr. (Default: 1800s)
  • Taming Items: The prefabs they will eat. (Default: CookedMeat, Coins, Sausages, YggdrasilWood)
  • Fed Duration / Consume Range: Fine-tune their hunger mechanics and eating distance.
🧬 Breeding
  • Pregnancy Duration: How long it takes for offspring to spawn. (Default: 600s)
  • Breeding Limit: Max Dvergrs allowed in a 10m radius before they stop breeding. (Default: 4)
  • Pregnancy Chance: Likelihood of successful mating per interval. (Default: 33%)
  • Special Combo Chance: The chance that a valid genetic pair produces the Hybrid Mutation instead of a normal child. (Default: 25%)
  • Level Up Chance: The chance an offspring is born with +1 Star. (Default: 10%)
  • Max Breeding Level: Cap the maximum stars they can achieve. (Default: 2 Stars / Level 3)
📈 Stats
  • Health Multiplier: Global multiplier for your Dvergrs' base health pools.
  • Damage Multiplier: Global multiplier applied directly to the physical slash/blunt/pierce damage of all custom Dvergr weapons, and the elemental damage of all Mage staves.
📊 BarrkBOT Export
  • Enable Stats Export: Writes your Dvergr empire's stats to BepInEx/config/DvergrAllies/ as JSON, so BarrkBOT can answer questions about them in Discord. (Default: On)
  • Export Interval: Seconds between writes. (Default: 60s) BarrkBOT only checks every 20 minutes, so lowering this buys nothing.
  • Force Census Unavailable: (Testing only — leave Off) Makes the export deliberately report that it couldn't count your Dvergrs, so you can verify the failure path works without breaking anything. Counts are reported as "not measured" rather than zero, your lifetime history keeps recording, and the export says outright that it was forced.
  • Server-side only — clients do no work and write no files.
🧠 AI & Economy
  • Max Follow Leash: The maximum distance (in meters) a Dvergr will chase an enemy before dropping aggro and returning to the player they are following. (Default: 40m)
  • Contract Cost: Cost in coins to purchase a Mercenary Contract from Haldor. (Default: 999)

[!WARNING] Debugging: Toggle robust AI, Equipment, and Breeding logs to see exactly what your Dvergrs are thinking, who they are mating with, and what weapons they are equipping.


🤝 Compatibility

  • Valkyrie's Cargo — Ingvar, the travelling merchant, is a vanilla Dverger under the hood. Dvergr Allies recognises him by that mod's own tag on his save data and strips every taming, breeding and genetics component from him the moment he appears, so [E] trades with him as intended - he can never be tamed, petted, renamed, commanded, bred, or counted among your Dvergr. Wild Dvergr are unaffected.
  • Shadows of Midgard — your allies carry the SoMStealthExempt flag so SoM's stealth AI leaves them to their combat AI; wild, untamed Dvergr are explicitly not exempt, so sneaking past them still works.
  • BalrondIdleActors — Balrond's actor scripts are stripped from the custom Ally prefabs so your allies fight and follow instead of idling, and the wild-Dvergr AI adjustments are switched off entirely when Balrond is detected so wild NPCs keep their idle behaviours.

🛠️ Installation

  1. Install BepInEx for Valheim.
  2. Install Jotunn (The Valheim Library).
  3. Install JsonDotNET — required for the stats export.
  4. Drop DvergrAllies.dll into your BepInEx/plugins/ folder.
  5. Tame a Dvergr and begin your empire!

[!IMPORTANT] Server and every client must run the exact same DvergrAllies version. Since 1.0.8 a mismatched client is refused at connection with a screen showing both versions - update everyone together.


join the Mists of Avalor Open BETA find it only on Hexium Hexium Logo


License: MIT — use, modify, and redistribute freely, including commercially; just keep the copyright notice. See LICENSE.md for the full text.

Changelog

1.0.8 Latest
  • Valkyrie's Cargo compatibility: Ingvar is never tamed. Valkyrie's Cargo's travelling merchant, Ingvar, is not a prefab of his own - he is a plain vanilla Dverger that the mod tags on its save data (VCargo_ingvar) and dresses up at runtime. Dvergr Allies makes every Dverger tameable at load time, so he was inheriting the taming, breeding and genetics components too. The visible symptom: with both mods installed, pressing [E] on Ingvar petted him (Shift+E offered to rename him) instead of opening the trade, because the taming component sat ahead of the merchant script in his interaction lookup. Less visibly, Valkyrie's Cargo marks him tamed for its own reasons, so he could have bred with your Dvergr, been given a gender and an owner tag on data that mod owns, and been counted as one of your tamed Dvergr in the BarrkBOT export.
    • He is now recognised by that tag the moment he appears on your machine, and every Dvergr Allies component is removed from him before you can look at him: no taming, no petting, no renaming, no follow/stay commands, no breeding, no gender, no stealth flag, no owner tag, no place in the census. The per-frame wild-Dvergr AI adjustments leave him alone as well - his behaviour is the merchant script's to drive.
    • Wild Dvergr are untouched: the prefab-level taming injection is exactly as before, and the check costs a wild Dvergr one integer read as it spawns.
    • Recognition is by the save-data tag, not by whether Valkyrie's Cargo is installed. A merchant left behind in a world after that mod is removed still keeps his hands off your taming pens.
    • Startup logs [Compat] Valkyrie's Cargo detected when it is present, and one [Compat] Valkyrie's Cargo merchant ... woke on this machine line each time Ingvar lands, so the exclusion can be seen working.
    • One more Harmony patch (Tameable.Awake), so a healthy log now reads [Patches] 8 applied, none failed.
  • Everyone must now run the exact same version. Network compatibility is tightened from "major.minor must match" to "the whole version must match". Before, a 1.0.7 client could join a 1.0.8 server, and that client's copy of the mod would still treat Ingvar as tameable - it could pet, rename or command him on its own screen and write those onto his save data, and nothing the 1.0.8 side does can stop a client that has not updated. Now a mismatched client is turned away at the door by Jotunn's version screen, which shows both versions, so a server upgrade is a coordinated "everyone update" rather than a silent split. Patch releases of this mod change game patches and save-data writes, so this is the honest contract going forward.
1.0.7
  • Valheim 1.0.7 compatibility. Rebuilt for Valheim 1.0.7 (client build 25185596 / dedicated server build 25185644, network version 39) against BepInExPack 5.4.2350 and Jotunn 2.30.0 - the first Jotunn release for Valheim 1.0, which is now the minimum required version. The Jotunn build reference is pinned to exactly 2.30.0 so a rebuild cannot silently pick up a pre-1.0 Jotunn and produce a DLL that only fails once it is in the game.
  • Fixed: the mod could not be loaded on Valheim 1.0. Valheim 1.0 added a member to the game's Hoverable interface - GetHoverOffset, an extra reach the player's cursor allows for that object. DvergrTameable, which puts the pregnancy / hunger lines on a Dvergr's hover text, implements that interface, and a class that is missing an interface member cannot be loaded by the runtime at all ("VTable setup failed"), so on 1.0 everything that touches it - the taming setup for the ally prefabs and for wild Dvergr - would have thrown. It now provides the member, forwarding to the creature's own value, so a Dvergr's interact reach is exactly what its prefab declares (zero, for every vanilla creature) and nothing about hovering or interacting changes.
  • Nothing else needed to change. All seven Harmony patches (Character.SetTamed x2, Character.OnDeath, MonsterAI.UpdateAI, ZNetScene.Awake, ZNet.Shutdown, Trader.Start) resolve on 1.0.7 unchanged, and the 1.0 engine changes that broke other mods (sector ids, equipment visuals, save paths, Inventory.Load) are all in code this mod never touches. Verified on a 1.0.7 dedicated server: [Patches] 7 applied, none failed, 21 prefabs / 10 items / 1 status effect registered through Jotunn, Taming/Breeding components injected into 8 wild Dvergr prefabs, BarrkBOT export armed.
1.0.6
  • Critical fix: the stats export never started, and the Haldor contract quietly disappeared. In 1.0.4 and 1.0.5 one Harmony patch aimed at a method that does not exist where the code claimed it did. Harmony refuses to guess, so it threw — and because the game applies patches in one all-or-nothing pass, that single mistake took down everything after it: the BarrkBOT stats exporter was never even created, and the Dvergr Contract stopped appearing in Haldor's stock. Both are fixed and working again.
    • If you ran 1.0.4 or 1.0.5 on a server, the contract has been missing from Haldor since you installed it, and BepInEx/config/DvergrAllies/ was never created. No save data was harmed and nothing was lost — the features simply never switched on.
    • The failure left no trace in LogOutput.log, because Unity's own error log is not written to disk by default. That is the real reason it went unnoticed, and it is what the rest of this release addresses.
  • A broken patch can no longer take the mod down with it. Patches are now applied one at a time. If a future game update moves or renames something, that one feature switches off, says so by name in the log, and everything else keeps working — instead of the whole mod silently going quiet.
    • The log now always reports the tally: [Patches] N applied, none failed.
  • The export says what it is doing. It now logs one line when it arms at startup, and one more whenever the answer to "is it writing?" changes — waiting for the world, idle because the setting is off, or running. A healthy export and an export that never started can no longer look identical.
  • The export loop can no longer die in silence. A hiccup reading the world database costs that single cycle and is reported; previously it could stop the export for the rest of the session with nothing to show for it.

6 older entries, full version history & downloads →

Manual download
Just this mod One .zip — DvergrAllies 1.0.8
Files you'll get 3

Your browser may ask permission to download several files at once. How to install these manually

Manual installation instructions
1

Install BepInExPack Valheim

BepInExPack Valheim is required to run mods in Valheim.

Download BepInExPack Valheim 5.4.2350 · View mod page

Check out the mod page for detailed installation instructions.

2

Install DvergrAllies

This mod must be installed on both the client and the server.

Download DvergrAllies 1.0.8

Extract the ZIP and place the file(s) into the BepInEx/plugins/ folder inside your Valheim game folder.