kpttr-Valheim_Ascended icon

Valheim Ascended

A comprehensive RPG overhaul for Valheim. Classes, talent trees, abilities, enchanting, smithing, and milestones.

By kpttr

CHANGELOG

0.3.0 — 2026-05-13

Phase 2 of the difficulty system. Phase 1 changed how stars spawned, this one changes what stars actually do, in two pieces. Per-star stat scaling so a 4-star is mechanically distinct from a 1-star instead of just a 5× HP sponge. Per-star passive affixes so there is an added layer of depth instead of just 'more hp more damage'. Defaults aim for "noticeably more dangerous, not just spongier" This is just mainly the pipeline with 9 sample affixes for the star system. I have plans to flesh this out more fully later on.

On top of the star system im still working on some QoL and polish shit. Abilities now damage structures, pvp still isnt here but its in my brain. I also started the pipeline for implementing Set Bonuses, right now Vangaurd sete for warrior actually works, just so i could prove to myself that the system was working, none of the other sets do anything, its just all visual still, the pipeline is set up for me to flesh it out though. Ontop of that just a lot of little things and playing through and fixing stuff. If you notice something please feel free to let me know.

New Features

  • Per-star passive affixes — Every starred mob rolls passive affixes equal to its star count (1-star = 1 affix, 4-star = 4) drawn from a pool of nine. Names appear on the nameplate in color-coded text — "Brawny ⋅ Swift ⋅ Enraged" reads at a glance and tells you what you're walking into. Player-side debuffs also appear in your HUD debuff row with icons; mob-side states show on the mob's nameplate. Starred mobs from existing saves automatically get their affixes rolled on first load.

    • Brawny — +50% max HP, visibly larger
    • Swift — +30% movement speed
    • Regenerative — heals 5 HP/s after 5 seconds without taking damage
    • Enraged — drops below 40% HP, gains +50% outgoing damage for 8 seconds (once per life)
    • Hardened — takes 30% less blunt / slash / pierce damage
    • Warded — takes 30% less fire / frost / lightning damage
    • Hopeless — aura: heals on you within 10m are 30% weaker
    • Chilling Aura — aura: you move 30% slower within 10m
    • Mending Aura — aura: heals same-faction allies within 10m for 2 HP/s
  • Per-star stat scaling — Vanilla's flat per-star HP and damage curves are replaced with config-tunable multiplier tables. Defaults: HP at [1.0, 1.75, 2.5, 3.25, 4.0] for 0–4 stars (gentler than vanilla at low stars, ceiling at 4× rather than vanilla's 5×), damage at [1.0, 1.4, 1.75, 2.1, 2.5] (a touch under vanilla at 1-star, then climbs past where vanilla could ever reach). World-level HP multipliers still stack on top. Pre-placed dungeon mobs (Sunken Crypt Draugr Elites, Frost Cave Cultists, etc.) all scale correctly. Stagger threshold auto-scales with HP so a 4-star is correspondingly harder to stagger. Player stats are untouched.

  • New [Difficulty.StarScaling] config section — 11 new entries in valheimascended.difficulty.cfg: master enable toggle, five HpMul*Star values, five DmgMul*Star values. All tunable independently. Sits alongside the existing Phase 1 [Difficulty.StarSpawns] and [Difficulty.StarSpawns.TrophyGate] sections — same file, no new files. Known limitation: changing the multipliers mid-session only affects freshly-spawned creatures; existing loaded creatures keep their old values until their chunk reloads (vanilla architecture, not in scope to fix this phase).

  • Abilities now damage structures — every VA damaging ability used to only hit mobs and silently pass through walls, gates, trees, and rocks in its path. Vanilla weapon attacks damage these via Valheim's IDestructible interface; abilities never did. The whole ability damage pipeline was rebuilt around a centralized helper so that 30+ damaging abilities now hit structures the same way they hit mobs. Covers the full roster: melee AoE bursts (Whirlwind, Ground Slam, Holy Strike, Consecration, Eruption, Meteor, Combustion, Sanctified Barrage, Absolution, Divine Judgement, Blazing Smite, Frozen Grasp, Frost Nova, and more), persistent zones (Flame Wall, Blizzard, Lightning Storm, Eruption Mastery burning ground, Disengage spike field), projectiles (Multishot, Rain of Arrows, Piercing Shot, Arcane Bolt, Rime Lance, Glacial Spike, Fire Bolt, Lightning Bolt, Ball Lightning), and capstones. No friendly-build protection — vanilla doesn't shield your own builds from your own attacks and VA doesn't either. Each structure's vanilla damage-type resistances still apply (wood eats fire, stone shrugs off frost, etc.), so different ability elements break different materials at different rates exactly like vanilla weapons.

  • Projectiles now stop at the first thing they hit — Mage bolts, Multishot/Rain of Arrows, Glacial Spike, Arcane Bolt, etc. now detonate or stop on impact with walls instead of clipping invisibly through them. Closest IDestructible (mob OR structure) in proximity gets the hit. Matches vanilla arrow-on-wall behavior. Piercing Shot is the only exception by design — it now passes through structures the same way it pierces through enemies (unlimited pass-through, cross-tick dedup so each wall takes one hit per arrow rather than ticking every frame). Ball Lightning's arcing phase also picks closest, so the orb strikes a nearby wall instead of skipping past it to an enemy further away.

  • Lightning Bolt reworked to pure aim raycast — auto-acquisition is gone. The bolt now strikes literally what your reticle is on, mob or wall, with no cone-scan and no "almost on the target" forgiveness. Camera-origin raycast so hit detection matches what you see behind the crosshair (a hand-relative ray would clip walls invisible from the camera's POV). Visual lightning still arcs from your hand to the camera-targeted endpoint. The result is a precision tool — you can clear an obstructing wall with the same ability you fight mobs with, but you have to actually aim. Also fixed the underlying ability path: the old projectile-style code for Lightning Bolt was dead code that never ran, leaving the real hitscan path unwidened. That's now corrected.

  • Lightning Storm strikes structures in its zone — the random per-tick strike now treats walls, gates, and trees as valid targets alongside mobs. Drop the storm on a base and the storm helps tear the building down. Mob kills still drop the storm cooldown by 3s; structure kills don't grant the cooldown bonus (storm's a battle ability, not a siege tool, but it's incidentally useful for both now).

  • In-dungeon nameplate scanning — enemy HP bars now behave differently inside dungeons (Burial Chambers, Sunken Crypts, Mountain Caves, Frost Caves, Troll Caves, Goblin Camp interiors). Default state inside a dungeon is no nameplates visible — you have to aim at a mob to reveal it. Reveal mechanism is a wide-ish aim cone (~10°, generous enough that you don't have to be pixel-perfect) plus a line-of-sight check, so walls and closed doors block the reveal. Open doors and gates pass through naturally since vanilla disables their colliders when open. Once you've revealed a mob you can look away — its nameplate stays visible for 25 seconds without re-acquiring, or until the mob is 20m+ away, or until it dies, or until you leave the dungeon. The intent is tactical exploration in dungeons: you can sense something nearby but can't read its HP/state until you actually look at it, then you can fight while glancing around without the nameplate flickering off the moment your reticle drifts. Outside dungeons nothing changes — overworld nameplates work exactly as before. Party members and tames bypass the override and stay visible normally regardless of where you are. No new config entries; the cone width and reveal duration are tunable in code if playtest wants tweaks.

  • Smithing set forging is now functional — the smithing panel's Set Forging tab used to stamp items with a set tag that did nothing in gameplay. Forging now actually works. Drop one or more armor pieces into the slots, pick a set, click Forge — the materials are consumed and each piece is tagged with its new set. Mixed loadouts resolve correctly: three forged Vanguard pieces plus one un-forged Bronze count as "3 Vanguard + 1 Bronze," not double-active sets. Already-forged pieces dropped back into the panel are skipped in the cost calc and the stamping pass, so you can re-use the panel as a viewer without double-paying. Tooltips on every armor piece (vanilla or forged) now show a Set section with active/inactive bonus tiers, the N/max equipped count, and an "Originally: <vanilla set>" line for forged items so you can see what a piece used to be. The panel itself shows a live preview of which tiers would activate as you drag pieces in. Only Vanguard (Warrior, 2pc/4pc) currently has gameplay-functional bonuses wired — the other nine placeholder sets are inert until they're properly redesigned with their actual content. Vanilla sets (Troll Leather sneak, Bronze armor bonus, Wolf armor frost-resist, etc.) all keep working exactly as before — they're now routed through the same pipeline as forged sets, which is also why the previous double-dipping bug (where mixing one forged Bronze piece with two un-forged Bronze pieces let both sets' bonuses apply) is gone.

Refinements

  • Q now unequips a torch before sheathing your weapon — with a 1H weapon + torch equipped, you used to have to open the inventory panel and right-click the torch to drop just it. Pressing Q now intercepts the sheathe: first press returns the torch to inventory and keeps your weapon drawn, second press performs the normal sheathe. With just a torch equipped, Q removes it and leaves both hands empty. No torch equipped — Q behaves exactly as before. Saves the inventory-opening dance mid-fight.

  • Abilities no longer fire while the map or pause menu is open — pressing G/H/B with the map open used to still trigger abilities behind the UI; same for Mage LMB-attack. Both are now blocked alongside the existing inventory / chat / console / build-mode guards.

Bug Fixes

  • Lone torch no longer renders in both hands — equipping a torch with no other weapon used to draw the torch model on both hands simultaneously. Vanilla Valheim's EquipItem torch case puts the torch in two hand fields at once when its "1H + torch" precondition isn't met (and the lone-torch case is the common one) — the same item reference winds up bound to both left and right hands, and the renderer obediently draws it twice. VA's equipment panel always routed torches to offhand correctly, so panel-drag equips were fine, but any other equip path (inventory right-click, picking up a torch into empty hands, etc.) hit the broken vanilla path. Now corrected by a postfix that detects the duplicated reference (or the simpler "torch in right-hand only" case) and rebinds the torch to the left hand only, re-running equipment setup so animation state and mesh visibility refresh. Edge case where the offhand already holds a shield is intentionally left alone — that's a separate vanilla quirk where the shield wins the offhand slot, and untangling it would require its own design pass.

  • Multiplayer boss kill credit now reliably goes to all participating players — in multiplayer, only one player in the party would receive talent points from a boss kill; the other got nothing regardless of who landed the killing blow or whose world was being played in. Root cause was in the fallback path that catches boss kills for clients that didn't run the boss AI (Valheim runs boss AI only on the zone owner, which is whichever client loaded the boss's zone first — not necessarily the world host). The fallback used a 50-meter proximity check at poll time to decide whether to award credit, but consumed its work-queue entry unconditionally even when the proximity check failed. Any non-zone-owner who was more than 50 m from the boss corpse at the exact half-second the poll fired (stepped back during a phase, fighting adds at the edge of the arena, just unlucky timing) lost the entry permanently and never got the points. Now the fallback awards purely on damage participation — if your client logged a hit on the boss and the boss is dead, you get credit regardless of where you happen to be at poll time. The proximity check stays in place for the orthogonal global-key path (which fires for any client without a damage track) so distant non-participants still don't get freebies. For anyone already softlocked by this bug: new console command va_recover_boss_keys scans every boss in your current world and retroactively grants talent points for any boss whose defeat is registered in the world but isn't on your personal record. Idempotent — running it twice won't double-award. Explicit-only so brand-new characters joining established worlds don't get a surprise windfall from bosses they never participated in.

  • Keybinds no longer silently fail when other keys are held — abilities (G/H/B), panel hotkeys (T/U/V/C/B/L/I/N/P), and Alt-quickslots (Z/X/C/Q/E for food and mead) used to refuse to fire if any modifier key was held alongside them. Pressing G to fire an ability while sprinting (Shift held) just did nothing. Root cause was BepInEx's default key-press check, which insists the held modifier set EXACTLY matches the bound shortcut — so a plain-G shortcut got rejected the moment Shift joined the picture, even though Shift had no semantic role for that binding. Replaced with a lenient check that mirrors vanilla's behavior: main key just pressed plus all CONFIGURED modifiers held, no enforcement against extra modifiers. Vanilla keys (Q sheathe, Tab inventory, etc.) were never affected by this and continue to work as before.

  • Keybind menu swap-prompt category boundaries fixed — the settings panel's "key already in use, swap?" dialog was using outdated category rules. Mod panel hotkeys (Talents, Class, Smithing, etc.) and Build-mode actions were being treated as if they conflicted with every other binding, prompting swap dialogs for combinations that don't actually clash at runtime (you can't open the talent panel while you're swinging a sword, so they can share a key). Conversely, Build-mode actions were silently overriding Movement keys with no prompt because the old logic exempted Build entirely. Conflict detection now follows the actual activity model: always-active categories (Movement, Combat, Mod abilities, UI, Misc, Camera) all conflict with each other; contextual categories (Build, Mod Panel toggles) only conflict with Movement (the one always-active thing that still runs while building or while a panel is open) and freely overlap with everything else. So you can bind a panel hotkey to a Combat key without a prompt, and rebind a Build action onto a Movement key with a proper swap prompt instead of a silent stomp.

  • Rebind capture no longer fires existing bindings mid-capture — pressing T to rebind also opened the Talents panel in the same frame because the panel-hotkey poller saw the press before the capture's commit fully cleared. The just-captured key is now suppressed across the full frame so downstream readers don't double-fire.

  • ESC during rebind cancels the rebind only, settings panel stays open — single ESC used to close both because vanilla's inventory close-on-ESC ran the same frame as our cancel. ESC is now intercepted while capture is active: first press cancels the rebind, second press closes settings as normal.

  • Same-category keybind conflicts prompt swap correctly — two panel hotkeys (or two Build actions) on the same key were briefly allowed to coexist after the conflict-matrix rewrite, so pressing that key tried to fire both. Same-category bindings now always flag as conflicts.

  • Mouse buttons blocked from keybind capture — a misclick during rebind (typically on the swap dialog's No button) used to bind LMB or RMB as the new key, locking the player out of attack/block. LMB and RMB are now skipped by the capture loop. Middle mouse and side buttons remain valid binding choices.

  • Piercing Shot bow animation no longer drops mid-channel — channeling Piercing Shot used to snap the bow back to a neutral pose while the ability was still charging, even though the shot itself fired correctly. The draw pose now stays held for the full channel.

  • Wielding a bow correctly counts as "weapon out" — with the Require Weapon Out nameplate filter enabled, equipping a bow used to hide enemy nameplates as if you were unarmed. Bows, crossbows, shields, and offhand 1H weapons now register as drawn weapons the same way melee weapons in the right hand do. Holding a torch alone still doesn't count (utility item).

  • Bleed / burn / poison ticks no longer steal your target lock — locking onto one enemy and then applying bleeds (Rogue Bloodletter, Hunter Predator's Instinct), fires, or poisons to several others used to cause your lock bracket to bounce to whichever DoT'd target ticked most recently. Auto-lock-on-direct-hit still works as before; only the per-second DoT ticks are now correctly ignored.