v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "User:0x517A5D"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
(Undo revision 130519 by 85.157.166.104 (Talk) stop that)
(37 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Build ==
 
== Build ==
<!--
+
I obsessively min-max my starting profile, even though it doesn't matter in the long run.
Esmullogem, "Fullpaint".  Could be worse. Stroike the oith!
 
  
:Post mortem: abandoned in a fit of pique after striking the aquifer in the middle of my ore storage area and flooding the forging/smelting area below. The bolt thing didn't work out.  I got nothing.  So that's 90 more points I can spend. Probably I'll buy 4p meats for more barrels. I love me some barrels.
+
My latest build was intended for a resource-heavy wooded terrifying area in version {{version|0.31.03}}.
  
:Lessons learned: it's too easy to dig into an aquifer squareThere really should be a warning beyond the initial "dig cancelled"Outdoor farming seems even more imbalanced than indoor farmingAll crops, all year aroundMaybe that will change when recipes are implementedVertical connectivity is kingAn up/down staircase takes no longer to dig than an empty square, and has much more potential. You can't put a building on an up/down, but you can put a stockpile or zone on it. Garbage dumps should preferably be built on the same x/y coords on every z level, or selectively disabled as necessaryMake magma channels two-wide or more for faster filling.
+
* 4&nbsp;ambusher / 2&nbsp;crossbowman / 1&nbsp;negotiator / 1&nbsp;judge&nbsp;of&nbsp;intent / 1&nbsp;appraiser / 1&nbsp;pacifier
 +
:Immediately drafted as sole early protectionStarts with a free crossbow due to ambusher skillMay mine if area seems safeCross-trained as weaponsmith.
 +
* 5&nbsp;diagnostician / 4&nbsp;surgeon / 1&nbsp;wound&nbsp;dresser
 +
:Woodcutting, miningCross-trained as weaponsmith.
 +
* 5 grower / 5 brewer
 +
:Fortress maintenance, incidental tasksMines until underground farm area is preparedCross-trained as armorsmith.
 +
* 5 grower / 5 cook
 +
:Fortress maintenance, wealth creation (prepared meals), incidental tasks.  Mines until underground farm area is prepared.  Cross-trained as armorsmith.
 +
* 5 mechanic / 5 herbalist
 +
:Fortress maintenance, wealth creation (mechanisms), plant gathering to allow above-ground farming, possibly some mining.
 +
* 5 carpenter / 5 glassmaker
 +
:Beds, furniture, floodgates, glass pumps, frees up a few sandbags to be seed bags, mining.
 +
* 5 mason / 5 furnace operator
 +
:Mining, blocks for buildings and pumps, maybe some furnitureAlso makes coke and charcoal for glassmaking.
  
:Still to do: I had planned to experiment with steel pumps to move magma around, but obviously never got there.  I want my magma moat, darnit! I'm considering making all hallways out of up/down.  It would be ugly though.  I should experiment in seeing how many melted copper picks it takes to forge a copper battle axe.  If it's more than 1, than I'd need to bring enough supplies to start with two wagons.  Or buy some logs for the initial charcoal.  3p each, a fairly good deal.
+
Note the lack of metalworking skills.  I have decided that except possibly furnace operator, the metalworking skills are not important enough to buy at embarkInstead I attempt to direct strange moods by cross-training unskilled workers by doing a single job in the skill I want. Accordingly I keep most of the seven starters from starting with moodable skills, and do not assign them jobs that would yield moods I consider worthless.  I'm looking at ''you'', tanning/leatherworking.
-->
 
  
Currently running
+
I am now mixing the early wealth creation roles with the fortress maintenance roles.  This can be considered exploitative, as meals are worth too much, and mechanisms made out of iron ore are worth too much.
  
* a single dwarf, legendary+5 in every skill<br/><br/>
+
I am not convinced that there is much need to buy medical skills during embark.  Diagnostician appears to be the most important of the medical skills.
  
* 4 steel picks
+
I am growing colder on buying masonry at embark time.  It is redundant to carpentry, glassmaking, and the metalworking skills.
* 4 steel battle axes
 
* 10 steel crossbows
 
* 50 steel bolts
 
** Q: are these individual bolts or stacks of bolts?
 
** if the former, they are very overpriced.
 
* 1 iron anvil
 
* 50 of each seed
 
* 84 units of assorted alcohol, 21 of each type available
 
* 15 plump helmet
 
* 15 turtles
 
* 1 of each type of meat
 
* 1 of each type of fish
 
* 15 leather
 
* 15 pig tail cloth
 
* 1 of every small 10p and 15p gem
 
* 5 small star rubies
 
* 1 large star ruby
 
* 100 tower-cap logs
 
* 10 bauxite stones
 
* 18 bituminous coal stones
 
* 9 magnetite stones
 
* 6 charcoal blocks
 
* 10 pearlash blocks
 
* 15 cave spider silk ropes
 
* 20 dogs
 
  
Bomrekevost, "Whipsects" is a 6x6 map known to have hidden magma, chalk, marble.
+
* 4 copper picks
 +
* no axes (use training axe exploit)
 +
* 1 iron anvil (not really needed)
 +
* 25 rock nuts
 +
* 15 pig tail seeds
 +
* 1 each of other seeds/spawn (for bags)
 +
* 11 each of the 4 dwarven alcohols
 +
* 16 plump helmets (for wine & seeds)
 +
* 1 each of all 2P/4P meat/fish (for barrels)
 +
* 1 of each available type of milk (for barrels)
 +
* 20 bituminous coal (-> coke -> glass and metalworking)
 +
* 2 pieces 5P leather (reserved for moods)
 +
* 2 cave spider silk thread (reserved for moods)
 +
* 1 10P small cut gem (reserved for moods)
 +
* 4 kimberlite (for color-coded levers)
 +
* 4 petrified wood (for color-coded levers)
 +
* 4 olivine (for color-coded levers)
 +
* 40 sand (for bags)
 +
* 4 dogs (1 male, 3 female)
 +
* as many logs as possible, around 20.
 +
<br/>
 +
The rules this time:
 +
* No moat-the-map or wall-the-map.
 +
* No stonefall traps in places that are 'outside' &mdash; i.e. don't have a ceiling.
 +
* Non-stonefall traps only in constructed or excavated & smoothed areas.  Traps in excavated dirt areas must have a stone floor built on that tile.
 +
* Metal mechanisms for all non-stonefall traps, all gears, all machines.  Stone mechanisms are only for trade.
 +
* <s>All furniture to be made of wood, metal, or glass.</s>
 +
* All structures to be built with blocks or bars.
 +
* Furnaces must be made out of fire-safe material; magma furnaces must be made out of magma-safe material.  Non magma-safe pumps are allowed.
 +
* GRASSTRAMPLE cut to 1 for civilized and domestic species, 0 for elves and cats.
 +
* Flours and sugar modded out.
  
This guy thinks he's better than everyone else (and he's right; he is a minor god).  When immigrants show up, he will have them do unskilled and military jobs only.  He will do all skilled labor himself.  (Or I may decide that he's a hermit, and kill off immigrants.)
 
  
I expect this will be an interesting balancing act.
+
Depending on the map, the defender/mayor either becomes a soldier or a miner.  (He starts with a free crossbow and bolts because of the ambusher skill.)  Either way, turn off hunting.  If he's a soldier, someone else trains the dogs and then assigns 2 to him and 2 to the herbalist.
  
I will play with using reveal this timeI enjoy it more that way.
+
The carpenter/glassmaker makes 6 tables and chairs, and 4 or so beds2 tables and chairs are made into offices for the bookkeeper and manager, 4 more are made into a dining room.
  
Post-mortem: the universe collapsedThat world was accidentally deletedHe didn't even get to  unload the wagonI may try again someday.
+
Depending on the map, the initially-unskilled miners may dig out large areas of soil to level up.  Digging soil is much faster than digging rock and gives the same experienceThis is best done in two or three stages: dig up-stairs, then remove them, then possibly dig down-stairsThis gives experience twice or three times per tileNote that tiles with down-stairs cannot grow shrubs/trees.
  
----
+
I like to get immigrants as soon as possible, and as many as possible.  I do this by digging out large swaths of dirt and by making mechanisms out of expensive ore to increase the fortress's created wealth.  (The 30x multiplier on mechanisms may be seen as a bug exploit; you may wish to make 25x statues instead.)
  
== Enable Magma Buildings ==
+
Immediately set reserved barrels to 20 or so.  You want those barrels for booze.
Helper utility for Rick's reveal.exe<br/>
 
[http://www.yourfilehost.com/media.php?cat=other&file=3935enable_magma_buildings.zip enable_magma_buildings.zip]
 
  
You need this utility in the case that you used the reveal utility, and
+
Start cooking all that food.  <s>Forbid the booze barrels that are totally full; cook the rest of the booze.</s><sub>Boozecooking is currently bugged{{version|0.31.03}}.</sub> Cook the seeds to recover their bags.
there is a magma pool or pipe on your map that does not reach the surface.
 
(If the hide utility is ever updated, you could also hide a few magma
 
tiles and then dig them outThat worked in the old version.)
 
  
Because there is no actual flag that controls whether magma has been seen
+
Later, you must remember to turn off booze cooking and reclaim the full booze barrels.
(the game searches a list, probably a list of notable events), I had to
 
patch the game's code.  This means you need to run the patch every time
 
you start dwarfort.exe.
 
 
 
This utility has been made version-independent. 
 
It is expected to work with future releases of Dwarf Fortress.
 
 
 
----
 
  
== Seekret Projekt ==
+
Still later, when you buy fish and seeds from the traders, you must remember to turn off cooking on each type.
  
[http://www.yourfilehost.com/media.php?cat=other&file=featurefinderbeta2.zip beta2]
+
Customize food piles to not accept booze, seeds, or dye plants. Booze barrels can stay in the still -- they hardly clutter it at all (unlike, say, prepared meals in the kitchen). It's too early for dyeing, so we don't want to waste the space. And a seedpile is best made near your farm.
  
Known bugs in beta2:
+
Also set food piles to 0 barrels, except the seedpile should allow 1. This means you need more space devoted to food piles, but you can see at a glance how much food you have(Note: supposedly you will lose more food to vermin this way.)  (Now I think this should be done only for the prepared-food pile.)
* underground rivers are not displayed.
 
* RETRACTED: "once incidence where tool showed hidden magma but an underground water pool was found instead." This was due to a regression while adding underground rivers.
 
  
I have decided not to release a beta3; I will release the v1.0 on Christmas dayLate in the day; with no kids around I intend to party Christmas eve and sleep in.
+
Dig cisterns to hold pond water in case it evaporates.  (Not necessary if the map is cold or has running water.) The cisterns must be in a rock layer to prevent evaporation.
  
----
+
The outdoor refuse pile should be customized to not accept rotten plants because the herbalists will be dropping dye plants as soon as they pick them, and we don't want to waste time hauling them when they wither.
  
== All Voodoo is Out of Date ==
+
I make heavy use of the "quantum stockpiles" that the dump designation and garbage zone allows.  It allows much more control over item placement and disposition than stockpiles do.
  
I will soon upload some source that demonstrates these methods.
+
Think big, there's lots of room. But remember to centralize as well. 
  
----
+
Vertical connectivity is king.  An up/down staircase takes no longer to dig than an empty square, and has much more potential.  You can't put a building on an up/down, but you can put a stockpile or zone on it.  <sub>If you can tolerate the flashing.</sub>
  
== Map Data Voodoo ==
+
Make magma channels two-wide or more for faster filling, or use a pump to get it done even faster.
  
To find the map_data, map_x_count, map_y_count, and map_z_count in an unknown version of dwarfort.exe,
+
== <b>Siege Checklist</b> ==
  
<pre>// find certain map data variables.
+
* Turn off the [[Skill|Mechanic]] skill on all dwarves.
// this is the simplest type of search -- no meta tokens at all.
+
::This stops reloading of cage traps and stone traps.
d = search(6, 0xC6, 0x44, 0x24, 0x38, 0x3E, 0xBF);
+
::This is '''not necessary''' if all traps are forbidden, as discussed below.
if (!d) { handlefailure; }
+
* Turn off [[Standing_orders|animal gathering]] {{K|o}}{{K|a}}.
 +
::This prevents gathering of occupied cages.
 +
::This is '''not necessary''' if all traps are forbidden, as discussed below.
 +
* Turn off [[Standing_orders|wood gathering]] {{K|o}}{{K|w}}.
 +
* Turn off [[Standing_orders#Refuse_orders|collect outside refuse]] {{K|o}}{{K|r}}{{K|o}}.
 +
* Turn on all [[Standing_orders|Forbid]] orders {{K|o}}{{K|F}}{{K|pcoit}}.
 +
* Consider turning on [[Standing_orders|only soldiers can go outdoors]] {{K|o}}{{K|i}}.
 +
* Lock someone in the lever room.  (You do have a lever room, right?)
 +
::Draft them, station them, relieve them of duty.
 +
::Probably should use two dwarves in case one goes to sleep.
 +
* [[Forbid_items/buildings|Forbid]] all traps {{K|d}}{{K|b}}{{K|f}} <u>before</u> enemies trigger them.
 +
:This prevents clean trap and reset trap jobs and gathering of occupied cages.
  
// however this math complicates it.
+
=== Post-Siege Checklist ===
map_data_loc = peekd(d + 0x18);
 
map_x_count_loc = peekd(d + 0x1E);
 
map_y_count_loc = peekd(d + 0x24);
 
map_z_count_loc = peekd(d + 0x2A);
 
  
if (map_x_count_loc + 4 != map_y_count_loc || map_y_count_loc + 4 != map_z_count_loc) { handlefailure; }
+
* Ensure that enemies have left the map.  {{K|u}}nit list, between tame animals and deceased units.
 +
* Bring some or all squads off-duty.
 +
* Turn on [[Skill|Mechanic]] on [[Mechanic]] units and possibly some [[Legendary|legendary]] units.
 +
* Turn on animal gathering.
 +
* Turn on wood gathering.
 +
* Re-set Forbid orders.
 +
* Allow all dwarves to go outdoors.
 +
* Unlock the lever room.
 +
* Reclaim all dead bodies through stocks menu.
 +
* Reclaim all trap components through stocks menu.
 +
* Wait for bodies to be hauled to refuse piles and graveyards.
 +
* Mass-mark enemy equipment for melting {{K|d}}{{K|b}}{{K|m}}.
 +
::Alternatively mark all equipment for dumping {{K|d}}{{K|b}}{{K|d}}, then re-mark for melting {{K|d}}{{K|b}}{{K|m}}, which removes the dump tag.  This results in dumping all non-metal items; the metal ones can then be hauled to weapon/armor piles near the smelters.
 +
* Unmark trap components for dumping and/or melting through stocks menu.
 +
* Reclaim the enemy equipment {{K|d}}{{K|b}}{{K|c}}.
 +
* (Unknown)
 +
* Profit!
  
printf("map: %08X %08X %08X %08X", map_data_loc, map_x_count_loc, map_y_count_loc, map_z_count_loc); </pre>
+
<!--
 +
== Regional Prospector ==
  
== Race Voodoo ==
+
The seekret projekt has been revealed to be [[Utilities#Regional_Prospector|Regional Prospector]].
To find the variable holding the index of the dwarven race,
 
  
<pre>
 
// find dwarven race variable.  shows use of some of the simpler meta tokens.
 
  
d = search(5+4,
+
The original functionality of <b>RP</b> has been rolled into <b>DF</b>, but the magma highlighting and longitude/latitude/seed display has not.  I am considering updating <b>RP</b>, and probably will.
// movsx reg1, word ptr dorf_race_id
 
0x0F, 0xBF, ANYBYTE, HERE, ADDRESS,
 
// cmp [reg2+8Ch], reg1
 
0x39, ANYBYTE, DWORD_, 0x0000008C
 
);
 
  
if (!d) { handlefailure; }
+
----
 +
-->
  
dwarven_race_index_loc = peekd(d);
+
== Stone Sense ==
  
printf("dwarven_race_index at %08X", dwarven_race_index_loc);</pre>
+
[http://dffd.wimbli.com/file.php?id=2066 Download Stone Sense 1.2]
  
Note: the variable is 16-bit: int16_t or uint16_t.
+
Stone Sense is a utility for Dwarf Fortress that adds a sort of radar to miners, so that they can detect what is inside the rock near the location where they are digging.
  
== Main Creature Vector Voodoo ==
+
The number of tiles revealed depends on the skill of the miner, with Legendary miners revealing a radius of 8 tiles in each direction (i.e. a 17x17 square, 289 tiles.)
  
To find the main creature vector,
+
To use it, first start Dwarf Fortress.  Then run stone_sense.exe.
  
<pre>
+
The utility does not need to be in the same directory as Dwarf Fortress.
// find main (complete) creature vector.
 
// this one feels a bit fragile.
 
// note use of EOL instead of a true count.
 
d = search(1000,
 
0x8B, RANGE_LO,0x80, RANGE_HI,0xBF, DWORD_, 0x000004C8,
 
0x8D, RANGE_LO,0x00, RANGE_HI,0x3F, RANGE_LO,0x80, RANGE_HI,0xBF,
 
0x8B, RANGE_LO,0x00, RANGE_HI,0x3F, HERE, ADDRESS,
 
0x85, ANYBYTE,
 
EOL
 
);
 
  
if (!d) { handlefailure; }
+
Note: this utility patches the in-memory copy of Dwarf Fortress, not the program file.  Accordingly, you will need to run it every time you start Dwarf Fortress.
main_creature_vector_loc = peekd(d) - 4;
 
  
// another way, also a bit fragile
+
Version 1.0 and up work only with the 0.31.* (DF2010) releases.  If you need a version that works with the previous 3D version (aka 40d), feel free to contact me.
d = search(1000,
 
0x8B, RANGE_LO,0x80, RANGE_HI,0xBF, DWORD_, 0x228,
 
0x3B, RANGE_LO,0xC0, RANGE_HI,0xFF,
 
JZ,
 
0xB8, HERE, ADDRESS,
 
CALL,
 
0x8B, RANGE_LO,0xC0, RANGE_HI,0xFF,
 
0x85, RANGE_LO,0xC0, RANGE_HI,0xFF,
 
EOL
 
);
 
if (!d) { handlefailure; }
 
main_creature_vector_ptr_loc = peekd(d);
 
  
// a third way, now used in teleport22
+
Known bugs: digging near raw funmetal will detect any empty tiles within the metal. When an empty tile is detected, the fun is unleashed, which then permanently slows down frame rates as it tries to hold a party for your dwarves. (A fix is planned, but will take some time.)
d = search(1000,
 
// mov reg1, [reg2+0C4h]
 
0x8B, RANGE_LO,0x80, RANGE_HI,0xBF, DWORD_, 0xC4,
 
// mov ebx, [reg1]
 
0x8B, RANGE_LO,0x00, RANGE_HI,0x3F,
 
// mov edi, offset main_creature_vector
 
0xBF, HERE, ADDRESS,
 
// call sub_41CCF0
 
CALL,
 
EOL
 
);
 
if (!d) { handlefailure; }
 
main_creature_vector_ptr_loc = peekd(d);
 
</pre>
 
So if one doesn't work, try the other.
 
  
== Another Creature Vector Voodoo ==
+
----
<pre>// find "another" creature vector
 
d = search(1000,
 
0xF7, RANGE_LO,0x80, RANGE_HI,0xBF,
 
DWORD_, 0xE4, DWORD_, 0x02000000,
 
JNZ,
 
RANGE_LO, 0xB8, RANGE_HI, 0xBF, HERE, ADDRESS,
 
CALL,
 
EOL
 
);
 
 
 
if (!d) { handlefailure; }
 
 
 
another_creature_vector_loc = peekd(d);</pre>
 
 
 
== Yet Another Creature Vector Voodoo ==
 
 
 
<pre>// find "yet another" creature vector
 
 
 
d = search(1000, 0xE8, ANYDWORD,
 
0x83, 0xC4, 0x10,
 
0x89, RANGE_LO,0x00, RANGE_HI,0x3F, HERE, ADDRESS,
 
0x8D, RANGE_LO,0x40, RANGE_HI,0x7F, 0x24, ANYBYTE,
 
EOL
 
);
 
 
 
if (!d) { handlefailure; }
 
 
 
yet_another_creature_vector_loc = peekd(d) - 8;</pre>
 
 
 
== What The! &mdash; Another Creature Vector ==
 
 
 
To find this vector, first find dwarven_race_index_loc, then
 
 
 
<pre>// find "what the! another creature vector"
 
d = search(1000, 0xB8, HERE, ADDRESS,
 
CALL,
 
0x8B, RANGE_LO,0x00, RANGE_HI,0x3F, DWORD_, dwarven_race_index_loc,
 
0x8B, RANGE_LO,0xC0, RANGE_HI,0xFF,
 
0x6A, 0x09,
 
EOL
 
);
 
if (!d) { handlefailure; }
 
whathe_another_creature_vector_loc = peekd(d);</pre>
 
 
 
== Initial 7 Dwarves Voodoo ==
 
 
 
To find the the number of dwarves you start with, first find dwarven_race_index_loc, then
 
 
 
<pre>// this search does not work in .32a because the 7 was relocated far
 
// away from this region due to excessive optimization.
 
d = search(1000,
 
0x4F, 0, 0, 0,
 
CALL,
 
SKIP_UP_TO, 8,
 
HERE, DWORD_, 7,
 
SKIP_UP_TO, 8,
 
CALL,
 
0x0F, 0xB7, ANYBYTE, DWORD_, dwarven_race_index_loc,
 
EOL
 
);
 
 
 
if (!d) { handlefailure; }
 
 
 
number_of_dwarves_loc = d;
 
 
 
printf("initial number of dwarves = %d", peekd(number_of_dwarves_loc));</pre>
 
 
 
== Initial Points Voodoo ==
 
 
 
To find the number of points you are allocated when starting,
 
 
 
<pre>d = search(10, 0x66, 0xC7, 0x83, ANYBYTE, ANYBYTE, 0, 0, HERE, 0xC8, 0);
 
 
 
if (!d) { handlefailure; }
 
 
 
initial_starting_points_loc = d;
 
 
 
printf("intial starting points = %d", peekw(initial_starting_points_loc));
 
</pre>
 
 
 
Note that it is a int16_t variable.
 
 
 
== Current Unit Focus Voodoo ==
 
 
 
To find the location of the current_unit_focus variable, try both of these patterns.
 
 
 
<pre>// find current unit focus variable
 
 
 
// method 1, may be fragile
 
d = search(5+5, 0x66, 0x83, ANYBYTE, ADDRESS, 0x16,
 
0x89, ANYBYTE, HERE, ADDRESS, JNZ);
 
  
if (!d) { handlefailure; }
+
== German Menu ==
  
current_unit_focus_loc = peekd(d);
+
[http://dffd.wimbli.com/file.php?id=913 Download German Menu beta1]
current_unit_focus = peekd(current_unit_focus_loc);
 
  
// method 2, may also be fragile
+
== Reveal2 ==
d = search(4+1+4+4, 0x3B, ANYBYTE, HERE, ADDRESS, JNZ,
 
0x8B, ANYBYTE, 0x24, 0x18, 0x8B, ANYBYTE, DWORD_, 0x814);
 
  
if (!d) { handlefailure; }
+
&#x202E;I have updated [[User:Rick|Rick/Gibbed's]] Reveal utility to work with Vista and Windows 7.  In addition, it should be able to work with all versions of Dwarf Fortress without the need to edit an .INI file.  It is on the DFFD at [http://dffd.wimbli.com/file.php?id=1044 Reveal2].&#x202C;
  
current_unit_focus_loc = peekd(d);
+
For the .31.* releases, I recommend using [[Utilities#DFHack|DFHack]] instead, as its dfreveal utility is more powerful, more friendly, and DFHack is updated with new version information very quickly.  Download DFHack [http://github.com/peterix/dfhack/downloads here].
current_unit_focus = peekd(current_unit_focus_loc);
 
</pre>
 
I expect that at least one of them will work.
 

Revision as of 04:32, 2 November 2010

Build

I obsessively min-max my starting profile, even though it doesn't matter in the long run.

My latest build was intended for a resource-heavy wooded terrifying area in version v0.31.03.

  • 4 ambusher / 2 crossbowman / 1 negotiator / 1 judge of intent / 1 appraiser / 1 pacifier
Immediately drafted as sole early protection. Starts with a free crossbow due to ambusher skill. May mine if area seems safe. Cross-trained as weaponsmith.
  • 5 diagnostician / 4 surgeon / 1 wound dresser
Woodcutting, mining. Cross-trained as weaponsmith.
  • 5 grower / 5 brewer
Fortress maintenance, incidental tasks. Mines until underground farm area is prepared. Cross-trained as armorsmith.
  • 5 grower / 5 cook
Fortress maintenance, wealth creation (prepared meals), incidental tasks. Mines until underground farm area is prepared. Cross-trained as armorsmith.
  • 5 mechanic / 5 herbalist
Fortress maintenance, wealth creation (mechanisms), plant gathering to allow above-ground farming, possibly some mining.
  • 5 carpenter / 5 glassmaker
Beds, furniture, floodgates, glass pumps, frees up a few sandbags to be seed bags, mining.
  • 5 mason / 5 furnace operator
Mining, blocks for buildings and pumps, maybe some furniture. Also makes coke and charcoal for glassmaking.

Note the lack of metalworking skills. I have decided that except possibly furnace operator, the metalworking skills are not important enough to buy at embark. Instead I attempt to direct strange moods by cross-training unskilled workers by doing a single job in the skill I want. Accordingly I keep most of the seven starters from starting with moodable skills, and do not assign them jobs that would yield moods I consider worthless. I'm looking at you, tanning/leatherworking.

I am now mixing the early wealth creation roles with the fortress maintenance roles. This can be considered exploitative, as meals are worth too much, and mechanisms made out of iron ore are worth too much.

I am not convinced that there is much need to buy medical skills during embark. Diagnostician appears to be the most important of the medical skills.

I am growing colder on buying masonry at embark time. It is redundant to carpentry, glassmaking, and the metalworking skills.

  • 4 copper picks
  • no axes (use training axe exploit)
  • 1 iron anvil (not really needed)
  • 25 rock nuts
  • 15 pig tail seeds
  • 1 each of other seeds/spawn (for bags)
  • 11 each of the 4 dwarven alcohols
  • 16 plump helmets (for wine & seeds)
  • 1 each of all 2P/4P meat/fish (for barrels)
  • 1 of each available type of milk (for barrels)
  • 20 bituminous coal (-> coke -> glass and metalworking)
  • 2 pieces 5P leather (reserved for moods)
  • 2 cave spider silk thread (reserved for moods)
  • 1 10P small cut gem (reserved for moods)
  • 4 kimberlite (for color-coded levers)
  • 4 petrified wood (for color-coded levers)
  • 4 olivine (for color-coded levers)
  • 40 sand (for bags)
  • 4 dogs (1 male, 3 female)
  • as many logs as possible, around 20.


The rules this time:

  • No moat-the-map or wall-the-map.
  • No stonefall traps in places that are 'outside' — i.e. don't have a ceiling.
  • Non-stonefall traps only in constructed or excavated & smoothed areas. Traps in excavated dirt areas must have a stone floor built on that tile.
  • Metal mechanisms for all non-stonefall traps, all gears, all machines. Stone mechanisms are only for trade.
  • All furniture to be made of wood, metal, or glass.
  • All structures to be built with blocks or bars.
  • Furnaces must be made out of fire-safe material; magma furnaces must be made out of magma-safe material. Non magma-safe pumps are allowed.
  • GRASSTRAMPLE cut to 1 for civilized and domestic species, 0 for elves and cats.
  • Flours and sugar modded out.


Depending on the map, the defender/mayor either becomes a soldier or a miner. (He starts with a free crossbow and bolts because of the ambusher skill.) Either way, turn off hunting. If he's a soldier, someone else trains the dogs and then assigns 2 to him and 2 to the herbalist.

The carpenter/glassmaker makes 6 tables and chairs, and 4 or so beds. 2 tables and chairs are made into offices for the bookkeeper and manager, 4 more are made into a dining room.

Depending on the map, the initially-unskilled miners may dig out large areas of soil to level up. Digging soil is much faster than digging rock and gives the same experience. This is best done in two or three stages: dig up-stairs, then remove them, then possibly dig down-stairs. This gives experience twice or three times per tile. Note that tiles with down-stairs cannot grow shrubs/trees.

I like to get immigrants as soon as possible, and as many as possible. I do this by digging out large swaths of dirt and by making mechanisms out of expensive ore to increase the fortress's created wealth. (The 30x multiplier on mechanisms may be seen as a bug exploit; you may wish to make 25x statues instead.)

Immediately set reserved barrels to 20 or so. You want those barrels for booze.

Start cooking all that food. Forbid the booze barrels that are totally full; cook the rest of the booze.Boozecooking is currently buggedv0.31.03. Cook the seeds to recover their bags.

Later, you must remember to turn off booze cooking and reclaim the full booze barrels.

Still later, when you buy fish and seeds from the traders, you must remember to turn off cooking on each type.

Customize food piles to not accept booze, seeds, or dye plants. Booze barrels can stay in the still -- they hardly clutter it at all (unlike, say, prepared meals in the kitchen). It's too early for dyeing, so we don't want to waste the space. And a seedpile is best made near your farm.

Also set food piles to 0 barrels, except the seedpile should allow 1. This means you need more space devoted to food piles, but you can see at a glance how much food you have. (Note: supposedly you will lose more food to vermin this way.) (Now I think this should be done only for the prepared-food pile.)

Dig cisterns to hold pond water in case it evaporates. (Not necessary if the map is cold or has running water.) The cisterns must be in a rock layer to prevent evaporation.

The outdoor refuse pile should be customized to not accept rotten plants because the herbalists will be dropping dye plants as soon as they pick them, and we don't want to waste time hauling them when they wither.

I make heavy use of the "quantum stockpiles" that the dump designation and garbage zone allows. It allows much more control over item placement and disposition than stockpiles do.

Think big, there's lots of room. But remember to centralize as well.

Vertical connectivity is king. An up/down staircase takes no longer to dig than an empty square, and has much more potential. You can't put a building on an up/down, but you can put a stockpile or zone on it. If you can tolerate the flashing.

Make magma channels two-wide or more for faster filling, or use a pump to get it done even faster.

Siege Checklist

  • Turn off the Mechanic skill on all dwarves.
This stops reloading of cage traps and stone traps.
This is not necessary if all traps are forbidden, as discussed below.
This prevents gathering of occupied cages.
This is not necessary if all traps are forbidden, as discussed below.
Draft them, station them, relieve them of duty.
Probably should use two dwarves in case one goes to sleep.
  • Forbid all traps dbf before enemies trigger them.
This prevents clean trap and reset trap jobs and gathering of occupied cages.

Post-Siege Checklist

  • Ensure that enemies have left the map. unit list, between tame animals and deceased units.
  • Bring some or all squads off-duty.
  • Turn on Mechanic on Mechanic units and possibly some legendary units.
  • Turn on animal gathering.
  • Turn on wood gathering.
  • Re-set Forbid orders.
  • Allow all dwarves to go outdoors.
  • Unlock the lever room.
  • Reclaim all dead bodies through stocks menu.
  • Reclaim all trap components through stocks menu.
  • Wait for bodies to be hauled to refuse piles and graveyards.
  • Mass-mark enemy equipment for melting dbm.
Alternatively mark all equipment for dumping dbd, then re-mark for melting dbm, which removes the dump tag. This results in dumping all non-metal items; the metal ones can then be hauled to weapon/armor piles near the smelters.
  • Unmark trap components for dumping and/or melting through stocks menu.
  • Reclaim the enemy equipment dbc.
  • (Unknown)
  • Profit!


Stone Sense

Download Stone Sense 1.2

Stone Sense is a utility for Dwarf Fortress that adds a sort of radar to miners, so that they can detect what is inside the rock near the location where they are digging.

The number of tiles revealed depends on the skill of the miner, with Legendary miners revealing a radius of 8 tiles in each direction (i.e. a 17x17 square, 289 tiles.)

To use it, first start Dwarf Fortress. Then run stone_sense.exe.

The utility does not need to be in the same directory as Dwarf Fortress.

Note: this utility patches the in-memory copy of Dwarf Fortress, not the program file. Accordingly, you will need to run it every time you start Dwarf Fortress.

Version 1.0 and up work only with the 0.31.* (DF2010) releases. If you need a version that works with the previous 3D version (aka 40d), feel free to contact me.

Known bugs: digging near raw funmetal will detect any empty tiles within the metal. When an empty tile is detected, the fun is unleashed, which then permanently slows down frame rates as it tries to hold a party for your dwarves. (A fix is planned, but will take some time.)


German Menu

Download German Menu beta1

Reveal2

‮I have updated Rick/Gibbed's Reveal utility to work with Vista and Windows 7. In addition, it should be able to work with all versions of Dwarf Fortress without the need to edit an .INI file. It is on the DFFD at Reveal2.‬

For the .31.* releases, I recommend using DFHack instead, as its dfreveal utility is more powerful, more friendly, and DFHack is updated with new version information very quickly. Download DFHack here.