A Vintage Story mod: lore-styled, single-use books that permanently grant a crafting trait when read.
Unlike hand-curated trait-unlock mods, Skillbooks discovers crafting traits dynamically at
server start by scanning loaded recipes for RequiresTrait, then generates one book per trait
automatically — including traits added by other class mods. Install a new class mod, restart
the server, and its traits already have books waiting to be found. No maintenance burden when
the mod list changes.
Each book reads as an in-world artifact — a survival guide, a journeyman's notebook, a guild pamphlet — rather than a mechanical "+1 Bowyer" item. Title and flavour text come from a curated lookup keyed by trait code, with a sensible procedural fallback for any trait nobody's written flavour for yet.
- Dynamic discovery. No per-trait configuration needed; new traits from other mods pick up books automatically.
- Curated flavour text. Hand-written title and description for every vanilla and supported-mod trait, with a graceful procedural fallback for anything uncurated.
- Multiple acquisition paths. Craft-gated, found in vessel loot, or offered by traders — all independently configurable (chance, target blocks, trader types, price).
- Salvage & reroll. Turn an unwanted book back into materials, or reroll an illegible book into a fresh random trait.
- Illegible books. Orphaned traits (from a mod that's since been removed) and administratively disabled traits degrade gracefully into a distinct "illegible" item instead of silently vanishing or crashing.
Skillbooks is the first of a small family of independently-installable mods:
| Mod | Role |
|---|---|
| Skillbooks (this repo) | Crafting-trait books |
| Skillbooks: Stats | Stat-trait books (Fleetfooted, Hardy, etc.) — works standalone, reuses this mod's flavour resolver when both are installed |
Get it from the Vintage Story ModDB (installable
directly through the in-game mod browser), or grab the zip from the
Releases page here and drop it into
your Vintage Story Mods folder.
A config file is generated on first run at ModConfig/skillbooks.json. See the file itself for
the full set of options — loot/trader spawn chances, target block patterns, trader offer price,
and which traits are enabled.
If your mod adds a trait, you don't have to wait for it to be added to Skillbooks' curated
list — ship a file at assets/<yourmoddomain>/config/skillbooks/<traitcode>.json in your own
mod (note the config/ — Vintage Story's asset system only scans a fixed set of known
top-level folders per domain, so it has to sit under a recognized one):
{
"title": "Your Book's Title",
"blurb": "The in-world description shown when the book is read or inspected."
}This takes priority over Skillbooks' own curated list and its procedural fallback. Either field can be omitted and falls back independently to whatever the next tier provides.
Requires the .NET SDK matching Vintage Story's target framework, and a local Vintage Story
install (for its API DLLs). Set the VINTAGE_STORY environment variable to your install path,
then:
dotnet build Skillbooks/Skillbooks.csproj -c Release
See CONTRIBUTING.md for more, including how Stats (or any future addon) links against this repo's public API surface.
AI assistance has been used in the creation of flavour text for some of the books, documentation within this repository, comment writing within the codebase and repetitive tasks during development. The generated output was personally checked, modified and thoroughly tested by me for quality and accuracy and is subject to change at any time. AI usage in contributing, documentation and pull requests is welcome so long as it is used safely and you have properly tested its output.