Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
HaldorOverhaul
Transforms Haldor into a full merchant with buy/sell panels, 580+ items, recipe-based pricing, search filters, category tabs, and full controller support.
| Date uploaded | 5 months ago |
| Version | 1.0.8 |
| Download link | ProfMags-HaldorOverhaul-1.0.8.zip |
| Downloads | 112 |
| Dependency string | ProfMags-HaldorOverhaul-1.0.8 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2200ValheimModding-JsonDotNET
Shared version 13.0.3 of Json.NET from Newtonsoft, net45 package for use in Valheim mods. Maintained by the ValheimModding team.
Preferred version: 13.0.4README
🛒 Haldor Trading Overhaul
Transform Haldor into the ultimate merchant with full buy/sell functionality
580+ Items · Recipe-Based Pricing · Full Controller Support
Features · Installation · Configuration · Pricing · Troubleshooting
✨ 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 | Visual Item Icons | D-Pad Navigation |
| Boss Progression | 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
| LB / RB | D-Pad / Stick | X | A | B |
|---|---|---|---|---|
| Switch Panels | Navigate Items | Toggle Category | Buy / Sell | Close UI |
📋 Requirements
| Requirement | Version | Notes |
|---|---|---|
| Valheim | Latest | PC Version |
| BepInEx | 5.4.2200+ | Download Here |
| JsonDotNET | 13.0.4 | Download Here |
| CurrencyPocket | 1.0.12+ | Download Here |
📦 Installation
| Step | Action |
|---|---|
| 1 | Install BepInEx for Valheim |
| 2 | Download the latest release |
| 3 | Extract to BepInEx/plugins/HaldorOverhaul/ |
| 4 | Move config files to BepInEx/config/ |
| 5 | Launch Valheim and enjoy! |
💡 Config files included! Just move
HaldorOverhaul.haldor.buy.jsonandHaldorOverhaul.haldor.sell.jsonto your config folder, or rungenerate.pyto create custom configs.
📁 File Structure
BepInEx/
├── plugins/
│ └── HaldorOverhaul/
│ ├── HaldorOverhaul.dll
│ ├── manifest.json
│ └── README.md
└── config/
├── HaldorOverhaul.haldor.buy.json
└── HaldorOverhaul.haldor.sell.json
⚙️ Configuration
| Config 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 |
|---|---|
| Eikthyr | defeated_eikthyr |
| The Elder | defeated_gdking |
| Bonemass | defeated_bonemass |
| Moder | defeated_dragon |
| Yagluth | defeated_goblinking |
| The Queen | defeated_queen |
| Fader | defeated_fader |
💰 Pricing System
Biome Multipliers
| Biome | Mult | Boss Required |
|---|---|---|
| Meadows | 1.5x | — |
| Black Forest | 2.75x | Eikthyr |
| Swamp | 4.5x | The Elder |
| Mountain | 7.5x | Bonemass |
| Plains | 12x | Moder |
| Mistlands | 20x | Yagluth |
| Ashlands | 32x | The Queen |
| Deep North | 50x | Fader |
📊 Category Multipliers
| Category | Mult | Category | Mult |
|---|---|---|---|
| Weapons | Materials | ||
| Two-Handed | 1.3x | Common | 0.8x |
| One-Handed | 1.0x | Rare | 1.5x |
| Staves | 1.35x | Boss Drops | 2.5x |
| Crossbows | 1.25x | ||
| Bows | 1.1x | Trophies | |
| Boss | 3.0x | ||
| Armor | Rare | 1.3x | |
| Heavy | 1.35x | Common | 0.9x |
| Light | 1.2x | ||
| Capes | 0.85x | Other | |
| Shields | 0.9x | Keys | 2.0x |
| Tools | 0.8x | ||
| Consumables | Cosmetic | 0.7x | |
| Cooked | 1.0x | ||
| Raw | 0.7x | ||
| Meads | 1.2x | ||
| Ammo | 1.0x |
💎 Rarity Overrides
| Item | Mult | Item | 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
| Setting | Value |
|---|---|
| Sell Ratio | 30% of buy price |
| Craft Markup | 15% on crafted items |
| Min Price | 5 coins |
| Max Price | 99,999 coins |
📊 Sample Prices
Materials
| 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 |
Weapons
| Weapon | Buy | Biome |
|---|---|---|
| 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 |
🔧 Price Generator
python generate.py # Default - Steam config folder
python generate.py "C:\custom\path" # Custom output directory
🔄 How It Works
| Stage | Description |
|---|---|
| Data Sources | Fetches from Jotunn Item & Recipe lists |
| Raw Materials | base × biome × category × rarity |
| Crafted Items | ingredients × markup × biome × category × rarity |
| Output | buy.json (579 items) + sell.json (593 items) |
🎨 Customization
Adding Items
'ItemPrefab': (Biome.TIER, base_price, stack_size, sell_only),
Excluding Items
HILDA_EXCLUSIVES = {'ArmorDress1', 'ArmorTunic1'}
EXCLUDED_PATTERNS = [r'^Bow_projectile', r'^fx_']
Adjusting Prices
SELL_MULTIPLIER = 0.30
CRAFTING_MARKUP = 1.15
CATEGORY_MULTIPLIERS = {'weapon_2h': 1.3}
RARITY_OVERRIDES = {'Chain': 1.8}
🔍 Troubleshooting
| Issue | Solutions |
|---|---|
| Items not appearing | Check item_prefab name · Verify boss defeated · Validate JSON syntax |
| Wrong prices | Re-run generate.py · Check ITEM_DATABASE · Verify ingredients |
| Script errors | Install Python 3.x · Check internet connection · Try custom path |
🙏 Credits
This is my first Valheim mod! I really hope people enjoy it.
| Inspiration | Data Source | Recommended |
|---|---|---|
| shudnal's TradersExtended | Jotunn Library | Azumatt's CurrencyPocket |
📬 Contact
Made with ❤️ for the Valheim community
CHANGELOG
Changelog
1.0.19
- Added shared bank balance sync with HildirOverhaul (both traders now read/write the same bank balance)
- Internal bank persistence now migrates and mirrors legacy Haldor/Hildir keys into a shared key
1.0.18
- Fixed custom trader UI so it only applies to Haldor
- Other traders (Hildir and modded NPCs) now use the vanilla
StoreGui - Improved compatibility with mods that add their own traders
1.0.17
- Improved trader UI layout and visual polish
1.0.16
- Removed boss progression gates from treasure sell items (
Amber,AmberPearl,Ruby,SilverNecklace,GoldRuby) - Players can now sell treasure to Haldor at any point in progression
1.0.15
- Added custom UI sprites for search bar and category buttons (
SearchBarBackground.png,CategoryBackground.png) - Fixed item category classification to use enum comparison instead of string matching
- Fixed panel tinting so panels use a clean grey tint instead of brownish sprite-based coloring
- Fixed TMP font warnings by deferring TextMeshProUGUI initialization until a font is assigned
- Updated category button icons (bronze axe, troll leather helmet, wooden shield, stamina mead, bronze)
- Added a grey tint overlay on the Buy/Sell action button to match panel styling
1.0.14
- Added BowsBeforeHoes mod support
- Added 10 BowsBeforeHoes items to buy/sell configs (3 bows, 4 quivers, 3 arrows) with recipe-based pricing
- Doubled list panel scroll speed
1.0.13
- Fixed standalone bank UI cursor being locked when opened with the Z key
- Fixed bank UI registration so it behaves as a store UI (camera and input now work correctly)
- Removed Z key shortcut for bank; bank access now happens through the trader UI
- Added full controller support to the standalone bank panel
1.0.12
- Bug fixes and stability improvements
1.0.11
- Removed CurrencyPocket dependency requirement
1.0.10
- Bug fixes and internal maintenance updates
1.0.9
- Added Haldor's Bank system; bank balance funds purchases and selling deposits directly into the bank
- Added Bank tab to the trader UI and a standalone bank panel (Z key)
- Added
setbankbalanceconsole command (fixed registration so it now works in-game) - Reverted bank panel to a clean text layout
- Additional bug fixes and performance improvements
1.0.8
- Fixed controller navigation issues with item list scrolling and selection highlighting
- Fixed controller inability to select category headers for expand/collapse
- Fixed scroll position not resetting when switching tabs
- Fixed multiple UI bugs and layout issues
- Suppressed Haldor talk bubbles while the trading UI is open
- Added
setcoinsconsole command for testing - Updated UI design
1.0.7
- Updated trader UI visuals
- Bug fixes and interaction improvements
1.0.6
- Updated UI design
- Updated price generator script
- Updated config files
- Various bug fixes
1.0.5
- Added JsonDotNET and CurrencyPocket as required dependencies
1.0.4
- Updated dependency configuration and packaging metadata
1.0.3
- Added capes to the buy menu
1.0.2
- Documentation updates in
README.md
1.0.1
- Documentation updates in
README.md
1.0.0
- Initial release