You are viewing a potentially older version of this package. View all versions.
lklrvd-EquivalentExchange-0.38.0 icon

EquivalentExchange

Total gameplay overhaul. Every item has an EMC value, and EMC becomes the universal currency: you craft, build, repair and travel by paying EMC instead of gathering and spending resources.

By lklrvd
Date uploaded 2 days ago
Version 0.38.0
Download link lklrvd-EquivalentExchange-0.38.0.zip
Downloads 14
Dependency string lklrvd-EquivalentExchange-0.38.0

README

EquivalentExchange

EquivalentExchange is a total gameplay overhaul for Valheim inspired by Minecraft's Equivalent Exchange. Every item has an EMC value, and EMC becomes the universal currency: you craft, build, repair and travel by paying EMC instead of gathering and spending resources.

Compatibility warning

This is not a small add-on. The mod rewrites the core economy — crafting costs, building costs, repairs, food upkeep, loot and portal travel. It is likely incompatible with other global overhaul mods that also change crafting, loot tables or progression, and combining them can cause broken prices, duplicated rewards or blocked recipes. Test on a backup world and use a clean mod profile, ideally with only cosmetic, UI or small quality-of-life mods.

What changes

  • Universal currency — item values are calculated from vanilla recipes and trade values; coins and valuables convert at their in-game price.
  • Crafting with EMC — the craft button is split in two: the vanilla one spends resources, the second one ("x1 (N EMC)") spends EMC and keeps the materials. Ingredients are still required — EMC pays for the craft, it does not replace materials.
  • Building with EMC — construction pieces are paid for with EMC instead of resources.
  • Repair with EMC — +1 durability for 1 EMC, applied automatically once per minute to the repair block and equipped gear.
  • Transmutation cell — three tabs under your inventory (Feed, Repair, EMC Extraction) slide out as 2×2 drawers with vanilla drag & drop, stack split and Ctrl-click quick move. Opening a tab closes an open chest, opening a chest retracts the drawers, and the chest panel sits below the tabs.
  • EMC on slots — while a block panel is open, items in your inventory, hotbar and the block grids show their remaining EMC value on the slot.
  • Food upkeep — the Feeding block consumes one food item per minute for 1 EMC, keeping vanilla food buffs running.
  • Portal travel — cost scales with distance and carried weight.
  • Mob loot — biome- and star-based chances for gear drops with partial durability.
  • Character-bound balance — EMC is stored on your character and shown in the inventory, HUD and console.
  • Localization — all player-facing texts follow the game language (English and Russian are bundled); switching the game language updates them on the fly.

Installation

  1. Install BepInExPack Valheim via your mod manager (Thunderstore/Hexium).
  2. Install EquivalentExchange with the same manager, or unpack the ZIP into BepInEx/plugins/EquivalentExchange/.
  3. For multiplayer, the mod is required on both client and server.

No additional libraries required.

Commands (F5)

Command Action
ee_balance Current EMC balance
ee_value <item> EMC value of an item
ee_value Full price registry
ee_inv EMC potential in your inventory
ee_sell <item> Convert inventory items into EMC
ee_buy <item> <N> Buy items with EMC (disabled by default)
ee_add <N> Add EMC (requires cheats)

Configuration

BepInEx/config/equivalentexchange.cfg — coin exchange rate, portal prices, drop chances, repair price and custom EMC values for individual items.

CHANGELOG

0.49.0

  • Meads and barley wine are now priced automatically: potion EMC = mead base EMC / fermenter output (rounded up — same policy as multi-output recipes). Pairs are read from the Fermenter's conversion list, so new meads and modded fermenters are picked up without a hardcoded table. CustomValues on a potion still win; a manual price on the mead base is automatically split by the output count. Meads with no priced mead base are skipped with a one-time warning.

0.48.0

  • Soul orbs now float above water: if a mob dies in or over water (sea serpents, drowning mobs, anything over ocean, lakes or rivers), the orb snaps to the water surface — with waves — instead of hanging underwater or at the raw death point, like vanilla items floating on water. Land behavior is unchanged: the orb snaps to ground only when the ground is close below the death spot (falls into ravines keep the death position). Tar is not water — no floating over tar pits. The snap is done once by the mob's ZDO owner, so every player sees the orb in the same place.

0.47.0

  • Gear loot now drops on any death and is shared: the drop no longer needs a local player, so dedicated servers spawn it too (the mob's ZDO owner spawns exactly one item). The item is a vanilla networked ItemDrop — every player sees it and its light beam, and whoever picks it up first keeps it.
  • The recipe gate is now world-wide: an item drops if its recipe is known by at least one player in the world, not just the mob's owner. New config entry Drops.RequireKnownRecipe (default true) — set it to false to drop gear without any recipe check, exactly like soul orbs.
  • Chance math moved to Core/DropChance (clamped 0..1, stars can not lower it) with unit tests. Diagnostics: one-shot warnings when the biome could not be resolved or no player is available for the recipe check.

0.46.0

  • Soul orbs drop on any death: the last-attacker gate is gone, so fall damage, fire, poison, other mobs and tamed creatures produce orbs too.
  • Orbs are shared: every player with the mod sees them, and the first player to pick one up gets the EMC. The spawning peer (the mob's ZDO owner — the host in co-op, the server on dedicated) is the authority: it keeps the ledger and resolves pickup claims, so simultaneous pickups can never double-credit.
  • Orbs stay client-side visuals (no ZDO, no prefab registration). Peers exchange hello/spawn/claim/grant/gone RPCs; players without the mod are never sent anything. Late joiners receive a snapshot of the orbs already on the ground.
  • Saturation now applies to the collector: the orb carries the full price, the picking player's family heat cuts it and is recorded on pickup.
  • Dedicated servers need the mod server-side to spawn orbs (the server owns mobs); co-op works with the mod on host and clients.

0.45.0

  • The Repair block is twice as fast: it repairs one random damaged item every 30 seconds instead of every minute. Cost per cycle is unchanged (+1% durability for 1% of the intact item's EMC value, min 1 EMC), so repair throughput doubles and EMC spending per minute doubles with it.
  • The EMC extraction message now shows the item's localized name (like the repair message) instead of the raw prefab name.
  • The Repair block now charges only for the durability actually restored: the final cycle that tops off a partial percent pays proportionally (e.g. 0.4% of the item's value for 0.4% durability) instead of the full 1% as before. Full cycles cost the same as always; the 1 EMC per-cycle minimum stays.
  • Upgrades now require a fully repaired item. Vanilla restores durability to full on upgrade, which bypassed the paid repair loop (a damaged sword could be "repaired" for the price of one upgrade level). Damaged items are simply not shown in the upgrade list anymore — each damaged entry is removed from the recipe list before sorting, layout and auto-selection, so a damaged copy can not even be selected (repaired copies of the same item stay listed). The rule is still enforced at three points as a safety net — button state, craft start (covers both buttons) and every craft frame — so an item damaged mid-upgrade (e.g. equipped armor takes a hit) cancels the craft and refunds prepaid EMC. Items without durability are unaffected; Free Build / NoCraftCost / cheats behave like vanilla. The full-repair check uses the same 0.01 tolerance as the Repair block, so an item the block considers repaired always passes.

0.44.0

  • Floating balance deltas above the HUD EMC pill: every income/spend pops a number above the plate — green "+N" for gains, red "−N" for costs — that rises and fades out (~1.8 s, ease-out pop with a slight overshoot). Rapid same-sign changes merge into one growing number (orb pickups after a big fight, extraction ticks); every number spawns at a random spot along the pill's width and all rise to the same small height. Numbers that do not fit wait in a queue and pop as soon as a column frees — up to 4 at once, never overlapping. The numbers are children of the pill, so they hide with the whole HUD (menu, map) and on death, and are cleared on world re-entry.
  • Driven by a new PlayerEmcData.BalanceChanged event, so every transaction is covered: soul orbs, selling/extraction, crafting, building, repair, feeding, fuel, portals and console commands. Loading/migration does not fire it.
  • New config section Hud: FloatNumbers (default true) toggles the pop-ups, FloatNumberSeconds (default 1.8, clamped 0.5–6) sets their lifetime. Cached like the rest of the config, re-read via ee_config.

0.43.0

  • EMC from combat: mobs drop soul orbs at the death spot; picking one up adds its EMC to the balance (combat income must be picked up by hand, it does not tick in by itself). Orbs are purely client-side — other players do not see them, and they vanish on world exit, so nothing can be stockpiled in the save.
  • Orb price per mob: hand-balanced table (regular mob ≈ 0.5–1% of its tier's gear cost, elites ×2–3, bosses by their trophy price: Eikthyr 256 … Fader 8192), biome-tier fallback for unknown prefabs (unknown names are logged once per name), and Souls.MobValues config overrides on top (Troll=40;Wolf=0 — zero disables the mob). Stars and Multiplier scale the price; saturation cuts the value of farmed orbs, not the drop itself.
  • Anti-farm saturation ("heat"): killing the same mob family too fast lowers the value of the dropped orb — the orb itself always drops (BaseChancePercent is a flat chance, saturation does not touch it). 8 free kills per family at full price, then ~75%/50%/35% of the price at 12/20/30 in a row, floor 20% (HeatFreeKills, HeatSoftness, HeatHalfLifeSeconds, MinValuePercent). Half-life is 2 minutes, and the state persists per character (EEV_KillHeat in the character file) — relogging does not reset it. Alternating mob variants does not help: variants share a family (Draugr_Ranged → Draugr, GoblinArcher → Goblin).
  • Bosses always drop a larger orb (about 2.3× the normal one) and are never saturated.
  • Orb logistics: 120 s lifetime with fade-out, magnet pull from 4 m, pickup at 1.5 m, same-color orbs within 2 m merge (big orb after big fights), max 40 orbs in the world — the excess value flows into the nearest orb.
  • The orb gate is the last attacker (Character.m_lastHit → HitData.GetAttacker()), not ZDO ownership, so orbs work on dedicated servers (each orb spawns on the killer's client). The gear drop still uses the old ownership gate.
  • New console command ee_souls: active orbs and their total, saturation (heat and price multiplier) per family, and the full mob price table with sources.
  • New config section Souls (16 entries): Enabled, BaseChancePercent, MinValuePercent, LifetimeSeconds, MaxOrbs, MergeRadius, PickupRadius, MagnetRadius, IncludeTamed, Messages, HeatFreeKills, HeatSoftness, HeatHalfLifeSeconds, StarBonusPercent, Multiplier, MobValues. All values are cached and re-read via ee_config.

0.42.0

  • EMC balance is now shown in the HUD as a gold-framed pill with the EMC crystal, right above the Forsaken Power slot. The number is always full and unabbreviated (no k/m/b — visible down to 1 EMC); the plate resizes to fit. It is bound to the power slot's position, so it stays in place even when no power is selected; it hides together with the whole HUD (map, menu) and on death.
  • Config is read once: all settings are cached when bound and re-read only when they actually change (BepInEx SettingChanged/ConfigReloaded events), instead of polling .Value every frame, hover hint or hit. Durability tuning no longer rescans the whole ObjectDB every 5 seconds — the item list is scanned only when the item database changes, and GetComponent runs once per item per database lifetime.
  • Durability wear defaults raised from 25% to 50% of vanilla (UseDrainPercent, PassiveDrainPercent, ArmorDamagePercent). Existing config files keep their old values; the new defaults apply to fresh configs.
  • New console command ee_config: reloads the config file from disk and refreshes the cached values (handy when editing the .cfg by hand mid-game).

0.41.0

  • Fuel paid with EMC: when there is no fuel in the inventory, fuel consumers (smelter, blast furnace, coal kiln, spinning wheel, campfire, fire pit, torch) accept EMC instead, priced at the registry price of one fuel unit. The device hover hint warns that the next contribution will spend EMC. Toggled by the new Fuel.Enabled config entry (default on).

  • Building for resources is now a toggle, not a held key: pressing Ctrl while the hammer build menu is active switches between paying EMC (default) and paying vanilla resources; pressing it again switches back. The current mode is shown next to the piece name (EMC price) plus a HUD message on each switch; EMC price turns red when the balance is insufficient. The mode resets to EMC whenever the hammer is re-equipped (after death, menu or another item), on character change and on world re-entry, so Ctrl-quick-move in the inventory is unaffected (the toggle only works while build input is active).

0.40.0

  • Ground item light beams are dimmer by default and now tunable: new Drops.BeamOpacityPercent (default 10, previously a fixed 50% opacity) controls beam transparency — lower is fainter, 0 hides the beams entirely. Applied at game start.

  • New Durability config section slows gear wear without touching max durability, so EMC prices, saves and drop durability ranges are unaffected: UseDrainPercent scales per-hit/block/use drain (weapons, tools, shields), PassiveDrainPercent scales the passive drain of equipped items (torches etc.), ArmorDamagePercent scales armor durability loss from incoming damage. All three default to 25, so gear wears 4× slower out of the box; 0 disables the corresponding wear. Drain fields are scaled on item prefabs from a captured baseline, so re-entering a world or changing the config at runtime never compounds the multiplier. Armor loss is reduced by returning a share of the drained durability (hook on Player.DamageArmorDurability, local player only).

  • Gear repair reworked: the cell's Repair block now repairs one random damaged item per minute, restoring 1% of its max durability for 1% of the intact item's EMC value (registry + upgrade value, rounded up, minimum 1 EMC). Equipped gear is no longer auto-repaired — put it into the block. Items without a registry price are skipped.

  • Full repair now costs about the item's full value, closing the "repair for 1 EMC, sell at full price" arbitrage.

0.39.0

  • Ground gear markers are now vertical light beams (Epic Loot style) instead of recolored sparkles. The beam is fully procedural (crossed quads + gradient texture, material copied from the item's stock sparkle material — no asset bundles), colored in the neon biome hue, stays upright even when the item lies on its side, follows the item and disappears on pickup. Vanilla gold sparkles are no longer touched. Same coverage (any durability item in the world) and the same toggle: Drops.GroundParticles.
  • Beams are semi-transparent and spin slowly around the vertical axis (~18 s per revolution, random phase per drop). Biome hues are spread across the color wheel (at least 30° apart) so neighboring biomes no longer look alike: Meadows green, BlackForest emerald, Swamp acid lime, Mountain ice cyan, Plains amber, Ocean deep blue, Mistlands violet, AshLands red, DeepNorth aurora magenta.
  • Beam color is tied to the item's own biome tier (its loot pool), not the biome it lies in: a bronze sword glows BlackForest emerald even in Meadows. Items shared by several pools use the earliest tier; items outside the drop pools (tools etc.) fall back to the local biome color.

0.38.0

  • The transmutation cell no longer opens as a chest panel. Three tabs now sit at the bottom edge of the player inventory: Feed, Repair and EMC Extraction.
  • Clicking a tab slides its panel out from under the inventory edge like a drawer. The tab button sits inside the panel background at the bottom; while retracted, only the button and a strip of the background peek out from under the inventory border, the rest stays masked. The panel's top edge stays hidden under that border when expanded too. Clicking again (or opening another tab) slides it back. Tabs show the number of stored stacks in the block color and have tooltips.
  • The vanilla chest panel is pushed below the tab strip so it never covers the tabs. Opening a tab closes an open chest; opening a chest retracts any expanded block panel.
  • Panel grids are clones of the vanilla container grid wired to the vanilla InventoryGui handlers, so drag & drop, click transfer, stack split and item tooltips behave exactly like vanilla. Vanilla cancels the item on the cursor every frame when no chest is open and the item is not from the player inventory; that cancel is now bypassed for items taken from a block, which is what makes drag & drop and shift-click split work in the tabs. The cell no longer poses as a chest (IsContainerOpen/TakeAll/StackAll/ContainerWeight patches removed).
  • Panels reuse the vanilla container background (cloned frame and sunken area) and contain only the block grid — no buttons or EMC text inside. EMC slot labels appear on the inventory, hotbar and inside the block grids while any block panel is open.
  • Ctrl-click quick move routes to the open block when the item fits it, otherwise to EMC Extraction; Ctrl-click inside a block returns the item. The EMC stat box is now display-only.
  • Save format unchanged (v3): the three 2×2 blocks map to save columns 0–1 / 2–3 / 4–5, old saves (v1/v2/legacy) migrate as before. Cell weight still counts toward carry weight and portal price; feeding, repair and extraction timers are unchanged and still not saved.

0.37.1

  • Removed the mod's own eev_loot_vfx particle system entirely. Ground items now keep Valheim's stock sparkles — the mod only recolors them in the biome color by changing the root ParticleSystem's Start Color.
  • Shape, size, rotation, velocity, emission rate, lifetime and the shared item_particle material are untouched, so the sparkles look and move exactly like the vanilla ones.
  • Start Color is now a single color (gradient mode Color) instead of vanilla's random TwoColors range: no pearlescent shimmer between shades and no whitened variant. The biome hue is kept but forced to saturation 0.9 and value 1 in HSV, giving vivid neon tones (e.g. BlackForest #19FF19, Ocean #19FFFF, Mistlands #8219FF). Pale biomes such as DeepNorth no longer read as white; dark ones such as Swamp stay bright without any glow. No HDR is used since the translucent item_particle material would clip it back to white.
  • Drops.GroundParticles now toggles the recolor instead of spawning extra particles (off = plain vanilla gold); no new config options are needed.

0.37.0

  • English localization of every player-facing string: the language is taken from the game settings (Russian game — Russian strings, any other — English).
  • Localized console command replies (ee_add, ee_balance, ee_buy, ee_sell, ee_spend, ee_inv, ee_missing, ee_trinkets, ee_value), transmutation errors, HUD messages (crafting, building, repair, feeding, portals), the portal hover hint, cell block headers ("Feed"/"Repair"/ "EMC Extraction"), the cell container name and craft button labels ("x1 (N EMC)" with a Latin "x").
  • Changing the game language in the settings is picked up on the fly (checked every 5 s): command descriptions, block headers and the cell name are updated.
  • BepInEx logs, config option descriptions and exception messages remain in Russian (developer-facing texts, not shown to the player).

0.36.0

  • The craft button is split in two: the vanilla "x1" spends resources only, the new "x1 (N EMC)" spends EMC only. No more implicit substitution of costs.
  • Button labels show the craft count: "x1"/"x5" on the vanilla button and "x1 (N EMC)"/"x5 (N EMC)" on the EMC button; the EMC button has no tooltip.
  • The EMC button is disabled when EMC is insufficient (price shown in red) and when ingredients or a station are missing; hidden while crafting, in Free Build and with NoCraftCost.
  • EMC crafting is impossible without ingredients: checked on click, on charge and when the craft completes; removing the ingredients during the craft cancels it and refunds the EMC.
  • The EMC prepayment is refunded not only on "Cancel"/closing the window, but also when the craft disappears (death, teleport, vanilla timer reset).

0.35.0

  • The transmutation cell is organized into three blocks: Feeding, Repair, EMC Extraction.
  • Feeding is now driven by food from the cell block instead of the deer cape: one unit of food is consumed per minute for 1 EMC.
  • Automatic gear repair moved into the transmutation cell timer.
  • Removed the knowledge system, the ee_knowledge command and item study requirements.
  • Passive cycle timers are no longer saved between sessions; the cell serialization format is v3.
  • The coin icon in the UI is replaced with a desaturated crystal with color synchronization.
  • Fixed the inventory grid layout for a closed cell.

0.34.0

  • Repair and conversion slots added to the transmutation cell (the left 2×2 square).
  • The passive cycle split into repair and feeding; saving timers removed.

0.33.2

  • Building prices are shown in red when EMC is insufficient.

0.33.1

  • EMC crafting is charged immediately on pressing "Craft", with a refund on cancel and on closing the window.
  • The price in parentheses is shown in red when EMC is insufficient.