You are viewing a potentially older version of this package. View all versions.
j1gA-WeaponArts-0.14.0 icon

WeaponArts

Active abilities keyed to the weapon in your hands: crits, bleed, poison, stagger, lifesteal, exposed targets, berserk, group heals and a tower-shield taunt. Players without the mod see the effects and get healed.

Date uploaded 2 weeks ago
Version 0.14.0
Download link j1gA-WeaponArts-0.14.0.zip
Downloads 108
Dependency string j1gA-WeaponArts-0.14.0

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

WeaponArts

Active abilities ("arts") keyed to the weapon in your hands. Press one key (default C) and the effect depends on what you hold:

Weapon Art Effect
2H sword Onslaught more damage for a window
1H sword Bloodthirst lifesteal from damage dealt
Battleaxe Berserk take less damage and regenerate HP
1H axe Bleed physical damage over time
1H spear Rend the target is exposed: more damage from every player
Pike Impale ignore resistances + extra damage
Atgeir Crushing every hit staggers (not bosses)
Knives Envenom strong poison on every hit
Fists Fury a critical hit on every blow
Bow Focus the next shots are critical
Crossbow Piercing Bolts bolts ignore resistances + extra damage
2H sledge Rally heal yourself and allies around
1H mace Mend heal allies around (the greydwarf shaman's green heal)
Staves Eitr Surge more magic damage
Tower shield Taunt pull the monsters around onto you and take less damage
  • Strength and duration grow with the weapon's tier and your weapon skill. Every art has its own cooldown plus a shared global cooldown.
  • Effects only ever touch creatures (PvP-safe); bosses take a reduced share and are immune to stagger.
  • Players without the mod see every effect (vanilla prefabs) and receive heals. With 09 Proxy enabled, a nearby modded player can also act for them: they use the /challenge emote or type art in chat.
  • The server's balance settings apply to every client with the mod.
  • English and Russian text (follows the game's language, or set 01 General > Language).
  • All settings live in BepInEx/config/j1ga.weaponarts.cfg; with BepInEx ConfigurationManager (F1) they apply in game without a restart.

Install on every player who wants the arts and on the host / dedicated server.

Source, full documentation and the changelog: https://github.com/tbsj1ga/WeaponArtsValheim

Developed with the help of an AI assistant (Claude by Anthropic); the design decisions, verification against the game code and in-game testing are the author's.

CHANGELOG

Changelog

English · Русский

The version is set in one place — WeaponArtsPlugin.Version in src/WeaponArtsPlugin.cs.

0.15.2

  • Fixed: a player without the mod holding a bow, a crossbow or another left-handed weapon got "no art for this weapon" from the proxy. The proxy looked only at the right hand; it now takes the left-hand weapon when the right hand has no art. A shield in the left hand still means the taunt.

0.15.1

  • Fixed: the label sat near the top of the screen. PositionY counts from the top again, as before 0.15.0; the default is now 0.81.

0.15.0 — The HUD label is part of the game's HUD

  • The art label (name, state, description) is now a uGUI object in the game's HUD (hudroot/WeaponArts) instead of IMGUI: it hides with the HUD (Ctrl+F3), scales with the UI and uses the game's font. HUD mods can move it — HudLayout picks it up by itself.
  • 08 HUD PositionX / PositionY / FontSize work as before (the label's anchor, top centre).

0.14.2 — Separate shaman visuals

  • ShamanHeal used to play two things at once: the shaman's heal (green flames around you) and the start effect of the shaman's attack (a green spray cast forward). They are now two visuals: ShamanHeal is only the heal, ShamanSpray only the spray.
  • New defaults: Rally (sledge) — ShamanHeal; Mend (mace) — ShamanSpray, still with the staff cast animation; taunt — the ward's transparent dome (fx_guardstone_activate) instead of the red forsaken-power flash.
  • Healed allies get the shaman's green heal flames at their feet (07 Art Effects > AllyHealVisual, on by default): before, only the caster showed an effect.
  • Mend (mace) is cast forward, like its spray: it heals the allies in a 90° cone up to 12 m in front of you (was 8 m all around); allies within 2 m count from any side. On activation the character turns to the camera, so the cone and the spray go where you look. 03 Arts - Mend > Angle (360 = all around, as before), Radius.
  • An existing config is updated once (01 General > ConfigVersion): only values still at the old defaults change, your own choices are kept.

0.14.1

  • Package page: a gallery of animations and screenshots, and a section with the author's other mods (icons, one line each, links). No code changes.

0.14.0 — English, publishing prep

  • All in-game text (HUD, messages, proxy chat lines, art names and descriptions) in English and Russian. 01 General > Language: Auto (follows the game's language), English, Russian; the setting is local and never taken from the server.
  • Documentation in English (README.md, CHANGELOG.md) with Russian copies (-RU.md), a Thunderstore README; code and build-script comments in English.
  • Icon 256×256.

0.13.3 — Cooldown in the HUD, balance

  • HUD: while the global cooldown runs, every weapon shows a grey "cooldown Xs" (the larger of its own and the global cooldown) instead of "ready".
  • Bow: x2.5, 3 shots. Fists: x2. 1H sword: 30% lifesteal. 1H axe: bleed 12/s for 6s. Berserk: fixed regeneration of 10 HP/s (no longer scaled by tier/skill), window 10s.
  • Debug log line for every Berserk regeneration tick.

0.13.2 — Green particles of the shaman heal

  • The shaman's heal attack has no effects of its own, so Mend fell back to the fx_guardstone_activate dome. Now the shaman's heal object itself (shaman_heal_aoe, taken from the attack's m_spawnOnTrigger) is spawned as a pure visual: networked, so everyone sees it, with every hit/damage/status switched off on the copy — it heals and hits nobody. Plus vfx_greydwarf_shaman_pray and sfx_greydwarf_shaman_heal if registered, and the AoE's hit effect on every healed player.
  • ShamanHeal can be set for Rally too: 07 Art Effects > HealVisual = ShamanHeal.

0.13.1 — Minimum window 6s

  • No art or taunt window is shorter than 6s: MinWindow in the code (clamped on activation, also for the proxy and for values from the server) and the lower bound in the config. Bleed, Envenom, Impale, Crushing: window 6s.

0.13.0 — Berserk, balance ×1.5, global cooldown 30s

  • Berserk (2H battleaxe): 12s window — damage taken −37.5% and 4.5 HP/s regeneration (both grow with tier/skill, reduction capped at 80%). For a player without the mod through the proxy: regeneration through RPC_Heal, the reduction applies to hits from monsters the provider owns.
  • Rend (exposed target) moved to the 1H spear; Pierce removed.
  • Crits (Fury, Focus) apply to every hit/shot in the window, sneak attacks included (stacking with the sneak bonus).
  • Balance: the bonus part of strength ×1.5, windows ×1.5, cooldowns ×1.2 (except heals, bleed, poison); taunt: reduction 37.5–67.5%, 6s, cooldown 48s. Bow 4 shots, crossbow 3, time cap 22.5s; proxy window for bow/crossbow 10s.
  • Global cooldown 30s after any activation (the taunt included): shown in the HUD, as a message on a weapon/shield swap and on an activation attempt.

0.12.0 — Second round of test fixes

  • Fixed: heals did not reach other players (Rally → vanilla players, Mend → modded players, lifesteal on a non-owner): the RPC Heal was invoked, the game registers RPC_Heal.
  • Mend (1H mace): its own visual — the greydwarf shaman's heal cast (its vanilla effects, on the caster and on every healed player) + the staff-of-protection cast animation. 07 Art Effects: MendVisual, MendAnimation.
  • Crushing (atgeir): every hit on a non-boss in the window is a guaranteed stagger (m_staggerMultiplier ≥ 100 → the game staggers at once). Before, the stagger-damage multiplier did not break the threshold of heavy monsters. Window 3s.
  • Creatures have 0 armor in Valheim (Character.GetBodyArmor is always 0) — "armor ignore" did nothing. Pierce/Impale/Piercing Bolts now ignore a share of resistances (not immunities) + DamageBonus (+15%). The GetBodyArmor patch is gone, HitData.ApplyResistance is patched instead.
  • Rend (battleaxe) → "Exposed": hits in the window mark the target (ZDO) for ExposeSeconds (8s), it takes +20% damage from every player, vanilla ones included.
  • Focus/Piercing Bolts: the art lasts N shots (Shots: bow 3, crossbow 2), the window is a 15s cap; after the last shot 2.5s for the arrows in flight. The HUD shows the shots left. For a player without the mod (proxy) — a plain 6s window.
  • Strength scaling: Magnitude is now the minimum (skill 0, weakest weapon), on top TierPowerBonus (+25% at top tier) and SkillPowerBonus (+25% at skill 100). Before, the bonus was halved at a low tier (Onslaught 1.35 → effectively 1.17).
  • Crit does not stack with a sneak attack — the game's 5-minute timer (m_backstabTime) is checked: on an unalerted monster (or a test dummy) the crit now works, except on the hit that really got the sneak bonus.
  • Damage debug log: with 01 General > Debug every hit under an art logs the damage before/after, the multiplier, HP lost, exposure and stagger.

0.11.0 — In-game test fixes

  • Fixed: Focus (bow) and Fury (fists) did nothing. The "no crit on top of a sneak attack" check looked at m_backstabBonus, and the game sets it on EVERY hit (it is the weapon's multiplier) — the crit was always dropped. Now the condition is the game's: weapon bonus > 1 AND the target's AI is not alerted.
  • Activation while other keys are held (moving, blocking): KeyboardShortcut.IsDown() required no other key to be down; now only the key and its modifiers are checked.
  • HUD: above the stamina bar by default (PositionY 0.76), position and font in 08 HUD; hidden in the menu (Esc), on the map, in chat/console, on pause, with the UI hidden, in build mode and cutscenes; a shadow for readability.
  • Countdown of the active window in the HUD ("active 3.2s"), the duration in the activation message.
  • Activation effects for every art (07 Art Effects: Sound Perfect/None, Visual, a separate HealVisual for heals); for the proxy too.

0.10.0 — Taunt activation effects

  • Effects ported from ShieldTaunt: sound and visual on taunt, vanilla prefabs only (clients without the mod see them too). Config 06 Taunt Effects: Sound (Block/Perfect/None), Visual (None/GuardianPower/a prefab name: fx_eikthyr_stomp, fx_Adrenaline1, fx_guardstone_activate, vfx_perfectblock, fx_gjall_taunt). Works through the proxy too.

0.9.0 — Physical bleed

  • Bleed (1H axe) is now its own physical ticking DoT (ArtKind.Bleed), not poison: registered on the target's owner, ticks physical damage once a second, bypasses armor (like poison), computed by the owner, the attacker is kept for credit. The tick is flagged so it does not recurse through RPC_Damage. Separate from the knives' poison (Envenom). Config 05 Bleed: BleedSeconds, TickInterval.

0.8.0 — True armor ignore

  • Pierce/Rend/Impale/Piercing Bolts reduce the target's armor instead of multiplying damage: a new ArtKind.Pierce, a static pen flag for the duration of the hit, a Character.GetBodyArmor postfix multiplies the armor by (1 - share). Superseded in 0.12.0 (creatures have no armor).

0.7.0 — Polish (part)

  • Crits (Fury/Focus) do not stack with a sneak attack (m_backstabBonus check).
  • Taunt: Blocking skill gain per pulled monster; straight charge (monsters come straight instead of circling); multi-tank arbitration through ZDO marks (holdby/until/since) — two modded tanks do not fight over monsters, the later activation wins.
  • Postponed (needs testing/tuning): true armor ignore, physical bleed, taunt activation effects, flail registration (confirm the flail's skill type in game).

0.6.0 — Settings window (ConfigurationManager)

  • Settings apply in game without a restart: the mod reads the values at activation and caches nothing, so edits from BepInEx ConfigurationManager (window on F1) take effect at once. Documented in the README; no hard dependency added.

0.5.0 — Config sync with the host

  • The server sends its balance settings to every client with the mod (on connect and on change), the client applies them through the Sv/Sb/Ss resolvers while connected. Everything is synced except the proxy section (client behaviour) and local pacing (cooldowns/costs/global cooldown). A generic packet of every ConfigEntry (float/bool/string). Key 10 Sync > SyncConfig (on by default).
  • Patches ZNet.Awake (RPC registration), RPC_PeerInfo (send after login), OnDestroy (reset).

0.4.0 — Proxy for a player without the mod

  • Default art key — C.
  • Arts for a player WITHOUT the mod: triggered by a vanilla emote (/challenge) or a chat word; a provider (the nearest modded player, Nearby mode, works on a dedicated server too) reads the weapon/shield from their ZDO, picks the art (taunt with a tower shield has priority) and applies it: window arts through the proxy table in RPC_Damage, the taunt as holding monsters on them + reduction in Character.Damage, heals instantly.
  • Scaled by SkillForModless + the tier from the ZDO; own cooldown (×CooldownFactor).
  • Chat feedback: activation, "ready" after the cooldown, a query word (art?).
  • A mod mark in the ZDO (modded players are not taunted for).

0.3.0 — Tower-shield taunt ported

  • The taunt as the tower shield's art, priority over the 1H weapon's art: shield detection (Tower/AnyShield/None by m_timedBlockBonus), claiming monsters in the radius (ClaimOwnership), forcing the target onto the tank through reflection on MonsterAI fields, holding it with a MonsterAI.UpdateTarget postfix, damage reduction in Character.RPC_Damage. Scaling (reduction from the shield's block power, duration from Blocking with a +50% cap).
  • The HUD shows Taunt (active/cooldown/ready) when a shield is equipped.

0.2.0 — Heals, AoE burst, eitr surge

  • Rally (2H sledge) and Mend (1H mace) — AoE heal with a random roll random(lo, hi), the range grows with weapon tier and skill; Rally heals yourself + allies, Mend only allies; delivered through RPC_Heal (reaches vanilla allies too).
  • Eitr surge (elemental and blood staves) — more magic damage for a window, costs eitr.
  • AoE burst (kind implemented): instant damage to creatures around through Character.Damage(HitData). The flail (Whirlwind) is not registered — the flail's skillType has to be confirmed in game.

0.1.0 — Skeleton and combat arts

  • The art is chosen by the equipped weapon (skillType + 1H/2H), one key.
  • Own cooldown per art + a global cooldown (against weapon-swap abuse); stamina/eitr cost; strength and duration scale with weapon tier and skill (duration capped at +50%).
  • One path: on activation the player writes the art (id/expiry on server time/power) into their ZDO; a Character.RPC_Damage patch on the target's owner applies it.
  • Implemented: Onslaught, Rend, Pierce, Impale, Fury, Focus, Piercing Bolts (damage multiplier); Bleed, Envenom (poison DoT); Crushing (stagger); Bloodthirst (lifesteal).
  • Balance: effects on creatures only (PvP-safe), ×BossEffectFactor on bosses, bosses are immune to stagger.
  • HUD at the bottom of the screen (name + description + ready/cooldown); console weaponarts.
  • Build build.ps1, check check-refs.ps1.