BELOW THE IRON Modding guide

Start here#

This guide shows you how to change BELOW THE IRON by editing its JSON files: new item bonuses, new creature behaviour, new spells and new terrain. You will have a working change in five minutes.

What modding means today#

Modding today means editing the JSON files in public/config/. The game reads and checks them every time it starts. If something is wrong, it refuses to start and names the file and the key at fault.

You cannot invent new kinds of things in JSON. You can combine the ones the game already knows: it knows 55 values, 50 events, 24 conditions and 33 actions. The catalogue lists them all.

What you can change#

Text shown to the player lives in public/config/locales/, one file per language.

The game reads fifteen files in public/config/. Each definition has one owner. Edit it there; copying it into another file is an error. A missing value never makes the game search another owner.

Find the file to edit
FileWhat it owns
world.jsonMap, terrain, doors and world balance
items.jsonStandalone objects, item kinds, filters, recipe items and book models
resources.jsonReagents, catalysts and resource names and symbols
equipment.jsonBases and their templates, glyphs, qualities, affixes, sets and permanent mechanics
crafting.jsonRecipe links, costs, production and crafting procedures
devices.jsonPlaced devices and their actions
magic.jsonElements, definitions, syllables, formulas and spell presentation
creature-rules.jsonShared creature families, variants, growth and rules
creatures.jsonCreature profiles by family
behaviors.jsonCreature behaviour settings and trees
combat.jsonShared combat limits, tactics, dodge and push
character.jsonAttributes, health, skills, learning and starting kits
campaign.jsonStory and campaign progression
loot.jsonDistributions, family tiers and recipe availability
commerce.jsonTrade rules and recipe prices

Your first mod in 5 minutes#

Goal: a ring and amulet bonus called "of the Gourmet" that makes you hungry more slowly. You reuse the existing satiety effect, which cuts the hunger you use up.

Step 1: Open the file#

Open public/config/equipment.json and find the affixes list. An affix is one bonus that can appear on an item.

Step 2: Paste the affix#

Add this object to the end of the affixes list (mind the comma after the previous entry):

{
  "id": "of-the-gourmet",
  "label": "AFFIX_NAME_OF_THE_GOURMET",
  "position": "suffix",
  "family": "satiety",
  "kinds": ["ring", "amulet"],
  "tiers": [[3, 5], [5, 8], [8, 12], [12, 16]],
  "weight": 5,
  "minLevel": 1,
  "group": "satiety"
}

Step 3: Name it in every language#

label is a text key, not text. Add "AFFIX_NAME_OF_THE_GOURMET" to each of the nine files in public/config/locales/, next to AFFIX_NAME_OF_THE_WELL. In English, for example: "AFFIX_NAME_OF_THE_GOURMET": "of the Gourmet",.

Step 4: Start the game#

Run npm run dev and open the address it prints. If the game starts, your file is valid. If not, the error names the file and the key to fix; Troubleshooting explains the messages.

Step 5: See the result#

In the game, open the Debug tab of the side window, then its Equipment sub-tab. Create a ring that carries the affix and equip it. The rules view ("active modifiers and listeners of the player, by source") now shows a source called affix:<item id> with a hunger.satiety modifier at the value of the tier that was drawn.

In game

Walking and fighting use up less hunger while the ring is worn. Take the ring off and the modifier disappears.

Where to go next#