✨ Features
| 🛒 Trading |
🔍 Search |
📂 Categories |
🎮 Controller |
| Buy & Sell system |
Real-time filtering |
Organized browsing |
Full gamepad support |
| 580+ tradeable items |
Persistent focus |
Collapsible sections |
Seamless switching |
| JSON-driven configs |
Both panels supported |
Visual item icons |
D-Pad navigation |
| Boss progression gates |
Instant results |
Quick navigation |
All actions mapped |
| ⚙️ Technical |
💎 Balanced Economy |
| Reflection-based for update resilience |
Recipe-based pricing ensures fair values |
| No hard dependencies on internal types |
Biome-tier progression (Meadows → Ashlands) |
| Auto config generation on first run |
Category multipliers for item types |
| Hot-reloadable JSON configurations |
Rarity overrides for special items |
🎮 Controller Support
Full gamepad navigation with seamless keyboard/mouse switching
| LB / RB |
D-Pad / Stick |
X |
A |
B |
| Switch panels |
Navigate items |
Toggle category |
Buy / Sell |
Close UI |
📋 Requirements
| Requirement |
Version |
| Valheim |
Latest PC |
| BepInEx |
5.4.2200+ |
💡 Recommended: CurrencyPocket — Late-game items cost 50,000+ coins. This mod removes the 999 coin stack limit!
📦 Installation
| Step |
Action |
| 1 |
Install BepInEx for Valheim |
| 2 |
Download the latest release |
| 3 |
Extract to BepInEx/plugins/HaldorOverhaul/ |
| 4 |
Launch Valheim — configs generate automatically! |
BepInEx/
├── plugins/
│ └── HaldorOverhaul/
│ ├── HaldorOverhaul.dll
│ ├── manifest.json
│ └── README.md
└── config/
├── HaldorOverhaul.haldor.buy.json ← Items Haldor sells
└── HaldorOverhaul.haldor.sell.json ← Items you can sell
Pre-generated configs included! Ready to use out of the box. Use generate.py to customize.
⚙️ Configuration
Config File Locations
| File |
Purpose |
HaldorOverhaul.haldor.buy.json |
Items Haldor sells to you |
HaldorOverhaul.haldor.sell.json |
Items you can sell to Haldor |
Entry Format
{
"item_prefab": "SwordIron",
"item_quantity": 1,
"item_price": 4234,
"must_defeated_boss": "defeated_gdking"
}
| Field |
Description |
item_prefab |
Internal item name (must match exactly) |
item_quantity |
Stack size per transaction |
item_price |
Price in coins |
must_defeated_boss |
Boss key required (empty = always available) |
Boss Keys
| Boss |
Key |
Boss |
Key |
| Eikthyr |
defeated_eikthyr |
Yagluth |
defeated_goblinking |
| The Elder |
defeated_gdking |
The Queen |
defeated_queen |
| Bonemass |
defeated_bonemass |
Fader |
defeated_fader |
| Moder |
defeated_dragon |
|
|
💰 Pricing System
Biome Multipliers
Items scale in price based on their biome tier
| Biome |
Mult |
Boss Required |
Example Items |
| Meadows |
1.5x |
— |
Wood, Flint, Leather |
| Black Forest |
2.75x |
Eikthyr |
Bronze, Core Wood, Troll Hide |
| Swamp |
4.5x |
The Elder |
Iron, Chain, Guck |
| Mountain |
7.5x |
Bonemass |
Silver, Wolf Pelt, Dragon Tears |
| Plains |
12x |
Moder |
Black Metal, Lox Pelt, Barley |
| Mistlands |
20x |
Yagluth |
Eitr, Black Core, Carapace |
| Ashlands |
32x |
The Queen |
Flametal, Charred Bone, Sulfur |
| Deep North |
50x |
Fader |
Future content |
Category Multipliers
| Weapons |
Mult |
Armor |
Mult |
Consumables |
Mult |
| Two-Handed |
1.3x |
Heavy |
1.35x |
Cooked Food |
1.0x |
| One-Handed |
1.0x |
Light |
1.2x |
Raw Food |
0.7x |
| Staves |
1.35x |
Capes |
0.85x |
Meads |
1.2x |
| Crossbows |
1.25x |
Shields |
0.9x |
Ammo |
1.0x |
| Bows |
1.1x |
|
|
|
|
| Materials |
Mult |
Trophies |
Mult |
Other |
Mult |
| Common |
0.8x |
Boss |
3.0x |
Keys |
2.0x |
| Rare |
1.5x |
Rare |
1.3x |
Tools |
0.8x |
| Boss Drops |
2.5x |
Common |
0.9x |
Cosmetic |
0.7x |
Rarity Overrides
Special multipliers for particularly rare items
| Boss Drops |
Mult |
Rare Materials |
Mult |
| HardAntler |
2.0x |
Chain |
1.8x |
| CryptKey |
2.2x |
SurtlingCore |
1.6x |
| Wishbone |
2.0x |
Ectoplasm |
1.4x |
| DragonTear |
2.0x |
BlackCore |
1.7x |
| DragonEgg |
2.5x |
Eitr |
1.8x |
Key Constants
| Sell Ratio |
Craft Markup |
Min Price |
Max Price |
| 30% of buy |
15% on crafted |
5 coins |
99,999 coins |
📊 Sample Prices
Materials by Tier
| Material |
Buy |
Sell |
Biome |
| Wood |
5 |
1 |
Meadows |
| Bronze |
105 |
31 |
Black Forest |
| Iron |
144 |
43 |
Swamp |
| Silver |
180 |
54 |
Mountain |
| Black Metal |
336 |
100 |
Plains |
| Eitr |
3,510 |
1,053 |
Mistlands |
| Flametal |
972 |
291 |
Ashlands |
Weapon Progression
| Weapon |
Buy |
Tier |
| Flint Axe |
54 |
Meadows |
| Bronze Sword |
676 |
Black Forest |
| Iron Sword |
4,234 |
Swamp |
| Silver Sword |
12,232 |
Mountain |
| Blackmetal Sword |
10,920 |
Plains |
| Mistwalker |
31,220 |
Mistlands |
| THSwordSlayer |
67,891 |
Ashlands |
Boss Drops
| Item |
Price |
Unlocks After |
| Hard Antler |
600 |
Always |
| Swamp Key |
1,331 |
Eikthyr |
| Wishbone |
3,375 |
The Elder |
| Dragon Tear |
4,500 |
Bonemass |
🔧 Price Generator Script
The included generate.py auto-generates balanced configs from live Jotunn data
Usage
# Default — outputs to Steam Valheim config folder
python generate.py
# Custom output directory
python generate.py "C:\path\to\output"
# Using environment variable
set HALDOR_CONFIG_PATH=C:\custom\path
python generate.py
How It Works
┌─────────────────────────────────────────────────────────────────────────────┐
│ DATA SOURCES │
├─────────────────────────────────────────────────────────────────────────────┤
│ Jotunn Item List ──────► Parse HTML ──────► Raw Items │
│ Jotunn Recipe List ────► Parse HTML ──────► Recipes │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ PRICE CALCULATION │
├─────────────────────────────────────────────────────────────────────────────┤
│ RAW MATERIALS: base_price × biome × category × rarity │
│ CRAFTABLE ITEMS: ingredient_cost × markup × biome × category × rarity │
│ FINAL: max(base_price, recipe_price) │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ OUTPUT FILES │
├─────────────────────────────────────────────────────────────────────────────┤
│ HaldorOverhaul.haldor.buy.json (579 buyable items) │
│ HaldorOverhaul.haldor.sell.json (593 sellable items) │
└─────────────────────────────────────────────────────────────────────────────┘
Output Location Priority
| Priority |
Location |
| 1 |
Command-line argument |
| 2 |
HALDOR_CONFIG_PATH environment variable |
| 3 |
Default Steam path |
| 4 |
Local ./output folder |
🎨 Customization
Adding New Items
In generate.py, find ITEM_DATABASE:
'ItemPrefab': (Biome.TIER, base_price, stack_size, sell_only),
Excluding Items
# Hilda-exclusive items
HILDA_EXCLUSIVES = {'CapeDeerHide', 'CapeTrollHide', ...}
# Pattern exclusions
EXCLUDED_PATTERNS = [r'^Bow_projectile', r'^fx_', ...]
Adjusting Prices
# Global adjustments
SELL_MULTIPLIER = 0.30 # Change sell ratio
CRAFTING_MARKUP = 1.15 # Change crafting fee
# Biome multipliers in Biome enum
MEADOWS = ("Meadows", 1.5, "", 1) # (name, mult, boss_key, order)
# Category multipliers
CATEGORY_MULTIPLIERS = {'weapon_2h': 1.3, 'weapon_1h': 1.0, ...}
# Rarity overrides for specific items
RARITY_OVERRIDES = {'Chain': 1.8, 'Eitr': 1.8, ...}
🔍 Troubleshooting
| Issue |
Solution |
| Items not appearing |
Verify item_prefab matches exactly |
| Items not appearing |
Check boss has been defeated |
| Items not appearing |
Validate JSON syntax |
| Prices seem wrong |
Re-run generate.py to regenerate |
| Prices seem wrong |
Check NAME_TO_PREFAB mapping |
| Prices seem wrong |
Verify item is in ITEM_DATABASE |
| Script errors |
Ensure Python 3.x is installed |
| Script errors |
Check internet connection |
| Script errors |
Try custom output path |
Validation Warnings
The generator automatically warns about:
| Warning |
Meaning |
| Price inversions |
Higher-tier item cheaper than lower-tier |
| Suspiciously cheap |
High-tier item under 10 coins |
| Very expensive |
Item over 50,000 coins |
📜 Version History
🙏 Credits
This is my first Valheim mod! I really hope people enjoy it.
📬 Contact

Made with ❤️ for the Valheim community