40d:Modding guide

From Dwarf Fortress Wiki
Jump to: navigation, search
This article is about an older version of DF.

This is intended to be an easy guide for general newbies on how to both edit and add civilizations, creatures, objects, and so on in Dwarf Fortress, both adventurer and fortress modes, without breaking anything too much. Generally breaking stuff is fine! Just always back up your work & the originals, and be patient at having to generate new worlds over and over.

This guide was edited for version and may not be accurate for later versions, particularly the examples.

See also: Category:Modding


[edit] Modding Guide

[edit] Basics of DF modding

All of the data you can edit are stored in the \raw\ folder wherever you saved your DF executable. The raw folder contains two subfolders: graphics (where you insert graphic packs to make custom tiles), and objects, which contains all the data for generally everything in the game that is not hardcoded. Quite a lot is not hardcoded, so you can edit a wide variety of things in the game.

Editing the raw text files is easy and simple. When you go into the \raw\objects folder you will see a wide variety of text files. When you are modding your game, you can either change existing files or add your own. I personally find it easier just to edit the existing ones in a new \DF\ game folder. When you are changing a token you can simply change the values - these are the numbers/strings after the : in a token entry. For example, [CREATURE:DWARF] is a token in the entity text file, which determines what creatures are used for dwarven civilizations. Simply open the text file, edit what you want, save and close, and generate a new world after you're done editing what you want.

Essentially, everything that can be modded uses text files to determine how they interact with the world or with other objects. With a bit of know-how you can tinker with just about everything.

Every text file uses what are called "tokens", also called "flags". They are essentially attributes that you can add or remove or edit for any particular object in the game, that change the way the object works or acts. Most of the actual effects are hardcoded: for example, giving a creature such as a moose the [EVIL] creature token will make it only appear in evil maps, or giving it [BONECARN] will make it chow down on bones.

A few key things to remember when modding the text files:

  • Always back up the default text files you plan on editing. This way, if your game crashes (due to say, a typo that you can't find) you can simply copy-paste it back in for a 'vanilla' DF.
  • You do not need to delete old saves; simply create a new world using your modded files and things should run fine. Just don't try to play a "non-modded" world with modded files! Should you desire to go back to your old sites, make sure you revert to the raw files used for the creation of that world.
  • In general it's better to make whole new text files for new stuff you're adding rather than editing the existing ones by tagging them onto the bottom. This allows you to keep track of them easier and keeps them all in one place so there's less messing about with tons of files.
  • The absolute easiest way to add an entirely new creature/entity/etc is to simply copy-paste an existing one and rename it, then edit the various tokens appropriately.

In addition, if you rename the any of the \raw\ files themselves (such as 'creature_insects.txt' to 'creature_bugs.txt'), you must find the same filename in the \data\objects\ folder and delete it. This is required because once the world is generated it creates the new files and saves them for use next time the world is needed; without deleting the file you will get duplication errors. This is not necessary if you just don't change any of the filenames.

It has been reported that the name of the raw files is important as to their contents, such as entity_foo.txt should contain an entity and creature_foo.txt should contain creature(s).

[edit] Modding the civilizations

The civilization entries are stored in entity_default.txt. They are quite simple files that are in the following format:

    ...[OTHER TAGS]...

At the top of the file you'll see 'entity_default' all by itself. This word (or "string") must appear at the top of the file and it must match the file name (without extension). All game files require those markers at the top. It may be useful for those with programming experience to think of this as equivalent to a class name. In languages such as Java, the name of the file and the name of the class are identical so the compiler can recognize and process code from text files into binary data for the actual executable program.

Next, if you're creating a new civilization in its own text file, be sure to add entity_default, and [OBJECT:ENTITY] at the top of the file.

Now what do these tokens mean, exactly? For one, where the tags are located don't generally matter quite a lot. You can add them in any order as long as they're underneath the "[ENTITY:]" token, which is the 'header' of the civilization and lets the game know that everything underneath deals with that civ. The entity token can be anything as long as it's not the same as another one.

'[CREATURE:]' links the civilization with a certain creature defined in a different file. This is the creature you play in adventurer or fortress mode, or that wanders around their towns when you explore them. For example, if you wanted to do something silly you could switch the "DWARF" entry in entity_default.txt with "ELF" and you would be marching elves around in fortress mode, though they would still use dwarven technology and language and names and so forth.

'[TRANSLATION:]' connects the civ to a specific language file that determines things like their natural (untranslated) creature first + last names and city names. The valid ones are HUMAN, DWARF, ELF, and GOBLIN.

'[BIOME_SUPPORT:]' defines biomes that civs will appear in. The 'FREQUENCY' value determines the likelyhood of them appearing there: generally 1 for not very often, up to 3 for very often (ie. dwarves in mountains).

You can find many details about the rest of the civilization tokens here. The important ones are the CIV_CONTROLLABLE token, which lets you control the civ in dwarf fortress mode and the INDIV_CONTROLLABLE and ADVENTURE_TIER tokens which lets you play the civ in adventure mode via the PLAY NOW! command. Remember that ADVENTURE_TIER must be in order, so if you are adding a new playable race you must set its tier 1 higher (4).

If you have more than one civ with the [CIV_CONTROLLABLE] token, groups belonging to that civ will appear in the group selection section on the embark screen, although it is not immediately obvious what species each group may be. While this can be determined from legends mode, experimentation suggests that the topmost species in the 'neighbors' section of the embark screen is the same as the currently selected species: If your group is dwarven, dwarves will be topmost, whilst (say) elves will be topmost if your chosen group is elven. By default, the game seems to choose a group (and therefore a species if there is more than one) at random.

Any token that has to deal with weapons, armor, clothing, etc. are all the items that the civ can build, not necessarily the ones they can wear. For example, you could create a species with no clothes specified, but then rob a clothes shop in adventurer mode and wear everything you want, or give them weapons that are too large to wield and they could sell them, but not use them.

[SELECT_SYMBOL:] and [CULL_SYMBOL:ALL:] are the words that can be randomly generated in names, civs, cities, artifacts, engravings, etc. "SELECT_SYMBOL" means that the civ is far more likely to use those, and CULL_SYMBOL means they never will. You can find a list of every symbol type here. SUBSELECT_SYMBOL:WAR/BATTLE/SIEGE just determines which language token to use when they begin wars, battles, or sieges in legends mode, ie. 'The Conflict of Craziness' or 'The Siege of Assaults'. All have these as 'violence' by default but they can be changed to any other token.

'SELECT:SYMBOL:ROAD/TUNNEL/BRIDGE/WALL' use the special language tokens NAME_ROAD, NAME_TUNNEL, etc. and determines what the civ names their structures. 'SELECT_SYMBOL:REMAINING': are the standard tokens used for the species language.

An easy method of creating a civilization is just to copy-paste a similar one to the bottom of the entity_default.txt file and edit things to your liking. Remember to always change the civ's ENTITY: name! This name can be anything as long as it's not already existing.

There are many tokens to play with in the entity file, most of which do something interesting. It's best to simply look through the entity tokens list and figure out for yourself what you want to do with them. The ones of interest are:

  • [SIEGER] [BABYSNATCHER] [NUISANCE] These determine what the civ does in relation to other civs. Babysnatchers periodically swipe infants from nearby civs and have them grow up in their own civ (if kidnapped/brainwashed infants grow up and have children, their last names will use their capturer's language files: ie. you will have evil dwarves with the name Urist Deathghouls in a goblin fortress).
  • [AT_PEACE_WITH_WILDLIFE] This token, currently set only on elves, will mean they will not attack wild animals and animals will not attack them. This ALSO means that if you bring an elf or two along with you in adventurer mode, don't expect them to help you if you get attacked by cougars!
  • [RELIGION_SPHERE] This determines what religious deities will have as spheres when the civilization is generated, along with their subspheres. With a SPHERE_ALIGNMENT set you can also make one more likely than others; ie. Elves have trees, plants, and animals set very high so they are likely to get those more often with their deities.
  • With [DEFAULT_SITE], LIKES_, and TOLERATES_ you can decide where the species will live. DEFAULT_SITE is their home cities and will usually cluster there in large groups. If a civ conquers another and they do not at least tolerate the enemy's home type they will simply destroy it instead of moving in (sometimes they will destroy it anyway).
  • [ETHIC:] tokens determine how the species behaves when it comes to certain unpleasant acts. This also determines what reasons the civ will use when going to war: if a nearby civ has something set ACCEPTABLE that they consider UNTHINKABLE, then it is likely they will go to war over it. It also determines a few other things, like what happens to dead foes: Elves have '[ETHIC:EAT_SAPIENT_KILL:ACCEPTABLE]' for example. Goblins defacing their enemies (ie. hanging, stuck on pikes) is [ABUSE_BODIES], as well as ETHIC:MAKE_TROPHY_ tokens set ACCEPTABLE.

[edit] Modding the creatures

Creature modding is great fun. Essentially you can change nearly any aspect of a creature or completely make your own from scratch. You can either add a new creature to the bottom of an existing creature_thing.txt file or make your own file; just be sure to add the name of the file (without the txt) to the top of it. For example, I tend to use a 'creature_newbies.txt' file myself.

Modding creatures is exactly similar to modding civs: just a matter of editing, adding, or removing tokens, enclosed in square brackets underneath the creature's [CREATURE:] header. The creature entries contain all the information about each specific creature in the game, from animals to dwarves to goblins to even caravan wagons. Much of the data of a creature is quite self-explanatory; you can find a list of every creature token here.

There're some tokens which use temperature values. Dwarf Fortress has it's own temperature scale for this. DF temperature scale.

Note: If you add a butcherable creature to the game such as a domestic animal, people will automatically wander around wearing its fur or skin as leather items when you are in the game, assuming the creature comes from the civ's biome (natural area). So don't be surprised to see 'duck leather armor' or something if you add ducks. Also note if you add a species that has a naturally high body temperature (magma snakes for example) and set it butcherable, people will automatically be generated wearing their skins.. and then since the skins have a naturally high temperature too they tend to burst into flame immediately because they were wearing a +magma snake leather sock+. Woops.

You'll notice many of the creature entries have tokens that other ones don't have. If a token is not present it's considered "default", though sometimes the default can be hard to figure out. All of the creatures referenced in the entity files are present in creature_standard.txt and require certain other tokens that non-entity creatures do not need, such as [INTELLIGENT] and [CANOPENDOORS].

For example, if you wanted to allow your dwarves to eat bones from the refuse stockpile (ew), you would open up creature_standard.txt, add [BONECARN] somewhere in the CREATURE_DWARF: entry at the top, and then save and close it, then generate a new world. Bon appetit! *Notice that this has the unfortunate side effect of making them unable to eat plants.*

How to add a new creature.

If you make a totally new creature, feel free to add it here along with any additional information.

[edit] Modding items

Items come in several flavors: 'crafted' items, and 'natural' items. Both are the same in most ways, but are stored in different places: most crafted item data are stored in the item_blah.txt files (such as item_armor.txt), while things like plants, gems, food, and ore are stored in "matgloss" files, ie. matgloss_plant.txt. Both are easily editable just like a creature or civ, but the problem is that there is no definitive list of what most of the tokens for these quite do yet. In any case they are usually pretty self-explanatory and you can guess what they do by checking out similar entries.

For example, let's look at the entry for, of course, the thong:


Most of these are pretty obvious if one compares them to the other entries. Now, if you wanted to mod these to turn them into metal thongs (ouch!), you would simply have to add [METAL] to it somewhere, and probably [HARD] instead of [SOFT]. Simple!

Weapons work largely the same way; but remember that in order to actually use any of these things you'd have to add the ITEM_THING item flag to the civilization's 'useable items' list in entity_default.txt. For example, if you're fond of Scots and decided to make a 'claymore' sword that's even bigger than the two-hander already in the files. It might look like this:

[NAME:claymore sword:claymore swords]

Tada! Yes, it's that easy. Then you just add it to the civ entry so a civilization can actually use and craft it, and it's done.

[edit] Modding language files

Let's say you added a whole new species. Sure, you could just swipe one of the existing translation files and steal their language for your species, but that's the lazy way! If you want to create a whole new language, it's very simple.

First, you'd need a whole new language_RACE file, such as language_LIZARDMAN.txt, along with "language_LIZARDMAN" at the top of the file proceeded by [OBJECT:LANGUAGE] and [TRANSLATION:LIZARDMAN]. After that, it's just a matter of copy-pasting one of the existing language lists and editing the finished 'translated' word. That's it! Then just add the translation link to your civ in entity_default.txt and it'll be added to the game on worldgen.

[edit] Modding body parts

Imagine you have this fantastic idea for a multi-tentacled winged spider-monster. Sounds great! But in order to make this a reality you may need to create a new set of body parts for it. That's no problem! Making body parts is easy, though it may look complicated at first.

All body definitions are located in body_default.txt and then linked to a creature in the creature's entry. For example, the dwarf creature has: [BODY:HUMANOID:2EYES:2EARS:NOSE:2LUNGS:HEART:GUTS:ORGANS:HUMANOID_JOINTS:THROAT:NECK:SPINE:BRAIN:5FINGERS:5TOES:MOUTH]. All of these are seperate bodypart definitions in body_default.txt. You can mix and match them in the creature entry and it makes no difference, as long as they're there: each bodypart will link itself to the appropriate connection automatically when the creature is first created. This means that if you don't add the appropriate bodyparts, hilarious things can happen: if you forget to add a throat or lungs your new creature will suffocate after taking a few steps (unless you make it a nonbreather).

Body parts work by sections: you can add as many sections as you want to a bodypart definition, but generally you should keep it fairly low for ease of use. Each body section entry is in the very simple format:


You can add as many sub-parts as you want to an overall section. The most important tokens are 'CONTYPE' and 'CON': CONTYPE means the bodypart in question is connected to a certain *type* of bodypart, while CON means it's connected to a *specific* one. Let's break down a few entries:


This is a very simple one: a head. It connects directly to an upper body. All the stuff inside the head are seperate entries that call up the head as a different contype in turn:


The foot bone's connected to the ankle bone..

If you wanted someone to be able to break someone else's throat (like breaking a joint) and suffocate them, just add the [JOINT], [BREATHE], and possibly [NERVOUS] to the throat object's tokens.

A 'BODYGLOSS', which you can sometimes find in the creature entries, are simply replacement words for certain defined words in a creature. For example, you'll find the bodygloss [BODYGLOSS:CLAW_HAND:hand:claw] in the body_default.txt, and then you can use this in a creature with '[BODYGLOSS:CLAW_HAND]' and it will replace all instances of "hand" with "claw" in that creature. For all intent and purpose the body part will still function as the proper part, though.

Note that only creatures with the [EQUIPS] token (and possibly [INTELLIGENT]) and a civ that can create clothes/armor/weapons will be able to actually wear stuff. Also, if the creature size is too large for the clothes they will also not be able to wear it.

[edit] Example one: dark dwarves

These examples will go over the details for creating several new things as well as editing some old ones.

Remember: Do NOT load an old save after genning a new world with different raws. It's much safer to simply delete all your old saves after you've modded things, or simply copy-and-paste a fresh version of DF into a new folder.

First, we're going to create a new, evil civilization of dwarves called, unsurprisingly, dark dwarves. This will be quite easy, though with a few fundamental differences. Mainly, that dark dwarves are evil and more warlike than regular dwarves.

Now, open up entity_default.txt. All your species civilizations will be in there. We're going to make a whole new one for our dark dwarves. In many ways it'll be a simple copy-paste job of regular dwarves, then tweaking some things.

Add this to the TOP of the entity_default file, before the dwarf entry:


The fun part is that your dark dwarves will, thanks to the specified symbols, have some crazy names that you'd never see with regular dwarves (one of the fortresses it generated was called "Crowanus", for example). If you dislike having bad language, just remove the [SELECT_SYMBOL:ALL:UNTOWARD].

The main differences you'll see here compared to the dwarf entry is that they have different weapons, toys, instruments (thanks to their warlike nature, they build less of them) and [USE_EVIL_ANIMALS] is turned on: this will do nothing in dwarf fort mode but you'll see tamed trolls and ogres in their fortresses in adventurer mode. Many of their other tokens are changed as well, to make them more violent and evil. For example, they will eat their foes like elves do. Yum!

Now, we need to build the DARK_DWARF creature. Create a new text file called 'creature_new.txt'. Immediately, add the following:



That'll make this text file recognized as a creature file. Now, we simply add our dark_dwarf creature:

	[NAME:dark dwarf:dark dwarves:dark dwarven]
	[PREFSTRING:violent tempers]
	[PREFSTRING:sullying of the dead]

This is largely a copy of the regular dwarves, but with several differences: [LIKES_FIGHTING] will give them happy thoughts when they have fought something, [NOCTURNAL] means they like nights rather than days, and [EVIL] means on the adventurer map their fortresses will tend to end up on evil tiles rather than good ones. Otherwise, they are exactly the same as regular dwarves. To make them extra evil, add [BONECARN] somewhere in there and they can eat bones (they'll actually haul them from your refuse pit to the dining table, yum), but will sometimes (though rarely) choke to death on themVerify. Bear in mind that [BONECARN] implies [CARNIVORE], so they won't eat vegetables making the game much harder. Also, they do not require booze to stay happy (though will happily drink it anyway if they have to).

There! That's all we need to do in order to add our civilization. Just create a new world and they'll be there: however, when you go to adventurer mode, all (or none) of your dwarf entries might be replaced with dark dwarves, so it's really a matter of luck. When you start a new fortress, there will be a 50-50 chance of playing either as dwarves or dark dwarves. The easiest way to tell if a civ is a dark dwarven is if the name is rather unpleasant. 'The Fortress of Rapes' for example would probably not be a standard dwarven one. Remove [CIV_CONTROLLABLE] from the standard dwarves if you only want to play as dark.

[edit] Example two: "Arachnid" playable creature

This time, we're going to add a new playable creature to adventurer mode, but not playable in fortress mode. An 'arachnid' is a large, powerful, evil half-elf, half-spider (no copyright violations here!): they are too big to wear standard equipment and are quite nasty enough without it anyway. The downside to playing them is that since they do not form standard civilizations, you cannot start them at a specific location nor will they have any weapon, armor, or wrestling skills to start out.

First off, we need to add a civilization entry in entity_default.txt. Open it up and add this to the top of the file:


Note: adventure_tier should be 5 if you also have the dark dwarves.


INDIV_CONTROLLABLE and ADVENTURE_TIER tokens allows us to use ARACHNID: PLAY NOW! in adventurer mode, which is exactly what we want. They'll be powerful enough to use without gear anyhow.

Next, we open up creature_new.txt (if you haven't made one, check the above example) and add the new creature to it:

   [EXTRACT:arachnid venom:7:0:0]
   [EXTRACT_ANTIDOTE:arachnid antivenin:7:0:0:100]
   [PREFSTRING:terrifying presence]
   [PREFSTRING:fearsome venom]

Now, what does this all mean, exactly? Well, compared to dwarves they are big, bad, as fast as elves, as sturdy as dwarves (hard to knock over), they have white blood, can eat bones, are immune to fear, stun, and never get tired, see twice as far, and are almost totally immune to most small-damage attacks. In addition I copied the giant cave spider paralyzing bite attack, so when you bite and hit, you'll sometimes inject a paralyzing poison fairly often that'll knock your prey unconscious in a few combat rounds. Not only is the bite very damaging, but you can even knock out creatures like ettins or giants and rip them up as they sleep at your leisure.

However, we're not done yet. Notice the BODY: token has a few tidbits that we need to take a closer look at- 'ARACHNOBODY' and '8EYES' in particular. These are new to our species and we need to add them. So, close that and open up body_default.txt, or create your own body_something.txt file. Add the following to the bottom:

[BP:UB:upper body][UPPERBODY]
[BP:RUA:right upper arm][CON:LB][LIMB][RIGHT]
[BP:LUA:left upper arm][CON:LB][LIMB][LEFT]
[BP:RLA:right lower arm][CON:RUA][LIMB][RIGHT]
[BP:LLA:left lower arm][CON:LUA][LIMB][LEFT]
[BP:RH:right hand][CON:RLA][GRASP][RIGHT]
[BP:LH:left hand][CON:LLA][GRASP][LEFT]
[BP:RA1:right first leg][CON:LB][LIMB][RIGHT]
[BP:LA1:left first leg][CON:LB][LIMB][LEFT]
[BP:RF1:right first claw][CON:RA1][STANCE][RIGHT]
[BP:LF1:left first claw][CON:LA1][STANCE][LEFT]
[BP:RA2:right second leg][CON:LB][LIMB][RIGHT]
[BP:LA2:left second leg][CON:LB][LIMB][LEFT]
[BP:RF2:right second claw][CON:RA2][STANCE][RIGHT]
[BP:LF2:left second claw][CON:LA2][STANCE][LEFT]
[BP:RA3:right third leg][CON:LB][LIMB][RIGHT]
[BP:LA3:left third leg][CON:LB][LIMB][LEFT]
[BP:RF3:right third claw][CON:RA3][STANCE][RIGHT]
[BP:LF3:left third claw][CON:LA3][STANCE][LEFT]
[BP:RA4:right fourth leg][CON:LB][LIMB][RIGHT]
[BP:LA4:left fourth leg][CON:LB][LIMB][LEFT]
[BP:RF4:right fourth claw][CON:RA4][STANCE][RIGHT]
[BP:LF4:left fourth claw][CON:LA4][STANCE][LEFT]

Voila! Now you have your complete arachnid. They are very fun to play in adventurer mode, yet still a challenge. You can tear through unarmed civilians like a knife through butter, armed soldiers pose a minor challenge (much bigger if you are getting ganged up on), elite spearmen are devastating, and archers still rip you to shreds unless you close in on them quickly and poison them. However, thanks to your multiple eyes and legs you can take quite a few direct hits and still keep going (I once had an arrow smash straight through my head, taking out 5 eyes and wounding the throat, brains, and both ears, and survived the encounter).

In any case, you're now done! Create a new world and you will now be able to use arachnids as a playable creature in adventurer mode.

Written by Teldin.

[edit] Modding utilities

[edit] Modbase

Modbase is a great tool made by Sean Mirrsen which allows you to freely swap mods and tweak game settings. Get it now! For version 0.38c.

[edit] DF Raw Editor

DF Raw Editor is a brand new tool created to help edit the raw files. It is available here. For version 0.40d

Personal tools