Confirm with your password

ValkyriesCargo

A Valkyrie air-drops Ingvar the Far-Travelled, a red-bearded dwarven merchant, beside your hearth when rested. Buy & sell wares at dynamic supply-and-demand prices before he vanishes like Odin. Server-synced.

Client & Server Currency Npc Trader Valheim 1.0

· Website

Stars
3
Downloads
180
Version
0.1.6
Updated
Author
RavenIronStudios
Virus scan
✓ Scan successful
Runs on
Client & Server
Required by
2 mods

Description

🪶 Valkyrie's Cargo 🪙

Valheim Mod Multiplayer Compatible Valheim Framework Economy Custom Character Version

"You bank the fire, set down your axe, and the light goes strange. Wings beat in the upper skies — and she comes down out of the cloud with a red-bearded dwarf hanging from her talons, and sets him on his feet beside your hearth like a parcel she was paid to deliver."

A Valkyrie air-drops a merchant at your door. You have five minutes.

Requires Valheim 1.0.12, 1.0.15 or 1.0.16, on the server and on every client. Valheim 1.0.12 moved the network version, so a build made for 1.0.7 or 0.221.12 cannot connect at all — that wall is the game's, not ours. 1.0.15 and 1.0.16 kept the same network version, so 1.0.12, 1.0.15 and 1.0.16 play together.

Valkyrie's Cargo adds a wandering merchant encounter that nobody summons. When you have earned a quiet moment — rested, comfortable, at your own fire — the server decides the sky is right, and a Valkyrie carries Ingvar the Far-Travelled down to your hearth. He walks up, calls out, and opens a trade window backed by a live, persistent, server-owned economy: prices that move with what the world actually buys and sells, a purse that can run dry, and a shelf that changes between visits. Then he vanishes into the mist the way Odin does.


📜 Contents

🪽 The Visit

🔥 You earn it No horn, no command, no altar. The server rolls for a visit while you are rested and comfort 4+ at your own base.
🕊️ A real approach The Valkyrie's flight is planned — a genuine line through the sky, flown the same way on every screen near enough to see it (Valheim loads what is within about 96 m of you, and the approach is laid out to fit inside that). She comes in low enough that you can see what she is carrying.
🧳 The drop She releases Ingvar beside your fire and turns for the horizon.
🚶 He walks up Ingvar crosses the ground to you himself and greets you in his own words. He is unkillable, unhostile, and entirely uninterested in your Greydwarf problem.
💬 He trades Press E for the Cargo Terminal — our own window, not a reskin of the vanilla store.
🌫️ He leaves After five minutes — or when you send him off early — he gives you a parting word and vanishes in a burst of mist.

🪙 A Market That Remembers

This is the part that is not decoration. Ingvar's stock is one shared, persistent economy, the same on every visit and on every player's screen.

Feature What it means at the table
📈 Supply & demand Buy him out and the price climbs. Flood him with iron and he pays less for the next load. Every number you see was computed from stock that real players moved.
🌊 Price drift Prices ease back toward their resting value over in-game days — a market you wrecked on Tuesday is worth visiting again by Friday.
💰 A purse, not a printer He arrives with 1500 coins, plus half of what players paid him on his last visit (PurseCarryPercent), and no more. When it is dry he is done buying; barter, or come back next visit.
⚖️ The Fair Market Act He will never pay you more for a thing than he charges for it. Within a visit, no buy-low-sell-high loop against your own merchant.
🔄 A rotating shelf He carries 20 of a 101-entry catalogue, re-rolled every 2 in-game days. What he has this week is not what he had last week.
🤝 Barter is first-class Pay with what you are carrying. The terminal covers the balance from your goods at his live rates — one button.
💾 It survives a restart Stock, purse and prices are written beside your world save. A visit interrupted by a server restart picks up where it stopped.
📬 Nothing is lost A deal settled but not delivered — you crashed, you dropped — is held on the server and redelivered when you come back. A full pack counts too: the server keeps the deal until it fits (cargo claim), which was watched in game on 2026-09-24, held through a server restart and landed in the pack exactly once. A crash or a dropped connection in that window has never been caught in a live session, so we would especially like to hear if it ever bites you.

💡 Admins: the catalogue is editable live, between visits, with cargo catalogue add/remove/reset. No restart, and the change reaches every client within a second.


🧔 Ingvar Himself

Ingvar is not a re-textured Dverger. He is his own character, with his own idle, walk, greeting, talk, shrug and nod, and he ships inside the plugin. There is no second download, no asset pack, nothing extra to install.

He stands a head shorter than you, red-bearded, in heavy plate, and he watches you while you shop.


🎒 Backpacks Add-On

Running Smoothbrain's Backpacks? Ingvar notices.

⏳ Waiting on Valheim 1.0. Backpacks has no 1.0 build yet. Until it does, nothing here engages and the shelf runs at its single size — the detection is live and will pick it up the day it lands.

📦 He carries more The shelf doubles (20 → 40 of the catalogue). A world that hauls more gets a bigger caravan.

Entirely optional and auto-detected. Without it, he simply travels light and nothing changes.


🌐 Multiplayer & Server Authority

Built for dedicated servers first, not adapted to them afterwards.

  • 🔒 Server-authoritative. The market, the schedule, the purse and every settled deal live on the server. A client proposes; the server decides, at the prices it holds, and only then does an inventory change. There is no client-side path to forging a trade.
  • 🔗 ServerSync. Configuration is pushed and locked from the host, so everyone plays the same economy whether they edited their config file or not.
  • 👥 One shared visit. The same descent, the same merchant at the same hearth, the same shelf — and the same prices moving under you as other people trade.
  • 🛡️ Version gate. A client without the mod, or on the wrong version, is refused at the handshake and told exactly why, by name and number.

🖥️ Console

Typed into the in-game console. Admin verbs are checked on the server, so a client can run them and a non-admin cannot.

Command What it does
cargo status Everything at a glance: the visit, the market, the schedule, the engine check
cargo stock [item] His shelf and its live prices
cargo claim Ask the server for any delivery it still owes you (a deal your pack had no room for)
cargo catalogue list The full 101-entry catalogue
cargo body Ingvar's model, clips and bones — the first thing to ask for if he looks wrong
cargo engine The Valheim build this was written against, versus the one you are running
cargo visit [player] (admin) Send a visit now
cargo dismiss (admin) End the visit now
cargo catalogue add/remove/reset (admin) Edit the shelf live, between visits

💡 cargo status names its own sources. It is the first thing to paste into a bug report.


⚙️ Configuration

Settings live in com.raveniron.valkyriescargo.cfg. Every gameplay-affecting setting is server-synced and admin-controlled; only cosmetics are local.

🔒 Server-Synced (Admin Controlled)

Setting Default What it does
MinComfortLevel 4 Comfort you need at your fire to qualify
MerchantLifespanSeconds 300 How long the visit lasts, from the moment it begins, whoever is near him
PauseVisitWhenEmpty false Hold the visit's clock while nobody is online (dedicated servers; a listen host is never empty)
PurseCoins 1500 What Ingvar arrives with
PurseCarryPercent 50 How much of his takings carries to the next visit
ShelfSize 20 How many of the 101 he carries
ShelfRotationGameDays 2 How often the shelf re-rolls (0 = never)
BackpackShelfMultiplier 2 Shelf multiplier when Backpacks is loaded
FlightSpeed / FlightTurnRate 8 m/s / 45 °/s How the Valkyrie flies
FairMarketAct on He never pays more than he charges
CustomBody on Ingvar's own body; off keeps the stand-in
CarryOffset 0, 0, 0 Where he hangs from the Valkyrie's talon, x, y, z in the talon's own space. The default puts his feet on it. Leave it empty to follow the Valkyrie prefab instead
CatalogueOverrides (empty) 0.1.4. The shipped catalogue plus your changes: Prefab:Base:Target:Max:Kind to add or change a row, -Prefab to remove one, comma-separated. Empty = the shipped 101 rows as they ship. cargo catalogue add|remove|reset edit it

🎨 Local to Your Game

Setting Default What it does
ShowArrivalMessage on The banner when he lands
ShowPriceTrend on The amber mark on a price that moved
Theme Vanilla The terminal's frame
TerminalScale 1.0 How large the terminal draws
TerminalBackdropAlpha 0.4 How dark the terminal's backdrop sits
BodyYawDegrees 180 Which way Ingvar faces on the chassis

🛠️ Compatibility

Built against Valheim 1.0.16 and checked against it; 0.1.5, the same gameplay code, was tested in game on 1.0.15. At boot the mod checks the game it is actually running on, prints what it found, and any feature depending on something that has moved switches itself off and says so — rather than taking your session down with it. cargo engine shows you that check.

  • ✅ Dedicated servers, listen hosts and single-player
  • ⚠️ Valheim 1.0.12, 1.0.15 or 1.0.16 only (network version 40). The game refuses a peer on another network version before this mod is consulted, so every copy has to be replaced by hand when the engine moves
  • ✅ Run alongside a 117-plugin modpack — on 0.221.12, where that pack existed. On 1.0 it has not yet been run with a pack that size
  • ✅ Built to sit beside the family — Cairn, Undertow, FireFront, Ragnarok's Wrath, RavenEye and Yggdrasil's Reckoning — and proven beside them on 0.221.12
  • ❌ Does not patch StoreGui, EnvMan, or any vanilla trader

📦 Dependencies

⚠️ Requires: BepInEx

Dependency Why
BepInExPack Valheim (denikson) The mod loader (also provides HarmonyX)

Optional: Backpacks (Smoothbrain) — unlocks the doubled shelf.

📥 Installation

With a mod manager (recommended): install through Hexium, Gale, r2modman or any Thunderstore-compatible manager — the dependency above is pulled in for you.

Manual install:

  1. Install BepInExPack Valheim.
  2. Drop ValkyriesCargo.dll into BepInEx/plugins.
  3. On a dedicated server, install it on the server and every client.
  4. Go and get comfortable.

Updating from 0.1.3 or earlier: nothing to delete. The first boot on 0.1.4 or later migrates a file from any earlier version, as below. (Up to 0.1.3, each update meant deleting the server's config file first; that step has retired.)

Updating from 0.1.4 on: nothing to delete. The mod migrates the config file itself before it binds anything — a value still at an old default moves to the new one, a value you set stays, a backup lands beside the file, and the boot log says what it did.


📖 Status — 0.1.6

0.1.6 (2026-09-25). Updated due to 1.0.16 Patch. Update the server and every client together: a 0.1.5 client is refused by a 0.1.6 server. Nothing to delete when updating.

0.1.5 (2026-09-24). Deal and market fixes: a deal lands in your pack whole or not at all, a deal must be made within 96 m of the visit, and the Fair Market Act covers every row while the shelf rotates; within a visit he never pays more for an item than the lowest price he sold it at (a server restart mid-visit clears that record). The DLL no longer carries the build machine's folder path. Update the server and every client together: a 0.1.4 client is refused by a 0.1.5 server. Nothing to delete when updating.

0.1.4 (2026-09-16). The mod migrates its own config file: a value still at an old default moves to the new one, a value you set stays, a backup lands beside the file, and the boot log says what it did — no more deleting the config file to pick up a new default. The catalogue is now CatalogueOverrides: the shipped catalogue plus your changes, so it can grow without a stored line ever shadowing it again. Update the server and every client together: a 0.1.3 client is refused by a 0.1.4 server.

0.1.3 (2026-09-16). The visit clock runs whoever is near Ingvar: a visit ends on time with nobody online (before, it never ended without a player within 96 m of him, and held every raid with it). The new server option PauseVisitWhenEmpty holds it on an empty server instead, off by default. Updating a server, from 0.1.3 or any earlier version: nothing to delete any more (Installation, above) — the first boot on 0.1.4 or later migrates the file itself.

0.1.2 (2026-09-15). The merchant guard: Ingvar trades and hovers as himself on a server whose taming mod made the Dvergr a pet.

0.1.1 (2026-09-15). Ingvar now insists on ground somebody built and keeps away from other merchants' camps, dungeon doors and the game's landmarks (a player's report from the Bog Witch's camp); he buys and sells food and drink — 101 catalogue rows (from 0.1.4 on, an updating server takes them by itself; see Installation); and the version number moves with each release, so a server and its players must run the same one.

A first playable, and honest about it. The loop has been run end to end on a dedicated server with real players — more than thirty visits so far: the roll, the flight, the drop, the walk-up, the terminal, deals across the wire, the price curve, the persistence and the departure have all been watched on a screen. Some corners are proven only in the log, and a few only off-game.

The one we will name outright: redelivery after a lost connection is built, and tested off-game, and has never been caught happening in a live session — the window between a deal being answered and acknowledged is too small to stand in front of. Two-player trading at one merchant is also thinly tested, and some points rest on the code and on checks made outside the game rather than a screen: the 96 m rule on a listen host, an older client being refused by a newer server (0.1.4 at 0.1.5, 0.1.5 at 0.1.6), and Valheim 1.0.16 itself, which 0.1.6 was built and checked against. Everything else on this page has been watched.

If something reads wrong, cargo status and your BepInEx/LogOutput.log will usually say why — and we would genuinely like to hear about it.


🐦‍⬛ Credits

Raven Iron is NomadicWar & Wu'barrk. Both founders, both designers of this mod, and between them everything in it.

⚒️ NomadicWar Co-founder, Raven Iron. Design; the market and the economy, the visit director, persistence and the server side.
🎨 Wu'barrk Co-founder, Raven Iron. Design; Ingvar himself — model, rig, texture and animation — the Cargo Terminal, and the VikingOS interface work beneath it.

ServerSync is blaxxun's ConfigSync.cs (MIT-0), compiled in as shared source and never edited. The terminal's frame and focus handling are Wu'barrk's VikingOS shared source (MIT).

🪶 Nothing in this package is ripped, re-uploaded, or derived from another creator's assets.

Created by Raven Iron — NomadicWar & Wu'barrk
ravenirongames.com


Vendored, and not ours: ServerSync is blaxxun's ConfigSync.cs (MIT-0). The terminal's frame and focus handling are Wu'barrk's VikingOS shared source (MIT). Both carry their origin and version in their own file headers and are compiled in unedited.

Changelog

0.1.6 Latest

Updated due to 1.0.16 Patch.

0.1.5
0.1.5

Why a number. The store takes one upload per version number, and the version gate moves with it: a 0.1.4 client is refused by a 0.1.5 server, so the server and every player update together. The config file's layout did not change (ConfigVersion stays 2), so updating a server from 0.1.4 needs nothing deleted and migrates nothing.

Valheim 1.0.15. The mod is built against 1.0.12 and was tested on 1.0.15. Both use network version 40, so they play together; at boot the engine line reads newer game version (1.0.15 vs 1.0.12); probes 19/19 ok, 8 not probeable.

Tested in game on 2026-09-24, on a Valheim 1.0.15 dedicated server (crossplay) with one client, on the same code as this release (commit 253f732; only documents changed after it). A deal that did not fit changed nothing; a deal made 218.6 m from the visit was refused; after the shelf rolled, the price he offered for a bought-out row read 28, which is base × SpreadBuy (40 × 0.7), where the old rule works out to 67 at that stock; a ShelfSize change made during a visit waited for the visit to end; a visit whose server stopped during the flight resumed after the restart and moved on to the ground phase (the client read visit Dropped #30); the in-visit cap held; and the terminal, buying, selling and barter worked as before. A delivery owed to a full pack survived a server restart and landed exactly once. Not tried in game: the distance check on a listen host, a trade between two players, a sale at the capped price after a shelf roll (the price was read, not sold at), the undo of a deal that fails part-way (only the off-game checks reach it), and a 0.1.4 client at a 0.1.5 server (that refusal is the version gate's, read from the code). 2589 off-game checks, 0 failed.

Fixes

  • A deal now lands in your pack whole or not at all. With more than one ware in YOU GET and room for only some of them, the pack used to take the first ware, give the coins back and keep the ware anyway, and cargo claim could then hand out that ware again for free. In the terminal, every line of a deal is now checked against your pack together before it is sent. Whichever way a deal arrives (the terminal, cargo deal or cargo claim), if the pack cannot take all of it, nothing changes: the server keeps the whole delivery for you until it fits (cargo claim).
  • You trade with Ingvar where he is. A deal (the terminal, or cargo deal) from more than 96 m from the visit is refused (in the terminal with his own line, in the console as too_far_to_trade), the same distance that already applied to sending him off. cargo terminal open from far away no longer holds him in place for the players who are with him.
  • No round trip across a shelf roll. With the rotating shelf (the default), a row bought out while it was on his shelf could be sold back to him after the shelf rolled at up to 2.1 × its base price. The Fair Market Act now covers every row while the shelf rotates, since every row is on his shelf in some period: he pays at most base × SpreadBuy for a row he is short of. An emptied row off the shelf still drifts back and is still shown among the goods he wants; what he charges does not change. With ShelfSize = 0 nothing changes.
  • No quick profit off a flooded shelf within a visit. A shelf row stocked to its maximum sells at about 0.68 × base, a little under what he pays for an emptied row (0.70 × base), so buying the whole row and selling it straight back made a few coins every time. Within a visit, he now never pays more for an item than the lowest price he sold it at that visit (the record is kept in memory, so a server restart mid-visit clears it). Prices for anything he did not just sell cheaply are unchanged. This rule and the shelf-roll rule above are both marked PROPOSED in docs/DECISIONS-WUBARRK.md §2, awaiting Wu'barrk's confirmation.
  • Changing ShelfSize during a visit waits for the visit to end, as its description always said. Switching the shelf on or off mid-visit used to change every row's kind at once.
  • A visit resumed after a restart during Ingvar's flight now moves on to the ground phase, so the visit's event area follows him again.

Build and docs

  • The DLL no longer carries the build machine's folder path (PR #103). Every DLL through 0.1.4 had the absolute path of its debug-symbol file written into it, and that path included the build machine's user name. The build now maps the repo's folder to a neutral /_/ in the DLL and its PDB alike, so neither names a local path. That change by itself does not change the compiled code; the fixes above do. A build still embeds the commit it was built from, so the DLL's md5 follows the commit, no longer the folder it was built in. This DLL was built from the commit tagged v0.1.5; the GitHub release names that commit and gives the DLL's md5.
  • The GitHub README has a "Support Raven Iron" section (PRs #101 and #102): the mods are free and stay free, and the section links the Raven Iron website, Patreon and the Discord. The README's line on what the store carries is brought up to date.

17 older entries, full version history & downloads →

Manual installation instructions
1

Install BepInExPack Valheim

BepInExPack Valheim is required to run mods in Valheim.

Download BepInExPack Valheim 5.4.2351 · View mod page

Check out the mod page for detailed installation instructions.

2

Install ValkyriesCargo

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

Download ValkyriesCargo 0.1.6

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