You are viewing a potentially older version of this package. View all versions.
Ezomic-Skaft-1.1.0 icon

Skaft

Hammer repair reaches further the higher your Crafting skill.

Date uploaded 21 hours ago
Version 1.1.0
Download link Ezomic-Skaft-1.1.0.zip
Downloads 238
Dependency string Ezomic-Skaft-1.1.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 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.2333

README

Skaft

Repairing with the hammer also repairs what is around it, and how far that reaches is your Crafting skill.

Skaft is the Old Norse word for the shaft of a tool, the part you hold. The shaft is what decides how far the head reaches, and it is the part that wears out in your hand.

Why

Area repair is one of the most installed things in Valheim and the reason is fair: walking a longhouse wall by wall after a troll has been through it is tedious rather than interesting. The problem with the versions on offer is not the radius. It is that the radius is a config entry. You install the mod, you type a number, and maintenance is over for the rest of the save.

This one hands out the same convenience and makes it something the character earned. A fresh character gets vanilla repair, one piece per swing, and cannot tell the mod is installed. The reach opens as Crafting rises, and it is worth having by the time the base is worth defending.

It also never makes repairing free. Every piece the sweep touches is charged exactly the stamina, eitr and hammer wear that repairing it by hand would have cost. So there are two limits doing two different jobs: the skill decides how far you can reach, and your stamina bar decides how much of that you can afford in one swing. A wide reach on an empty bar fixes nothing.

The obvious alternative was to scale the cost down as the skill rises instead. It was rejected for the same reason as the config number: it ends at maintenance being free, and a mod that deletes a system is a different mod from one that makes it quicker.

Using it

Take out the hammer, pick Repair, and hit something broken. Everything within reach that is also damaged gets repaired, nearest first, until your stamina or your hammer runs out.

The count appears in the usual corner message, as Repaired Wood wall x13. That number is the only readout worth having, because it answers the question you actually asked.

Your current reach is written on the Repair entry in the build menu, in metres, beside the Crafting level it came from.

Point at something broken. The sweep only runs when the piece under your cursor was itself repaired by the swing. Hovering an intact wall next to a damaged one does nothing, and a second click within a second does nothing, because the game holds each piece on a one second repair cooldown of its own.

That rule is not a limitation that got left in. It is what lets the mod inherit every check the game already makes on a repair: build mode, the crafting station a piece needs, wards, and whatever a future update adds. The alternative was to copy those checks into the mod and maintain the copies.

What it does not do

It does not train Crafting. Repairing a building has never given skill in this game, and adding it would mean the reward feeding the skill that grants it. Crafting is earned at the bench and spent at the wall.

It does not repair anything the hammer could not repair by hand. Other people's buildings, yes, exactly as vanilla does, and wards are the permission system in both cases. Things that are not build pieces, no.

It does not break your hammer. Repairing subtracts durability without checking zero, so a wide sweep could spend a whole hammer on one press and unequip it mid job. The sweep stops a point short instead, and ordinary swinging still wears the hammer out the normal way.

Installing

Needs BepInEx and nothing else. By hand, put Skaft.dll in BepInEx/plugins/Skaft/.

Start the game once and quit if you want the config file to edit. It does not exist until the mod has loaded once, which is the usual reason people think a setting is missing.

Settings

The file is BepInEx/config/ezomic.valheim.skaft.cfg. Every setting has a comment above it, so the file explains itself. The two worth knowing about are FullLevel, the Crafting level where the reach stops growing, and CostMultiplier, which is the price per piece and is set to match vanilla exactly.

Changing a default in a new version does nothing on a machine that has already run the mod. BepInEx writes every entry on first run and the saved value wins.

Multiplayer

The host needs it. Clients without it are let in and are unaffected, because they simply repair one piece at a swing. Nothing this mod does leaves the machine except the repair message the game would have sent anyway, and there is no prefab, no item change and no saved value of its own, so a world built with Skaft is an ordinary world.

If Core is installed, the host's curve applies to everyone connected, in memory only, and your own config file comes back the moment you disconnect. That is the half of it worth having on a server: without it, the reach is an agreement between players rather than a property of the world, and anyone can set their own radius to a hundred.

On a Core server it goes on the server too, or on nobody. Skaft registers with Core's gate as host-only, which is why a client without it is let in. The reverse does not follow, and the difference is worth knowing before you install this on a character that plays somewhere else. Each end sends the other its list of mods, and that list does carry the host-only mark - but the end reading it throws that field away and enforces its own view instead, so a mod on the far end and not on this one is a refused connection whatever it was marked as. A server that runs Core but not Skaft therefore turns away everyone who has it, with the game's stock incompatible-version screen. Servers without Core are unaffected, because there is no gate to refuse anything.

Nothing about this can be enforced server side, and it is worth being honest about why. The game's repair message carries no permission check at all, and the server forwards it without looking at who sent it, so any client has always been able to repair anything loaded. Checking a radius on the server would mean inventing a second protocol to constrain something that was never constrained.

Known gaps

  • Singleplayer is the only place this has ever run. One live world, 28 August 2026: at Crafting 55 the reach measured 7.5m, which is what the curve predicts, and one swing at a damaged wall repaired the two damaged walls beside it and left the intact ones alone. The radius, the trigger, the health filter and the per-piece charge are confirmed there and nowhere else.
  • No second player has ever seen it. Not a dedicated server, not a guest, not another player's building. The config sync and the version gate are Core's and are exercised by other mods; the sweep itself has never been swung with anybody watching.
  • Wards are untested. The argument in Using it is that the sweep inherits every check vanilla makes, wards included, because it only ever runs on a piece vanilla has just repaired. That is a reason to expect it to be right, not a report of it being right.
  • Running out mid-sweep is untested. An empty stamina bar or a hammer arriving at DurabilityFloor part-way through one swing stops the sweep by construction. Neither stop has been watched happen.
  • These defaults are the ones you keep. BepInEx writes every setting to disk the first time the mod loads and the saved value beats any later default in code, so retuning the curve in a future version reaches nobody who already has this one. The numbers are reasoned and measured at a single point on the curve; they have not been played from 0 to 60.

Licence

MIT. See LICENSE.

CHANGELOG

Changelog

1.1.0 - 9 September 2026

Rebuilt for Valheim 1.0. This version does not run on pre-1.0 Valheim, and the previous one does not run on 1.0.

Fixed

  • Reads the right global key on Valheim 1.0. GlobalKeys is the one implicitly numbered enum in the game's API, and 1.0 inserted ten members - moving the no-workbench key from 22 to 27. A compiled ordinal therefore asked about a different key entirely, with nothing logged. Read by name now, taken off the enum member so a rename follows automatically and a removal is a build error rather than a quiet wrong answer.

Changed

  • Joins the Longhouse pack. Nothing here changed to allow that; Core was discarding the requirement each mod declares, so a server without Skaft refused every client that had it.

1.0.0 - 2 September 2026

First version. Repairing with the hammer sweeps everything damaged within reach of the piece you hit, and the reach is your Crafting skill.

The reach

Nothing at Crafting 0, about two metres at 10, four at 25, seven at 50, and eight from 60 up. The curve is min + (max-min) * (level/FullLevel)^0.8 and all four numbers are config entries.

It stops growing at 60 rather than 100 on purpose. Crafting costs roughly 20,300 crafts to reach 100 and about 5,700 to reach 60, so a curve normalised to the top of the bar puts its payoff somewhere no character arrives. The exponent sits below 1 for the same reason: the experience curve is already steep at the top, and a second brake stacked on it hides the whole mod behind a wall.

The price

Each piece the sweep repairs is charged the stamina, eitr and hammer durability that repairing it by hand would have cost. That is the difference between this and every other area repair: the radius says how far you may reach, and the stamina bar says how much of it you can afford.

Vanilla's own price does fall as Crafting rises, and that is kept. The Hammer's piece table names Crafting, so building and repairing already cost up to half as much stamina at high skill: measured in game, 5.00 a piece at Crafting 0, 3.50 at 60, 2.50 at 100. Cancelling that would mean writing a rule against a rule the game already has. It also means the levels above 60 are not wasted once the radius stops growing, because they keep buying pieces per stamina bar instead of metres.

What it will not do

It will not train Crafting, because repairing a building never has, and a reward that feeds the skill granting it is a loop rather than a design.

It will not break your hammer inside a sweep. Repairing subtracts durability without checking zero, so a wide sweep can spend a whole hammer on one press. The game does tell you it broke, but it also unequips it, and being dropped out of build mode by a single click is a different thing from wearing a tool down over the swings that did it.

It will not fire the build effect, the swing animation or a message per piece. One swing already fired all three for the piece under the cursor; forty more of each in the same frame is forty particle bursts, forty broadcast animation calls and forty seconds of corner messages, since those drain at one per second.

Point at something broken

The sweep runs only when the piece under your cursor was itself repaired by the swing. That is deliberate. It is how the mod inherits build mode, the crafting station requirement, ward access and the game's own one second per piece repair cooldown, rather than keeping copies of all four and maintaining them through updates.

The visible consequence is that hovering an intact wall beside a damaged one does nothing, and a second click within a second does nothing.

What has actually been run

The sweep works. At Crafting 55 the reach measured 7.5m, which is what the curve predicts, and one swing at a damaged wall repaired the two damaged walls beside it and left the intact ones alone. The radius, the trigger, the health filter and the charge are all confirmed in a live singleplayer world, on 28 August 2026.

The two pieces of feedback are confirmed too, which matters because neither could be proved by reading code alone. The corner message reads Repaired Wood wall x3 - one line rather than three, because the game sums the amounts of two matching messages queued within four seconds, so the count rides vanilla's own text and needs no new translation. And the Repair entry in the build menu carries its reach line.

Not yet exercised: wards, another player's pieces, running out of stamina or durability mid-sweep, and anything at all in multiplayer. Singleplayer is not a weaker version of a multiplayer test, it is a different one - there is no owner to hand a repair to and no gate to pass - so nothing above should be read as covering a server.

What a Core server does to this

Skaft registers with Core's gate as HostOnly, and that word describes one direction only. A client without Skaft joining a server with it is let through, which is the whole reason the requirement is set that way: such a client is genuinely unaffected, it simply repairs one piece a swing.

Going the other way, the gate refuses. The manifest each end sends does include the requirement, but the end reading it discards that field on purpose - its own view is what it enforces - so the check for mods present on the far end and absent here has nothing left to tell it that this one is allowed to be one-sided, and reports it as a mismatch. A server running Core without Skaft therefore turns away every client that has it, showing the game's own incompatible-version screen. On a Core server it is installed on the server too, or on nobody. A server with no Core has no gate and does not care.

That is a Core matter rather than a Skaft one, and it is cheap to change if it should be: the field is already on the wire and only the comparison would move.

These defaults are the ones people keep

BepInEx writes every bound entry to disk the first time the plugin loads, and from then on the saved value beats any new default in code. So the curve, the radius pair and CostMultiplier shipped here are permanent for anybody who installs this version: retuning them later moves new installs and nobody else.

That is worth saying out loud in the first published version rather than discovering it in the second, because the numbers have been measured at exactly one point - 7.5m at Crafting 55 - and reasoned everywhere else.