- 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.
Difference between revisions of "40d:Mineshaft stitching"
(Created page with 'When using Mine shafts, dwarves will prefer to dig all of one level before moving on to the next. This can result in a lot of time spent moving...') |
|||
Line 1: | Line 1: | ||
− | When using [[Exploratory mining# | + | When using [[Exploratory mining#Mine shafts|mine shafts]], dwarves will prefer to dig all of one level before moving on to the next. This can result in a lot of time spent moving, as miners go up and down mine shafts. If you have a large number of relatively unskilled miners, this is unlikely to be a problem: digging time will dominate in any case. If you have one or two legendary miners, this is quite annoying. As a solution, you can creating a single path that forces your dwarf to finish one shaft before moving on to the next. To do so, connect shafts alternately at the top and bottom layers, so the shaft snakes through the area. For example, the top, middle, and bottom layers could look like: |
Line 30: | Line 30: | ||
▒▒▒▒▒▒▒▒▒ | ▒▒▒▒▒▒▒▒▒ | ||
</nowiki></div> | </nowiki></div> | ||
+ | |||
+ | An AKH script to construct such a pattern is provided below, based on [[User:StrawberryBunny/Mineshaft.ahk|this script]], but using many fewer keystrokes. | ||
+ | |||
+ | length = 12 | ||
+ | width = 12 | ||
+ | depth = 3 | ||
+ | wait = 100 | ||
+ | spacing = 1 | ||
+ | vdir = +. | ||
+ | |||
+ | DropShaft(vertdir, depth, wait) | ||
+ | { | ||
+ | Send i | ||
+ | Send {Enter} | ||
+ | Send {Enter} | ||
+ | Loop %depth% | ||
+ | { | ||
+ | Send %vertdir% | ||
+ | Send {Enter} | ||
+ | Send {Enter} | ||
+ | Sleep %wait% | ||
+ | } | ||
+ | } | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | ; stitching.ahk ; | ||
+ | ; this is an ahk script to place exploratory mine shafts. ; | ||
+ | ; press d and place the cursor ; | ||
+ | ; in the top left corner of the area to be explored ; | ||
+ | ; then use ctrl+shift+s to run ; | ||
+ | ; to change parameters, use ctrl+shift+c ; | ||
+ | ; Increasing spacing will increase some shafts | ||
+ | ; ; | ||
+ | ; NOTE: ; | ||
+ | ; Author: Seth Fogarty ; | ||
+ | ; Based on a script by StrawberryBunny ; | ||
+ | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
+ | |||
+ | x = 4 | ||
+ | width = 4 | ||
+ | depth = 3 | ||
+ | wait = 100 | ||
+ | spacing = 1 | ||
+ | vdir = +. | ||
+ | |||
+ | DropShaft(vertdir, depth, wait) | ||
+ | { | ||
+ | Send i | ||
+ | Send {Enter} | ||
+ | Send {Enter} | ||
+ | Loop %depth% | ||
+ | { | ||
+ | Send %vertdir% | ||
+ | Send {Enter} | ||
+ | Send {Enter} | ||
+ | Sleep %wait% | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ^+c:: | ||
+ | inputbox x, Input Length, Vertical pattern length: x-axis | ||
+ | inputbox y, Input Width, Horizontal pattern width: y-axis | ||
+ | inputbox depth, Input Depth, Mineshaft depth: z-axis | ||
+ | inputbox spacing, Spacing multiplier (1 for complete visiblity) | ||
+ | inputbox wait, Input Delay, Delay in miliseconds (100 recommended) | ||
+ | return | ||
+ | |||
+ | ^+s:: | ||
+ | shafts := (x * y) -1 | ||
+ | i := x-1 | ||
+ | hdir = {Down} | ||
+ | next = {Up} | ||
+ | |||
+ | Loop %shafts% | ||
+ | { | ||
+ | DropShaft(vdir, depth, wait) | ||
+ | if (vdir = "+.") | ||
+ | { | ||
+ | vdir = +, | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | vdir = +. | ||
+ | } | ||
+ | Send d | ||
+ | k := spacing-1 | ||
+ | Send %hdir% | ||
+ | Send {Enter} | ||
+ | Loop %k% | ||
+ | { | ||
+ | Send %hdir% | ||
+ | Send {Enter} | ||
+ | Send %hdir% | ||
+ | Send {Enter} | ||
+ | Send %hdir% | ||
+ | Sleep %wait% | ||
+ | } | ||
+ | Send %hdir% | ||
+ | Send {Enter} | ||
+ | Send %hdir% | ||
+ | Sleep %wait% | ||
+ | i-- | ||
+ | if (i = 0) | ||
+ | { | ||
+ | if (hdir = "{Down}") | ||
+ | { | ||
+ | hdir = {Right} | ||
+ | next = {Up} | ||
+ | i=1 | ||
+ | } | ||
+ | else if (hdir = "{Right}") | ||
+ | { | ||
+ | hdir = %next% | ||
+ | i := x-1 | ||
+ | } | ||
+ | else if (hdir = "{Up}") | ||
+ | { | ||
+ | hdir = {Right} | ||
+ | next = {Down} | ||
+ | i=1 | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | DropShaft(vdir, depth, wait) | ||
+ | if (vdir = "+.") | ||
+ | { | ||
+ | Loop %depth% | ||
+ | { | ||
+ | Send +, | ||
+ | } | ||
+ | } | ||
+ | return | ||
+ | |||
+ | </pre> |
Revision as of 15:52, 30 March 2009
When using mine shafts, dwarves will prefer to dig all of one level before moving on to the next. This can result in a lot of time spent moving, as miners go up and down mine shafts. If you have a large number of relatively unskilled miners, this is unlikely to be a problem: digging time will dominate in any case. If you have one or two legendary miners, this is quite annoying. As a solution, you can creating a single path that forces your dwarf to finish one shaft before moving on to the next. To do so, connect shafts alternately at the top and bottom layers, so the shaft snakes through the area. For example, the top, middle, and bottom layers could look like:
An AKH script to construct such a pattern is provided below, based on this script, but using many fewer keystrokes.
length = 12 width = 12 depth = 3 wait = 100 spacing = 1 vdir = +.
DropShaft(vertdir, depth, wait) { Send i Send {Enter} Send {Enter} Loop %depth% { Send %vertdir% Send {Enter} Send {Enter} Sleep %wait% } }
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; stitching.ahk ; ; this is an ahk script to place exploratory mine shafts. ; ; press d and place the cursor ; ; in the top left corner of the area to be explored ; ; then use ctrl+shift+s to run ; ; to change parameters, use ctrl+shift+c ; ; Increasing spacing will increase some shafts ; ; ; NOTE: ; ; Author: Seth Fogarty ; ; Based on a script by StrawberryBunny ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; x = 4 width = 4 depth = 3 wait = 100 spacing = 1 vdir = +. DropShaft(vertdir, depth, wait) { Send i Send {Enter} Send {Enter} Loop %depth% { Send %vertdir% Send {Enter} Send {Enter} Sleep %wait% } } ^+c:: inputbox x, Input Length, Vertical pattern length: x-axis inputbox y, Input Width, Horizontal pattern width: y-axis inputbox depth, Input Depth, Mineshaft depth: z-axis inputbox spacing, Spacing multiplier (1 for complete visiblity) inputbox wait, Input Delay, Delay in miliseconds (100 recommended) return ^+s:: shafts := (x * y) -1 i := x-1 hdir = {Down} next = {Up} Loop %shafts% { DropShaft(vdir, depth, wait) if (vdir = "+.") { vdir = +, } else { vdir = +. } Send d k := spacing-1 Send %hdir% Send {Enter} Loop %k% { Send %hdir% Send {Enter} Send %hdir% Send {Enter} Send %hdir% Sleep %wait% } Send %hdir% Send {Enter} Send %hdir% Sleep %wait% i-- if (i = 0) { if (hdir = "{Down}") { hdir = {Right} next = {Up} i=1 } else if (hdir = "{Right}") { hdir = %next% i := x-1 } else if (hdir = "{Up}") { hdir = {Right} next = {Down} i=1 } } } DropShaft(vdir, depth, wait) if (vdir = "+.") { Loop %depth% { Send +, } } return