Dwarf Fortress – Modding Weapons and Armor Tricks
Armor and weapons have many secret rules you may not be aware of. Knowing how to optimize them can be useful for ensuring fair challenges from enemies and ensuring the stuff you add works like it ought to. This guide is intended for modders who care about immersion, (relatively) balanced encounters, and the subtle nuances of armor and weapons that might not be immediately apparent. This does not focus on the basic stuff about modding weapons and armor, but is for weirdos like me who want to take it even further beyond the vanilla system. If you are looking to balance the game or make a total overhaul, this guide will probably be helpful. If you just want to tweak the vanilla game or add a civ to it without changing anything else, it might be less so.
Note that this guide is currently relevant for the 50.0x version of the game. It may change radically and be outdated in the future.
Weapons in the vanilla game can be classified into ranged weapons and melee weapons, with unique skills for each. You have swords, axes, hammers, maces, whips, spears, pikes, blowguns, bows, and crossbows. There’s also knives, but they’re weird and I’ll get to them later.
The first thing you must do is separate the idea of the weapon skill from the weapons themselves. While as things are, swords raise the sword skill, bows raise the bow skill, and so on, you can assign any weapon you make to any skill, though there are a few caveats to this. Ranged weapons need to be assigned to one of the ranged skills for NPC users to spawn with ammo, for example.
Of the weapon skills, several of them are uniquely useful.
-Any edged weapon with the axe skill can cut down trees.
-Any weapon with the pike skill won’t spawn with a shield.
-Any weapon with the crossbow skill is used for hunting.
If you’re at least a little familiar with modding weapons you’ll probably be aware of size restrictions. In short, you can determine if a creature is too small to use a weapon, or has to use it two-handed. The issue is that the game will always spawn NPCs melee fighters (barring pikemen) with shields, meaning that most invaders, caravan guards, or monster hunters/mercenaries who spawn with non-pike two-handed weapons suffer debuffs that make them less formidable than they could be. As a result, I recommend assigning any two-handed weapons you make to the pike skill. If you’re adding this to a vanilla game, this might be a clunky and awkward thing to do. Why is the dragonslayer greatsword a pike weapon, when two-handed swords use the sword skill? It’s unfortunate, but the alternative is that NPCs armed with that weapon aren’t nearly as impressive as they could be. For those like myself, who make total overhauls, I recommend making the pike the dedicated two-handed melee weapon skill.
As for one-handed weapons, just be aware that assigning any weapon to the axe skill, if it lacks an edged attack, could cause issues with the “embark now” option when starting a new fort. If the player is unlucky, they may spawn with the blunt “axes” instead of normal ones, meaning they cannot cut down trees. Again, if you are a total overhaul modder, I recommend making the axe skill either the dedicated one-handed melee weapon skill, or just the bladed melee skill, with the mace or hammer skill handling all blunt weapons, so as to avoid the blunt axe issue. Alternately, give every blunt weapon an edged attack, even if the “edge” is more of a blunt attack, which is how morningstars work. As there is no difference in behavior between any melee skill fighters, it does not matter in terms of game mechanics that all one-handed weapons use the same skill. An axeman using a mace fights the same as a maceman with a mace. Just choose different skill names that more accurately describes this more multipurpose roles. When it comes to adding weapons in vanilla, one-handed additions are far more forgiving, and there’s no issue to adding katanas to the sword skill and so on.
Ranged weapons are fundamentally divided into two types in terms of behavior. Both bows and crossbows spawn with a quiver and several dozen ammunition items. Blowguns, on the other hand, spawn with their weapon, and their ammunition held in one hand, usually just 5-10 items. For total overhaul modding, I recommend folding bows and crossbows into a single skill, in keeping with the changes to melee, and specifically recommend that skill being the crossbow skill, as that is the one needed for the hunting labor. The crossbow skill serves as the dedicated ranged skill, intended for weapons which are to be kept from melee. For example, rifles, muskets, or even handheld cannons would best be used with the crossbow skill. For adding content to vanilla, it might be good to keep in mind the hunting issue, but otherwise there would be no issue with assigning a ranged weapon to either skill.
Blowguns, on the other hand, are much more interesting and in my opinion significantly underutilized. With its sparse amount of ammo, the blowgun skill is excellent for a light skirmishing skill. For example, throwing spears, throwing axes, pistols, firelances, gunblades, and other weapons which would thematically be suited for a small amount of ammo which is expended before charging into melee would do well with this skill, and I recommend using it in that way. While you can give weapons the “throwing” skill, and may be tempted to in the case of throwing weapons, the issue is that weapons with skills beyond the currently extant weapon skill result in NPCs never spawning with said weapons, meaning it would be useless as a weapon intended to be used by invaders for example.
Essentially, if one is seeking to rework all skills entirely, an optimal layout for all weapon skills would look something like this
Axe- All one-handed melee weapons
Pike- All two-handed melee weapons
Crossbow- All dedicated ranged weapons
Blowgun- all hybrid melee/ranged weapons
This system allows for every weapon to perfectly function in its intended role, with no unintended debuffs. Even so, there’s another thing to take into consideration when balancing weapons.
This is something that may be difficult to notice at first, but can be important for determining how common weapon spawns are, if that matters to your work. In short, when it comes to the odds of finding a given weapon, either spawned as an item in a keep or held by an NPC, the game does not take into consideration intended scarcity. That is, if you make only two weapons for a particular weapon skill, one incredibly cheap and weak, the other incredibly expensive and powerful, the odds of a warrior of that skill spawning with either is 50/50. If you were making a post-apocalyptic mod, and added one rifle and one cannon weapon all to one skill, half the invaders would have cannons. Obviously this can cause issues with immersion and game balance when a rare, powerful weapon is as common as a standard infantry weapon. The solution is to take weapons intended to be common, and create slightly different duplicates of them to inflate the frequency of weapons intended to be for the rank-and-file masses. For example, for our post-apocalyptic mod, say we wanted to keep pistols and cannons rare, and rifles common. We could take the rifle, and copy it 8 more times. Then, we could rename them. You might end up with something like this:
-bulky standard rifle
-elegant standard rifle
-bulky long rifle
-elegant long rifle
-bulky short rifle
-elegant short rifle
If you do this, then there’s a 1-in-10 chance of getting a cannon, with a 9-in-10 chance of an NPC spawning with a rifle. This relegates cannons to a rarer spawn, which makes them unique and threatening “minibosses” which appear dynamically in the world. This same system can be used for any weapon skill. Fantasy swords could have a rare variant that is much more powerful, with a stronger striking force and deeper cuts and stabs. Hammers could have a rare super-hammer, ten times as big as a normal one.
The given example can be expanded on further. While those rifles had stylistic differences, differences can also be determined by secondary weapon function, such as bayonet types, or slight differences in firepower. Long rifles could have slightly more power than standard or short rifles, for example, but cost one more bar of whatever metal is used to make them. This can incentivize the player to find the weapon variant that works best for them, or collect new ones as they are encountered in play.
Armor in dwarf fortress is divided into three armor levels and at maximum 5 different pieces, head, chest, legs, feet, and hands.
Melee vs Ranged
While armor comes in three different levels, armor level 2 and 3 both are worn by melee NPC fighters. However, armor level 3 is subject to various restrictions due to old code, and does not spawn reliably on NPCs, though it definitely will sometimes. If you want a given armor piece to be common or reliably spawn, giving it level 3 is unreliable. Personally, I don’t use it due to the lack of information on what causes it to appear on NPCs (all I have confirmed confirmed is that melee invaders will be split between level 2 and 3 armor and seems to have been originally designed for invasion-related stuff). Armor level 1 is always worn by ranged NPCs. If anyone has information on how level 3 armor works it would be much appreciated.
The important thing to keep in mind here is that, while vanilla dwarf fortress typically restricts ranged fighters to leather armor and melee fighters use metal, armorlevels 1 and 2 are completely arbitrary. No matter the stats of a given armor item or what it is made of, whether it is used by melee or ranged fighters is determined solely by armor level. This also means if you intend for one type of armor to be used by all soldiers, it needs a ranged and melee variant. For example, if you wanted all soldiers to use a metal breastplate, you’d need a “melee fighter’s breastplate” and a “ranged fighter’s breastplate”. The exception to this is uniforms.
Normally, NPCs spawn with one armor item for each part of the body. One head item, one chest item, one legs item, two hand items, and two feet items. However, for soldiers belonging to a civilization, this isn’t the case. For them, one head item and one chest item are randomly designated part of their civilization’s uniform, and they will always spawn with these. If you mess with LAYER_SIZE, LAYER_PERMIT and SHAPED, you can make it so that other armor will spawn underneath or above these chosen items. This means that civilization soldiers uniquely (for NPCs) can have two head items, and two chest items, with one of each being the same across all members of the civilization. This can be a way to differentiate mercenaries from more well-equipped professional soldiers, for example, but care must be taken that the way this is arranged does not lead to non-uniformed fighters lacking defense. For example, if you tried to arrange things in such a way that rather than a single cuirass, there were two separate breastplate and backplate items which each gave 50% coverage, then while a civilization soldier would spawn with both, mercenaries and monster hunters would only spawn with one of these items. In addition, if you were to make multiple armor items not intended to be worn together, such as for example a 25%-coverage scrap breastplate vs a full-coverage cuirass, the game would still arbitrarily select one of them to be the uniform item. Meaning that you might have soldiers wearing an item intended as a “low tier” piece of gear, even though rationally they should be wearing the good one.
Due to the uniform issue, I recommend that armor pieces are designed with the intent of looking good no matter who is wearing them. That is, they shouldn’t look out of place or weird on either a lowly bandit or a knight leading an invasion, because a gear intended as a “bad” item might be arbitrarily picked to be part of a civilization’s uniform. Though this can work fine if that fits the civilization’s aesthetic that you are trying to cultivate. Just be aware that one head item and one armor item will always be randomly selected as a uniform piece when making armor to be added to a civ. If you used vanilla armor layers, but wanted all civs to be differentiated based on different breastplate variation styles, there would always be a few civs that chose chainmail to be their chest uniform item, meaning they’d spawn with every breastplate variant at random.
Lastly, be aware that uniforms have no consideration for armor level. A uniform part might be selected from an armorlevel 1 or 2 tier, and then be worn by all soldiers. If you design armor level 1 items to be very weak, and armorlevel 2 items to be very strong, then there’s a 50% chance of soldiers in a civ spawning with very vulnerable melee fighters or very tough archers.
Usually, armor will be made of a metal that a civ has access to. If you give one civ holy steel, and the other civ demonic iron, then the first civ will always have armor made of holy steel, and the other civ will have its warriors clad in demonic iron. However, mercenaries, monster slayers, and similar NPCs will spawn with metal armor made of random metals. So you might see a monster hunter of the first civ with a holy metal breastplate but a demonic iron helm. This can lead to garish aesthetic clashing or simply narrative dissonance if you’ve specified demonic iron requires the sacrifice of innocents to forge or something like that. It can also be a problem if some metals are very strong, and others are weak, as NPC adventurers from civs that only use strong metal, and would be intended to be useful allies or dangerous threats, will spawn with the weak metal armor instead.