You are viewing a potentially older version of this package. View all versions.
sighsorry-Valheim_Enchantment_System-1.9.13 icon

Valheim Enchantment System

Mod brings old MMORPG's equipment enchantment experience to Valheim

Date uploaded a month ago
Version 1.9.13
Download link sighsorry-Valheim_Enchantment_System-1.9.13.zip
Downloads 39
Dependency string sighsorry-Valheim_Enchantment_System-1.9.13

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2350

README

Uploaded a temporal fix with original author's approvement

AI did all the fix so support can be limited.

Guides and description here: https://kg.sayless.eu/ves/

Original: https://thunderstore.io/c/valheim/p/KGvalheim/Valheim_Enchantment_System/ Like the mod? Support original author please: [email protected] (Paypal)

Enchantment skill EXP

Enchanting grants EXP based on the attempted enchantment level and the item's base success chance, not the scroll tier. The server-synchronized settings appear under 4 - Skill in Configuration Manager. In the cfg file:

[Enchantment]
Enchant Skill EXP Base = 2
Enchant Skill EXP Per Level = 0.5
Enchant Skill EXP Difficulty Bonus = 4
FailedEnchantSkillExpMultiplier = 0.5

Success EXP = Base + Per Level × (target enchant level − 1) + Difficulty Bonus × (1 − base success chance / 100).

  • The target is the level being attempted, before success or failure changes the item. For +9 → +10 with a 50% base chance, the defaults grant 8.5 EXP on success or 4.25 EXP on failure.
  • The base chance comes from the item's YAML chance settings, including overrides, clamped to 0–100%. Skill and blessed-scroll bonuses do not reduce EXP.
  • Attempts with a final success chance of 0% still follow the normal consumption/failure rules but grant no EXP. A 0% base chance can grant EXP when skill or blessed bonuses make the final chance positive.
  • Failure EXP uses the configured failure multiplier. Skill Gain Factor applies afterward to both success and failure EXP.
  • Set all three EXP settings to 0 to disable EXP from enchanting. The old Enchant Skill EXP F through S settings are no longer used; any leftover entries in an existing cfg can be removed.
  • Consumable skill scrolls retain their separate tier-based Skill Scroll EXP F through S settings in Configuration Manager.

AzuCraftyBoxes: enchantment scrolls from normal containers

When AzuCraftyBoxes is installed and enabled, enchanting can use normal or blessed requirement scrolls from eligible nearby standard Container inventories. The player's own inventory is used first. The enchantment panel includes only usable external scrolls in its material count, and checks the source again when the animation finishes. No new configuration is required and AzuCraftyBoxes is an optional dependency; without it, enchanting remains inventory-only.

  • Uses AzuCraftyBoxes' current pulling toggle, range, YAML restrictions, access/ward checks, and Leave One Item setting. The reserved last item is excluded from the displayed available count.
  • Supports its normal-container registry, including mod-added chests using the same standard inventory system. ItemDrawers, backpack/gem-bag integration sources, tombstones, and containers in use by another player are not used.
  • The target equipment must still be in the player's inventory. EXP-scroll consumption and scroll combining are unchanged.
  • A missing/changed integration API safely disables external sources. A confirmed one-item removal and container save must finish before the enchantment roll and skill EXP are applied.
  • Container writes follow AzuCraftyBoxes' normal replicated-container behavior, not a new server reservation protocol. This does not add atomic cross-client transactions; avoid simultaneous use of the same chest's last scroll from multiple clients.

Scroll combining

The server-synchronized Combine Mode setting under 5 - Scrolls controls both availability and the required shape:

[Scrolls]
Combine Mode = Cross5
  • Off: disable combining, inventory combine indicators, and combine tooltips.
  • Row3 (Three in a row): arrange three matching scrolls horizontally and right-click the center.
  • Cross5 (Five in a cross, default): arrange five matching scrolls in a cross and right-click the center.

The former Allow Combine and Required Shape cfg entries are not read or migrated. Set Combine Mode explicitly if you want a mode other than the default Cross5; leftover old entries may be removed.

Notifications and client settings

Notification events are always enabled. The server validates and relays accepted events without applying a minimum level to the relay. Webhook delivery and each client's in-game display have independent minimum levels (both default to 6):

[Notifications]
Webhook Minimum Enchant Level = 6
Success Webhooks =
Failure Webhooks =

[Client]
Notifications - Minimum Enchant Level = 6
Notifications - Filter = Success
  • 1 - General contains the webhook minimum and the comma-separated Success/Failure Webhooks lists. Only the dedicated server or local host's values are used for webhook delivery; these values are not synchronized to clients. Empty URL lists disable webhook delivery.
  • 2 - Client contains the in-game notification minimum (integer range 0–100) and filter. These values affect only this client's display and never suppress events sent to the server, other players, or webhooks. The local host can choose a different minimum for its own screen and webhooks. Set the filter to None to hide in-game notifications. The separate webhook minimum retains its 0–500 range.
  • Minimum levels use the resulting enchantment level; destruction uses the level before destruction. For example, a minimum of 6 includes success from +5 to +6, but excludes a failed decrease from +6 to +5.
  • In-game notifications always last 5 seconds. The former enable switch, shared minimum-level setting, and notification duration setting are no longer read or migrated. Existing sender validation and request rate limits remain in effect.
  • The enchantment panel is always draggable by its title. Right-click the title to reset its position. Offset X/Y entries remain in the local cfg for persistence and direct editing but are hidden in Configuration Manager. The former draggable switch is no longer used.
  • Main particle brightness is fixed at its former default of 1.5. The old MainVFXParticleBrightness cfg entry is no longer used. Weapon/armor VFX toggles, main light intensity, main tint intensity, and armor tint intensity remain configurable.

Configuration Manager sections are now 1 - General, 2 - Client, 3 - Enchantment, 4 - Skill, 5 - Scrolls, 6 - Biome Tiers, and 7 - Scroll Recipes. Display categories are separate from cfg storage sections; scroll recipes continue using the existing [8 - Scroll Recipes] cfg section so saved recipe values are retained without migration.

Explicit category priorities keep these sections in numbered order in ConfigManager, independent of the order settings were registered. Each section's existing option order is unchanged.

Enchantment menu shortcut

The shortcuts under 2 - Client are local settings and are not synchronized with the server. In the cfg file:

[Client]
UI - Keyboard Shortcut = Y
UI - Gamepad Shortcut = JoyButtonY
UI - Gamepad Shortcut Modifier = JoyLBumper
  • With the inventory closed, press keyboard Y, or hold controller LB and press Y, to open both the inventory and the enchantment panel. With the inventory already open, the same shortcut toggles only the enchantment panel. Neither shortcut requires focus on the repair/crafting gamepad group.
  • Set the keyboard shortcut to None to disable it. Modifier combinations such as Y + LeftControl are supported; unrelated held keys do not suppress the shortcut.
  • The gamepad shortcut has separate button and modifier settings. Set UI - Gamepad Shortcut to Disabled to disable it, or set only UI - Gamepad Shortcut Modifier to Disabled to use a single button. A single-button shortcut can conflict with normal game controls, so the default LB + Y is recommended. Y without LB retains its normal game behavior, including opening the inventory when assigned to it. Holding the shortcut does not repeatedly toggle the panel; release and press Y again for another toggle.
  • On activation, the gamepad combination suppresses its overlapping native input for that activation. An open radial menu is canceled without activating its selected item. LB pressed on its own retains its normal behavior; actions already triggered before Y is pressed cannot be undone. Avoid combinations assigned to other mods.
  • Text input, settings windows, menus, inventory dialogs, the large map, the store, the enchantment info panel, and dead/cutscene player states block the shortcuts. Blocked presses are not queued. After changing a binding, release the shortcut buttons before trying the new binding. Escape, Tab, Space, and Return already have panel actions, so avoid conflicting keyboard bindings.

The old [Client] UI - GamepadShortcut entry (without the space before Shortcut) is no longer read or migrated. The new gamepad entries default to LB + Y even if the old entry contains X; leftover old entries may be removed.

Hovering the enchantment button shows its name to the left, with a smaller second line such as “Press Y to open the panel”. The key name is orange; the rest of the second line is muted. The hint follows the configured shortcut and changes to “close” when the panel is open. Controller focus shows the configured gamepad combination instead, with both button names in orange. Disabling a shortcut hides its second line. English and Korean text are included.

Fixed upgrade and mirror behavior

Item quality upgrades always keep the existing enchantment. Jewelcrafting mirror copies never inherit enchantment; the original item's enchantment is unchanged. The former DropEnchantmentOnUpgrade and AllowJewelcraftingMirrorCopyEnchant options are no longer bound or displayed, and leftover cfg entries are ignored rather than migrated.

CHANGELOG

Changelog

1.9.18

  • Fixed the BepInEx startup dependency cycle when VES, Epic Loot and AzuCraftyBoxes are installed together by removing VES's unnecessary load-after requirement for AzuCraftyBoxes
  • Preserved optional AzuCraftyBoxes chest integration through its existing on-demand binding, including access checks, item filters, range and Leave One Item behavior
  • Added read-only refinement integration queries for an item's configured blessed scroll and enchantment information, allowing optional YourIdol integration without adding a required dependency
  • Added a regression check using the built DLL's dependency declarations and BepInEx's loader sorter, including reproduction of the old cyclic graph; actual game initialization and multiplayer remain separate validation steps

1.9.17

  • Fixed repeating crafting-tooltip NullReferenceExceptions when ObjectDB contains entries without ItemDrop, including the reported Hammer recipe path
  • Resolve recipe prefab identity through the game's shared-item-data index before falling back to a guarded name lookup, avoiding per-frame full-list scans for registered recipes and ambiguity between registered items with the same shared name
  • Prevent tooltip lookup failures from interrupting recipe-description updates and leaving the previous recipe's description visible
  • Consolidated identical stat lookup and level-definition checks while preserving override priority, defined-null entries, and the separate Enchanted overload's evaluation order
  • Removed the information panel's intermediate layout-component list copy while preserving the full disable-then-enable sequence
  • Verified Debug and Release compilation against original Valheim 1.0.12 assemblies; static client and dedicated-server contract checks do not replace in-game and multiplayer testing

1.9.16

  • Updated the mod for Valheim 1.0.7 using the original game assemblies, including current Harmony targets, private-member access, UI hooks, item serialization, crafting, inventory, equipment VFX, and optional-mod integration paths
  • Updated the embedded ServerSync baseline for Valheim 1.0.7 while preserving configuration locks, version checks, RPC identifiers, serialized formats, administrator checks, and peer initialization ordering
  • Added 15 progression materials to the default ResourceMap: WrithanRoots in Swamp, Hook in Mistlands, and 13 directly used Deep North materials; existing biome tiers, duplicate precedence, and explicit requirement priority remain unchanged
  • Added explicit S-tier armor requirements for ArmorDeepNorthHeavyChest, ArmorDeepNorthHeavylegs, and HelmetDNHeavy, whose Frost Foundry conversion path has no equipment recipe for automatic assignment
  • Prevented uncast Material items with weapon-like attack data from receiving automatic enchantment requirements, avoiding enchantment data loss during foundry conversion; explicit user requirements remain supported
  • Added deterministic ResourceMap and requirement-priority coverage plus client and dedicated-server metadata checks for Harmony bindings, game references, private accessors, and transpiler contracts
  • No configuration migration or legacy-game compatibility layer is included

1.9.15

  • Fixed stale equipped-enchantment stat snapshots after chest-supplied enchantments and enchantment commands
  • Hardened scroll combining with verified material consumption and output counts, including partial inventory merges and foreign item metadata; uncertain operations stop without automatic refunds or retries, and discarding unverified output can lose items
  • Fixed foreign item-data removal calling the wrong method and animation-speed handlers skipping additional priority groups
  • Simplified equipment VFX patch state, notification lifecycle resets, and requirements rebuild ownership while preserving configuration keys, save formats, public API signatures, and RPC names
  • Added regression coverage for partial consumption, output transfer failures, metadata handling, and reflection-based item-data removal
  • Added opt-in Debug deployment with DeployToGame=true, copying only the final merged plugin DLL after successful post-processing

1.9.14

  • Simplified the packaged README and cleaned up obsolete project content references
  • Refresh equipped-enchantment stat snapshots after enchantment level changes, including chest-supplied attempts and enchantment commands
  • Verify scroll-combine removals and inventory output transfers; stop on uncertain mutations and preserve confirmed untransferred output instead of trusting inventory return values alone
  • Simplified per-call equipment VFX patch state and separated notification client/server resets without changing RPC names or configuration keys
  • Consolidated requirements rebuild state and shared identical YAML file enumeration while preserving per-domain loading policies
  • Fixed foreign item-data removal dispatch and processing of multiple animation-speed priority groups

1.9.13

  • Added optional AzuCraftyBoxes support for normal and blessed enchantment scrolls in nearby standard containers, using inventory scrolls first and respecting pulling, range, access, item filters, and Leave One Item settings; special drawers and backpack/gem-bag sources are excluded
  • Added a configurable keyboard shortcut, default Y, and changed the default gamepad shortcut to LB + Y; either shortcut opens the inventory and enchantment panel together when the inventory is closed
  • Improved shortcut handling around text input, menus, and controller input conflicts, and added localized two-line hints to the left of the enchantment button with highlighted shortcut keys
  • Made the enchantment panel draggable by its title with a saved client-side position and right-click position reset; position offsets remain editable in the cfg but are hidden in Configuration Manager
  • Changed Enchantment Animation Duration to a 0-1 slider, with 0 applying the result immediately
  • Replaced tier-based enchanting EXP with configurable base EXP, enchantment-level scaling, and a base-success-chance difficulty bonus; failure EXP still uses its multiplier, while attempts with 0% final success chance grant no EXP
  • Added integer sliders from 0 to 100 for consumable Skill Scroll EXP F through S while retaining their separate tier-based EXP values
  • Combined scroll-combining options into one Combine Mode setting: Off, Row3 (three in a row), or Cross5 (five in a cross)
  • Separated server/host webhook minimum enchantment level from each client's in-game notification minimum, moved webhook settings to General, and made notifications always enabled with a fixed 5-second display duration; clients can still filter or hide in-game notifications
  • Reordered Configuration Manager sections to General, Client, Enchantment, Skill, Scrolls, Biome Tiers, and Scroll Recipes, with explicit priorities that preserve numbered display order
  • Fixed main particle brightness at 1.5, made item upgrades always preserve enchantments, and made Jewelcrafting mirror copies always omit enchantments; removed the corresponding configuration options
  • Clarified that Safety Level protects attempts based on the item's current enchantment level and does not guarantee a minimum retained level
  • Removed or renamed settings are not migrated; see the README for the current cfg keys and fixed behaviors

1.9.12

  • Updated Expand World Data integration for version 1.68 by using the current ReadConfigs reload hook, removing legacy FromFile compatibility, and eliminating repeated HarmonyX missing-method warnings

1.9.11

  • Fixed skill EXP scrolls not being consumed with the E interaction on dedicated servers while retaining server-side prefab, distance, and duplicate-consumption validation

1.9.10

  • Reorganized Configuration Manager settings into ordered General, Enchantment, Skill, Scrolls, Biome Tiers, Notifications, Client, and Scroll Recipes sections; scroll recipes now use the [8 - Scroll Recipes] cfg section and the old [Scroll Recipes] section is no longer read
  • Replaced the six fixed webhook slots with comma-separated Success Webhooks and Failure Webhooks lists supporting any number of unique server-only targets
  • Added resourcemap.yml to assign enchantment scroll requirements automatically from equipment crafting materials, with explicit EnchantmentReqs.yml entries taking priority
  • Integrated built-in and Expand World Data custom biome tiers with automatic resource-map rebuilding when tier mappings change
  • Grouped enchant skill EXP and skill-scroll drop/EXP settings together and hardened skill-scroll consumption with live-object and player-distance validation on the server
  • Hardened global notification requests by validating the sender, enchantable item, configured minimum level, and allowed enchantment result transition
  • Made chance, stat, and color YAML hot reloads atomic so an invalid base or override file cannot partially replace the active configuration
  • Fixed inventory enchant and scroll-combine overlays retaining stale or duplicate state between sessions, and prevented scroll inputs from being consumed when the output prefab is unavailable
  • Replaced reflection-based module autoloading with explicit dependency-aware initialization for more predictable startup and patch registration

1.9.9

  • Blood Magic summons now inherit the damage-percent enchantment bonus from the summoning weapon
  • Added StaffRedTroll and StaffSkeleton to the default enchantment requirements

1.9.8

  • Added configurable failed-enchant level loss
  • Added maxed-out UI for YAML-defined enchant caps
  • Added clearer failure chance details
  • Fixed enchant rolls to match the displayed two-decimal chance

1.9.7

  • Added controller support for enchant button

1.9.6

  • Added ZenUI compatibility for changing scroll recipes

1.9.5

  • Improved EnchantmentReqs.yml loading behavior
  • Duplicate item req entries no longer cause the entire reqs reload to fail; the first valid mapping is kept and a warning is logged
  • Invalid reqs files or files with duplicate YAML keys are now skipped individually, while remaining valid reqs continue to load

1.9.4

  • Fixed EnchantmentReqs not working
  • Organized recipe configs

1.9.3

  • Added hover text on enchantment UI for possibilities and stats
  • Fixed inventory visual VFX staying in the background
  • Restored crafting station animation
  • Refactored code

1.9.2

  • Fixed enchantment skill level being reset on dedicated servers
  • Changed default EXP and chance for skill scrolls

1.9.1

  • Fixed enchantment skill level being reset
  • Added config option for EXP earned through using scrolls per tier

1.9.0

  • Fixed VES not recognizing EWD biomes
  • Fixed skill scrolls not working on dedicated servers
  • Fixed some config section names falling back to localization tokens on some languages

1.8.9

  • Fixed error that occurs when Expand World Data is not installed
  • Fixed skill scrolls not working

1.8.8

  • Added EWD biome support
  • Added configs to adjust VFX

1.8.7

  • Fixed some VFX not showing sometimes
  • Removed duplicate config reload

1.8.6

  • Fixed scrolls not dropping according to the configured chance

1.8.5

  • Enabled blessed-scroll toggle even when success=0
  • Made default chance YAML always include success and destroy even when the chance is 0

1.8.4

  • Changed config structure
  • Prevented altering other PieceManager-using mods' config sections
  • Recommended regenerating config

1.8.3

  • Consolidated multiple config files into a single file
  • Simplified the format for EnchantmentReqs.yml
  • Added EnchantmentReqs.yml support for several mods
  • Note: You must regenerate your .cfg files and the BepInEx/config/ValheimEnchantmentSystem folder
  • Added Tier E scrolls (Swamp and Ocean biomes)
  • Added recipes to craft Blessed Scrolls using regular scrolls
  • Overhauled all scroll crafting recipes
  • Adjusted default enchantment success rates and equipment bonus stats
  • Separated upgrade success rates for armor and weapons
  • Improved scroll-related tooltips for items and within the UI
  • Enhanced ServerSync stability and performance
  • Resolved the error that happened when saving ItemStand with InfinityHammer
  • Made recipes align alphabetically on the crafting station

1.8.1

  • Temporary fix
  • Localization file in plugins folder
  • Manager update

1.7.4

  • Fix

1.7.3

  • Small HP regen bugfix

1.7.2

  • Fixed a bug where OK button in Vanilla Settings would not close the tab and save changes

1.7.1

  • Updated for new Valheim patch

1.7.0

  • Added new stats: max_hp, max_stamina, hp_regen, stamina_regen
  • Improved text visual clarity for some stats (%)

1.6.9

  • Ashlands update

1.6.8

  • New Valheim version update

1.6.5-1.6.7

  • Bug fixes

1.6.4

  • Removed wings and auras VFX. They will be added as a separate mod later
  • Fixed for new Valheim version

1.6.3

  • Bugfixes

1.6.2

  • Enchant button now always visible
  • Fixed a bug that was throwing errors when logging out / shutting down the game
  • Several UI QoL bugfixes

1.6.0

  • Added ItemFailureType option: LevelDecrease, Destroy, Combined
  • Changed the .yml structure of Chances. Success and optional destroy chances must now be specified for Combined mode

1.5.4

  • Added movement_speed enchant stat
  • Fixed AUGA compatibility issues

1.5.3

  • Enchant UI now shows enchantment chance, including skill level bonus
  • Added F tier scrolls for config use
  • Added scroll combination mechanic (5 or 3 scrolls into higher tier)
  • Note: Please remove EnchantmentReqs.yml and main config for a fresh renewal

1.5.2

  • Small UI fixes

1.5.1

  • Added world notifications for enchantment success/failure
  • Can be disabled globally server-side or locally in client settings

1.5.0

  • Changed UI visuals
  • Added inventory / hotbar UI VFX
  • Added Enchantment Settings tab to disable VFX
  • Added additional effects section to enchantment colors (wings + auras)
  • Bugfixes

1.4.5

  • Fixed FPS lag issues on servers with ServerCharacters
  • Info UI fixes

1.4.4

  • Added new stats: attack_speed and slash_wave
  • Added new Info UI showing item enchant stats and chances

1.4.2-1.4.3

  • Added new config to enable VFX for armors

1.4.1

  • Fixed a bug with incorrect player resistances

1.4.0

  • Added new skill: Enchantment, which increases success chance
  • Skill EXP can be gained from source orbs dropped by monsters with configurable low chance

1.3.5-1.3.6

  • Fixed enchantment bug with ItemStand items

1.3.4

  • Fixed localization issues

1.3.3

  • Added new enchantment modifiers to .yml (resistance_blunt, resistance_slash, etc.)

1.3.2

  • VFX now correctly applies to items with multiple mesh parts, such as crossbows and modded items

1.3.1

  • Fixed minor issue with UI updates when placing items in chests

1.3.0

  • Fixed incorrect tooltip values bug
  • Fixed incompatibility with Jewelcrafting and Extended inventory visual slots

1.2.0

  • Replaced Override .yml files to affect groups of items instead of individual items
  • Note: Please remove old Override_yml files so they can be recreated

1.1.0

  • Added 4 directories for Override and Requirements additional .yml files

1.0.0

  • Mod released