Merge pull request #3006 from myk002/myk_blueprint_library

move blueprint library to dfhack-config and hack/data
develop
Myk 2023-03-12 15:59:00 -07:00 committed by GitHub
commit 4f2b7472ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
72 changed files with 36 additions and 598 deletions

@ -7,9 +7,6 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/init/
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/base_command_counts.json install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/base_command_counts.json
DESTINATION "${DFHACK_DATA_DESTINATION}/data") DESTINATION "${DFHACK_DATA_DESTINATION}/data")
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/quickfort/
DESTINATION "${DFHACK_DATA_DESTINATION}/data/quickfort")
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/orders/ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/orders/
DESTINATION "${DFHACK_DATA_DESTINATION}/data/orders") DESTINATION "${DFHACK_DATA_DESTINATION}/data/orders")
@ -20,12 +17,11 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/professions/
DESTINATION "${DFHACK_DATA_DESTINATION}/data/professions") DESTINATION "${DFHACK_DATA_DESTINATION}/data/professions")
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/
DESTINATION blueprints DESTINATION "${DFHACK_DATA_DESTINATION}/data/blueprints"
FILES_MATCHING PATTERN "*" FILES_MATCHING PATTERN "*"
PATTERN blueprints/library/test EXCLUDE) PATTERN blueprints/test EXCLUDE)
if(BUILD_TESTS) if(BUILD_TESTS)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/library/test/ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/test/
DESTINATION blueprints/library/test DESTINATION "${DFHACK_DATA_DESTINATION}/data/blueprints/test")
)
endif() endif()

@ -1,17 +0,0 @@
# Custom aliases for quickfort query mode blueprints
#
# This file defines custom key sequence shortcuts for query mode blueprints.
# Definitions in this file take precedence over any definitions in the
# baseline aliases configuration file in
# hack/data/quickfort/aliases-common.txt
#
# Please see
# https://docs.dfhack.org/en/latest/docs/guides/quickfort-alias-guide.html
# or
# hack/docs/docs/guides/quickfort-alias-guide.html
# in your DF installation directory for alias syntax documentation and an
# overview of the DFHack alias standard library.
#
#
# Add your custom aliases here. Example:
# food_stash: {foodprefix}b{Right}{Down 11}p^{permitplants}

@ -1,37 +0,0 @@
# quickfort main configuration file
#
# Set startup defaults for the quickfort script in this file. Settings can be
# temporarily overridden in the active session with the `quickfort set` command.
#
# If you have edited this file but want to revert to "factory defaults", delete
# this file and a default one will be regenerated for you the next time you
# start DFHack.
# Directory tree to search for blueprints. Can be set to an absolute or relative
# path. If set to a relative path, resolves to a directory under the DF folder.
# Note that if you change this directory, you will not automatically pick up
# blueprints written by the DFHack "blueprint" plugin (which always writes to
# the "blueprints" dir).
blueprints_dir=blueprints
# Set to "true" or "false". If true, will designate all dig blueprints in marker
# mode. If false, only cells with dig codes explicitly prefixed with an "m" will
# be designated in marker mode.
force_marker_mode=false
# Skip query blueprint sanity checks that detect common blueprint errors and
# halt or skip keycode playback. Checks include ensuring a configurable building
# exists at the designated cursor position and verifying the active UI screen is
# the same before and after sending keys for the cursor position. If you find
# you need to enable this for one of your own blueprints, you should probably be
# using a config blueprint, not a query blueprint.
query_unsafe=false
# Set to the maximum number of resources you want assigned to stockpiles of the
# relevant types. Set to -1 for DF defaults (number of stockpile tiles for
# stockpiles that take barrels and bins, 1 wheelbarrow for stone stockpiles).
# The default here for wheelbarrows is 0 since restricting stockpiles to a
# single wheelbarrow can drastically *decrease* the efficiency of your fort.
stockpiles_max_barrels=-1
stockpiles_max_bins=-1
stockpiles_max_wheelbarrows=0

@ -1,509 +0,0 @@
# Standard library of aliases for quickfort query mode blueprints.
#
# Please DO NOT EDIT this file directly. It will get overwritten when DFHack
# is updated. Instead, custom aliases should be added to
# dfhack-config/quickfort/aliases.txt
# Custom alias definitions will take precedence over aliases in this file.
#
# Please see
# https://docs.dfhack.org/en/latest/docs/guides/quickfort-alias-guide.html
# or
# hack/docs/docs/guides/quickfort-alias-guide.html
# in your DF installation directory for alias syntax documentation and
# documentation for the aliases in this file.
##################################
# naming aliases
##################################
name: {Empty}
givename: !n{name}&
namezone: ^i{givename}^q
##################################
# quantum stockpile aliases
##################################
# Allows the standard stockpile config aliases to also be used to configure
# hauling routes.
enter_sp_config: {enter_sp_config_default}
enter_sp_config_default: s
enter_sp_config_hauling: &
quantum_enable: {enableanimals}{enablefood}{enablefurniture}{enablestone}{enableammo}{enablecoins}{enablebars}{enablegems}{enablefinishedgoods}{enableleather}{enablecloth}{enablewood}{enableweapons}{enablearmor}{enablesheet}
quantum: {linksonly}{nocontainers}{quantum_enable}{givename}
stop_name: {Empty}
route_enable: {quantum_enable}{enablecorpses}{enablerefuse}
sp_link: s{move}p{move_back}
sp_links: {sp_link}
quantumstop: ^hrn{name}&sn{stop_name}&&xxx{route_enable enter_sp_config={enter_sp_config_hauling}}{sp_links}^^q
quantumstopfromeast: {quantumstop move={Right} move_back={Left}}
quantumstopfromsouth: {quantumstop move={Down} move_back={Up}}
quantumstopfromwest: {quantumstop move={Left} move_back={Right}}
quantumstopfromnorth: {quantumstop move={Up} move_back={Down}}
##################################
# farm plots
##################################
growlastcropall: a/&b/&c/&d/&
growfirstcropall: a&b&c&d&
########################################
# stockpile utility aliases
########################################
linksonly: a
maxbins: V
maxbarrels: R
nobins: C
nobarrels: E
nocontainers: {nobins}{nobarrels}
give: g{move}&
give2up: {give move={Up 2}}
give2down: {give move={Down 2}}
give2left: {give move={Left 2}}
give2right: {give move={Right 2}}
give10up: {give move={Up 10}}
give10down: {give move={Down 10}}
give10left: {give move={Left 10}}
give10right: {give move={Right 10}}
togglesequence: &{Down}
togglesequence2: &{Down 2}
# these aliases use the DFHack "search" plugin to filter the right column
forbidsearch: s{search}&f{Left}{Right}
permitsearch: s{search}&p{Left}{Right}
togglesearch: s{search}&&{Left}{Right}
masterworkonly: {prefix}{Right}{Up 2}f{Right}{Up 2}&^
artifactonly: {prefix}{Right}{Up 2}f{Right}{Up}&^
togglemasterwork: {prefix}{Right}{Up 2}{Right}{Up 2}&^
toggleartifact: {prefix}{Right}{Up 2}{Right}{Up}&^
##################################
# animal stockpile adjustments
##################################
animalsprefix: {enter_sp_config}
enableanimals: {animalsprefix}e^
disableanimals: {animalsprefix}d^
cages: {animalsprefix}bu^
traps: {animalsprefix}bj^
forbidcages: {animalsprefix}u^
forbidtraps: {animalsprefix}j^
permitcages: {forbidcages}
permittraps: {forbidtraps}
##################################
# food stockpile adjustments
##################################
foodprefix: {enter_sp_config}{Down}
enablefood: {foodprefix}e^
disablefood: {foodprefix}d^
preparedfood: {foodprefix}bu^
unpreparedfish: {foodprefix}b{Right}{Down 2}p^
plants: {foodprefix}b{Right}{Down 4}p^
booze: {foodprefix}b{Right}{Down 5}p{Down}p^
seeds: {foodprefix}b{Right}{Down 9}p^
dye: {foodprefix}b{Right}{Down 11}{Right}{Down 28}{togglesequence 4}^
tallow: {foodprefix}b{Right}{Down 13}{Right}{permitsearch search=tallow}^
miscliquid: {foodprefix}b{Right}{Down 18}p^
wax: {foodprefix}b{Right}{Down 15}{Right}{Down 6}&^
forbidpreparedfood: {foodprefix}u^
forbidunpreparedfish: {foodprefix}{Right}{Down 2}f^
forbidplants: {foodprefix}{Right}{Down 4}f^
forbidbooze: {foodprefix}{Right}{Down 5}f{Down}f^
forbidseeds: {foodprefix}{Right}{Down 9}f^
forbiddye: {foodprefix}{Right}{Down 11}{Right}{Down 28}{togglesequence 4}^
forbidtallow: {foodprefix}{Right}{Down 13}{Right}{forbidsearch search=tallow}^
forbidmiscliquid: {foodprefix}{Right}{Down 18}f^
forbidwax: {foodprefix}{Right}{Down 15}{Right}{Down 6}&^
permitpreparedfood: {forbidpreparedfood}
permitunpreparedfish: {foodprefix}{Right}{Down 2}p^
permitplants: {foodprefix}{Right}{Down 4}p^
permitbooze: {foodprefix}{Right}{Down 5}p{Down}p^
permitseeds: {foodprefix}{Right}{Down 9}p^
permitdye: {forbiddye}
permittallow: {foodprefix}{Right}{Down 13}{Right}{permitsearch search=tallow}^
permitmiscliquid: {foodprefix}{Right}{Down 18}p^
permitwax: {forbidwax}
# the next two aliases are for compatibility with previous implementations of
# Quickfort and are not documented.
# enables everything but seeds
noseeds: {disablefood}{enablefood}{forbidseeds}
# enables all food except for the types listed above
food: {noseeds}{forbidpreparedfood}{forbidunpreparedfish}{forbidplants}{forbidbooze}{forbiddye}{forbidtallow}{forbidmiscliquid}
##################################
# furniture stockpile adjustments
##################################
furnitureprefix: {enter_sp_config}{Down 2}
enablefurniture: {furnitureprefix}e^
disablefurniture: {furnitureprefix}d^
pots: {furnitureprefix}de{Right}f{Right}{Up 5}&^
bags: {furnitureprefix}de{Right}f{Right}{Up 10}&{Left}{Down}f{Down}f{Down}f{Right}{Down}&{Down 6}&{Down}&{Down 6}&^
buckets: {furnitureprefix}de{Right}f{Right}{Up 12}&^
sand: {furnitureprefix}de{Right}f{Right}{Up}&^
forbidpots: {furnitureprefix}{Right 2}{Up 5}&^
forbidbuckets: {furnitureprefix}{Right 2}{Up 12}&^
forbidsand: {furnitureprefix}{Right 2}{Up}&^
permitpots: {forbidpots}
permitbuckets: {forbidbuckets}
permitsand: {forbidsand}
masterworkfurniture: {masterworkonly prefix={furnitureprefix}}
artifactfurniture: {artifactonly prefix={furnitureprefix}}
forbidmasterworkfurniture: {togglemasterwork prefix={furnitureprefix}}
forbidartifactfurniture: {toggleartifact prefix={furnitureprefix}}
permitmasterworkfurniture: {togglemasterwork prefix={furnitureprefix}}
permitartifactfurniture: {toggleartifact prefix={furnitureprefix}}
###########################################
# corpses and refuse stockpile adjustments
###########################################
corpsesprefix: {enter_sp_config}{Down 3}
enablecorpses: {corpsesprefix}e^
disablecorpses: {corpsesprefix}d{Up}d^
refuseprefix: {enter_sp_config}{Down 4}
enablerefuse: {refuseprefix}e^
disablerefuse: {refuseprefix}d^
corpses: {refuseprefix}b{Right}{Down}p^
rawhides: {refuseprefix}b{Right 2}{Down}&^
tannedhides: {refuseprefix}b{Right 2}{Down 53}&^
skulls: {refuseprefix}b{Right}{Down 3}p^
bones: {refuseprefix}b{Right}{Down 4}p^
shells: {refuseprefix}b{Right}{Down 5}p^
teeth: {refuseprefix}b{Right}{Down 6}p^
horns: {refuseprefix}b{Right}{Down 7}p^
hair: {refuseprefix}b{Right}{Down 8}p^
usablehair: {refuseprefix}b{Right}{Down 8}{Right}{togglesearch search=sheep}{togglesearch search=llama}{togglesearch search=alpaca}{togglesearch search=troll}^
craftrefuse: {skulls}{permitbones}{permitshells}{permitteeth}{permithorns}{permitusablehair}
forbidcorpses: {refuseprefix}{Right}{Down}f^
forbidrawhides: {refuseprefix}{Right 2}{Down}&^
forbidtannedhides: {refuseprefix}{Right 2}{Down 53}&^
forbidskulls: {refuseprefix}{Right}{Down 3}f^
forbidbones: {refuseprefix}{Right}{Down 4}f^
forbidshells: {refuseprefix}{Right}{Down 5}f^
forbidteeth: {refuseprefix}{Right}{Down 6}f^
forbidhorns: {refuseprefix}{Right}{Down 7}f^
forbidhair: {refuseprefix}{Right}{Down 8}f^
forbidusablehair: {refuseprefix}{Right}{Down 8}{Right}{forbidsearch search=sheep}{forbidsearch search=llama}{forbidsearch search=alpaca}{forbidsearch search=troll}^
forbidcraftrefuse: {forbidskulls}{forbidbones}{forbidshells}{forbidteeth}{forbidhorns}{forbidusablehair}
permitcorpses: {refuseprefix}{Right}{Down}p^
permitrawhides: {forbidrawhides}
permittannedhides: {forbidtannedhides}
permitskulls: {refuseprefix}{Right}{Down 3}p^
permitbones: {refuseprefix}{Right}{Down 4}p^
permitshells: {refuseprefix}{Right}{Down 5}p^
permitteeth: {refuseprefix}{Right}{Down 6}p^
permithorns: {refuseprefix}{Right}{Down 7}p^
permithair: {refuseprefix}{Right}{Down 8}p^
permitusablehair: {refuseprefix}{Right}{Down 8}{Right}{permitsearch search=sheep}{permitsearch search=llama}{permitsearch search=alpaca}{permitsearch search=troll}^
permitcraftrefuse: {permitskulls}{permitbones}{permitshells}{permitteeth}{permithorns}{permitusablehair}
##################################
# stone stockpile adjustments
##################################
stoneprefix: {enter_sp_config}{Down 5}
enablestone: {stoneprefix}e^
disablestone: {stoneprefix}d^
metal: {stoneprefix}b{Right}p^
iron: {stoneprefix}b{Right}{Right}&{Down}&{Down 13}&^
economic: {stoneprefix}b{Right}{Down}p^
flux: {stoneprefix}b{Right}{Down}{Right}{togglesequence 4}{Down 4}&^
plaster: {stoneprefix}b{Right}{Down}{Right}{Down 6}&{Down 3}{togglesequence 3}^
coalproducing: {stoneprefix}b{Right}{Down}{Right}{Down 4}{togglesequence 2}^
otherstone: {stoneprefix}b{Right}{Down 2}p^
bauxite: {stoneprefix}b{Right}{Down 2}{Right}{Down 42}&^
clay: {stoneprefix}b{Right}{Down 3}p^
forbidmetal: {stoneprefix}{Right}f^
forbidiron: {stoneprefix}{Right}{Right}&{Down}&{Down 13}&^
forbideconomic: {stoneprefix}{Right}{Down}f^
forbidflux: {stoneprefix}{Right}{Down}{Right}{togglesequence 4}{Down 4}&^
forbidplaster: {stoneprefix}{Right}{Down}{Right}{Down 6}&{Down 3}{togglesequence 3}^
forbidcoalproducing: {stoneprefix}{Right}{Down}{Right}{Down 4}{togglesequence 2}^
forbidotherstone: {stoneprefix}{Right}{Down 2}f^
forbidbauxite: {stoneprefix}{Right}{Down 2}{Right}{Down 42}&^
forbidclay: {stoneprefix}{Right}{Down 3}f^
permitmetal: {stoneprefix}{Right}p^
permitiron: {forbidiron}
permiteconomic: {stoneprefix}{Right}{Down}p^
permitflux: {forbidflux}
permitplaster: {forbidplaster}
permitcoalproducing: {forbidcoalproducing}
permitotherstone: {stoneprefix}{Right}{Down 2}p^
permitbauxite: {forbidbauxite}
permitclay: {stoneprefix}{Right}{Down 3}p^
##################################
# ammo stockpile adjustments
##################################
ammoprefix: {enter_sp_config}{Down 6}
enableammo: {ammoprefix}e^
disableammo: {ammoprefix}d^
bolts: {ammoprefix}a{Right 2}f&^
forbidmetalbolts: {ammoprefix}{Right}{Down}f^
forbidwoodenbolts: {ammoprefix}{Right}{Down 2}{Right}&^
forbidbonebolts: {ammoprefix}{Right}{Down 2}{Right}{Down}&^
masterworkammo: {masterworkonly prefix={ammoprefix}}
artifactammo: {artifactonly prefix={ammoprefix}}
forbidmasterworkammo: {togglemasterwork prefix={ammoprefix}}
forbidartifactammo: {toggleartifact prefix={ammoprefix}}
permitmasterworkammo: {togglemasterwork prefix={ammoprefix}}
permitartifactammo: {toggleartifact prefix={ammoprefix}}
##################################
# bar stockpile adjustments
##################################
barsprefix: {enter_sp_config}{Down 8}
enablebars: {barsprefix}e^
disablebars: {barsprefix}d^
bars: {barsprefix}b{Right}p{Down}p^
metalbars: {barsprefix}b{Right}p^
ironbars: {barsprefix}b{Right 2}&^
steelbars: {barsprefix}b{Right 2}{Down 8}&^
pigironbars: {barsprefix}b{Right 2}{Down 9}&^
otherbars: {barsprefix}b{Right}{Down}p^
coal: {barsprefix}b{Right}{Down}{Right}&^
potash: {barsprefix}b{Right}{Down}{Right}{Down}&^
ash: {barsprefix}b{Right}{Down}{Right}{Down 2}&^
pearlash: {barsprefix}b{Right}{Down}{Right}{Down 3}&^
soap: {barsprefix}b{Right}{Down}{Right}{Down 4}&^
blocks: {barsprefix}b{Down 2}p{Down}p{Down}p^
forbidbars: {barsprefix}{Right}f{Down}f^
forbidmetalbars: {barsprefix}{Right}f^
forbidironbars: {barsprefix}{Right 2}&^
forbidsteelbars: {barsprefix}{Right 2}{Down 8}&^
forbidpigironbars: {barsprefix}{Right 2}{Down 9}&^
forbidotherbars: {barsprefix}{Right}{Down}f^
forbidcoal: {barsprefix}{Right}{Down}{Right}&^
forbidpotash: {barsprefix}{Right}{Down}{Right}{Down}&^
forbidash: {barsprefix}{Right}{Down}{Right}{Down 2}&^
forbidpearlash: {barsprefix}{Right}{Down}{Right}{Down 3}&^
forbidsoap: {barsprefix}{Right}{Down}{Right}{Down 4}&^
forbidblocks: {barsprefix}{Down 2}f{Down}f{Down}f^
##################################
# gem stockpile adjustments
##################################
gemsprefix: {enter_sp_config}{Down 9}
enablegems: {gemsprefix}e^
disablegems: {gemsprefix}d^
roughgems: {gemsprefix}b{Right}p^
roughglass: {gemsprefix}b{Right}{Down}p^
cutgems: {gemsprefix}b{Right}{Down 2}p^
cutglass: {gemsprefix}b{Right}{Down 3}p^
cutstone: {gemsprefix}b{Right}{Down 4}p^
forbidroughgems: {gemsprefix}{Right}f^
forbidroughglass: {gemsprefix}{Right}{Down}f^
forbidcutgems: {gemsprefix}{Right}{Down 2}f^
forbidcutglass: {gemsprefix}{Right}{Down 3}f^
forbidcutstone: {gemsprefix}{Right}{Down 4}f^
#######################################
# finished goods stockpile adjustments
#######################################
finishedgoodsprefix: {enter_sp_config}{Down 10}
enablefinishedgoods: {finishedgoodsprefix}e^
disablefinishedgoods: {finishedgoodsprefix}d^
crafts: {finishedgoodsprefix}{Right}f{Right}{Down 9}{togglesequence 9}^
goblets: {finishedgoodsprefix}{Right}f{Right}{Down 2}&^
jugs: {finishedgoodsprefix}{Right}f{Right}{Up 2}&{Left}{Down 2}f{Down}f{Down}f^
stonetools: {finishedgoodsprefix}{Right}f{Right}{Up 2}&{Left}{Down 2}f{Down}f{Down}f^
woodentools: {finishedgoodsprefix}{Right}f{Right}{Up 2}&{Left}{Down}f{Down}f{Down}f{Down}f{Right}&^
forbidcrafts: {finishedgoodsprefix}{Right 2}{Down 9}{togglesequence 9}^
forbidgoblets: {finishedgoodsprefix}{Right 2}{Down 2}&^
permitcrafts: {forbidcrafts}
permitgoblets: {forbidgoblets}
masterworkfinishedgoods: {masterworkonly prefix={finishedgoodsprefix}}
artifactfinishedgoods: {artifactonly prefix={finishedgoodsprefix}}
forbidmasterworkfinishedgoods: {togglemasterwork prefix={finishedgoodsprefix}}
forbidartifactfinishedgoods: {toggleartifact prefix={finishedgoodsprefix}}
permitmasterworkfinishedgoods: {togglemasterwork prefix={finishedgoodsprefix}}
permitartifactfinishedgoods: {toggleartifact prefix={finishedgoodsprefix}}
##################################
# cloth
##################################
clothprefix: {enter_sp_config}{Down 12}
enablecloth: {clothprefix}e^
disablecloth: {clothprefix}d^
thread: {clothprefix}b{Right}p{Down}p{Down}p^
adamantinethread: {clothprefix}b{Right}{Down 3}p^
cloth: {clothprefix}b{Right}{Down 4}p{Down}p{Down}p^
adamantinecloth: {clothprefix}b{Right}{Up}p^
forbidthread: {clothprefix}{Right}f{Down}f{Down}f^
forbidadamantinethread: {clothprefix}{Right}{Down 3}f^
forbidcloth: {clothprefix}{Right}{Down 4}f{Down}f{Down}f^
forbidadamantinecloth: {clothprefix}{Right}{Up}f^
permitthread: {clothprefix}{Right}p{Down}p{Down}p^
permitadamantinethread: {clothprefix}{Right}{Down 3}p^
permitcloth: {clothprefix}{Right}{Down 4}p{Down}p{Down}p^
permitadamantinecloth: {clothprefix}{Right}{Up}p^
##################################
# weapon stockpile adjustments
##################################
weaponsprefix: {enter_sp_config}{Down 14}
enableweapons: {weaponsprefix}e^
disableweapons: {weaponsprefix}d^
metalweapons: {forbidtrapcomponents}{forbidstoneweapons}{forbidotherweapons}
ironweapons: {metalweapons}{forbidmetalweapons}{permitironweapons}
bronzeweapons: {metalweapons}{forbidmetalweapons}{permitbronzeweapons}
copperweapons: {metalweapons}{forbidmetalweapons}{permitcopperweapons}
steelweapons: {metalweapons}{forbidmetalweapons}{permitsteelweapons}
forbidweapons: {weaponsprefix}{Right}f^
forbidtrapcomponents: {weaponsprefix}{Right}{Down}f^
forbidmetalweapons: {weaponsprefix}{Right}{Down 2}f^
forbidstoneweapons: {weaponsprefix}{Right}{Down 3}f^
forbidotherweapons: {weaponsprefix}{Right}{Down 4}f^
forbidironweapons: {weaponsprefix}{Right}{Down 2}{Right}&^
forbidbronzeweapons: {weaponsprefix}{Right}{Down 2}{Right}{Down 6}&^
forbidcopperweapons: {weaponsprefix}{Right}{Down 2}{Right}{Down 3}&^
forbidsteelweapons: {weaponsprefix}{Right}{Down 2}{Right}{Down 8}&^
permitweapons: {weaponsprefix}{Right}p^
permittrapcomponents: {weaponsprefix}{Right}{Down}p^
permitmetalweapons: {weaponsprefix}{Right}{Down 2}p^
permitstoneweapons: {weaponsprefix}{Right}{Down 3}p^
permitotherweapons: {weaponsprefix}{Right}{Down 4}p^
permitironweapons: {forbidironweapons}
permitbronzeweapons: {forbidbronzeweapons}
permitcopperweapons: {forbidcopperweapons}
permitsteelweapons: {forbidsteelweapons}
masterworkweapons: {masterworkonly prefix={weaponsprefix}}
artifactweapons: {artifactonly prefix={weaponsprefix}}
forbidmasterworkweapons: {togglemasterwork prefix={weaponsprefix}}
forbidartifactweapons: {toggleartifact prefix={weaponsprefix}}
permitmasterworkweapons: {togglemasterwork prefix={weaponsprefix}}
permitartifactweapons: {toggleartifact prefix={weaponsprefix}}
##################################
# armor stockpile adjustments
##################################
armorprefix: {enter_sp_config}{Down 15}
enablearmor: {armorprefix}e^
disablearmor: {armorprefix}d^
metalarmor: {forbidotherarmor}
otherarmor: {forbidmetalarmor}
ironarmor: {metalarmor}{forbidmetalarmor}{permitironarmor}
bronzearmor: {metalarmor}{forbidmetalarmor}{permitbronzearmor}
copperarmor: {metalarmor}{forbidmetalarmor}{permitcopperarmor}
steelarmor: {metalarmor}{forbidmetalarmor}{permitsteelarmor}
forbidmetalarmor: {armorprefix}{Right}{Down 6}f^
forbidotherarmor: {armorprefix}{Right}{Down 7}f^
forbidironarmor: {armorprefix}{Right}{Down 6}{Right}&^
forbidbronzearmor: {armorprefix}{Right}{Down 6}{Right}{Down 6}&^
forbidcopperarmor: {armorprefix}{Right}{Down 6}{Right}{Down 3}&^
forbidsteelarmor: {armorprefix}{Right}{Down 6}{Right}{Down 8}&^
permitmetalarmor: {armorprefix}{Right}{Down 6}p^
permitotherarmor: {armorprefix}{Right}{Down 7}p^
permitironarmor: {forbidironarmor}
permitbronzearmor: {forbidbronzearmor}
permitcopperarmor: {forbidcopperarmor}
permitsteelarmor: {forbidsteelarmor}
masterworkarmor: {masterworkonly prefix={armorprefix}}
artifactarmor: {artifactonly prefix={armorprefix}}
forbidmasterworkarmor: {togglemasterwork prefix={armorprefix}}
forbidartifactarmor: {toggleartifact prefix={armorprefix}}
permitmasterworkarmor: {togglemasterwork prefix={armorprefix}}
permitartifactarmor: {toggleartifact prefix={armorprefix}}
##################################
# others
##################################
coinsprefix: {enter_sp_config}{Down 7}
enablecoins: {coinsprefix}e^
disablecoins: {coinsprefix}d^
leatherprefix: {enter_sp_config}{Down 11}
enableleather: {leatherprefix}e^
disableleather: {leatherprefix}d^
woodprefix: {enter_sp_config}{Down 13}
enablewood: {woodprefix}e^
disablewood: {woodprefix}d^
sheetprefix: {enter_sp_config}{Down 16}
enablesheet: {sheetprefix}e^
disablesheet: {sheetprefix}d^

@ -38,6 +38,9 @@ changelog.txt uses a syntax similar to RST, with a few special sequences:
## Fixes ## Fixes
## Misc Improvements ## Misc Improvements
- `blueprint`: now writes blueprints to the ``dfhack-config/blueprints`` directory
- `blueprint-library-guide`: library blueprints have moved from ``blueprints`` to ``hack/data/blueprints``
- player-created blueprints should now go in the ``dfhack-config/blueprints`` folder. please move your existing blueprints from ``blueprints`` to ``dfhack-config/blueprints``. you don't need to move the library blueprints -- those can be safely deleted from the old ``blueprints`` directory.
## Documentation ## Documentation

@ -5,7 +5,7 @@ Quickfort blueprint library
=========================== ===========================
This guide contains a high-level overview of the blueprints available in the This guide contains a high-level overview of the blueprints available in the
:source:`quickfort blueprint library <data/blueprints/library>`. :source:`quickfort blueprint library <data/blueprints>`.
Each file is hyperlinked to its online version so you can see exactly what the Each file is hyperlinked to its online version so you can see exactly what the
blueprints do before you run them. Also, if you use `gui/quickfort`, you will blueprints do before you run them. Also, if you use `gui/quickfort`, you will
@ -18,8 +18,8 @@ Whole fort blueprint sets
These files contain the plans for entire fortresses. Each file has one or more These files contain the plans for entire fortresses. Each file has one or more
help sections that walk you through how to build the fort, step by step. help sections that walk you through how to build the fort, step by step.
- :source:`library/dreamfort.csv <data/blueprints/library/dreamfort.csv>` - :source:`library/dreamfort.csv <data/blueprints/dreamfort.csv>`
- :source:`library/quickfortress.csv <data/blueprints/library/quickfortress.csv>` - :source:`library/quickfortress.csv <data/blueprints/quickfortress.csv>`
.. _dreamfort: .. _dreamfort:
@ -149,10 +149,10 @@ these ``#dig`` blueprints can only mark undug wall tiles for mining, they are
best used underground. They won't do much on the surface, where there aren't best used underground. They won't do much on the surface, where there aren't
many walls. many walls.
- :source:`library/layout-helpers/mark_up_left.csv <data/blueprints/library/layout-helpers/mark_up_left.csv>` - :source:`library/layout-helpers/mark_up_left.csv <data/blueprints/layout-helpers/mark_up_left.csv>`
- :source:`library/layout-helpers/mark_up_right.csv <data/blueprints/library/layout-helpers/mark_up_right.csv>` - :source:`library/layout-helpers/mark_up_right.csv <data/blueprints/layout-helpers/mark_up_right.csv>`
- :source:`library/layout-helpers/mark_down_right.csv <data/blueprints/library/layout-helpers/mark_down_right.csv>` - :source:`library/layout-helpers/mark_down_right.csv <data/blueprints/layout-helpers/mark_down_right.csv>`
- :source:`library/layout-helpers/mark_down_left.csv <data/blueprints/library/layout-helpers/mark_down_left.csv>` - :source:`library/layout-helpers/mark_down_left.csv <data/blueprints/layout-helpers/mark_down_left.csv>`
Bedrooms Bedrooms
-------- --------
@ -161,9 +161,9 @@ These are popular bedroom layouts from the :wiki:`Bedroom design` page on the
wiki. Each file has ``#dig``, ``#build``, and ``#query`` blueprints to dig the wiki. Each file has ``#dig``, ``#build``, and ``#query`` blueprints to dig the
rooms, build the furniture, and configure the beds as bedrooms, respectively. rooms, build the furniture, and configure the beds as bedrooms, respectively.
- :source:`library/bedrooms/48-4-Raynard_Whirlpool_Housing.csv <data/blueprints/library/bedrooms/48-4-Raynard_Whirlpool_Housing.csv>` - :source:`library/bedrooms/48-4-Raynard_Whirlpool_Housing.csv <data/blueprints/bedrooms/48-4-Raynard_Whirlpool_Housing.csv>`
- :source:`library/bedrooms/95-9-Hactar1_3_Branch_Tree.csv <data/blueprints/library/bedrooms/95-9-Hactar1_3_Branch_Tree.csv>` - :source:`library/bedrooms/95-9-Hactar1_3_Branch_Tree.csv <data/blueprints/bedrooms/95-9-Hactar1_3_Branch_Tree.csv>`
- :source:`library/bedrooms/28-3-Modified_Windmill_Villas.csv <data/blueprints/library/bedrooms/28-3-Modified_Windmill_Villas.csv>` - :source:`library/bedrooms/28-3-Modified_Windmill_Villas.csv <data/blueprints/bedrooms/28-3-Modified_Windmill_Villas.csv>`
Tombs Tombs
----- -----
@ -171,8 +171,8 @@ Tombs
These blueprints have burial plot layouts for fortress that expect a lot of These blueprints have burial plot layouts for fortress that expect a lot of
casualties. casualties.
- :source:`library/tombs/Mini_Saracen.csv <data/blueprints/library/tombs/Mini_Saracen.csv>` - :source:`library/tombs/Mini_Saracen.csv <data/blueprints/tombs/Mini_Saracen.csv>`
- :source:`library/tombs/The_Saracen_Crypts.csv <data/blueprints/library/tombs/The_Saracen_Crypts.csv>` - :source:`library/tombs/The_Saracen_Crypts.csv <data/blueprints/tombs/The_Saracen_Crypts.csv>`
Exploratory mining Exploratory mining
------------------ ------------------
@ -181,18 +181,18 @@ Several mining patterns to choose from when searching for gems or ores. The
patterns can be repeated up or down z-levels (via quickfort's ``--repeat`` patterns can be repeated up or down z-levels (via quickfort's ``--repeat``
commandline option) for exploring through the depths. commandline option) for exploring through the depths.
- :source:`library/exploratory-mining/tunnels.csv <data/blueprints/library/exploratory-mining/tunnels.csv>` - :source:`library/exploratory-mining/tunnels.csv <data/blueprints/exploratory-mining/tunnels.csv>`
- :source:`library/exploratory-mining/vertical-mineshafts.csv <data/blueprints/library/exploratory-mining/vertical-mineshafts.csv>` - :source:`library/exploratory-mining/vertical-mineshafts.csv <data/blueprints/exploratory-mining/vertical-mineshafts.csv>`
- :source:`library/exploratory-mining/connected-mineshafts.csv <data/blueprints/library/exploratory-mining/connected-mineshafts.csv>` - :source:`library/exploratory-mining/connected-mineshafts.csv <data/blueprints/exploratory-mining/connected-mineshafts.csv>`
Miscellaneous Miscellaneous
------------- -------------
Extra blueprints that are useful in specific situations. Extra blueprints that are useful in specific situations.
- :source:`library/aquifer_tap.csv <data/blueprints/library/aquifer_tap.csv>` - :source:`library/aquifer_tap.csv <data/blueprints/aquifer_tap.csv>`
- :source:`library/embark.csv <data/blueprints/library/embark.csv>` - :source:`library/embark.csv <data/blueprints/embark.csv>`
- :source:`library/pump_stack.csv <data/blueprints/library/pump_stack.csv>` - :source:`library/pump_stack.csv <data/blueprints/pump_stack.csv>`
Light aquifer tap Light aquifer tap
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~

@ -27,9 +27,9 @@ written by Joel Thornton, reused here with his permission.
For those just looking to apply existing blueprints, check out the `quickfort For those just looking to apply existing blueprints, check out the `quickfort
command's documentation <quickfort>` for syntax. There are also many command's documentation <quickfort>` for syntax. There are also many
ready-to-use blueprints available in the ``blueprints/library`` subfolder in ready-to-use blueprints available in the ``hack/data/blueprints`` subfolder in
your DFHack installation. Browse them on your computer or your DFHack installation. Browse them on your computer or
:source:`online <data/blueprints/library>`, or run `gui/quickfort` to browse :source:`online <data/blueprints>`, or run `gui/quickfort` to browse
and apply them to your fort! and apply them to your fort!
Before you become an expert at writing blueprints, though, you should know that Before you become an expert at writing blueprints, though, you should know that
@ -248,7 +248,7 @@ You can save a lot of time and effort by using aliases instead of adding all
key sequences directly to your blueprints. For more details, check out the key sequences directly to your blueprints. For more details, check out the
`quickfort-alias-guide`. You can also see examples of aliases being used in the `quickfort-alias-guide`. You can also see examples of aliases being used in the
query blueprints in the query blueprints in the
:source:`DFHack blueprint library <data/blueprints/library>`. You can create :source:`DFHack blueprint library <data/blueprints>`. You can create
your own aliases by adding them to :source:`dfhack-config/quickfort/aliases.txt` your own aliases by adding them to :source:`dfhack-config/quickfort/aliases.txt`
in your DFHack folder or you can package them in your DFHack folder or you can package them
`together with your blueprint files <quickfort-aliases-blueprints>`. `together with your blueprint files <quickfort-aliases-blueprints>`.
@ -1467,7 +1467,7 @@ Dreamfort organization and packaging
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Dreamfort blueprints are distributed with DFHack as The Dreamfort blueprints are distributed with DFHack as
:source:`one large .csv file <data/blueprints/library/dreamfort.csv>`, but :source:`one large .csv file <data/blueprints/dreamfort.csv>`, but
editing in that format would be frustrating. Instead, the blueprints are editing in that format would be frustrating. Instead, the blueprints are
edited `online as Google drive spreadsheets edited `online as Google drive spreadsheets
<https://drive.google.com/drive/folders/1iS90EEVqUkxTeZiiukVj1pLloZqabKuP>`__. <https://drive.google.com/drive/folders/1iS90EEVqUkxTeZiiukVj1pLloZqabKuP>`__.
@ -1825,7 +1825,7 @@ Links
- `blueprint-library-guide` - `blueprint-library-guide`
- :forums:`Quickfort forum thread <176889>` - :forums:`Quickfort forum thread <176889>`
- :issue:`DFHack issue tracker <>` - :issue:`DFHack issue tracker <>`
- :source:`Blueprint library source <data/blueprints/library>` - :source:`Blueprint library source <data/blueprints>`
- :source-scripts:`Quickfort source code <internal/quickfort>` - :source-scripts:`Quickfort source code <internal/quickfort>`
**Related tools:** **Related tools:**

@ -9,7 +9,7 @@ With ``blueprint``, you can export the structure of a portion of your fortress
in a blueprint file that you (or anyone else) can later play back with in a blueprint file that you (or anyone else) can later play back with
`gui/quickfort`. `gui/quickfort`.
Blueprints are ``.csv`` or ``.xlsx`` files created in the ``blueprints`` Blueprints are ``.csv`` or ``.xlsx`` files created in the ``dfhack-config/blueprints``
subdirectory of your DF folder. The map area to turn into a blueprint is either subdirectory of your DF folder. The map area to turn into a blueprint is either
selected interactively with the ``gui/blueprint`` command or, if the GUI is not selected interactively with the ``gui/blueprint`` command or, if the GUI is not
used, starts at the active cursor location and extends right and down for the used, starts at the active cursor location and extends right and down for the

@ -46,6 +46,8 @@ using namespace DFHack;
DFHACK_PLUGIN("blueprint"); DFHACK_PLUGIN("blueprint");
REQUIRE_GLOBAL(world); REQUIRE_GLOBAL(world);
static const string BLUEPRINT_USER_DIR = "dfhack-config/blueprints/";
namespace DFHack { namespace DFHack {
DBG_DECLARE(blueprint,log); DBG_DECLARE(blueprint,log);
} }
@ -1091,7 +1093,7 @@ static const char * get_tile_rooms(const df::coord &, const tile_context &ctx) {
static bool create_output_dir(color_ostream &out, static bool create_output_dir(color_ostream &out,
const blueprint_options &opts) { const blueprint_options &opts) {
string basename = "blueprints/" + opts.name; string basename = BLUEPRINT_USER_DIR + opts.name;
size_t last_slash = basename.find_last_of("/"); size_t last_slash = basename.find_last_of("/");
string parent_path = basename.substr(0, last_slash); string parent_path = basename.substr(0, last_slash);

@ -206,7 +206,7 @@ end
-- returns the name of the output file for the given context -- returns the name of the output file for the given context
function get_filename(opts, phase, ordinal) function get_filename(opts, phase, ordinal)
local fullname = 'blueprints/' .. opts.name local fullname = 'dfhack-config/blueprints/' .. opts.name
local _,_,basename = fullname:find('/([^/]+)/?$') local _,_,basename = fullname:find('/([^/]+)/?$')
if not basename then if not basename then
-- should not happen since opts.name should already be validated -- should not happen since opts.name should already be validated

@ -1 +1 @@
Subproject commit 5896b316f6ebb3d0abf3316a2ba895c173051b36 Subproject commit b17ca9443e797431c2f3594556658beea4d7c378