Fixed merge conflicts, expanded upon provided examples, added more detail.
commit
e6639180db
@ -0,0 +1,6 @@
|
||||
Thank you for your interest in contributing to DFHack! If you're reading this
|
||||
document, you're probably viewing it on GitHub. The DFHack docs are hosted
|
||||
on [ReadTheDocs](https://dfhack.readthedocs.io/) - in particular, contributing
|
||||
guidelines are [here](https://docs.dfhack.org/en/latest/docs/Contributing.html).
|
||||
Double-checking the style guidelines before submitting a pull request is
|
||||
always appreciated.
|
@ -0,0 +1,177 @@
|
||||
name: Build
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: build (Linux, GCC ${{ matrix.gcc }}, ${{ matrix.plugins }} plugins)
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-18.04
|
||||
gcc:
|
||||
- 4.8
|
||||
- 7
|
||||
plugins:
|
||||
- default
|
||||
include:
|
||||
- os: ubuntu-20.04
|
||||
gcc: 10
|
||||
plugins: all
|
||||
steps:
|
||||
- name: Set up Python 3
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install \
|
||||
libgtk2.0-0 \
|
||||
libsdl-image1.2-dev \
|
||||
libsdl-ttf2.0-dev \
|
||||
libsdl1.2-dev \
|
||||
libxml-libxml-perl \
|
||||
libxml-libxslt-perl \
|
||||
lua5.3 \
|
||||
ninja-build \
|
||||
zlib1g-dev
|
||||
pip install sphinx
|
||||
- name: Install GCC
|
||||
run: |
|
||||
sudo apt-get install gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
|
||||
- name: Clone DFHack
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 0 # unlimited - we need past tags
|
||||
submodules: true
|
||||
- name: Set up environment
|
||||
id: env_setup
|
||||
run: |
|
||||
DF_VERSION="$(sh travis/get-df-version.sh)"
|
||||
echo "::set-output name=df_version::${DF_VERSION}"
|
||||
echo "DF_VERSION=${DF_VERSION}" >> $GITHUB_ENV
|
||||
echo "DF_FOLDER=${HOME}/DF/${DF_VERSION}/df_linux" >> $GITHUB_ENV
|
||||
- name: Fetch DF cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/DF
|
||||
key: ${{ steps.env_setup.outputs.df_version }}
|
||||
- name: Download DF
|
||||
run: |
|
||||
sh travis/download-df.sh
|
||||
- name: Build DFHack
|
||||
env:
|
||||
CC: gcc-${{ matrix.gcc }}
|
||||
CXX: g++-${{ matrix.gcc }}
|
||||
run: |
|
||||
cmake \
|
||||
-S . \
|
||||
-B build-ci \
|
||||
-G Ninja \
|
||||
-DDFHACK_BUILD_ARCH=64 \
|
||||
-DBUILD_TESTS:BOOL=ON \
|
||||
-DBUILD_DEV_PLUGINS:BOOL=${{ matrix.plugins == 'all' }} \
|
||||
-DBUILD_SIZECHECK:BOOL=${{ matrix.plugins == 'all' }} \
|
||||
-DBUILD_STONESENSE:BOOL=${{ matrix.plugins == 'all' }} \
|
||||
-DBUILD_SUPPORTED:BOOL=1 \
|
||||
-DCMAKE_INSTALL_PREFIX="$DF_FOLDER"
|
||||
ninja -C build-ci install
|
||||
- name: Run tests
|
||||
id: run_tests
|
||||
run: |
|
||||
export TERM=dumb
|
||||
mv "$DF_FOLDER"/dfhack.init-example "$DF_FOLDER"/dfhack.init
|
||||
script -qe -c "python travis/run-tests.py --headless --keep-status \"$DF_FOLDER\""
|
||||
python travis/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt"
|
||||
mkdir -p artifacts
|
||||
cp "$DF_FOLDER/test_status.json" "$DF_FOLDER"/*.log artifacts
|
||||
- name: Upload test artifacts
|
||||
uses: actions/upload-artifact@v1
|
||||
if: (success() || failure()) && steps.run_tests.outcome != 'skipped'
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: test-artifacts-${{ matrix.gcc }}
|
||||
path: artifacts
|
||||
- name: Clean up DF folder
|
||||
# prevent DFHack-generated files from ending up in the cache
|
||||
# (download-df.sh also removes them, this is just to save cache space)
|
||||
if: success() || failure()
|
||||
run: |
|
||||
rm -rf "$DF_FOLDER"
|
||||
|
||||
docs:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- name: Set up Python 3
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install sphinx
|
||||
- name: Clone DFHack
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
submodules: true
|
||||
- name: Build docs
|
||||
run: |
|
||||
sphinx-build -W --keep-going -j3 . docs/html
|
||||
- name: Upload docs
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: docs
|
||||
path: docs/html
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- name: Set up Python 3
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3
|
||||
- name: Set up Ruby 2.7
|
||||
uses: actions/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.7
|
||||
- name: Install Lua
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install lua5.3
|
||||
- name: Clone DFHack
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
submodules: true
|
||||
# don't need tags here
|
||||
- name: Check whitespace
|
||||
run: |
|
||||
python travis/lint.py
|
||||
- name: Check Authors.rst
|
||||
if: success() || failure()
|
||||
run: |
|
||||
python travis/authors-rst.py
|
||||
- name: Check for missing documentation
|
||||
if: success() || failure()
|
||||
run: |
|
||||
python travis/script-docs.py
|
||||
- name: Check Lua syntax
|
||||
if: success() || failure()
|
||||
run: |
|
||||
python travis/script-syntax.py --ext=lua --cmd="luac5.3 -p" --github-actions
|
||||
- name: Check Ruby syntax
|
||||
if: success() || failure()
|
||||
run: |
|
||||
python travis/script-syntax.py --ext=rb --cmd="ruby -c" --github-actions
|
||||
|
||||
check-pr:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'pull_request'
|
||||
steps:
|
||||
- name: Check that PR is based on develop branch
|
||||
env:
|
||||
BASE_BRANCH: ${{ github.base_ref }}
|
||||
run: |
|
||||
echo "PR base branch: $BASE_BRANCH"
|
||||
test "$BASE_BRANCH" = develop
|
@ -0,0 +1,30 @@
|
||||
name: Update submodules
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 7 * * *'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
branch:
|
||||
description: DFHack branch to update
|
||||
required: false
|
||||
default: develop
|
||||
|
||||
jobs:
|
||||
run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone DFHack
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.inputs.branch }}
|
||||
submodules: true
|
||||
token: ${{ secrets.DFHACK_GITHUB_TOKEN }}
|
||||
- name: Update submodules
|
||||
run: |
|
||||
git config user.name "DFHack-Urist via GitHub Actions"
|
||||
git config user.email "63161697+DFHack-Urist@users.noreply.github.com"
|
||||
if bash -x ci/update-submodules.bash; then
|
||||
git push --recurse-submodules=check
|
||||
fi
|
@ -1,68 +0,0 @@
|
||||
sudo: false
|
||||
language: cpp
|
||||
cache:
|
||||
pip: true
|
||||
directories:
|
||||
- $HOME/DF-travis
|
||||
- $HOME/lua53
|
||||
addons:
|
||||
apt:
|
||||
packages: &default_packages
|
||||
- libsdl-image1.2-dev
|
||||
- libsdl-ttf2.0-dev
|
||||
- libsdl1.2-dev
|
||||
- libxml-libxml-perl
|
||||
- libxml-libxslt-perl
|
||||
- ninja-build
|
||||
- zlib1g-dev
|
||||
matrix:
|
||||
include:
|
||||
- env: GCC_VERSION=4.8
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- *default_packages
|
||||
- gcc-4.8
|
||||
- g++-4.8
|
||||
before_install:
|
||||
- export DF_VERSION=$(sh travis/get-df-version.sh)
|
||||
- export DF_FOLDER="$HOME/DF-travis/$DF_VERSION"
|
||||
- pip install --user "sphinx==1.4" "requests[security]"
|
||||
- sh travis/build-lua.sh
|
||||
- sh travis/download-df.sh
|
||||
- echo "export DFHACK_HEADLESS=1" >> "$HOME/.dfhackrc"
|
||||
- echo "export DFHACK_DISABLE_CONSOLE=1" >> "$HOME/.dfhackrc"
|
||||
script:
|
||||
- export PATH="$PATH:$HOME/lua53/bin"
|
||||
- git tag tmp-travis-build
|
||||
- sh travis/git-info.sh
|
||||
- sphinx-build -qW -j3 . docs/html
|
||||
- python travis/pr-check-base.py
|
||||
- python travis/lint.py
|
||||
- python travis/authors-rst.py
|
||||
- python travis/script-docs.py
|
||||
- python travis/script-syntax.py --ext=lua --cmd="luac5.3 -p"
|
||||
- python travis/script-syntax.py --ext=rb --cmd="ruby -c"
|
||||
- mkdir build-travis
|
||||
- cd build-travis
|
||||
- cmake .. -G Ninja -DCMAKE_C_COMPILER=gcc-$GCC_VERSION -DCMAKE_CXX_COMPILER=g++-$GCC_VERSION -DDFHACK_BUILD_ARCH=64 -DBUILD_DOCS:BOOL=ON -DCMAKE_INSTALL_PREFIX="$DF_FOLDER"
|
||||
- ninja -j3 install
|
||||
- mv "$DF_FOLDER"/dfhack.init-example "$DF_FOLDER"/dfhack.init
|
||||
- cd ..
|
||||
- cp travis/dfhack_travis.init "$DF_FOLDER"/
|
||||
- python travis/run-tests.py "$DF_FOLDER"
|
||||
- python travis/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt"
|
||||
before_cache:
|
||||
- cat "$DF_FOLDER/stderr.log"
|
||||
- rm -rf "$DF_FOLDER/hack"
|
||||
- rm -rf "$DF_FOLDER/dfhack-config"
|
||||
- rm -f "$DF_FOLDER"/*.log
|
||||
notifications:
|
||||
email: false
|
||||
irc:
|
||||
channels:
|
||||
- "chat.freenode.net#dfhack"
|
||||
on_success: change
|
||||
on_failure: always
|
@ -1,71 +1,71 @@
|
||||
# Helper to download files as needed
|
||||
|
||||
function(file_md5_if_exists FILE VAR)
|
||||
if(EXISTS "${FILE}")
|
||||
file(MD5 "${FILE}" "${VAR}")
|
||||
set(${VAR} "${${VAR}}" PARENT_SCOPE)
|
||||
else()
|
||||
set(${VAR} "" PARENT_SCOPE)
|
||||
endif()
|
||||
if(EXISTS "${FILE}")
|
||||
file(MD5 "${FILE}" "${VAR}")
|
||||
set(${VAR} "${${VAR}}" PARENT_SCOPE)
|
||||
else()
|
||||
set(${VAR} "" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(search_downloads FILE_MD5 VAR)
|
||||
set(${VAR} "" PARENT_SCOPE)
|
||||
file(GLOB FILES ${CMAKE_SOURCE_DIR}/CMake/downloads/*)
|
||||
foreach(FILE ${FILES})
|
||||
file(MD5 "${FILE}" CUR_MD5)
|
||||
if("${CUR_MD5}" STREQUAL "${FILE_MD5}")
|
||||
set(${VAR} ${FILE} PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
endforeach()
|
||||
set(${VAR} "" PARENT_SCOPE)
|
||||
file(GLOB FILES ${CMAKE_SOURCE_DIR}/CMake/downloads/*)
|
||||
foreach(FILE ${FILES})
|
||||
file(MD5 "${FILE}" CUR_MD5)
|
||||
if("${CUR_MD5}" STREQUAL "${FILE_MD5}")
|
||||
set(${VAR} ${FILE} PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
function(download_file URL DEST EXPECTED_MD5)
|
||||
get_filename_component(FILENAME "${URL}" NAME)
|
||||
file_md5_if_exists("${DEST}" CUR_MD5)
|
||||
get_filename_component(FILENAME "${URL}" NAME)
|
||||
file_md5_if_exists("${DEST}" CUR_MD5)
|
||||
|
||||
if(NOT "${EXPECTED_MD5}" STREQUAL "${CUR_MD5}")
|
||||
search_downloads(${EXPECTED_MD5} DLPATH)
|
||||
if(NOT("${DLPATH}" STREQUAL ""))
|
||||
message("* Copying ${FILENAME} from ${DLPATH}")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy
|
||||
"${DLPATH}"
|
||||
"${DEST}")
|
||||
return()
|
||||
endif()
|
||||
if(NOT "${EXPECTED_MD5}" STREQUAL "${CUR_MD5}")
|
||||
search_downloads(${EXPECTED_MD5} DLPATH)
|
||||
if(NOT("${DLPATH}" STREQUAL ""))
|
||||
message("* Copying ${FILENAME} from ${DLPATH}")
|
||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy
|
||||
"${DLPATH}"
|
||||
"${DEST}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
message("* Downloading ${FILENAME}")
|
||||
file(DOWNLOAD "${URL}" "${DEST}" EXPECTED_MD5 "${EXPECTED_MD5}" SHOW_PROGRESS)
|
||||
endif()
|
||||
message("* Downloading ${FILENAME}")
|
||||
file(DOWNLOAD "${URL}" "${DEST}" EXPECTED_MD5 "${EXPECTED_MD5}" SHOW_PROGRESS)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Download a file and uncompress it
|
||||
function(download_file_unzip URL ZIP_TYPE ZIP_DEST ZIP_MD5 UNZIP_DEST UNZIP_MD5)
|
||||
get_filename_component(FILENAME "${URL}" NAME)
|
||||
file_md5_if_exists("${UNZIP_DEST}" CUR_UNZIP_MD5)
|
||||
get_filename_component(FILENAME "${URL}" NAME)
|
||||
file_md5_if_exists("${UNZIP_DEST}" CUR_UNZIP_MD5)
|
||||
|
||||
# Redownload if the MD5 of the uncompressed file doesn't match
|
||||
if(NOT "${UNZIP_MD5}" STREQUAL "${CUR_UNZIP_MD5}")
|
||||
download_file("${URL}" "${ZIP_DEST}" "${ZIP_MD5}")
|
||||
# Redownload if the MD5 of the uncompressed file doesn't match
|
||||
if(NOT "${UNZIP_MD5}" STREQUAL "${CUR_UNZIP_MD5}")
|
||||
download_file("${URL}" "${ZIP_DEST}" "${ZIP_MD5}")
|
||||
|
||||
if(EXISTS "${ZIP_DEST}")
|
||||
message("* Decompressing ${FILENAME}")
|
||||
if("${ZIP_TYPE}" STREQUAL "gz")
|
||||
execute_process(COMMAND
|
||||
"${PERL_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/depends/gunzip.pl"
|
||||
"${ZIP_DEST}" --force)
|
||||
else()
|
||||
message(SEND_ERROR "Unknown ZIP_TYPE: ${ZIP_TYPE}")
|
||||
endif()
|
||||
if(NOT EXISTS "${UNZIP_DEST}")
|
||||
message(SEND_ERROR "File failed to unzip to ${UNZIP_DEST}")
|
||||
else()
|
||||
file(MD5 "${UNZIP_DEST}" CUR_UNZIP_MD5)
|
||||
if(NOT "${UNZIP_MD5}" STREQUAL "${CUR_UNZIP_MD5}")
|
||||
message(SEND_ERROR "MD5 mismatch: ${UNZIP_DEST}: expected ${UNZIP_MD5}, got ${CUR_UNZIP_MD5}")
|
||||
if(EXISTS "${ZIP_DEST}")
|
||||
message("* Decompressing ${FILENAME}")
|
||||
if("${ZIP_TYPE}" STREQUAL "gz")
|
||||
execute_process(COMMAND
|
||||
"${PERL_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/depends/gunzip.pl"
|
||||
"${ZIP_DEST}" --force)
|
||||
else()
|
||||
message(SEND_ERROR "Unknown ZIP_TYPE: ${ZIP_TYPE}")
|
||||
endif()
|
||||
if(NOT EXISTS "${UNZIP_DEST}")
|
||||
message(SEND_ERROR "File failed to unzip to ${UNZIP_DEST}")
|
||||
else()
|
||||
file(MD5 "${UNZIP_DEST}" CUR_UNZIP_MD5)
|
||||
if(NOT "${UNZIP_MD5}" STREQUAL "${CUR_UNZIP_MD5}")
|
||||
message(SEND_ERROR "MD5 mismatch: ${UNZIP_DEST}: expected ${UNZIP_MD5}, got ${CUR_UNZIP_MD5}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -1,229 +0,0 @@
|
||||
###########################
|
||||
How to contribute to DFHack
|
||||
###########################
|
||||
|
||||
.. contents::
|
||||
|
||||
|
||||
.. _contributing-code:
|
||||
|
||||
Contributing Code
|
||||
=================
|
||||
Several things should be kept in mind when contributing code to DFHack.
|
||||
|
||||
Code Format
|
||||
-----------
|
||||
* Four space indents for C++. Never use tabs for indentation in any language.
|
||||
* LF (Unix style) line terminators
|
||||
* Avoid trailing whitespace
|
||||
* UTF-8 encoding
|
||||
* For C++:
|
||||
|
||||
* Opening and closing braces on their own lines or opening brace at the end of the previous line
|
||||
* Braces placed at original indent level if on their own lines
|
||||
* #includes should be sorted. C++ libraries first, then dfhack modules, then df structures,
|
||||
then local includes. Within each category they should be sorted alphabetically.
|
||||
|
||||
How to get new code into DFHack
|
||||
-------------------------------
|
||||
* Submit pull requests to the ``develop`` branch, not the ``master`` branch.
|
||||
(The ``master`` branch always points at the most recent release)
|
||||
* Use a new branch for each feature or bugfix so that your changes can be merged independently
|
||||
(i.e. not the master or develop branch of your fork).
|
||||
* If possible, compile on multiple platforms when changing anything that compiles
|
||||
* It must pass CI - run ``python travis/all.py`` to check this.
|
||||
* Update ``changelog.txt`` and ``docs/Authors.rst`` when applicable. See
|
||||
`build-changelog` for more information on the changelog format.
|
||||
* Create a GitHub pull request once finished
|
||||
* Submit ideas and bug reports as :issue:`issues on GitHub <>`.
|
||||
Posts in the forum thread can easily get missed or forgotten.
|
||||
* Work on :issue:`reported problems <?q=is:open+-label:idea>`
|
||||
will take priority over ideas or suggestions.
|
||||
|
||||
.. _contributing-memory-research:
|
||||
|
||||
Memory research
|
||||
---------------
|
||||
If you want to do memory research, you'll need some tools and some knowledge.
|
||||
In general, you'll need a good memory viewer and optionally something
|
||||
to look at machine code without getting crazy :)
|
||||
Using publicly known information and analyzing the game's data is preferred.
|
||||
|
||||
Good Windows tools include:
|
||||
|
||||
* IDA Freeware 7.0 (for non-commercial use, supports 32-bit and 64-bit)
|
||||
* Cheat Engine
|
||||
|
||||
Good Linux tools:
|
||||
|
||||
* angavrilov's df-structures gui (32-bit only, visit us on IRC for details)
|
||||
* IDA Freeware 7.0 (see above)
|
||||
* edb (Evan's Debugger)
|
||||
* Some of the tools residing in the ``legacy`` dfhack branch.
|
||||
|
||||
Using the library as a developer
|
||||
================================
|
||||
Currently, the most direct way to use the library is to write a script or plugin that can be loaded by it.
|
||||
All the plugins can be found in the 'plugins' folder. There's no in-depth documentation
|
||||
on how to write one yet, but it should be easy enough to copy one and just follow the pattern.
|
||||
``plugins/skeleton/skeleton.cpp`` is provided for this purpose.
|
||||
|
||||
Other than through plugins, it is possible to use DFHack via remote access interface,
|
||||
or by writing scripts in Lua or Ruby. There are plenty of examples in the scripts folder.
|
||||
The `lua-api` is quite well documented.
|
||||
|
||||
The most important parts of DFHack are the Core, Console, Modules and Plugins.
|
||||
|
||||
* Core acts as the centerpiece of DFHack - it acts as a filter between DF and
|
||||
SDL and synchronizes the various plugins with DF.
|
||||
* Console is a thread-safe console that can be used to invoke commands exported by Plugins.
|
||||
* Modules actually describe the way to access information in DF's memory. You
|
||||
can get them from the Core. Most modules are split into two parts: high-level
|
||||
and low-level. High-level is mostly method calls, low-level publicly visible
|
||||
pointers to DF's data structures.
|
||||
* Plugins are the tools that use all the other stuff to make things happen.
|
||||
A plugin can have a list of commands that it exports and an onupdate function
|
||||
that will be called each DF game tick.
|
||||
|
||||
Rudimentary API documentation can be built using doxygen (see build options
|
||||
in ``CMakeCache.txt`` or with ``ccmake`` or ``cmake-gui``). The full DFHack
|
||||
documentation is built with Sphinx_, which runs automatically at compile time.
|
||||
|
||||
.. _Sphinx: http://www.sphinx-doc.org
|
||||
|
||||
DFHack consists of variously licensed code, but invariably weak copyleft.
|
||||
The main license is zlib/libpng, some bits are MIT licensed, and some are
|
||||
BSD licensed. See the `license` for more information.
|
||||
|
||||
Feel free to add your own extensions and plugins. Contributing back to
|
||||
the DFHack repository is welcome and the right thing to do :)
|
||||
|
||||
DF data structure definitions
|
||||
-----------------------------
|
||||
DFHack uses information about the game data structures, represented via xml files
|
||||
in the ``library/xml/`` submodule.
|
||||
|
||||
See https://github.com/DFHack/df-structures, and the documentation linked in the index.
|
||||
|
||||
Data structure layouts are described in files following the ``df.*.xml`` name pattern.
|
||||
This information is transformed by a perl script into C++ headers describing the
|
||||
structures, and associated metadata for the Lua wrapper. These headers and data
|
||||
are then compiled into the DFHack libraries, thus necessitating a compatibility
|
||||
break every time layouts change; in return it significantly boosts the efficiency
|
||||
and capabilities of DFHack code.
|
||||
|
||||
Global object addresses are stored in :file:`symbols.xml`, which is copied to the dfhack
|
||||
release package and loaded as data at runtime.
|
||||
|
||||
Remote access interface
|
||||
-----------------------
|
||||
DFHack supports remote access by exchanging Google protobuf messages via a TCP
|
||||
socket. Both the core and plugins can define remotely accessible methods. The
|
||||
``dfhack-run`` command uses this interface to invoke ordinary console commands.
|
||||
|
||||
Currently the supported set of requests is limited, because the developers don't
|
||||
know what exactly is most useful. `remotefortressreader` provides a fairly
|
||||
comprehensive interface for visualisers such as :forums:`Armok Vision <146473>`.
|
||||
|
||||
|
||||
Documentation Standards
|
||||
=======================
|
||||
DFHack documentation is built with Sphinx_, and configured automatically
|
||||
through CMake. If you want to build the docs *only*, use this command::
|
||||
|
||||
sphinx-build . docs/html
|
||||
|
||||
Whether you're adding new code or just fixing old documentation (and there's plenty),
|
||||
there are a few important standards for completeness and consistent style. Treat
|
||||
this section as a guide rather than iron law, match the surrounding text, and you'll
|
||||
be fine.
|
||||
|
||||
Each command should have a short (~54 character) help string, which is shown
|
||||
by the `ls` command. For scripts, this is a comment on the first line
|
||||
(the comment marker and whitespace is stripped). For plugins it's the second
|
||||
argument to ``PluginCommand``. Please make this brief but descriptive!
|
||||
|
||||
Everything should be documented! If it's not clear *where* a particular
|
||||
thing should be documented, ask on IRC or in the DFHack thread on Bay12 -
|
||||
as well as getting help, you'll be providing valuable feedback that
|
||||
makes it easier for future readers!
|
||||
|
||||
Scripts can use a custom autodoc function, based on the Sphinx ``include``
|
||||
directive - anything between the tokens is copied into the appropriate scripts
|
||||
documentation page. For Ruby, we follow the built-in docstring convention
|
||||
(``=begin`` and ``=end``). For Lua, the tokens are ``[====[`` and ``]====]``
|
||||
- ordinary multi-line strings. It is highly encouraged to reuse this string
|
||||
as the in-console documentation by (eg.) printing it when a ``-help`` argument
|
||||
is given.
|
||||
|
||||
The docs **must** have a heading which exactly matches the command, underlined
|
||||
with ``=====`` to the same length. For example, a lua file would have::
|
||||
|
||||
local helpstr = [====[
|
||||
|
||||
add-thought
|
||||
===========
|
||||
Adds a thought or emotion to the selected unit. Can be used by other scripts,
|
||||
or the gui invoked by running ``add-thought gui`` with a unit selected.
|
||||
|
||||
]====]
|
||||
|
||||
|
||||
Where the heading for a section is also the name of a command, the spelling
|
||||
and case should exactly match the command to enter in the DFHack command line.
|
||||
|
||||
Try to keep lines within 80-100 characters, so it's readable in plain text
|
||||
in the terminal - Sphinx (our documentation system) will make sure
|
||||
paragraphs flow.
|
||||
|
||||
If there aren't many options or examples to show, they can go in a paragraph of
|
||||
text. Use double-backticks to put commands in monospaced font, like this::
|
||||
|
||||
You can use ``cleanowned scattered x`` to dump tattered or abandoned items.
|
||||
|
||||
If the command takes more than three arguments, format the list as a table
|
||||
called Usage. The table *only* lists arguments, not full commands.
|
||||
Input values are specified in angle brackets. Example::
|
||||
|
||||
Usage:
|
||||
|
||||
:arg1: A simple argument.
|
||||
:arg2 <input>: Does something based on the input value.
|
||||
:Very long argument:
|
||||
Is very specific.
|
||||
|
||||
To demonstrate usage - useful mainly when the syntax is complicated, list the
|
||||
full command with arguments in monospaced font, then indent the next line and
|
||||
describe the effect::
|
||||
|
||||
``resume all``
|
||||
Resumes all suspended constructions.
|
||||
|
||||
If it would be helpful to mention another DFHack command, don't just type the
|
||||
name - add a hyperlink! Specify the link target in backticks, and it will be
|
||||
replaced with the corresponding title and linked: eg ```autolabor```
|
||||
=> `autolabor`. Link targets should be equivalent to the command
|
||||
described (without file extension), and placed above the heading of that
|
||||
section like this::
|
||||
|
||||
.. _autolabor:
|
||||
|
||||
autolabor
|
||||
=========
|
||||
|
||||
Add link targets if you need them, but otherwise plain headings are preferred.
|
||||
Scripts have link targets created automatically.
|
||||
|
||||
Other ways to help
|
||||
==================
|
||||
DFHack is a software project, but there's a lot more to it than programming.
|
||||
If you're not comfortable programming, you can help by:
|
||||
|
||||
* reporting bugs and incomplete documentation
|
||||
* improving the documentation
|
||||
* finding third-party scripts to add
|
||||
* writing tutorials for newbies
|
||||
|
||||
All those things are crucial, and often under-represented. So if that's
|
||||
your thing, go get started!
|
||||
|
@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
message_file=.git/COMMIT_EDITMSG
|
||||
|
||||
get_git_root() {
|
||||
git rev-parse --show-toplevel
|
||||
}
|
||||
|
||||
write_msg() {
|
||||
echo "$@" >> "${message_file}"
|
||||
}
|
||||
|
||||
git_root="$(get_git_root)"
|
||||
cd "${git_root}"
|
||||
rm -f "${message_file}"
|
||||
write_msg "Auto-update submodules"
|
||||
write_msg ""
|
||||
|
||||
cat ci/update-submodules.manifest | while read path branch; do
|
||||
cd "${git_root}/${path}"
|
||||
test "${git_root}" != "$(get_git_root)"
|
||||
git checkout "${branch}"
|
||||
git pull --ff-only
|
||||
cd "${git_root}"
|
||||
if ! git diff --quiet --ignore-submodules=dirty -- "${path}"; then
|
||||
git add "${path}"
|
||||
write_msg "${path}: ${branch}"
|
||||
fi
|
||||
done
|
||||
|
||||
if ! git diff --exit-code --cached; then
|
||||
git commit --file "${message_file}" --no-edit
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
@ -0,0 +1,6 @@
|
||||
library/xml master
|
||||
scripts master
|
||||
plugins/stonesense master
|
||||
depends/libzip dfhack
|
||||
depends/libexpat dfhack
|
||||
depends/xlsxio dfhack
|
@ -0,0 +1,2 @@
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/ DESTINATION blueprints)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/quickfort/ DESTINATION "${DFHACK_DATA_DESTINATION}/data/quickfort")
|
@ -0,0 +1,5 @@
|
||||
This folder contains blueprints that can be applied by the `quickfort` script. For more information, see:
|
||||
|
||||
* [Quickfort command reference](https://docs.dfhack.org/en/stable/docs/_auto/base.html#quickfort)
|
||||
* [Quickfort blueprint guide](https://docs.dfhack.org/en/stable/docs/guides/quickfort-user-guide.html)
|
||||
* [Quickfort library guide](https://docs.dfhack.org/en/stable/docs/guides/quickfort-library-guide.html)
|
@ -0,0 +1,70 @@
|
||||
"#dig start(11; 12) 28 bedrooms, 3 tiles each (efficient layout)"
|
||||
# see an image of this blueprint at https://i.imgur.com/XD7D4ux.png
|
||||
, , , , , ,d, , , , , ,d, , , , , , , , ,#
|
||||
, , , , , ,d, , , , , ,d, , , , , , , , ,#
|
||||
, , , ,d, ,d, ,d, ,d, ,d, ,d, , , , , , ,#
|
||||
, , , ,d, ,d, ,d, ,d, ,d, ,d, , , , , , ,#
|
||||
, , , ,d,d,d,d,d, ,d,d,d, ,d, ,d,d,d, , ,#
|
||||
, , , , , ,d, , , , , ,d,d, , ,d, , , , ,#
|
||||
, ,d,d,d, ,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d,#
|
||||
, , , , ,d,d, , , ,d, ,d, , , ,d, , , , ,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d, ,d, ,d,d,d, , ,#
|
||||
, , , ,d, , , ,d,i,i,i,d, ,d, , , , , , ,#
|
||||
, ,d,d,d, ,d,d,d,i,i,i,d,d,d, ,d,d,d, , ,#
|
||||
, , , , , ,d, ,d,i,i,i,d, , , ,d, , , , ,#
|
||||
, ,d,d,d, ,d, ,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
, , , ,d, , , ,d, ,d, , , ,d,d, , , , , ,#
|
||||
d,d,d,d,d,d,d,d,d, ,d,d,d, ,d, ,d,d,d, , ,#
|
||||
, , , ,d, , ,d,d, , , , , ,d, , , , , , ,#
|
||||
, ,d,d,d, ,d, ,d,d,d, ,d,d,d,d,d, , , , ,#
|
||||
, , , , , ,d, ,d, ,d, ,d, ,d, ,d, , , , ,#
|
||||
, , , , , ,d, ,d, ,d, ,d, ,d, ,d, , , , ,#
|
||||
, , , , , , , ,d, , , , , ,d, , , , , , ,#
|
||||
, , , , , , , ,d, , , , , ,d, , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#build label(furniture) start(11; 11) 28x doors, beds, coffers, and cabinets"
|
||||
, , , , , ,f, , , , , ,f, , , , , , , , ,#
|
||||
, , , , , ,h, , , , , ,h, , , , , , , , ,#
|
||||
, , , ,f, ,b, ,f, ,f, ,b, ,f, , , , , , ,#
|
||||
, , , ,h, ,d, ,h, ,h, ,d, ,h, , , , , , ,#
|
||||
, , , ,b,d,`,d,b, ,b,d,`, ,b, ,b,h,f, , ,#
|
||||
, , , , , ,`, , , , , ,`,d, , ,d, , , , ,#
|
||||
, ,f,h,b, ,`, ,f,h,b, ,`,`,`,`,`,d,b,h,f,#
|
||||
, , , , ,d,`, , , ,d, ,`, , , ,d, , , , ,#
|
||||
f,h,b,d,`,`,`,`,`,`,`,`,`, ,f, ,b,h,f, , ,#
|
||||
, , , ,d, , , ,`,`,`,`,`, ,h, , , , , , ,#
|
||||
, ,f,h,b, ,b,d,`,`,`,`,`,d,b, ,b,h,f, , ,#
|
||||
, , , , , ,h, ,`,`,`,`,`, , , ,d, , , , ,#
|
||||
, ,f,h,b, ,f, ,`,`,`,`,`,`,`,`,`,d,b,h,f,#
|
||||
, , , ,d, , , ,`, ,d, , , ,`,d, , , , , ,#
|
||||
f,h,b,d,`,`,`,`,`, ,b,h,f, ,`, ,b,h,f, , ,#
|
||||
, , , ,d, , ,d,`, , , , , ,`, , , , , , ,#
|
||||
, ,f,h,b, ,b, ,`,d,b, ,b,d,`,d,b, , , , ,#
|
||||
, , , , , ,h, ,d, ,h, ,h, ,d, ,h, , , , ,#
|
||||
, , , , , ,f, ,b, ,f, ,f, ,b, ,f, , , , ,#
|
||||
, , , , , , , ,h, , , , , ,h, , , , , , ,#
|
||||
, , , , , , , ,f, , , , , ,f, , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#query label(rooms) start(11; 11) room designations
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , ,r+,, , , , ,r+,, , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , ,r+,, , ,r+,,r+,, , ,r+,,r+,, , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , ,r+,, , , , ,r+,, , , , , , ,r+,, ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, ,r+,, , , , , , , , , , , , ,r+,, , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , ,r+,,r+,, , , , , , ,r+,,r+,, , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , ,r+,, , , , , , , , , , , , ,r+,, ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, ,r+,, , , , , , ,r+,, , , , ,r+,, , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , ,r+,,r+,, , ,r+,,r+,, , ,r+,, , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , ,r+,, , , , ,r+,, , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
|
@ -0,0 +1,100 @@
|
||||
"#dig start(16; 17; central 3x3 stairwell) 48 rooms, 4 tiles each (more aesthetic)"
|
||||
# see an image of this blueprint at: https://i.imgur.com/3pNc0HM.png
|
||||
, , , , , , , , , , , , ,d, , , ,d, , , , , , , , , , , , , ,#
|
||||
, , , ,d, , , ,d, , , ,d,d,d,d,d,d,d, , , ,d, , , ,d, , , , ,#
|
||||
, , ,d,d,d,d,d,d,d, , , ,d, ,d, ,d, , , ,d,d,d,d,d,d,d, , , ,#
|
||||
,d, , ,d, ,d, ,d, , ,d, , , ,d, , , ,d, , ,d, ,d, ,d, , ,d, ,#
|
||||
d,d,d, , , ,d, , , ,d,d,d, ,d,d,d, ,d,d,d, , , ,d, , , ,d,d,d,#
|
||||
,d, , ,d,d,d,d,d, , ,d, , ,d,d,d, , ,d, , ,d,d,d,d,d, , ,d, ,#
|
||||
,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, ,#
|
||||
,d, , ,d,d,d,d,d, , ,d, , ,d,d,d, , ,d, , ,d,d,d,d,d, , ,d, ,#
|
||||
d,d,d, , , ,d, , , ,d,d,d, ,d,d,d, ,d,d,d, , , ,d, , , ,d,d,d,#
|
||||
,d, , ,d, ,d, ,d, , ,d, , , ,d, , , ,d, , ,d, ,d, ,d, , ,d, ,#
|
||||
, , ,d,d,d,d,d,d,d, , , ,d, ,d, ,d, , , ,d,d,d,d,d,d,d, , , ,#
|
||||
, , , ,d, ,d, ,d, , , ,d,d,d,d,d,d,d, , , ,d, ,d, ,d, , , , ,#
|
||||
, ,d, , , ,d, , , ,d, , ,d, ,d, ,d, , ,d, , , ,d, , , ,d, , ,#
|
||||
,d,d,d, ,d,d,d, ,d,d,d, , , ,d, , , ,d,d,d, ,d,d,d, ,d,d,d, ,#
|
||||
, ,d, , ,d,d,d, , ,d, , ,d,i,i,i,d, , ,d, , ,d,d,d, , ,d, , ,#
|
||||
, ,d,d,d,d,d,d,d,d,d,d,d,d,i,i,i,d,d,d,d,d,d,d,d,d,d,d,d, , ,#
|
||||
, ,d, , ,d,d,d, , ,d, , ,d,i,i,i,d, , ,d, , ,d,d,d, , ,d, , ,#
|
||||
,d,d,d, ,d,d,d, ,d,d,d, , , ,d, , , ,d,d,d, ,d,d,d, ,d,d,d, ,#
|
||||
, ,d, , , ,d, , , ,d, , ,d, ,d, ,d, , ,d, , , ,d, , , ,d, , ,#
|
||||
, , , ,d, ,d, ,d, , , ,d,d,d,d,d,d,d, , , ,d, ,d, ,d, , , , ,#
|
||||
, , ,d,d,d,d,d,d,d, , , ,d, ,d, ,d, , , ,d,d,d,d,d,d,d, , , ,#
|
||||
,d, , ,d, ,d, ,d, , ,d, , , ,d, , , ,d, , ,d, ,d, ,d, , ,d, ,#
|
||||
d,d,d, , , ,d, , , ,d,d,d, ,d,d,d, ,d,d,d, , , ,d, , , ,d,d,d,#
|
||||
,d, , ,d,d,d,d,d, , ,d, , ,d,d,d, , ,d, , ,d,d,d,d,d, , ,d, ,#
|
||||
,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, ,#
|
||||
,d, , ,d,d,d,d,d, , ,d, , ,d,d,d, , ,d, , ,d,d,d,d,d, , ,d, ,#
|
||||
d,d,d, , , ,d, , , ,d,d,d, ,d,d,d, ,d,d,d, , , ,d, , , ,d,d,d,#
|
||||
,d, , ,d, ,d, ,d, , ,d, , , ,d, , , ,d, , ,d, ,d, ,d, , ,d, ,#
|
||||
, , ,d,d,d,d,d,d,d, , , ,d, ,d, ,d, , , ,d,d,d,d,d,d,d, , , ,#
|
||||
, , , ,d, , , ,d, , , ,d,d,d,d,d,d,d, , , ,d, , , ,d, , , , ,#
|
||||
, , , , , , , , , , , , ,d, , , ,d, , , , , , , , , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#build label(furniture) start(16; 16; central 3x3 stairwell) 48x doors, beds, cabinets, and coffers; 8x statues"
|
||||
, , , , , , , , , , , , ,f, , , ,f, , , , , , , , , , , , , ,#
|
||||
, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , , ,#
|
||||
, , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,#
|
||||
,b, , ,f, , , ,f, , ,b, , , , , , , ,b, , ,f, , , ,f, , ,b, ,#
|
||||
f, ,h, , , , , , , ,h, ,f, , , , , ,f, ,h, , , , , , , ,h, ,f,#
|
||||
,d, , , , , , , , , ,d, , , , , , , ,d, , , , , , , , , ,d, ,#
|
||||
, , , , , ,s, , , , , , , , ,s, , , , , , , , ,s, , , , , , ,#
|
||||
,d, , , , , , , , , ,d, , , , , , , ,d, , , , , , , , , ,d, ,#
|
||||
f, ,h, , , , , , , ,h, ,f, , , , , ,f, ,h, , , , , , , ,h, ,f,#
|
||||
,b, , ,f, , , ,f, , ,b, , , , , , , ,b, , ,f, , , ,f, , ,b, ,#
|
||||
, , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,#
|
||||
, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , , ,#
|
||||
, ,b, , , , , , , ,b, , ,f, , , ,f, , ,b, , , , , , , ,b, , ,#
|
||||
,h, ,f, , , , , ,f, ,h, , , , , , , ,h, ,f, , , , , ,f, ,h, ,#
|
||||
, ,d, , , , , , , ,d, , , , , , , , , ,d, , , , , , , ,d, , ,#
|
||||
, , , , , ,s, , , , , , , , , , , , , , , , , ,s, , , , , , ,#
|
||||
, ,d, , , , , , , ,d, , , , , , , , , ,d, , , , , , , ,d, , ,#
|
||||
,h, ,f, , , , , ,f, ,h, , , , , , , ,h, ,f, , , , , ,f, ,h, ,#
|
||||
, ,b, , , , , , , ,b, , ,f, , , ,f, , ,b, , , , , , , ,b, , ,#
|
||||
, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , , ,#
|
||||
, , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,#
|
||||
,b, , ,f, , , ,f, , ,b, , , , , , , ,b, , ,f, , , ,f, , ,b, ,#
|
||||
f, ,h, , , , , , , ,h, ,f, , , , , ,f, ,h, , , , , , , ,h, ,f,#
|
||||
,d, , , , , , , , , ,d, , , , , , , ,d, , , , , , , , , ,d, ,#
|
||||
, , , , , ,s, , , , , , , , ,s, , , , , , , , ,s, , , , , , ,#
|
||||
,d, , , , , , , , , ,d, , , , , , , ,d, , , , , , , , , ,d, ,#
|
||||
f, ,h, , , , , , , ,h, ,f, , , , , ,f, ,h, , , , , , , ,h, ,f,#
|
||||
,b, , ,f, , , ,f, , ,b, , , , , , , ,b, , ,f, , , ,f, , ,b, ,#
|
||||
, , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,#
|
||||
, , , ,h, , , ,h, , , ,b, ,d, ,d, ,b, , , ,h, , , ,h, , , , ,#
|
||||
, , , , , , , , , , , , ,f, , , ,f, , , , , , , , , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#query label(rooms) start(16; 16; central 3x3 stairwell) room designations
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , ,#
|
||||
, , ,r+,, , , , ,r+,, , , , , , , , , , ,r+,, , , , ,r+,, , ,#
|
||||
,r+,, , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , ,r+,,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
,r+,, , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , ,r+,,#
|
||||
, , ,r+,, , , , ,r+,, , , , , , , , , , ,r+,, , , , ,r+,, , ,#
|
||||
, , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , ,#
|
||||
, ,r+,, , , , , , ,r+,, , , , , , , , ,r+,, , , , , , ,r+,, ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, ,r+,, , , , , , ,r+,, , , , , , , , ,r+,, , , , , , ,r+,, ,#
|
||||
, , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , ,#
|
||||
, , ,r+,, , , , ,r+,, , , , , , , , , , ,r+,, , , , ,r+,, , ,#
|
||||
,r+,, , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , ,r+,,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
,r+,, , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , ,r+,,#
|
||||
, , ,r+,, , , , ,r+,, , , , , , , , , , ,r+,, , , , ,r+,, , ,#
|
||||
, , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
|
@ -0,0 +1,232 @@
|
||||
"#dig start(36;74) 97 rooms, 9 tiles each (fractal design)"
|
||||
# see an image of this blueprint at: https://i.imgur.com/ENi5QLX.png
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , ,d, , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d,d, ,d, ,d,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d,d,d,d,d,d,d,d, ,d, ,d,d,d,d,d,d,d,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d,d, ,d, ,d,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , ,d,d,d, , ,d, , , , , , ,d, , , , , , ,d, , , , , , ,d, , , , , , ,d, , ,d,d,d, , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , ,d,d,d, , ,d, , , , , , ,d, , , , , ,d,d,d, , , , , ,d, , , , , , ,d, , ,d,d,d, , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d,d,d,d,d,d,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , ,d,d,d, , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , ,d, , ,d,d,d, , ,d, , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , ,d, , ,d,d,d, , ,d, , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , ,d,d,d, ,d,d,d, ,d,d,d, , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , ,d,d,d, , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,d,d,d, ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, ,d,d,d, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , ,d, , , , , , ,d,d,d, ,d, ,d,d,d, , , , , ,d,d,d, , , , , ,d,d,d, ,d, ,d,d,d, , , , , , ,d, , , , , , , , , , , , , ,#
|
||||
, , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , ,#
|
||||
, , , , ,d,d,d, ,d,d,d,d,d,d,d,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d,d, ,d,d,d, , , , , ,#
|
||||
, , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d,d, ,d,d,d, ,d, , , , , , ,d, , ,d,d,d, , ,d, , , , , , ,d, ,d,d,d, ,d,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , ,#
|
||||
,d,d,d, , ,d, , , , , , ,d, , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , ,d, , , , , , ,d, , ,d,d,d, ,#
|
||||
,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, ,#
|
||||
,d,d,d, , ,d, , , , , , ,d, , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , ,d, , , , , , ,d, , ,d,d,d, ,#
|
||||
, , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d,d, ,d,d,d, ,d, , , , , , ,d, , ,d,d,d, , ,d, , , , , , ,d, ,d,d,d, ,d,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , ,#
|
||||
, , , , ,d,d,d, ,d,d,d,d,d,d,d,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d,d, ,d,d,d, , , , , ,#
|
||||
, , , , ,d,d,d, ,d,d,d, ,d, ,d,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, ,d,d,d,d, ,d, ,d,d,d, ,d,d,d, , , , , ,#
|
||||
, , , , , , , , , , , , ,d, , , , , , ,d,d,d, ,d, ,d,d,d, , , , , ,d,d,d, , , , , ,d,d,d, ,d, ,d,d,d, , , , , , ,d, , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,d,d,d, ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, ,d,d,d, ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, ,d,d,d, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, ,d,d,d, , ,d, , ,d, , ,d, , ,d,d,d, ,d,d,d, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, , , , , ,d,d,d, , , , , ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d, , ,d, , ,d,d,d, , ,d, , ,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,d,d,d, ,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d,d,d, ,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , ,d,d, ,d,d,d, ,d,d, , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d,d,d,d, ,d,d,d, ,d,d,d,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,d,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d, ,d,d,d, ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d,d,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,i,i,i,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,i,i,i,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,i,i,i,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#build label(furniture) start(36;73) 97 doors; 95 beds, coffers, and cabinets; 190 urns; 14 tables, chairs, weapon racks, armor stands, and statues"
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,h,`,f, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,`,b,`, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,n,`,n, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,f,`,n, ,`, ,n,`,f, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,`,b,`,d,`,d,`,b,`, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,h,`,n, ,`, ,n,`,h, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,`, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,h,`,f, ,`, ,h,`,f, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,`,b,`, ,`, ,`,b,`, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,n,`,n, ,`, ,n,`,n, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,f,`,n, , ,d, , ,`, , ,d, , ,n,`,f, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,`,b,`,d,`,`,`,`,`,`,`,`,`,d,`,b,`, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,h,`,n, , ,d, , ,`, , ,d, , ,n,`,h, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,n,`,n, ,`, ,n,`,n, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,h,`,f, ,r,b,t, ,`, ,r,b,t, ,h,`,f, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,`,b,`, ,a,`,c, ,`, ,a,`,c, ,`,b,`, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , ,n,`,n, ,h,s,f, ,`, ,h,s,f, ,n,`,n, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , ,`, , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,h,`,f, ,f,`,n, ,`, ,n,r,a,h, ,`, ,h,a,r,n, ,`, ,n,`,f, ,h,`,f, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,`,b,`, ,`,b,`,d,`,d,`,b,`,s, ,`, ,s,`,b,`,d,`,d,`,b,`, ,`,b,`, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,n,`,n, ,h,`,n, ,`, ,n,t,c,f, ,`, ,f,c,t,n, ,`, ,n,`,h, ,n,`,n, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , ,f,`,n, , ,d, , , , , , ,`, , , , , , ,`, , , , , , ,`, , , , , , ,d, , ,n,`,f, , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , ,`,b,`,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,`,b,`, , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , ,h,`,n, , ,d, , , , , , ,`, , , , , ,`,`,`, , , , , ,`, , , , , , ,d, , ,n,`,h, , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,n,`,n, ,f,`,n, ,`, ,n,`,f, ,`,`,`, ,f,`,n, ,`, ,n,`,f, ,n,`,n, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,`,b,`, ,`,b,`,d,`,d,`,b,`, ,`,`,`, ,`,b,`,d,`,d,`,b,`, ,`,b,`, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,h,`,f, ,h,`,n, ,`, ,n,`,h, ,`,`,`, ,h,`,n, ,`, ,n,`,h, ,h,`,f, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , ,`,`,`, , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,h,`,f, ,n,`,n, ,f,n, ,`,`,`, ,n,f, ,n,`,n, ,h,`,f, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,`,b,`, ,`,b,`, ,b,`,d,`,`,`,d,`,b, ,`,b,`, ,`,b,`, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,n,`,n, ,h,`,f, ,h,n, ,`,`,`, ,n,h, ,h,`,f, ,n,`,n, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , ,d, , ,`,`,`, , ,d, , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,f,`,n, ,`, ,n,`,f, ,n,`,n, ,`,`,`, ,n,`,n, ,f,`,n, ,`, ,n,`,f, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,`,b,`,d,`,d,`,b,`, ,h,b,f, ,`,`,`, ,h,b,f, ,`,b,`,d,`,d,`,b,`, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,h,`,n, ,`, ,n,`,h, , ,d, , ,`,`,`, , ,d, , ,h,`,n, ,`, ,n,`,h, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,`, , , , , ,n,`,n, ,`,`,`, ,n,`,n, , , , , ,`, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,h,`,f, ,`, ,h,`,f, ,`,b,`, ,`,`,`, ,`,b,`, ,h,`,f, ,`, ,h,`,f, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,`,b,`, ,`, ,`,b,`, ,h,`,f, ,`,`,`, ,h,`,f, ,`,b,`, ,`, ,`,b,`, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,n,`,n, ,`, ,n,`,n, , , , , ,`,`,`, , , , , ,n,`,n, ,`, ,n,`,n, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,h,`,f, ,f,`,n, , ,d, , ,`, , ,d, , ,n,`,f, ,`,`,`, ,f,`,n, , ,d, , ,`, , ,d, , ,n,`,f, ,h,`,f, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,`,b,`, ,`,b,`,d,`,`,`,`,`,`,`,`,`,d,`,b,`, ,`,`,`, ,`,b,`,d,`,`,`,`,`,`,`,`,`,d,`,b,`, ,`,b,`, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,n,`,n, ,h,`,n, , ,d, , ,`, , ,d, , ,n,`,h, ,`,`,`, ,h,`,n, , ,d, , ,`, , ,d, , ,n,`,h, ,n,`,n, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , ,d, , , , , , ,n,`,n, ,`, ,n,`,n, , , , , ,`,`,`, , , , , ,n,`,n, ,`, ,n,`,n, , , , , , ,d, , , , , , , , , , , , , ,#
|
||||
, , , , ,h,`,f, ,f,`,n, ,`, ,n,r,a,h, ,r,b,t, ,`, ,`,b,`, ,h,b,f, ,`,`,`, ,h,b,f, ,`,b,`, ,`, ,r,b,t, ,h,a,r,n, ,`, ,n,`,f, ,h,`,f, , , , , ,#
|
||||
, , , , ,`,b,`, ,`,b,`,d,`,d,`,b,`,s, ,a,`,c, ,`, ,h,`,f, ,n,`,n, ,`,`,`, ,n,`,n, ,h,`,f, ,`, ,a,`,c, ,s,`,b,`,d,`,d,`,b,`, ,`,b,`, , , , , ,#
|
||||
, , , , ,n,`,n, ,h,`,n, ,`, ,n,t,c,f, ,h,s,f, ,`, , , , , , ,d, , ,`,`,`, , ,d, , , , , , ,`, ,h,s,f, ,f,c,t,n, ,`, ,n,`,h, ,n,`,n, , , , , ,#
|
||||
,f,`,n, , ,d, , , , , , ,`, , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , ,`, , , , , , ,d, , ,n,`,f, ,#
|
||||
,`,b,`,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,d,`,b,`, ,#
|
||||
,h,`,n, , ,d, , , , , , ,`, , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , ,`, , , , , , ,d, , ,n,`,h, ,#
|
||||
, , , , ,n,`,n, ,f,`,n, ,`, ,n,r,a,h, ,h,s,f, ,`, , , , , , ,d, , ,`,`,`, , ,d, , , , , , ,`, ,h,s,f, ,h,a,r,n, ,`, ,n,`,f, ,n,`,n, , , , , ,#
|
||||
, , , , ,`,b,`, ,`,b,`,d,`,d,`,b,`,s, ,a,`,c, ,`, ,h,`,f, ,n,`,n, ,`,`,`, ,n,`,n, ,h,`,f, ,`, ,a,`,c, ,s,`,b,`,d,`,d,`,b,`, ,`,b,`, , , , , ,#
|
||||
, , , , ,h,`,f, ,h,`,n, ,`, ,n,t,c,f, ,r,b,t, ,`, ,`,b,`, ,h,b,f, ,`,`,`, ,h,b,f, ,`,b,`, ,`, ,r,b,t, ,f,c,t,n, ,`, ,n,`,h, ,h,`,f, , , , , ,#
|
||||
, , , , , , , , , , , , ,d, , , , , , ,n,`,n, ,`, ,n,`,n, , , , , ,`,`,`, , , , , ,n,`,n, ,`, ,n,`,n, , , , , , ,d, , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,n,`,n, ,f,`,n, , ,d, , ,`, , ,d, , ,n,`,f, ,`,`,`, ,f,`,n, , ,d, , ,`, , ,d, , ,n,`,f, ,n,`,n, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,`,b,`, ,`,b,`,d,`,`,`,`,`,`,`,`,`,d,`,b,`, ,`,`,`, ,`,b,`,d,`,`,`,`,`,`,`,`,`,d,`,b,`, ,`,b,`, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , ,h,`,f, ,h,`,n, , ,d, , ,`, , ,d, , ,n,`,h, ,`,`,`, ,h,`,n, , ,d, , ,`, , ,d, , ,n,`,h, ,h,`,f, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,n,`,n, ,`, ,n,`,n, , , , , ,`,`,`, , , , , ,n,`,n, ,`, ,n,`,n, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,`,b,`, ,`, ,`,b,`, ,h,s,f, ,`,`,`, ,h,s,f, ,`,b,`, ,`, ,`,b,`, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,h,`,f, ,`, ,h,`,f, ,a,`,c, ,`,`,`, ,a,`,c, ,h,`,f, ,`, ,h,`,f, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,`, , , , , ,r,b,t,d,`,`,`,d,r,b,t, , , , , ,`, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,f,`,n, ,`, ,n,`,f, ,n,`,n, ,`,`,`, ,n,`,n, ,f,`,n, ,`, ,n,`,f, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,`,b,`,d,`,d,`,b,`, , ,d, , ,`,`,`, , ,d, , ,`,b,`,d,`,d,`,b,`, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , ,h,`,n, ,`, ,n,`,h, ,`,`,`, ,`,`,`, ,`,`,`, ,h,`,n, ,`, ,n,`,h, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,d, , , , , , ,`,`, ,`,`,`, ,`,`, , , , , , ,d, , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,n,`,n, ,f,`,n, ,`,`, ,`,`,`, ,`,`, ,n,`,f, ,n,`,n, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,`,b,`, ,`,b,`,d,`,`, ,`,`,`, ,`,`,d,`,b,`, ,`,b,`, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , ,h,`,f, ,h,`,n, ,`,`, ,`,`,`, ,`,`, ,n,`,h, ,h,`,f, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,`,`,`, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#query label(rooms) start(36;73) message(use burial script to mark urns as usable) room designations
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , , , , , , , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , , , , , , , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , ,r+,, , , , ,r+,, , , , , , ,r+,, , , , ,r+,, , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , ,r+,, , , , ,r+,, , , , , , ,r+,, , , , ,r+,, , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,r+,, , ,r+,, ,r+,, , , , , , ,r+,, ,r+,, , ,r+,, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , ,r+,, , , , , , ,r+,, , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , ,r+,, , ,r+,, , , , , , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , , , , , ,r+,, , ,r+,, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , ,r+,, , , , , , ,r+,, , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , ,r+,, , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , ,r+,, , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , ,r+,, , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , ,r+,, , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , ,r+,, , , , , , ,r+,, , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , ,r+,, , ,r+,, , , , , , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , , , , , ,r+,, , ,r+,, , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,r+,, , , , , , ,r+,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , ,r+,, , , , ,r+,, , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , ,r+,, , ,r+,, , , , , , , , , , , , ,r+,, , ,r+,, , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,~,~,~, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,~,~,~, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,~,~,~, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,17 @@
|
||||
#build label(workshops) start(8;2;center of wagon) basic post embark workshops
|
||||
`,` ,`,`,` ,`,~,~,~,`,` ,`,`,` ,`,#
|
||||
`,wc,`,`,wt,`,~,~,~,`,wm,`,`,wr,`,#
|
||||
`,` ,`,`,` ,`,~,~,~,`,` ,`,`,` ,`,#
|
||||
#,# ,#,#,# ,#,#,#,#,#,# ,#,#,# ,#,#
|
||||
#place label(stockpiles) basic post embark stockpiles
|
||||
w(5x10), , , , ,s(5x1) , , , , ,p(5x1), , , , ,#
|
||||
, , , , ,g(5x4) , , , , ,d(5x1), , , , ,#
|
||||
, , , , , , , , , ,f(5x3), , , , ,#
|
||||
, , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , ,#
|
||||
, , , , ,u(10x5), , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , ,#
|
||||
# ,#,#,#,#,# ,#,#,#,#,# ,#,#,#,#,#
|
|
@ -0,0 +1,43 @@
|
||||
#dig diagonal interconnecting tunnels with stairs at intersections
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , , , , , ,i, , , , , ,#
|
||||
, , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , ,#
|
||||
, , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , ,#
|
||||
, ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , , ,d, , , , , ,d, , ,#
|
||||
,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,d, , , , , , , ,d, ,#
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
|
@ -0,0 +1,52 @@
|
||||
#dig paths every 10 units
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d, , , , , , , , , ,d
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
|
|
@ -0,0 +1,42 @@
|
||||
#dig mineshafts as stairs every 3rd tile
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,#
|
||||
i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,i, , ,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
|
@ -0,0 +1,201 @@
|
||||
#dig start(200;1) marks a diagonal line down and left starting at the cursor
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,md
|
||||
,,,,,,,,,,md
|
||||
,,,,,,,,,md
|
||||
,,,,,,,,md
|
||||
,,,,,,,md
|
||||
,,,,,,md
|
||||
,,,,,md
|
||||
,,,,md
|
||||
,,,md
|
||||
,,md
|
||||
,md
|
||||
md
|
|
@ -0,0 +1,201 @@
|
||||
#dig start(1;1) marks a diagonal line down and right starting at the cursor
|
||||
md
|
||||
,md
|
||||
,,md
|
||||
,,,md
|
||||
,,,,md
|
||||
,,,,,md
|
||||
,,,,,,md
|
||||
,,,,,,,md
|
||||
,,,,,,,,md
|
||||
,,,,,,,,,md
|
||||
,,,,,,,,,,md
|
||||
,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
|
@ -0,0 +1,201 @@
|
||||
#dig start(200;200) marks a diagonal line up and left starting at the cursor
|
||||
md
|
||||
,md
|
||||
,,md
|
||||
,,,md
|
||||
,,,,md
|
||||
,,,,,md
|
||||
,,,,,,md
|
||||
,,,,,,,md
|
||||
,,,,,,,,md
|
||||
,,,,,,,,,md
|
||||
,,,,,,,,,,md
|
||||
,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
|
@ -0,0 +1,201 @@
|
||||
#dig start(1;200) marks a diagonal line up and right starting at the cursor
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,,md
|
||||
,,,,,,,,,,,md
|
||||
,,,,,,,,,,md
|
||||
,,,,,,,,,md
|
||||
,,,,,,,,md
|
||||
,,,,,,,md
|
||||
,,,,,,md
|
||||
,,,,,md
|
||||
,,,,md
|
||||
,,,md
|
||||
,,md
|
||||
,md
|
||||
md
|
|
@ -0,0 +1,768 @@
|
||||
#notes label(help)
|
||||
"This is Buketgeshud, or translated from Dwarvish, The Quick Fortress. It is a set of basic blueprints for quickfort, demonstrating its use in assembling an entire basic (if incomplete) fort."
|
||||
""
|
||||
Buketgeshud is designed around a 30x20 footprint with a common 2x2 central staircase. Blueprints can be repeated in any direction to connect in a modular fashion with adjacent 30x20 areas. A fortresswide example recirculating waterfall/plumbing system is included as an overlay if you're feeling hardcore.
|
||||
""
|
||||
Walkthrough:
|
||||
1) Embark!
|
||||
""
|
||||
2) Clear a 30 wide x 20 high region of trees on the surface. This should be uninterrupted flat ground with soil (so that we can place farms below). Deconstruct your wagon.
|
||||
""
|
||||
"3) Run /surface1. You'll want to put the cursor in the middle of the 30x20 cleared area (14 right, 8 down from the top left corner). This digs out stairs on the surface, a farm/depot/workshop level below, as well as the beginnings of an entrance moat. The beginnings of a 3rd z-level are also dug out; don't build anything here if you'd like to put waterfall plumbing in later."
|
||||
""
|
||||
"4) After /surface1 is dug out, run /surface2 (beginning from the same starting position as you used for /surface1). This puts down a basic set of workshops commonly needed soon after embark, a couple farm plots, and a depot. It also places and configures starting stockpiles."
|
||||
""
|
||||
"5) If your embark site is near any enemies, run /surface3 to build walls and traps on the surface to protect against invaders."
|
||||
""
|
||||
"6) Dig out the central shaft and tunnels for several z-levels below our surface/depot level. Place the cursor THREE Z-levels below the surface, where no digging has occurred yet, and run /basic1 for 6 z-levels down starting from that level."
|
||||
""
|
||||
"7) Optionally run /basic2 to designate booze-only stockpiles around the central stairs on every z-level below the farming level. The stockpiles are configured to take booze from the level above, so be sure to apply /basic2 on the top level first and work your way down."
|
||||
""
|
||||
"8) Run workshops, bedrooms, and storeroom blueprints on any desired Z-level along our central shaft."
|
||||
""
|
||||
"9) If desired, add a fortresswide waterfall system, bathing your dwarves in tile after tile of lovely waterfall mist as they go about their day. Run /waterfall1 on the z-level immediately below your farm/depot level (you left that space empty, didn't you?) and run /plumbing1 on z-levels below that, down to the bottom of your fort. Each application of /plumbing1 will dig out two floors. On the bottommost level, the screw pumps that will be placed there require 2 floor tiles to sit on, so remove or refloor the 2 northern channel designations in the lower right corner on that z-level. You'll also need a reservior in the z-level below that (not included)."
|
||||
""
|
||||
"10) After all levels are dug out, apply /plumbing2 on the *bottommost* level, just above the reservior. The blueprint will build screw pumps on that level and the level above. Repeat on every alternate level up to the level below where you applied /waterfall1."
|
||||
""
|
||||
"11) Finally, apply /waterfall2 on the z-level where you applied /waterfall1. Route flowing water to the 2 tiles in lower right."
|
||||
"#dig label(surface1) start(15;10; top left corner of central stairs) message(The 3rd z-level just digs stairs; if you want to install the waterfall plumbing system later, leave this 3rd level EMPTY for now and start the base proper below that; use /basic1 to dig out areas for future use below.) Surface and farm/depot levels"
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,,,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,h,h,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,,h,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,h,,h,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,,h,h,h,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,h,h,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,,,h,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,h,h,h,h,,`,#
|
||||
`,,,,j,,,,,,,,,,j,j,,,,,,,`,h,,,,,,`,#
|
||||
`,,,,j,,,,,,,,,,j,j,,,,,,,`,h,,h,h,h,h,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,h,h,h,h,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,h,,h,h,h,h,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,h,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,h,h,h,h,,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,~,~,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,`,`,h,h,h,h,h,`,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
d,d,d,d,j,d,d,d,d,d,d,d,d,d,j,j,d,d,d,d,d,d,`,`,`,`,`,`,`,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,,,,d,d,d,d,d,`,,,,,,,`,#
|
||||
`,,,,d,,,,,,,,d,,d,d,,d,,,,,`,,,,,,,`,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
`,,,,d,,,,d,d,d,d,,d,d,d,d,,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,,d,d,d,d,,d,d,d,d,,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,,,,d,d,,,d,d,,,,,,,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,,d,d,d,d,,d,d,d,d,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,,d,d,d,d,,r,r,r,r,d,d,d,d,d,`,,,,,,,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,,~,~,~,~,d,d,d,d,d,`,,,,,,,`,#
|
||||
`,`,`,`,j,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
d,,,,i,,,,,,,,,,i,i,,,,,,,,,,j,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,d,d,,,,,,,,,,,,,,,#
|
||||
,,,,i,,,,,,,,,d,i,i,d,,,,,,,,,j,,,,,#
|
||||
,,,,i,,,,,,,,,d,i,i,d,,,,,,,,,j,,,,,#
|
||||
,,,,,,,,,,,,,,d,d,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,i,,,,,,,,,,j,j,,,,,,,,,,j,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#meta label(surface2) Build basic workshops and stockpiles
|
||||
/surface2_build
|
||||
/surface2_place
|
||||
/surface2_query
|
||||
/surface2_doors
|
||||
"#build label(surface2_build) hidden() start(15;10; top left corner of central stairs) Populates the surface and farm/depot levels with farm plots, workshops and a depot"
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,~,#
|
||||
`,,,,,,,,wu,,,wr,,,,,,,,,,,`,,,,,,,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,wn,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,~,,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,`,,,,,,,`,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
,,,,`,,,,p(6x7),,,,,,`,`,p(6x7),,,,,,`,`,`,`,`,`,`,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,wl,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,`,`,`,,`,`,`,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,`,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,`,`,`,,,`,`,,,`,`,`,`,`,`,`,,,,,,,`,#
|
||||
,wc,,,,wm,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,`,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,`,,,,,`,,,,,,,D,,,`,,,,,,,`,#
|
||||
,wt,,,,wr,,`,,,,,`,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,`,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,`,,,`,,,,,`,`,`,`,`,,,,,,`,`,`,`,`,`,`,`,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#place label(surface2_place) hidden() start(15;10; top left corner of central stairs) Lay stockpiles on surface and depot/farm levels
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
`,r(6x6),,,,,~,,,,,,,r(3x6),,,r(5x6),,,,,z(1x6),`,`,,,,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,`,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,`,`,`,`,#
|
||||
`,~,,,,,~,,,,,,,~,,,~,,,,,~,`,`,,`,`,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,w(4x8),,,,`,`,,,,`,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,`,`,`,#
|
||||
`,u(11x3),,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,`,`,`,`,,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,y(4x2),,,,~,~,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,`,`,`,`,`,`,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
f,f,f,f,,f,f,f,,,,,,,`,`,,,,,,,`,`,`,`,`,`,`,`,#
|
||||
f,f,f,f,f,f,f,f,,,,,,,f(2x6),,,,,,,,`,,,,,,,`,#
|
||||
f,f,f,f,f,f,f,f,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
f,f,,,,f,f,f,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
f,f,,,,f,f,f,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
f,f,,,,f,f,f,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
f,f,f,f,f,f,f,f,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,`,,,,,,`,`,`,`,,,,,,`,,,,,,,`,#
|
||||
,,,,`,,,,,,,,`,,f(2x1),,,`,,,,,`,,,,,,,`,#
|
||||
w(4x2),,,,,f(9x2),,,,,,,,,`,`,f(1x2),,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,`,,,,,,,`,#
|
||||
,,,,`,,,,g(4x2),,,,,,f(2x1),,,,,,,,`,,,,,,,`,#
|
||||
,,,s(1x8),,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,g(4x5),,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,`,,,,,,,,,`,`,`,`,,,,,,`,`,`,`,`,`,`,`,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#query label(surface2_query) hidden() start(15;10; top left corner of central stairs) message(remember to set the farm plots to grow plump helmets) Adjust surface/depot level stockpiles
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
`,bodyparts,,,,,~,,,,,,,rawhides,,,craftrefuse,,,,,,`,`,,,,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,`,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,`,`,`,`,#
|
||||
`,~,,,,,~,,,,,,,~,,,~,,,,,~,`,`,,`,`,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,`,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,`,`,`,`,,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,~,~,,,,,,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,`,`,`,`,`,`,`,`,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
noseeds,,,,,,,,,,,,,,`,`,,,,,,,`,`,`,`,`,`,`,`,#
|
||||
,,,,,,,,,,,,,,seeds,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,`,,,,,,`,`,`,`,,,,,,`,,,,,,,`,#
|
||||
,,,,`,,,,,,,,`,,booze,t{Down}{Left 2}&,,`,,,,,`,,,,,,,`,#
|
||||
,,,,,booze,,,,,,,,,`,`,booze,,,,,,`,,,,,,,`,#
|
||||
,,,,,t{Up 5}&,,,,,,,,,`,`,t{Left 3}&,,,,,,`,,,,,,,`,#
|
||||
,,,,`,,,,,,,,,,booze,t{Up}{Left 2}&,,,,,,,`,,,,,,,`,#
|
||||
,,,otherstone,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,~,~,~,~,,,,,,`,,,,,,,`,#
|
||||
,,,,`,,,,,,,,,`,`,`,`,,,,,,`,`,`,`,`,`,`,`,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#build label(surface2_doors) hidden() start(15;10; top left corner of central stairs) Just builds doors on the depot level (just below the surface)
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
`,,,,d,,,,,,,,d,,,,,d,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,`,,,,,,,`,#
|
||||
`,,,,d,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,d,d,,,d,d,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,d,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,d,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,`,`,`,`,,,,,,`,,,,,,,`,#
|
||||
,,,,,,,,,,,,,~,~,~,~,,,,,,`,,,,,,,`,#
|
||||
`,`,`,`,~,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#meta label(surface3) Build walls and traps to protect against invaders
|
||||
/surface3_walls
|
||||
/surface3_traps
|
||||
#build label(surface3_walls) hidden() start(15;10; top left corner of central stairs) Builds walls and bridges on the surface level. Note that the entrance on the southern wall juts out from the 30x20 footprint by 3 tiles; the southern bridge extends beyond the edge of the blueprint itself.\n\nYou'll need to add and connect levers yourself.
|
||||
Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,gd(2x3),,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,Cw,Cw,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,,,,,,,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,Cw,gw(4x2),,,,Cw,,,,,Cw,,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,Cw,,,,,Cw,,,,,Cw,Cw,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,Cw,,,,,Cw,,,,,ga(2x1),,,,,,,Cw,#
|
||||
Cw,,,,,,,,,,,,Cw,,,,,Cw,,,,,Cw,Cw,,,,,,Cw,#
|
||||
Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,,,,,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,Cw,#
|
||||
,,,,,,,,,,,,Cw,,,,,Cw,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,Cw,gw(4x2),,,,Cw,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#build label(surface3_traps) hidden() start(15;10; top left corner of central stairs) Put some stone-fall traps down.
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,Ts,Ts,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,`,`,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,Ts,`,,~,~,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,Ts,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,Ts,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,`,`,Ts,Ts,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,Ts,Ts,`,Ts,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,Ts,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,Ts,Ts,Ts,Ts,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,Ts,Ts,Ts,Ts,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,Ts,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,Ts,Ts,Ts,Ts,`,#
|
||||
`,,,,,,,,,,,,,,,,,,,,,,`,`,Ts,`,`,`,`,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,Ts,Ts,Ts,Ts,Ts,`,#
|
||||
`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,`,`,`,`,Ts,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,~,~,Ts,Ts,Ts,Ts,Ts,`,#
|
||||
`,,,,,,,,,,,,`,,,,,`,,,,,`,`,`,`,`,`,`,`,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#dig label(basic1) start(15;10; top left corner of central stairs) Common stair/shaft digging for all floors below surface/depot levels
|
||||
,,,,i,,,,,,,,,,i,i,,,,,,,,,,i,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
,,,,i,,,,,,,,,,i,i,,,,,,,,,,i,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#meta label(basic2) Place and configure food/booze stockpiles around the central staircase
|
||||
/basic2_place
|
||||
/basic2_query
|
||||
#place label(basic2_place) hidden() start(15;10; top left corner of central stairs) Places food stockpiles around the central staircase
|
||||
,,,,`,,,,,,,,,,`,`,,,,,,,,,,`,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,f(2x1),,,,,,,,,,,,,,,,#
|
||||
,,,,`,,,,,,,,,f(1x2),`,`,f(1x2),,,,,,,,,`,,,,,#
|
||||
,,,,`,,,,,,,,,,`,`,,,,,,,,,,`,,,,,#
|
||||
,,,,,,,,,,,,,,f(2x1),,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,`,,,,,,,,,,`,`,,,,,,,,,,`,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#query label(basic2_query) hidden() start(15;10; top left corner of central stairs) configures booze stockpiles around stairway, taking from the stockpile on the level above"
|
||||
,,,,`,,,,,,,,,,`,`,,,,,,,,,,`,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,booze,t<&,,,,,,,,,,,,,,,#
|
||||
,,,,`,,,,,,,,,booze,`,`,booze,,,,,,,,,`,,,,,#
|
||||
,,,,`,,,,,,,,,t<&,`,`,t<&,,,,,,,,,`,,,,,#
|
||||
,,,,,,,,,,,,,,booze,t<&,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,`,,,,,,,,,,`,`,,,,,,,,,,`,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#dig label(workshops1) start(15;10; top left corner of central stairs) Just four big rooms, suitable for workshops"
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,,i,i,,d,d,d,d,d,d,d,d,i,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
,d,,,d,,,,,,,,d,,d,d,,d,,,,,,,,d,,,,,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
,d,,,d,,,,,,,,d,,d,d,,d,,,,,,,,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,`,`,`,`,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,`,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,`,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,,,,#
|
||||
,,,,i,,,,,,,,,,i,i,,,,,,,,,,i,`,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#meta label(workshops2) Build commonly needed workshops and associated stockpiles
|
||||
/workshops2_build
|
||||
/workshops2_place
|
||||
/workshops2_doors
|
||||
#build label(workshops2_build) hidden() start(15;10; top left corner of central stairs) Sufficient workshops for basic non-food needs
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,wj,,,,we,,,,we,,,`,`,,,es,,,,ew,,,,ek,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,wj,,,,we,,,,we,,,`,`,,,es,,,,eg,,,,wf,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
`,`,`,`,~,`,`,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,`,`,`,~,`,`,`,`,#
|
||||
`,`,`,`,~,`,`,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,`,`,`,~,`,`,`,`,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,wr,,,,wr,,,,wm,,,`,`,,,wc,,,,wc,,,,wb,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
`,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
`,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
`,,,wt,,,,wt,,,,wm,,,`,`,,,wc,,,,wc,,,,,,,,#
|
||||
`,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
`,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#place label(workshops2_place) hidden() start(15;10; top left corner of central stairs) Workshop source material piles placed around the workshops.
|
||||
e,e,e,e,,l,l,l,l,l,l,l,l,,`,`,,b,b,b,b,b,b,b,b,,b,b,b,,#
|
||||
e,e,e,e,e,l,l,l,l,l,l,l,l,,`,`,,b,b,b,b,b,b,b,b,b,b,b,b,,#
|
||||
e,e,,,,l,,,,l,,,,,`,`,,,,,b,,,,b,,,,b,,#
|
||||
e,e,,,,l,,,,l,,,,,`,`,,,,,b,,,,b,,,,b,,#
|
||||
e,e,,,,l,,,,l,,,,,`,`,,,,,b,,,,b,,,,b,,#
|
||||
,,,,,l,,,,l,,,,,`,`,,,,,b,,,,b,,,,b,,#
|
||||
,,,,,l,,,,l,,,,,`,`,,,,,b,,,,b,,,,b,,#
|
||||
,,,,,l,,,,l,,,,,`,`,,,,,b,,,,b,,,,b,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
`,`,`,`,~,`,`,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,`,`,`,~,`,`,`,`,#
|
||||
`,`,`,`,~,`,`,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,`,`,`,~,`,`,`,`,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,w,,,,w,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,w,,,,w,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,w,,,,w,,,,,,#
|
||||
,,,s(10x1),,,,,,,,,,,`,`,,w,w,w,w,w,w,w,w,w,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,w,,,,w,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,w,,,,w,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,w,,,,w,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#build label(workshops2_doors) hidden() start(15;10; top left corner of central stairs) Fill in doors to the workrooms.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
,d,,,d,,,,,,,,d,,,,,d,,,,,,,,d,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,d,,,d,,,,,,,,d,,,,,d,,,,,,,,d,,,,,#
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#dig label(storeroom1) start(15;10; Top left corner of central stairs) Just four big rooms, suitable for storerooms"
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
,,,,d,,,,,,,,d,,d,d,,d,,,,,,,,d,,,,,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
,,,,d,,,,,,,,d,,d,d,,d,,,,,,,,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,,d,d,d,d,d,d,d,d,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,d,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#meta label(storeroom2a) General stockpiles
|
||||
/storeroom2a_place
|
||||
/storeroom2_doors
|
||||
"#meta label(storeroom2b) Extra storage for wood, food and furniture"
|
||||
/storeroom2b_place
|
||||
/storeroom2_doors
|
||||
#place label(storeroom2a_place) hidden() start(15;10; top left corner of central stairs) General stockpiles
|
||||
g(6x8),,,,x(1x1),,l(7x8),,,,,,,,,,,d(7x5),,,,,,,p(6x5),x(1x1),,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,b(7x3),,,,,,,z(6x3),,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,#
|
||||
u(13x8),,,,,,,,,,,,,,,,,u(7x8),,,,,,,w(6x8),,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,x(4x5),,,`,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,`,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,`,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,`,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,`,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#place label(storeroom2b_place) hidden() start(15;10; top left corner of central stairs) Extra storage for wood, food and furniture"
|
||||
w(13x8),,,,x(1x1),,,,,,,,,,,,,f(13x8),,,,,,,,x(1x1),,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,#
|
||||
u(13x8),,,,,,,,,,,,,,,,,u(13x8),,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,x(4x5),,,`,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,`,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,`,,,,#
|
||||
,,,,,,,,,,,,,`,,,`,,,,,,,,,,`,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,`,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#build label(storeroom2_doors) hidden() start(15;10; top left corner of central stairs) Build storeroom doors
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
,,,,d,,,,,,,,d,,,,,d,,,,,,,,d,,,,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,d,,,,,,,,d,,,,,d,,,,,,,,d,,,,d,#
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,d,,,d,,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#dig label(bedrooms1) start(15;10; top left corner of central stairs) Bedroom complex
|
||||
d,d,d,,i,,d,d,d,,d,d,d,,i,i,,d,d,d,,d,d,d,,i,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,,d,d,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,d,d,,#
|
||||
d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
d,,d,,d,,d,,d,,d,d,d,d,d,d,d,d,d,d,,d,,d,,d,,d,d,,#
|
||||
d,,d,,d,,d,,d,,,,,,d,d,,,,,,d,,d,,d,,d,d,,#
|
||||
d,,d,,d,,d,,d,,,d,d,d,d,d,d,d,d,,,d,,d,,d,d,d,d,,#
|
||||
d,,d,,d,,d,,d,,d,d,d,d,d,d,d,d,d,d,,d,,d,,d,,,,,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
d,d,d,d,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,d,d,d,d,#
|
||||
d,,d,,d,,d,,d,,d,d,d,d,d,d,d,d,d,d,,d,,d,,d,,,,,#
|
||||
d,,d,,d,,d,,d,,,d,d,d,d,d,d,d,d,,,d,,d,,d,d,d,d,,#
|
||||
d,,d,,d,,d,,d,,,,,,d,d,,,,,,d,,d,,d,,d,d,,#
|
||||
d,,d,,d,,d,,d,,d,d,d,d,d,d,d,d,d,d,,d,,d,,d,,d,d,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,,,,,#
|
||||
,,,,d,,,,,,,,,,d,d,,,,,,,,,,d,,,,,#
|
||||
d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,,,,,#
|
||||
,,,,i,,,,,,,,,,i,i,,,,,,,,,,i,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#build label(bedrooms2) start(15;10; top left corner of central stairs) Bedroom furniture
|
||||
f,h,h,,,,h,h,f,,f,h,h,,,,,h,h,f,,f,h,h,,,,,,,#
|
||||
b,,,d,,d,,,b,,b,,,d,,,d,,,b,,b,,,d,,,f,h,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,h,,#
|
||||
b,f,h,d,,d,h,f,b,,b,f,h,d,,,d,h,f,b,,b,f,h,d,,d,,b,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
b,,b,,,,b,,b,,b,f,h,d,,,d,h,f,b,,b,,b,,,,f,h,,#
|
||||
f,,f,,,,f,,f,,,,,,,,,,,,,f,,f,,,,,h,,#
|
||||
h,,h,,,,h,,h,,,t,t,,,,,,,,,h,,h,,,d,,b,,#
|
||||
d,,d,,,,d,,d,,,c,c,,,,,,,,,d,,d,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
d,,d,,,,d,,d,,,,,,,,,c,c,,,d,,d,,,,,,,#
|
||||
h,,h,,,,h,,h,,,,,,,,,t,t,,,h,,h,,,d,,h,,#
|
||||
f,,f,,,,f,,f,,,,,,,,,,,,,f,,f,,,,,h,,#
|
||||
b,,b,,,,b,,b,,b,f,h,d,,,d,h,f,b,,b,,b,,,,f,b,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
b,f,h,d,,d,h,f,b,,b,f,h,d,,,d,h,f,b,,b,f,h,d,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
b,f,h,d,,d,h,f,b,,b,f,h,d,,,d,h,f,b,,b,f,h,d,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#query label(bedrooms3) start(15;10; top left corner of central stairs) Makes bedrooms and small dining rooms from beds and tables
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
r+,,,,,,,,r+,,r+,,,,,,,,,r+,,r+,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
r+,,,,,,,,r+,,r+,,,,,,,,,r+,,r+,,,,,,,r+,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
r+,,r+,,,,r+,,r+,,r+,,,,,,,,,r+,,r+,,r+,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,r++&,,,,,,,,,,,,,,,,,r+,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,r++&,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
r+,,r+,,,,r+,,r+,,r+,,,,,,,,,r+,,r+,,r+,,,,,r+,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
r+,,,,,,,,r+,,r+,,,,,,,,,r+,,r+,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
r+,,,,,,,,r+,,r+,,,,,,,,,r+,,r+,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#dig label(plumbing1) start(15;10; top left corner of central stairs) Plumbing for the waterfall system
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,h,h,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,h,,,,,,,,,h,,,,,,,,,,,#
|
||||
,,,,,,,,,,h,,,,,,,,,h,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,h,h,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,h,h,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,d,,h,h,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,i,d,,d,d,#
|
||||
#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,h,h,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,h,,,,,,,,,h,,,,,,,,,,,#
|
||||
,,,,,,,,,,h,,,,,,,,,h,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,h,h,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,h,h,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,i,d,,h,h,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#build label(plumbing2) start(15;10; top left corner of central stairs) Grates, doors, and screw pumps for the waterfall plumbing"
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,G,G,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,G,,,,,,,,,G,,,,,,,,,,,#
|
||||
,,,,,,,,,,G,,,,,,,,,G,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,G,G,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,d,Msm,Msm,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,~,~,#
|
||||
#<,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,G,G,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,G,,,,,,,,,G,,,,,,,,,,,#
|
||||
,,,,,,,,,,G,,,,,,,,,G,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,G,G,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,~,~,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,d,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,Msu,Msu,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#dig label(waterfall1) start(15;10; top left corner of central stairs) Top-level plumbing for the waterfall system
|
||||
,,,,i,,,,,,,,,,i,i,,,,,,,,,,i,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
,,,,,,d,,,,,,,,,,,,,,,,,,,,,,,d,#
|
||||
,,,,,,d,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,#
|
||||
,,,,,,d,,,,,,,,h,h,,,,,,,,,,,,d,,d,#
|
||||
,,,,,,d,,,,,,,,,,,,,,,,,,,,,d,,d,#
|
||||
,,,,,,d,,,,,,,,,,,,,,,,,,,,,d,,d,#
|
||||
,,,,,,d,,,,,,,,,,,,,,,,,,,,,d,,d,#
|
||||
,,,,i,,d,d,d,d,h,,,,i,i,,,,h,d,d,d,d,,i,,d,,d,#
|
||||
,,,,i,,d,d,d,d,h,,,,i,i,,,,h,d,d,d,d,,i,,d,d,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,d,,,,,d,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,#
|
||||
,,,,,,,,,,,,,,h,h,,,,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
,,,,,,,,,,,,,,d,d,,,,d,,,,,,,,,d,d,#
|
||||
,,,,,,,,,,,,,,d,d,d,d,d,d,,d,d,d,,d,d,d,d,d,#
|
||||
,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,,,d,d,#
|
||||
,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,#
|
||||
,,,,i,,,,,,,,,,i,i,,,,,,,,,,i,,,d,d,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
"#build label(waterfall2) start(15;10; top left corner of central stairs) message(Remember to link the levers and lock the doors manually) Floodgates, screw pumps, bridges and levers to control flow"
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,x,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,x,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,`,`,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,x,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,gw(2x1),,#
|
||||
,,,,,,,,,,,,,,,,x,,,,,,Tl,,,,,d,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,Tl,Tl,Tl,d,,,,,,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,Tl,,,,,d,Msm,Msm,#
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
Can't render this file because it has a wrong number of fields in line 29.
|
@ -0,0 +1,26 @@
|
||||
#dig start(6;6) room for 24 corpses
|
||||
d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d,d,d, ,d, ,d,#
|
||||
, , , ,d,d,d, , , , ,#
|
||||
d, ,d,d,i,i,i,d,d, ,d,#
|
||||
d,d,d,d,i,i,i,d,d,d,d,#
|
||||
d, ,d,d,i,i,i,d,d, ,d,#
|
||||
, , , ,d,d,d, , , , ,#
|
||||
d, ,d, ,d,d,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#build label(urns) start(6;6) message(use burial script to mark urns as usable) 24 urns
|
||||
n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,`,`,`, ,n, ,n,#
|
||||
, , , ,`,`,`, , , , ,#
|
||||
n, ,`,`,~,~,~,`,`, ,n,#
|
||||
`,`,`,`,~,~,~,`,`,`,`,#
|
||||
n, ,`,`,~,~,~,`,`, ,n,#
|
||||
, , , ,`,`,`, , , , ,#
|
||||
n, ,n, ,`,`,`, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#
|
|
@ -0,0 +1,99 @@
|
||||
#dig start(24;25) room for 513 corpses
|
||||
# see an image of this blueprint at https://i.imgur.com/Kcjvx6R.png
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,d,d,d,d,d,d,d,d,d,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,d,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , ,d,d,d, , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,d,d,d,i,i,i,d,d,d,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,i,i,i,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,d,d,d,i,i,i,d,d,d,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , ,d,d,d, , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,d,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
, , , , , , , , , , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , , , , , , , , , , ,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d, , , , , , , , , ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,#
|
||||
d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,d,d,d,d,d,d,d,d,d,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d, ,d,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
||||
#build label(urns) start(24;24) message(use burial script to mark urns as usable) 513 urns
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`,`,`,`,`,`,`,`,`,`,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n,`,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , ,`,`,`, , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`,`,`,`,~,~,~,`,`,`,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,~,~,~,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`,`,`,`,~,~,~,`,`,`,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , ,`,`,`, , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n,`,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
, , , , , , , , , , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , , , , , , , , , , ,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`, , , , , , , , , ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
|
||||
n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,`,`,`,`,`,`,`,`,`,`, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n, ,n,#
|
||||
#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#
|
|
@ -0,0 +1,484 @@
|
||||
# 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}
|
||||
|
||||
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}stallow&p^
|
||||
miscliquid: {foodprefix}b{Right}{Down 18}p^
|
||||
|
||||
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}stallow&f^
|
||||
forbidmiscliquid: {foodprefix}{Right}{Down 18}f^
|
||||
|
||||
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}stallow&p^
|
||||
permitmiscliquid: {foodprefix}{Right}{Down 18}p^
|
||||
|
||||
# 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^
|
||||
craftrefuse: {skulls}{permitbones}{permitshells}{permitteeth}{permithorns}{permithair}
|
||||
|
||||
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^
|
||||
forbidcraftrefuse: {forbidskulls}{forbidbones}{forbidshells}{forbidteeth}{forbidhorns}{forbidhair}
|
||||
|
||||
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^
|
||||
permitcraftrefuse: {permitskulls}{permitbones}{permitshells}{permitteeth}{permithorns}{permithair}
|
||||
|
||||
|
||||
##################################
|
||||
# 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}^
|
||||
jugs: {finishedgoodsprefix}{Right}f{Right}{Up 2}&{Left}{Down 2}f{Down}f{Down}f^
|
||||
|
||||
forbidcrafts: {finishedgoodsprefix}{Right 2}{Down 9}{togglesequence 9}^
|
||||
|
||||
permitcrafts: {forbidcrafts}
|
||||
|
||||
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^
|
||||
|
||||
|
||||
##################################
|
||||
# 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^
|
@ -1 +1 @@
|
||||
Subproject commit 6a9153d053a250be34996b3fd86ac1166c3e17cb
|
||||
Subproject commit 8340c07802078d905e60e294211a1807ec6f0161
|
@ -0,0 +1 @@
|
||||
Subproject commit 3c0f2e86ce4e7a3a3b30e765087d02a68bba7e6f
|
@ -0,0 +1 @@
|
||||
Subproject commit da0d18ae59ef2699013316b703cdc93809414c93
|
@ -0,0 +1,3 @@
|
||||
project(dfhack-lodepng)
|
||||
add_library(dfhack-lodepng STATIC EXCLUDE_FROM_ALL lodepng.cpp lodepng.h)
|
||||
ide_folder(dfhack-lodepng "Depends")
|
@ -0,0 +1,21 @@
|
||||
Copyright (c) 2005-2018 Lode Vandevenne
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,111 +1,110 @@
|
||||
PROJECT ( lua CXX )
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
||||
project(lua CXX)
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLUA_USE_APICHECK")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLUA_USE_APICHECK")
|
||||
|
||||
# Make bit32 library available (for things like bit32.extract())
|
||||
ADD_DEFINITIONS(-DLUA_COMPAT_BITLIB)
|
||||
add_definitions(-DLUA_COMPAT_BITLIB)
|
||||
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE /wd4334 )
|
||||
ELSE()
|
||||
ADD_DEFINITIONS ( -DLUA_USE_POSIX -DLUA_USE_DLOPEN )
|
||||
SET ( LIBS m dl )
|
||||
ENDIF()
|
||||
if(WIN32)
|
||||
add_definitions(-D_CRT_SECURE_NO_DEPRECATE /wd4334)
|
||||
else()
|
||||
add_definitions(-DLUA_USE_POSIX -DLUA_USE_DLOPEN)
|
||||
set(LIBS m dl)
|
||||
endif()
|
||||
|
||||
IF(UNIX)
|
||||
ADD_DEFINITIONS(-DLINUX_BUILD)
|
||||
IF(DFHACK_BUILD_64)
|
||||
SET(CMAKE_C_FLAGS "-m64 -mno-avx")
|
||||
ELSE()
|
||||
SET(CMAKE_C_FLAGS "-m32")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
if(UNIX)
|
||||
add_definitions(-DLINUX_BUILD)
|
||||
if(DFHACK_BUILD_64)
|
||||
set(CMAKE_C_FLAGS "-m64 -mno-avx")
|
||||
else()
|
||||
set(CMAKE_C_FLAGS "-m32")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
SET (HDR_LIBLUA
|
||||
include/lapi.h
|
||||
include/lauxlib.h
|
||||
include/lcode.h
|
||||
include/lctype.h
|
||||
include/ldebug.h
|
||||
include/ldo.h
|
||||
include/lfunc.h
|
||||
include/lgc.h
|
||||
include/llex.h
|
||||
include/llimits.h
|
||||
include/lmem.h
|
||||
include/lobject.h
|
||||
include/lopcodes.h
|
||||
include/lparser.h
|
||||
include/lstate.h
|
||||
include/lstring.h
|
||||
include/ltable.h
|
||||
include/ltm.h
|
||||
include/lua.h
|
||||
include/luaconf.h
|
||||
include/lualib.h
|
||||
include/lundump.h
|
||||
include/lvm.h
|
||||
include/lzio.h
|
||||
set(HDR_LIBLUA
|
||||
include/lapi.h
|
||||
include/lauxlib.h
|
||||
include/lcode.h
|
||||
include/lctype.h
|
||||
include/ldebug.h
|
||||
include/ldo.h
|
||||
include/lfunc.h
|
||||
include/lgc.h
|
||||
include/llex.h
|
||||
include/llimits.h
|
||||
include/lmem.h
|
||||
include/lobject.h
|
||||
include/lopcodes.h
|
||||
include/lparser.h
|
||||
include/lstate.h
|
||||
include/lstring.h
|
||||
include/ltable.h
|
||||
include/ltm.h
|
||||
include/lua.h
|
||||
include/luaconf.h
|
||||
include/lualib.h
|
||||
include/lundump.h
|
||||
include/lvm.h
|
||||
include/lzio.h
|
||||
)
|
||||
SET_SOURCE_FILES_PROPERTIES(${HDR_LIBLUA} PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||
set_source_files_properties(${HDR_LIBLUA} PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||
include_directories(include)
|
||||
|
||||
# Build Libraries
|
||||
SET (SRC_LIBLUA
|
||||
src/lapi.c
|
||||
src/lauxlib.c
|
||||
src/lbaselib.c
|
||||
src/lbitlib.c
|
||||
src/lcode.c
|
||||
src/lcorolib.c
|
||||
src/lctype.c
|
||||
src/ldblib.c
|
||||
src/ldebug.c
|
||||
src/ldo.c
|
||||
src/ldump.c
|
||||
src/lfunc.c
|
||||
src/lgc.c
|
||||
src/linit.c
|
||||
src/liolib.c
|
||||
src/llex.c
|
||||
src/lmathlib.c
|
||||
src/lmem.c
|
||||
src/loadlib.c
|
||||
src/lobject.c
|
||||
src/lopcodes.c
|
||||
src/loslib.c
|
||||
src/lparser.c
|
||||
src/lstate.c
|
||||
src/lstring.c
|
||||
src/lstrlib.c
|
||||
src/ltable.c
|
||||
src/ltablib.c
|
||||
src/ltm.c
|
||||
src/lundump.c
|
||||
src/lutf8lib.c
|
||||
src/lvm.c
|
||||
src/lzio.c
|
||||
set(SRC_LIBLUA
|
||||
src/lapi.c
|
||||
src/lauxlib.c
|
||||
src/lbaselib.c
|
||||
src/lbitlib.c
|
||||
src/lcode.c
|
||||
src/lcorolib.c
|
||||
src/lctype.c
|
||||
src/ldblib.c
|
||||
src/ldebug.c
|
||||
src/ldo.c
|
||||
src/ldump.c
|
||||
src/lfunc.c
|
||||
src/lgc.c
|
||||
src/linit.c
|
||||
src/liolib.c
|
||||
src/llex.c
|
||||
src/lmathlib.c
|
||||
src/lmem.c
|
||||
src/loadlib.c
|
||||
src/lobject.c
|
||||
src/lopcodes.c
|
||||
src/loslib.c
|
||||
src/lparser.c
|
||||
src/lstate.c
|
||||
src/lstring.c
|
||||
src/lstrlib.c
|
||||
src/ltable.c
|
||||
src/ltablib.c
|
||||
src/ltm.c
|
||||
src/lundump.c
|
||||
src/lutf8lib.c
|
||||
src/lvm.c
|
||||
src/lzio.c
|
||||
)
|
||||
# compile with C++ compiler
|
||||
set_source_files_properties(${SRC_LIBLUA} PROPERTIES LANGUAGE CXX)
|
||||
# append headers to sources to make them show up in MSVC GUI
|
||||
LIST(APPEND SRC_LIBLUA ${HDR_LIBLUA})
|
||||
list(APPEND SRC_LIBLUA ${HDR_LIBLUA})
|
||||
|
||||
ADD_LIBRARY ( lua SHARED ${SRC_LIBLUA} )
|
||||
TARGET_LINK_LIBRARIES ( lua ${LIBS})
|
||||
add_library(lua SHARED ${SRC_LIBLUA})
|
||||
target_link_libraries(lua ${LIBS})
|
||||
|
||||
install(TARGETS lua
|
||||
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
||||
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
||||
|
||||
IDE_FOLDER(lua "Depends")
|
||||
if(MSVC)
|
||||
# need no space to prevent /FI from being stripped: https://github.com/DFHack/dfhack/issues/1455
|
||||
target_compile_options(lua PRIVATE "/FIdfhack_llimits.h")
|
||||
else()
|
||||
target_compile_options(lua PRIVATE -include dfhack_llimits.h)
|
||||
set_source_files_properties(src/lstring.c PROPERTIES COMPILE_FLAGS "-Wno-stringop-overflow")
|
||||
endif()
|
||||
|
||||
#SET ( SRC_LUA src/lua.c )
|
||||
#SET ( SRC_LUAC src/luac.c src/print.c )
|
||||
|
||||
#ADD_EXECUTABLE ( lua ${SRC_LUA} ${LUA_RC_FILE})
|
||||
#ADD_EXECUTABLE ( luac ${SRC_LUAC} ${LUAC_RC_FILE})
|
||||
#TARGET_LINK_LIBRARIES ( lua liblua )
|
||||
#TARGET_LINK_LIBRARIES ( luac liblua_static )
|
||||
install(TARGETS lua
|
||||
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
||||
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
||||
|
||||
ide_folder(lua "Depends")
|
||||
|
@ -0,0 +1,61 @@
|
||||
/**
|
||||
Copyright © 2018 Pauli <suokkos@gmail.com>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any
|
||||
damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any
|
||||
purpose, including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must
|
||||
not claim that you wrote the original software. If you use this
|
||||
software in a product, an acknowledgment in the product
|
||||
documentation would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and
|
||||
must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
/*! \file dfhack_llimits.h
|
||||
* dfhack specific lua porting header that overrides lua defaults for thread
|
||||
* safety.
|
||||
*/
|
||||
|
||||
#ifdef _MSC_VER
|
||||
typedef CRITICAL_SECTION mutex_t;
|
||||
#else
|
||||
typedef pthread_mutex_t mutex_t;
|
||||
#endif
|
||||
|
||||
struct lua_extra_state {
|
||||
mutex_t* mutex;
|
||||
};
|
||||
|
||||
#define luai_mutex(L) ((lua_extra_state*)lua_getextraspace(L))->mutex
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define luai_userstateopen(L) luai_mutex(L) = (mutex_t*)malloc(sizeof(mutex_t)); InitializeCriticalSection(luai_mutex(L))
|
||||
#define luai_userstateclose(L) lua_unlock(L); DeleteCriticalSection(luai_mutex(L)); free(luai_mutex(L))
|
||||
#define lua_lock(L) EnterCriticalSection(luai_mutex(L))
|
||||
#define lua_unlock(L) LeaveCriticalSection(luai_mutex(L))
|
||||
#else
|
||||
#define luai_userstateopen(L) luai_mutex(L) = (mutex_t*)malloc(sizeof(mutex_t)); *luai_mutex(L) = PTHREAD_MUTEX_INITIALIZER
|
||||
#define luai_userstateclose(L) lua_unlock(L); pthread_mutex_destroy(luai_mutex(L)); free(luai_mutex(L))
|
||||
#define lua_lock(L) pthread_mutex_lock(luai_mutex(L))
|
||||
#define lua_unlock(L) pthread_mutex_unlock(luai_mutex(L))
|
||||
#endif
|
@ -0,0 +1 @@
|
||||
Subproject commit 19b52ca0298c8942df82dd441d7a4a588db4c413
|
@ -1,6 +1,6 @@
|
||||
project(dfhack-md5)
|
||||
ADD_LIBRARY(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp)
|
||||
IDE_FOLDER(dfhack-md5 "Depends")
|
||||
IF(UNIX)
|
||||
SET_TARGET_PROPERTIES(dfhack-md5 PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
|
||||
ENDIF()
|
||||
add_library(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp)
|
||||
ide_folder(dfhack-md5 "Depends")
|
||||
if(UNIX)
|
||||
set_target_properties(dfhack-md5 PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
|
||||
endif()
|
||||
|
@ -1,195 +1,195 @@
|
||||
PROJECT(protobuf)
|
||||
|
||||
SET(HASH_MAP_H <unordered_map>)
|
||||
SET(HASH_SET_H <unordered_map>)
|
||||
SET(HASH_NAMESPACE std)
|
||||
SET(HASH_MAP_CLASS unordered_map)
|
||||
SET(HASH_SET_CLASS unordered_set)
|
||||
SET(HAVE_HASH_MAP 1)
|
||||
SET(HAVE_HASH_SET 1)
|
||||
|
||||
IF (HAVE_HASH_MAP EQUAL 0)
|
||||
MESSAGE(SEND_ERROR "Could not find a working hash map implementation. Please install GCC >= 4.4, and all necessary 32-bit C++ development libraries.")
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
FIND_PACKAGE(Threads REQUIRED)
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
||||
|
||||
SET(LIBPROTOBUF_LITE_HDRS
|
||||
google/protobuf/io/coded_stream.h
|
||||
google/protobuf/io/coded_stream_inl.h
|
||||
google/protobuf/stubs/common.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/config.h
|
||||
google/protobuf/extension_set.h
|
||||
google/protobuf/generated_message_util.h
|
||||
google/protobuf/stubs/hash.h
|
||||
google/protobuf/stubs/map-util.h
|
||||
google/protobuf/message_lite.h
|
||||
google/protobuf/stubs/once.h
|
||||
google/protobuf/repeated_field.h
|
||||
google/protobuf/stubs/stl_util-inl.h
|
||||
google/protobuf/wire_format_lite.h
|
||||
google/protobuf/wire_format_lite_inl.h
|
||||
google/protobuf/io/zero_copy_stream.h
|
||||
google/protobuf/io/zero_copy_stream_impl_lite.h
|
||||
google/protobuf/io/gzip_stream.h
|
||||
google/protobuf/io/zero_copy_stream_impl.h
|
||||
)
|
||||
|
||||
SET(LIBPROTOBUF_FULL_HDRS
|
||||
google/protobuf/descriptor.h
|
||||
google/protobuf/descriptor.pb.h
|
||||
google/protobuf/descriptor_database.h
|
||||
google/protobuf/dynamic_message.h
|
||||
google/protobuf/generated_message_reflection.h
|
||||
google/protobuf/compiler/importer.h
|
||||
google/protobuf/message.h
|
||||
google/protobuf/compiler/parser.h
|
||||
google/protobuf/io/printer.h
|
||||
google/protobuf/reflection_ops.h
|
||||
google/protobuf/service.h
|
||||
google/protobuf/stubs/strutil.h
|
||||
google/protobuf/stubs/substitute.h
|
||||
google/protobuf/text_format.h
|
||||
google/protobuf/io/tokenizer.h
|
||||
google/protobuf/unknown_field_set.h
|
||||
google/protobuf/wire_format.h
|
||||
)
|
||||
|
||||
LIST(APPEND LIBPROTOBUF_FULL_HDRS ${LIBPROTOBUF_LITE_HDRS})
|
||||
|
||||
SET(LIBPROTOBUF_LITE_SRCS
|
||||
google/protobuf/io/coded_stream.cc
|
||||
google/protobuf/stubs/common.cc
|
||||
google/protobuf/extension_set.cc
|
||||
google/protobuf/generated_message_util.cc
|
||||
google/protobuf/message_lite.cc
|
||||
google/protobuf/stubs/once.cc
|
||||
google/protobuf/repeated_field.cc
|
||||
google/protobuf/wire_format_lite.cc
|
||||
google/protobuf/io/zero_copy_stream.cc
|
||||
google/protobuf/io/zero_copy_stream_impl_lite.cc
|
||||
google/protobuf/io/gzip_stream.cc
|
||||
google/protobuf/io/zero_copy_stream_impl.cc
|
||||
)
|
||||
|
||||
SET(LIBPROTOBUF_FULL_SRCS
|
||||
google/protobuf/descriptor.cc
|
||||
google/protobuf/descriptor.pb.cc
|
||||
google/protobuf/descriptor_database.cc
|
||||
google/protobuf/dynamic_message.cc
|
||||
google/protobuf/extension_set_heavy.cc
|
||||
google/protobuf/generated_message_reflection.cc
|
||||
google/protobuf/compiler/importer.cc
|
||||
google/protobuf/io/gzip_stream.cc
|
||||
google/protobuf/message.cc
|
||||
google/protobuf/compiler/parser.cc
|
||||
google/protobuf/io/printer.cc
|
||||
google/protobuf/reflection_ops.cc
|
||||
google/protobuf/service.cc
|
||||
google/protobuf/stubs/structurally_valid.cc
|
||||
google/protobuf/stubs/strutil.cc
|
||||
google/protobuf/stubs/substitute.cc
|
||||
google/protobuf/text_format.cc
|
||||
google/protobuf/io/tokenizer.cc
|
||||
google/protobuf/unknown_field_set.cc
|
||||
google/protobuf/wire_format.cc
|
||||
google/protobuf/io/zero_copy_stream_impl.cc
|
||||
)
|
||||
|
||||
SET(LIBPROTOC_HDRS
|
||||
google/protobuf/compiler/code_generator.h
|
||||
google/protobuf/compiler/command_line_interface.h
|
||||
google/protobuf/compiler/cpp/cpp_enum.h
|
||||
google/protobuf/compiler/cpp/cpp_enum_field.h
|
||||
google/protobuf/compiler/cpp/cpp_extension.h
|
||||
google/protobuf/compiler/cpp/cpp_field.h
|
||||
google/protobuf/compiler/cpp/cpp_file.h
|
||||
google/protobuf/compiler/cpp/cpp_generator.h
|
||||
google/protobuf/compiler/cpp/cpp_helpers.h
|
||||
google/protobuf/compiler/cpp/cpp_message.h
|
||||
google/protobuf/compiler/cpp/cpp_message_field.h
|
||||
google/protobuf/compiler/cpp/cpp_primitive_field.h
|
||||
google/protobuf/compiler/cpp/cpp_service.h
|
||||
google/protobuf/compiler/cpp/cpp_string_field.h
|
||||
google/protobuf/compiler/plugin.h
|
||||
google/protobuf/compiler/plugin.pb.h
|
||||
google/protobuf/compiler/subprocess.h
|
||||
google/protobuf/compiler/zip_writer.h
|
||||
)
|
||||
|
||||
SET(LIBPROTOC_SRCS
|
||||
google/protobuf/compiler/code_generator.cc
|
||||
google/protobuf/compiler/command_line_interface.cc
|
||||
google/protobuf/compiler/cpp/cpp_enum.cc
|
||||
google/protobuf/compiler/cpp/cpp_enum_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_extension.cc
|
||||
google/protobuf/compiler/cpp/cpp_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_file.cc
|
||||
google/protobuf/compiler/cpp/cpp_generator.cc
|
||||
google/protobuf/compiler/cpp/cpp_helpers.cc
|
||||
google/protobuf/compiler/cpp/cpp_message.cc
|
||||
google/protobuf/compiler/cpp/cpp_message_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_service.cc
|
||||
google/protobuf/compiler/cpp/cpp_string_field.cc
|
||||
google/protobuf/compiler/plugin.cc
|
||||
google/protobuf/compiler/plugin.pb.cc
|
||||
google/protobuf/compiler/subprocess.cc
|
||||
google/protobuf/compiler/zip_writer.cc
|
||||
)
|
||||
|
||||
LIST(APPEND LIBPROTOBUF_FULL_SRCS ${LIBPROTOBUF_LITE_SRCS})
|
||||
|
||||
IF(CMAKE_COMPILER_IS_GNUCC)
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wno-sign-compare")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result -Wno-unused-local-typedefs -Wno-misleading-indentation")
|
||||
ELSEIF(MSVC)
|
||||
# Disable warnings for integer conversion to smaller type
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
SET(PROTOBUF_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# Protobuf shared libraries
|
||||
|
||||
ADD_LIBRARY(protobuf SHARED ${LIBPROTOBUF_FULL_SRCS} ${LIBPROTOBUF_FULL_HDRS})
|
||||
IDE_FOLDER(protobuf "Depends")
|
||||
ADD_LIBRARY(protobuf-lite SHARED ${LIBPROTOBUF_LITE_SRCS} ${LIBPROTOBUF_LITE_HDRS})
|
||||
IDE_FOLDER(protobuf-lite "Depends")
|
||||
|
||||
SET_TARGET_PROPERTIES(protobuf PROPERTIES COMPILE_DEFINITIONS LIBPROTOBUF_EXPORTS)
|
||||
SET_TARGET_PROPERTIES(protobuf-lite PROPERTIES COMPILE_DEFINITIONS LIBPROTOBUF_EXPORTS)
|
||||
|
||||
TARGET_LINK_LIBRARIES(protobuf ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES})
|
||||
TARGET_LINK_LIBRARIES(protobuf-lite ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES})
|
||||
|
||||
install(TARGETS protobuf-lite
|
||||
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
||||
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
||||
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
# Protobuf compiler shared library
|
||||
|
||||
ADD_LIBRARY(protoc SHARED ${LIBPROTOC_SRCS} ${LIBPROTOC_HDRS})
|
||||
IDE_FOLDER(protoc "Depends")
|
||||
|
||||
SET_TARGET_PROPERTIES(protoc PROPERTIES COMPILE_DEFINITIONS LIBPROTOC_EXPORTS)
|
||||
TARGET_LINK_LIBRARIES(protoc protobuf)
|
||||
|
||||
# Protobuf compiler executable
|
||||
|
||||
ADD_EXECUTABLE(protoc-bin google/protobuf/compiler/main.cc google/protobuf/compiler/command_line_interface.h google/protobuf/compiler/cpp/cpp_generator.h)
|
||||
IDE_FOLDER(protoc-bin "Depends")
|
||||
|
||||
SET_TARGET_PROPERTIES(protoc-bin PROPERTIES OUTPUT_NAME protoc)
|
||||
TARGET_LINK_LIBRARIES(protoc-bin protoc)
|
||||
|
||||
EXPORT(TARGETS protoc-bin FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake )
|
||||
ENDIF()
|
||||
project(protobuf)
|
||||
|
||||
set(HASH_MAP_H <unordered_map>)
|
||||
set(HASH_SET_H <unordered_map>)
|
||||
set(HASH_NAMESPACE std)
|
||||
set(HASH_MAP_CLASS unordered_map)
|
||||
set(HASH_SET_CLASS unordered_set)
|
||||
set(HAVE_HASH_MAP 1)
|
||||
set(HAVE_HASH_SET 1)
|
||||
|
||||
if(HAVE_HASH_MAP EQUAL 0)
|
||||
message(SEND_ERROR "Could not find a working hash map implementation. Please install GCC >= 4.4, and all necessary 32-bit C++ development libraries.")
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
find_package(Threads REQUIRED)
|
||||
endif()
|
||||
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
||||
|
||||
set(LIBPROTOBUF_LITE_HDRS
|
||||
google/protobuf/io/coded_stream.h
|
||||
google/protobuf/io/coded_stream_inl.h
|
||||
google/protobuf/stubs/common.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/config.h
|
||||
google/protobuf/extension_set.h
|
||||
google/protobuf/generated_message_util.h
|
||||
google/protobuf/stubs/hash.h
|
||||
google/protobuf/stubs/map-util.h
|
||||
google/protobuf/message_lite.h
|
||||
google/protobuf/stubs/once.h
|
||||
google/protobuf/repeated_field.h
|
||||
google/protobuf/stubs/stl_util-inl.h
|
||||
google/protobuf/wire_format_lite.h
|
||||
google/protobuf/wire_format_lite_inl.h
|
||||
google/protobuf/io/zero_copy_stream.h
|
||||
google/protobuf/io/zero_copy_stream_impl_lite.h
|
||||
google/protobuf/io/gzip_stream.h
|
||||
google/protobuf/io/zero_copy_stream_impl.h
|
||||
)
|
||||
|
||||
set(LIBPROTOBUF_FULL_HDRS
|
||||
google/protobuf/descriptor.h
|
||||
google/protobuf/descriptor.pb.h
|
||||
google/protobuf/descriptor_database.h
|
||||
google/protobuf/dynamic_message.h
|
||||
google/protobuf/generated_message_reflection.h
|
||||
google/protobuf/compiler/importer.h
|
||||
google/protobuf/message.h
|
||||
google/protobuf/compiler/parser.h
|
||||
google/protobuf/io/printer.h
|
||||
google/protobuf/reflection_ops.h
|
||||
google/protobuf/service.h
|
||||
google/protobuf/stubs/strutil.h
|
||||
google/protobuf/stubs/substitute.h
|
||||
google/protobuf/text_format.h
|
||||
google/protobuf/io/tokenizer.h
|
||||
google/protobuf/unknown_field_set.h
|
||||
google/protobuf/wire_format.h
|
||||
)
|
||||
|
||||
list(APPEND LIBPROTOBUF_FULL_HDRS ${LIBPROTOBUF_LITE_HDRS})
|
||||
|
||||
set(LIBPROTOBUF_LITE_SRCS
|
||||
google/protobuf/io/coded_stream.cc
|
||||
google/protobuf/stubs/common.cc
|
||||
google/protobuf/extension_set.cc
|
||||
google/protobuf/generated_message_util.cc
|
||||
google/protobuf/message_lite.cc
|
||||
google/protobuf/stubs/once.cc
|
||||
google/protobuf/repeated_field.cc
|
||||
google/protobuf/wire_format_lite.cc
|
||||
google/protobuf/io/zero_copy_stream.cc
|
||||
google/protobuf/io/zero_copy_stream_impl_lite.cc
|
||||
google/protobuf/io/gzip_stream.cc
|
||||
google/protobuf/io/zero_copy_stream_impl.cc
|
||||
)
|
||||
|
||||
set(LIBPROTOBUF_FULL_SRCS
|
||||
google/protobuf/descriptor.cc
|
||||
google/protobuf/descriptor.pb.cc
|
||||
google/protobuf/descriptor_database.cc
|
||||
google/protobuf/dynamic_message.cc
|
||||
google/protobuf/extension_set_heavy.cc
|
||||
google/protobuf/generated_message_reflection.cc
|
||||
google/protobuf/compiler/importer.cc
|
||||
google/protobuf/io/gzip_stream.cc
|
||||
google/protobuf/message.cc
|
||||
google/protobuf/compiler/parser.cc
|
||||
google/protobuf/io/printer.cc
|
||||
google/protobuf/reflection_ops.cc
|
||||
google/protobuf/service.cc
|
||||
google/protobuf/stubs/structurally_valid.cc
|
||||
google/protobuf/stubs/strutil.cc
|
||||
google/protobuf/stubs/substitute.cc
|
||||
google/protobuf/text_format.cc
|
||||
google/protobuf/io/tokenizer.cc
|
||||
google/protobuf/unknown_field_set.cc
|
||||
google/protobuf/wire_format.cc
|
||||
google/protobuf/io/zero_copy_stream_impl.cc
|
||||
)
|
||||
|
||||
set(LIBPROTOC_HDRS
|
||||
google/protobuf/compiler/code_generator.h
|
||||
google/protobuf/compiler/command_line_interface.h
|
||||
google/protobuf/compiler/cpp/cpp_enum.h
|
||||
google/protobuf/compiler/cpp/cpp_enum_field.h
|
||||
google/protobuf/compiler/cpp/cpp_extension.h
|
||||
google/protobuf/compiler/cpp/cpp_field.h
|
||||
google/protobuf/compiler/cpp/cpp_file.h
|
||||
google/protobuf/compiler/cpp/cpp_generator.h
|
||||
google/protobuf/compiler/cpp/cpp_helpers.h
|
||||
google/protobuf/compiler/cpp/cpp_message.h
|
||||
google/protobuf/compiler/cpp/cpp_message_field.h
|
||||
google/protobuf/compiler/cpp/cpp_primitive_field.h
|
||||
google/protobuf/compiler/cpp/cpp_service.h
|
||||
google/protobuf/compiler/cpp/cpp_string_field.h
|
||||
google/protobuf/compiler/plugin.h
|
||||
google/protobuf/compiler/plugin.pb.h
|
||||
google/protobuf/compiler/subprocess.h
|
||||
google/protobuf/compiler/zip_writer.h
|
||||
)
|
||||
|
||||
set(LIBPROTOC_SRCS
|
||||
google/protobuf/compiler/code_generator.cc
|
||||
google/protobuf/compiler/command_line_interface.cc
|
||||
google/protobuf/compiler/cpp/cpp_enum.cc
|
||||
google/protobuf/compiler/cpp/cpp_enum_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_extension.cc
|
||||
google/protobuf/compiler/cpp/cpp_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_file.cc
|
||||
google/protobuf/compiler/cpp/cpp_generator.cc
|
||||
google/protobuf/compiler/cpp/cpp_helpers.cc
|
||||
google/protobuf/compiler/cpp/cpp_message.cc
|
||||
google/protobuf/compiler/cpp/cpp_message_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
||||
google/protobuf/compiler/cpp/cpp_service.cc
|
||||
google/protobuf/compiler/cpp/cpp_string_field.cc
|
||||
google/protobuf/compiler/plugin.cc
|
||||
google/protobuf/compiler/plugin.pb.cc
|
||||
google/protobuf/compiler/subprocess.cc
|
||||
google/protobuf/compiler/zip_writer.cc
|
||||
)
|
||||
|
||||
list(APPEND LIBPROTOBUF_FULL_SRCS ${LIBPROTOBUF_LITE_SRCS})
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wno-sign-compare")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result -Wno-unused-local-typedefs -Wno-misleading-indentation -Wno-class-memaccess")
|
||||
elseif(MSVC)
|
||||
# Disable warnings for integer conversion to smaller type
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
|
||||
endif()
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(PROTOBUF_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
include_directories(${ZLIB_INCLUDE_DIRS})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# Protobuf shared libraries
|
||||
|
||||
add_library(protobuf SHARED ${LIBPROTOBUF_FULL_SRCS} ${LIBPROTOBUF_FULL_HDRS})
|
||||
ide_folder(protobuf "Depends")
|
||||
add_library(protobuf-lite SHARED ${LIBPROTOBUF_LITE_SRCS} ${LIBPROTOBUF_LITE_HDRS})
|
||||
ide_folder(protobuf-lite "Depends")
|
||||
|
||||
set_target_properties(protobuf PROPERTIES COMPILE_DEFINITIONS LIBPROTOBUF_EXPORTS)
|
||||
set_target_properties(protobuf-lite PROPERTIES COMPILE_DEFINITIONS LIBPROTOBUF_EXPORTS)
|
||||
|
||||
target_link_libraries(protobuf ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES})
|
||||
target_link_libraries(protobuf-lite ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES})
|
||||
|
||||
install(TARGETS protobuf-lite
|
||||
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
||||
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
||||
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
# Protobuf compiler shared library
|
||||
|
||||
add_library(protoc SHARED ${LIBPROTOC_SRCS} ${LIBPROTOC_HDRS})
|
||||
ide_folder(protoc "Depends")
|
||||
|
||||
set_target_properties(protoc PROPERTIES COMPILE_DEFINITIONS LIBPROTOC_EXPORTS)
|
||||
target_link_libraries(protoc protobuf)
|
||||
|
||||
# Protobuf compiler executable
|
||||
|
||||
add_executable(protoc-bin google/protobuf/compiler/main.cc google/protobuf/compiler/command_line_interface.h google/protobuf/compiler/cpp/cpp_generator.h)
|
||||
ide_folder(protoc-bin "Depends")
|
||||
|
||||
set_target_properties(protoc-bin PROPERTIES OUTPUT_NAME protoc)
|
||||
target_link_libraries(protoc-bin protoc)
|
||||
|
||||
export(TARGETS protoc-bin FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake )
|
||||
endif()
|
||||
|
@ -0,0 +1,6 @@
|
||||
project(sizecheck)
|
||||
add_library(sizecheck SHARED sizecheck.cpp)
|
||||
ide_folder(sizecheck "Depends")
|
||||
install(TARGETS sizecheck
|
||||
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
||||
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
@ -0,0 +1,76 @@
|
||||
// adapted from https://github.com/mifki/df-sizecheck/blob/master/b.cpp
|
||||
// usage:
|
||||
// linux: PRELOAD_LIB=hack/libsizecheck.so ./dfhack
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
using namespace std;
|
||||
|
||||
const uint32_t MAGIC = 0xdfdf4ac8;
|
||||
bool initialized = false;
|
||||
int perturb = -1;
|
||||
|
||||
void init() {
|
||||
#ifndef _LINUX
|
||||
if (getenv("MALLOC_PERTURB_")) {
|
||||
perturb = atoi(getenv("MALLOC_PERTURB_"));
|
||||
}
|
||||
#endif
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
static int posix_memalign(void **ptr, size_t alignment, size_t size)
|
||||
{
|
||||
if ((*ptr = _aligned_malloc(size, alignment)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return errno;
|
||||
}
|
||||
#endif
|
||||
|
||||
void* alloc(size_t n) {
|
||||
if (!initialized) {
|
||||
init();
|
||||
}
|
||||
void* addr;
|
||||
if (posix_memalign(&addr, 32, n + 16) != 0) {
|
||||
return addr;
|
||||
}
|
||||
memset(addr, 0, 16);
|
||||
*(size_t*)addr = n;
|
||||
*(uint32_t*)((uint8_t*)addr + 8) = MAGIC;
|
||||
if (perturb > 0) {
|
||||
memset((uint8_t*)addr + 16, ~(perturb & 0xff), n);
|
||||
}
|
||||
return (uint8_t*)addr + 16;
|
||||
}
|
||||
|
||||
void dealloc(void* addr) {
|
||||
if (!initialized) {
|
||||
init();
|
||||
}
|
||||
if (uintptr_t(addr) % 32 == 16 && *(uint32_t*)((uint8_t*)addr - 8) == MAGIC) {
|
||||
addr = (void*)((uint8_t*)addr - 16);
|
||||
memset((uint8_t*)addr + 16, perturb & 0xff, *(size_t*)addr);
|
||||
}
|
||||
free(addr);
|
||||
}
|
||||
|
||||
void* operator new (size_t n, const nothrow_t& tag) {
|
||||
return alloc(n);
|
||||
}
|
||||
|
||||
void* operator new (size_t n) {
|
||||
return alloc(n);
|
||||
}
|
||||
|
||||
void operator delete (void* addr) {
|
||||
return dealloc(addr);
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
if(NOT TinyXML_FOUND)
|
||||
project(dfhack-tinyxml)
|
||||
ADD_LIBRARY(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp)
|
||||
IDE_FOLDER(dfhack-tinyxml "Depends")
|
||||
add_library(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp)
|
||||
ide_folder(dfhack-tinyxml "Depends")
|
||||
endif()
|
||||
|
@ -1,6 +1,6 @@
|
||||
PROJECT(dfhack-tinythread)
|
||||
ADD_LIBRARY(dfhack-tinythread STATIC EXCLUDE_FROM_ALL tinythread.cpp tinythread.h fast_mutex.h)
|
||||
project(dfhack-tinythread)
|
||||
add_library(dfhack-tinythread STATIC EXCLUDE_FROM_ALL tinythread.cpp tinythread.h)
|
||||
if(UNIX)
|
||||
target_link_libraries(dfhack-tinythread pthread)
|
||||
endif()
|
||||
IDE_FOLDER(dfhack-tinythread "Depends")
|
||||
ide_folder(dfhack-tinythread "Depends")
|
||||
|
@ -1,249 +0,0 @@
|
||||
/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; -*-
|
||||
Copyright (c) 2010-2012 Marcus Geelnard
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
*/
|
||||
|
||||
#ifndef _FAST_MUTEX_H_
|
||||
#define _FAST_MUTEX_H_
|
||||
|
||||
/// @file
|
||||
|
||||
// Which platform are we on?
|
||||
#if !defined(_TTHREAD_PLATFORM_DEFINED_)
|
||||
#if defined(_WIN32) || defined(__WIN32__) || defined(__WINDOWS__)
|
||||
#define _TTHREAD_WIN32_
|
||||
#else
|
||||
#define _TTHREAD_POSIX_
|
||||
#endif
|
||||
#define _TTHREAD_PLATFORM_DEFINED_
|
||||
#endif
|
||||
|
||||
// Check if we can support the assembly language level implementation (otherwise
|
||||
// revert to the system API)
|
||||
#if (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) || \
|
||||
(defined(_MSC_VER) && (defined(_M_IX86) /*|| defined(_M_X64)*/)) || \
|
||||
(defined(__GNUC__) && (defined(__ppc__)))
|
||||
#define _FAST_MUTEX_ASM_
|
||||
#else
|
||||
#define _FAST_MUTEX_SYS_
|
||||
#endif
|
||||
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
#define NOMINMAX
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define __UNDEF_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#ifdef __UNDEF_LEAN_AND_MEAN
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#undef __UNDEF_LEAN_AND_MEAN
|
||||
#endif
|
||||
#else
|
||||
#ifdef _FAST_MUTEX_ASM_
|
||||
#include <sched.h>
|
||||
#else
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace tthread {
|
||||
|
||||
/// Fast mutex class.
|
||||
/// This is a mutual exclusion object for synchronizing access to shared
|
||||
/// memory areas for several threads. It is similar to the tthread::mutex class,
|
||||
/// but instead of using system level functions, it is implemented as an atomic
|
||||
/// spin lock with very low CPU overhead.
|
||||
///
|
||||
/// The \c fast_mutex class is NOT compatible with the \c condition_variable
|
||||
/// class (however, it IS compatible with the \c lock_guard class). It should
|
||||
/// also be noted that the \c fast_mutex class typically does not provide
|
||||
/// as accurate thread scheduling as a the standard \c mutex class does.
|
||||
///
|
||||
/// Because of the limitations of the class, it should only be used in
|
||||
/// situations where the mutex needs to be locked/unlocked very frequently.
|
||||
///
|
||||
/// @note The "fast" version of this class relies on inline assembler language,
|
||||
/// which is currently only supported for 32/64-bit Intel x86/AMD64 and
|
||||
/// PowerPC architectures on a limited number of compilers (GNU g++ and MS
|
||||
/// Visual C++).
|
||||
/// For other architectures/compilers, system functions are used instead.
|
||||
class fast_mutex {
|
||||
public:
|
||||
/// Constructor.
|
||||
#if defined(_FAST_MUTEX_ASM_)
|
||||
fast_mutex() : mLock(0) {}
|
||||
#else
|
||||
fast_mutex()
|
||||
{
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
InitializeCriticalSection(&mHandle);
|
||||
#elif defined(_TTHREAD_POSIX_)
|
||||
pthread_mutex_init(&mHandle, NULL);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(_FAST_MUTEX_ASM_)
|
||||
/// Destructor.
|
||||
~fast_mutex()
|
||||
{
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
DeleteCriticalSection(&mHandle);
|
||||
#elif defined(_TTHREAD_POSIX_)
|
||||
pthread_mutex_destroy(&mHandle);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Lock the mutex.
|
||||
/// The method will block the calling thread until a lock on the mutex can
|
||||
/// be obtained. The mutex remains locked until \c unlock() is called.
|
||||
/// @see lock_guard
|
||||
inline void lock()
|
||||
{
|
||||
#if defined(_FAST_MUTEX_ASM_)
|
||||
bool gotLock;
|
||||
do {
|
||||
gotLock = try_lock();
|
||||
if(!gotLock)
|
||||
{
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
Sleep(0);
|
||||
#elif defined(_TTHREAD_POSIX_)
|
||||
sched_yield();
|
||||
#endif
|
||||
}
|
||||
} while(!gotLock);
|
||||
#else
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
EnterCriticalSection(&mHandle);
|
||||
#elif defined(_TTHREAD_POSIX_)
|
||||
pthread_mutex_lock(&mHandle);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Try to lock the mutex.
|
||||
/// The method will try to lock the mutex. If it fails, the function will
|
||||
/// return immediately (non-blocking).
|
||||
/// @return \c true if the lock was acquired, or \c false if the lock could
|
||||
/// not be acquired.
|
||||
inline bool try_lock()
|
||||
{
|
||||
#if defined(_FAST_MUTEX_ASM_)
|
||||
int oldLock;
|
||||
#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
||||
asm volatile (
|
||||
"movl $1,%%eax\n\t"
|
||||
"xchg %%eax,%0\n\t"
|
||||
"movl %%eax,%1\n\t"
|
||||
: "=m" (mLock), "=m" (oldLock)
|
||||
:
|
||||
: "%eax", "memory"
|
||||
);
|
||||
#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))
|
||||
int *ptrLock = &mLock;
|
||||
__asm {
|
||||
mov eax,1
|
||||
mov ecx,ptrLock
|
||||
xchg eax,[ecx]
|
||||
mov oldLock,eax
|
||||
}
|
||||
#elif defined(__GNUC__) && (defined(__ppc__))
|
||||
int newLock = 1;
|
||||
asm volatile (
|
||||
"\n1:\n\t"
|
||||
"lwarx %0,0,%1\n\t"
|
||||
"cmpwi 0,%0,0\n\t"
|
||||
"bne- 2f\n\t"
|
||||
"stwcx. %2,0,%1\n\t"
|
||||
"bne- 1b\n\t"
|
||||
"isync\n"
|
||||
"2:\n\t"
|
||||
: "=&r" (oldLock)
|
||||
: "r" (&mLock), "r" (newLock)
|
||||
: "cr0", "memory"
|
||||
);
|
||||
#endif
|
||||
return (oldLock == 0);
|
||||
#else
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
return TryEnterCriticalSection(&mHandle) ? true : false;
|
||||
#elif defined(_TTHREAD_POSIX_)
|
||||
return (pthread_mutex_trylock(&mHandle) == 0) ? true : false;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Unlock the mutex.
|
||||
/// If any threads are waiting for the lock on this mutex, one of them will
|
||||
/// be unblocked.
|
||||
inline void unlock()
|
||||
{
|
||||
#if defined(_FAST_MUTEX_ASM_)
|
||||
#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
||||
asm volatile (
|
||||
"movl $0,%%eax\n\t"
|
||||
"xchg %%eax,%0\n\t"
|
||||
: "=m" (mLock)
|
||||
:
|
||||
: "%eax", "memory"
|
||||
);
|
||||
#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))
|
||||
int *ptrLock = &mLock;
|
||||
__asm {
|
||||
mov eax,0
|
||||
mov ecx,ptrLock
|
||||
xchg eax,[ecx]
|
||||
}
|
||||
#elif defined(__GNUC__) && (defined(__ppc__))
|
||||
asm volatile (
|
||||
"sync\n\t" // Replace with lwsync where possible?
|
||||
: : : "memory"
|
||||
);
|
||||
mLock = 0;
|
||||
#endif
|
||||
#else
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
LeaveCriticalSection(&mHandle);
|
||||
#elif defined(_TTHREAD_POSIX_)
|
||||
pthread_mutex_unlock(&mHandle);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
private:
|
||||
#if defined(_FAST_MUTEX_ASM_)
|
||||
int mLock;
|
||||
#else
|
||||
#if defined(_TTHREAD_WIN32_)
|
||||
CRITICAL_SECTION mHandle;
|
||||
#elif defined(_TTHREAD_POSIX_)
|
||||
pthread_mutex_t mHandle;
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // _FAST_MUTEX_H_
|
||||
|
@ -0,0 +1 @@
|
||||
Subproject commit 4056226fe0df6bff4593ee2353cca07c2b7f327e
|
@ -0,0 +1,17 @@
|
||||
# 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}
|
@ -0,0 +1,37 @@
|
||||
# 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 fresh one will be copied from
|
||||
# dfhack-config/default/quickfort/quickfort.txt 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. Temporarily
|
||||
# enable this if you are running a query blueprint that sends a key sequence
|
||||
# that is *not* related to stockpile or building configuration.
|
||||
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 using wheelbarrows normally
|
||||
# *decreases* the efficiency of your fort.
|
||||
stockpiles_max_barrels=-1
|
||||
stockpiles_max_bins=-1
|
||||
stockpiles_max_wheelbarrows=0
|
@ -0,0 +1,86 @@
|
||||
.. _contributing:
|
||||
|
||||
###########################
|
||||
How to contribute to DFHack
|
||||
###########################
|
||||
|
||||
.. contents:: Contents
|
||||
:local:
|
||||
|
||||
.. _contributing-code:
|
||||
|
||||
Contributing Code
|
||||
=================
|
||||
Several things should be kept in mind when contributing code to DFHack.
|
||||
|
||||
Code format
|
||||
-----------
|
||||
* Four space indents for C++. Never use tabs for indentation in any language.
|
||||
* LF (Unix style) line terminators
|
||||
* Avoid trailing whitespace
|
||||
* UTF-8 encoding
|
||||
* For C++:
|
||||
|
||||
* Opening and closing braces on their own lines or opening brace at the end of the previous line
|
||||
* Braces placed at original indent level if on their own lines
|
||||
* #includes should be sorted. C++ libraries first, then dfhack modules, then df structures,
|
||||
then local includes. Within each category they should be sorted alphabetically.
|
||||
|
||||
Pull request guidelines
|
||||
-----------------------
|
||||
* Pull requests should be based on (and submitted to) the default branch of the
|
||||
relevant repo, which is the branch you see when you access the repo on GitHub
|
||||
or clone the repo without specifying a branch. As of 0.47.04-r1, this is
|
||||
``develop`` for the main DFHack repo and ``master`` for other repos.
|
||||
* Use a new branch for each feature or bugfix so that your changes can be merged
|
||||
independently (i.e. not the ``master`` or ``develop`` branch of your fork).
|
||||
|
||||
* An exception: for a collection of small miscellaneous changes (e.g.
|
||||
structures research), one branch instead of many small branches is fine. It
|
||||
is still preferred that this branch be dedicated to this purpose, i.e. not
|
||||
``master`` or ``develop``. Your pull request may be merged at any point
|
||||
unless you indicate that it isn't ready (see below), but you can continue to
|
||||
push to the same branch and open new pull requests as needed.
|
||||
|
||||
* Try to keep pull requests relatively small so that they are easier to review
|
||||
and merge.
|
||||
|
||||
* If you expect to make a large number of related additions or changes (e.g.
|
||||
adding a large new plugin), multiple PRs are preferred, as they allow more
|
||||
frequent (and easier) feedback. If development of this feature is expected
|
||||
to take a while, we may create a dedicated branch to merge your pull
|
||||
requests into instead of the repo's default branch.
|
||||
|
||||
* If you plan to make additional changes to your pull request in the near
|
||||
future, or if it isn't quite ready to be merged, mark it as a
|
||||
`draft pull request <https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#draft-pull-requests>`_
|
||||
or add "WIP" to the title. Otherwise, your pull request may be reviewed and/or
|
||||
merged prematurely.
|
||||
|
||||
General contribution guidelines
|
||||
-------------------------------
|
||||
* If convenient, compile on multiple platforms when changing anything that
|
||||
compiles. Our CI should catch anything that fails to build, but checking in
|
||||
advance can be faster.
|
||||
* Update documentation when applicable - see `docs-standards` for details.
|
||||
* Update ``changelog.txt`` and ``docs/Authors.rst`` when applicable. See
|
||||
`build-changelog` for more information on the changelog format.
|
||||
* Submit ideas and bug reports as :issue:`issues on GitHub <>`.
|
||||
Posts in the forum thread can easily get missed or forgotten.
|
||||
* Work on :issue:`reported problems <?q=is:open+-label:idea>`
|
||||
will take priority over ideas or suggestions.
|
||||
|
||||
|
||||
Other ways to help
|
||||
==================
|
||||
DFHack is a software project, but there's a lot more to it than programming.
|
||||
If you're not comfortable programming, you can help by:
|
||||
|
||||
* reporting bugs and incomplete documentation
|
||||
* improving the documentation
|
||||
* finding third-party scripts to add
|
||||
* writing tutorials for newbies
|
||||
|
||||
All those things are crucial, and often under-represented. So if that's
|
||||
your thing, go get started!
|
||||
|
@ -0,0 +1,82 @@
|
||||
===========================
|
||||
DFHack development overview
|
||||
===========================
|
||||
|
||||
DFHack has various components; this page provides an overview of some. If you
|
||||
are looking to develop a tool for DFHack, developing a script or plugin is
|
||||
likely the most straightforward choice.
|
||||
|
||||
Other pages that may be relevant include:
|
||||
|
||||
- `contributing`
|
||||
- `documentation`
|
||||
- `license`
|
||||
|
||||
|
||||
.. contents:: Contents
|
||||
:local:
|
||||
|
||||
|
||||
Plugins
|
||||
-------
|
||||
|
||||
DFHack plugins are written in C++ and located in the ``plugins`` folder.
|
||||
Currently, documentation on how to write plugins is somewhat sparse. There are
|
||||
templates that you can get use to get started in the ``plugins/skeleton``
|
||||
folder, and the source code of existing plugins can also be helpful.
|
||||
|
||||
If you want to compile a plugin that you have just added, you will need to add a
|
||||
call to ``DFHACK_PLUGIN`` in ``plugins/CMakeLists.txt``.
|
||||
|
||||
Plugins have the ability to make one or more commands available to users of the
|
||||
DFHack console. Examples include `3dveins` (which implements the ``3dveins``
|
||||
command) and `reveal` (which implements ``reveal``, ``unreveal``, and several
|
||||
other commands).
|
||||
|
||||
Plugins can also register handlers to run on every tick, and can interface with
|
||||
the built-in `enable` and `disable` commands. For the full plugin API, see the
|
||||
skeleton plugins or ``PluginManager.cpp``.
|
||||
|
||||
Installed plugins live in the ``hack/plugins`` folder of a DFHack installation,
|
||||
and the `load` family of commands can be used to load a recompiled plugin
|
||||
without restarting DF.
|
||||
|
||||
See `plugins-index` for a list of all plugins included in DFHack.
|
||||
|
||||
Scripts
|
||||
-------
|
||||
|
||||
DFHack scripts can currently be written in Lua or Ruby. The `Lua API <lua-api>`
|
||||
is more complete and currently better-documented, however. Referring to existing
|
||||
scripts as well as the API documentation can be helpful when developing new
|
||||
scripts.
|
||||
|
||||
`Scripts included in DFHack <scripts-index>` live in a separate `scripts repository <https://github.com/dfhack/scripts>`_.
|
||||
This can be found in the ``scripts`` submodule if you have
|
||||
`cloned DFHack <compile-how-to-get-the-code>`, or the ``hack/scripts`` folder
|
||||
of an installed copy of DFHack.
|
||||
|
||||
Core
|
||||
----
|
||||
|
||||
The `DFHack core <dfhack-core>` has a variety of low-level functions. It is
|
||||
responsible for hooking into DF (via SDL), providing a console, and providing an
|
||||
interface for plugins and scripts to interact with DF.
|
||||
|
||||
Modules
|
||||
-------
|
||||
|
||||
A lot of shared code to interact with DF in more complicated ways is contained
|
||||
in **modules**. For example, the Units module contains functions for checking
|
||||
various traits of units, changing nicknames properly, and more. Generally, code
|
||||
that is useful to multiple plugins and scripts should go in the appropriate
|
||||
module, if there is one.
|
||||
|
||||
Several modules are also `exposed to Lua <lua-cpp-func-wrappers>`, although
|
||||
some functions (and some entire modules) are currently only available in C++.
|
||||
|
||||
Remote access interface
|
||||
-----------------------
|
||||
|
||||
DFHack provides a remote access interface that external tools can connect to and
|
||||
use to interact with DF. See `remote` for more information.
|
@ -0,0 +1,344 @@
|
||||
.. _documentation:
|
||||
|
||||
###########################
|
||||
DFHack Documentation System
|
||||
###########################
|
||||
|
||||
|
||||
DFHack documentation, like the file you are reading now, is created as ``.rst`` files,
|
||||
which are in `reStructuredText (reST) <https://www.sphinx-doc.org/rest.html>`_ format.
|
||||
This is a documentation format common in the Python community. It is very
|
||||
similar in concept - and in syntax - to Markdown, as found on GitHub and many other
|
||||
places. However it is more advanced than Markdown, with more features available when
|
||||
compiled to HTML, such as automatic tables of contents, cross-linking, special
|
||||
external links (forum, wiki, etc) and more. The documentation is compiled by a
|
||||
Python tool, `Sphinx <https://www.sphinx-doc.org>`_.
|
||||
|
||||
The DFHack build process will compile the documentation, but this is disabled
|
||||
by default due to the additional Python and Sphinx requirements. You typically
|
||||
only need to build the docs if you're changing them, or perhaps
|
||||
if you want a local HTML copy; otherwise, you can read an
|
||||
`online version hosted by ReadTheDocs <https://dfhack.readthedocs.org>`_.
|
||||
|
||||
(Note that even if you do want a local copy, it is certainly not necessary to
|
||||
compile the documentation in order to read it. Like Markdown, reST documents are
|
||||
designed to be just as readable in a plain-text editor as they are in HTML format.
|
||||
The main thing you lose in plain text format is hyperlinking.)
|
||||
|
||||
.. contents:: Contents
|
||||
:local:
|
||||
|
||||
.. _docs-standards:
|
||||
|
||||
Documentation standards
|
||||
=======================
|
||||
|
||||
Whether you're adding new code or just fixing old documentation (and there's plenty),
|
||||
there are a few important standards for completeness and consistent style. Treat
|
||||
this section as a guide rather than iron law, match the surrounding text, and you'll
|
||||
be fine.
|
||||
|
||||
Each command should have a short (~54 character) help string, which is shown
|
||||
by the `ls` command. For scripts, this is a comment on the first line
|
||||
(the comment marker and whitespace is stripped). For plugins it's the second
|
||||
argument to ``PluginCommand``. Please make this brief but descriptive!
|
||||
|
||||
Everything should be documented! If it's not clear *where* a particular
|
||||
thing should be documented, ask on IRC or in the DFHack thread on Bay12 -
|
||||
as well as getting help, you'll be providing valuable feedback that
|
||||
makes it easier for future readers!
|
||||
|
||||
Scripts can use a custom autodoc function, based on the Sphinx ``include``
|
||||
directive - anything between the tokens is copied into the appropriate scripts
|
||||
documentation page. For Ruby, we follow the built-in docstring convention
|
||||
(``=begin`` and ``=end``). For Lua, the tokens are ``[====[`` and ``]====]``
|
||||
- ordinary multi-line strings. It is highly encouraged to reuse this string
|
||||
as the in-console documentation by (e.g.) printing it when a ``-help`` argument
|
||||
is given.
|
||||
|
||||
The docs **must** have a heading which exactly matches the command, underlined
|
||||
with ``=====`` to the same length. For example, a lua file would have:
|
||||
|
||||
.. code-block:: lua
|
||||
|
||||
local helpstr = [====[
|
||||
|
||||
add-thought
|
||||
===========
|
||||
Adds a thought or emotion to the selected unit. Can be used by other scripts,
|
||||
or the gui invoked by running ``add-thought gui`` with a unit selected.
|
||||
|
||||
]====]
|
||||
|
||||
|
||||
.. highlight:: rst
|
||||
|
||||
Where the heading for a section is also the name of a command, the spelling
|
||||
and case should exactly match the command to enter in the DFHack command line.
|
||||
|
||||
Try to keep lines within 80-100 characters, so it's readable in plain text
|
||||
in the terminal - Sphinx (our documentation system) will make sure
|
||||
paragraphs flow.
|
||||
|
||||
If there aren't many options or examples to show, they can go in a paragraph of
|
||||
text. Use double-backticks to put commands in monospaced font, like this::
|
||||
|
||||
You can use ``cleanowned scattered x`` to dump tattered or abandoned items.
|
||||
|
||||
If the command takes more than three arguments, format the list as a table
|
||||
called Usage. The table *only* lists arguments, not full commands.
|
||||
Input values are specified in angle brackets. Example::
|
||||
|
||||
Usage:
|
||||
|
||||
:arg1: A simple argument.
|
||||
:arg2 <input>: Does something based on the input value.
|
||||
:Very long argument:
|
||||
Is very specific.
|
||||
|
||||
To demonstrate usage - useful mainly when the syntax is complicated, list the
|
||||
full command with arguments in monospaced font, then indent the next line and
|
||||
describe the effect::
|
||||
|
||||
``resume all``
|
||||
Resumes all suspended constructions.
|
||||
|
||||
If it would be helpful to mention another DFHack command, don't just type the
|
||||
name - add a hyperlink! Specify the link target in backticks, and it will be
|
||||
replaced with the corresponding title and linked: e.g. ```autolabor```
|
||||
=> `autolabor`. Link targets should be equivalent to the command
|
||||
described (without file extension), and placed above the heading of that
|
||||
section like this::
|
||||
|
||||
.. _autolabor:
|
||||
|
||||
autolabor
|
||||
=========
|
||||
|
||||
Add link targets if you need them, but otherwise plain headings are preferred.
|
||||
Scripts have link targets created automatically.
|
||||
|
||||
|
||||
Required dependencies
|
||||
=====================
|
||||
|
||||
.. highlight:: shell
|
||||
|
||||
In order to build the documentation, you must have Python with Sphinx
|
||||
version |sphinx_min_version| or later. Python 3 is recommended.
|
||||
|
||||
When installing Sphinx from OS package managers, be aware that there is
|
||||
another program called Sphinx, completely unrelated to documentation management.
|
||||
Be sure you are installing the right Sphinx; it may be called ``python-sphinx``,
|
||||
for example. To avoid doubt, ``pip`` can be used instead as detailed below.
|
||||
|
||||
Once you have installed Sphinx, ``sphinx-build --version`` should report the
|
||||
version of Sphinx that you have installed. If this works, CMake should also be
|
||||
able to find Sphinx.
|
||||
|
||||
For more detailed platform-specific instructions, see the sections below:
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:backlinks: none
|
||||
|
||||
|
||||
Linux
|
||||
-----
|
||||
Most Linux distributions will include Python by default. If not, start by
|
||||
installing Python (preferably Python 3). On Debian-based distros::
|
||||
|
||||
sudo apt install python3
|
||||
|
||||
Check your package manager to see if Sphinx |sphinx_min_version| or later is
|
||||
available. On Debian-based distros, this package is named ``python3-sphinx``.
|
||||
If this package is new enough, you can install it directly. If not, or if you
|
||||
want to use a newer Sphinx version (which may result in faster builds), you
|
||||
can install Sphinx through the ``pip`` package manager instead. On Debian-based
|
||||
distros, you can install pip with::
|
||||
|
||||
sudo apt install python3-pip
|
||||
|
||||
Once pip is available, you can then install Sphinx with::
|
||||
|
||||
pip3 install sphinx
|
||||
|
||||
If you run this as an unprivileged user, it may install a local copy of Sphinx
|
||||
for your user only. The ``sphinx-build`` executable will typically end up in
|
||||
``~/.local/bin/`` in this case. Alternatively, you can install Sphinx
|
||||
system-wide by running pip with ``sudo``. In any case, you will need the folder
|
||||
containing ``sphinx-build`` to be in your ``$PATH``.
|
||||
|
||||
macOS
|
||||
-----
|
||||
macOS has Python 2.7 installed by default, but it does not have the pip package manager.
|
||||
|
||||
You can install Homebrew's Python 3, which includes pip, and then install the
|
||||
latest Sphinx using pip::
|
||||
|
||||
brew install python3
|
||||
pip3 install sphinx
|
||||
|
||||
Alternatively, you can simply install Sphinx directly from Homebrew::
|
||||
|
||||
brew install sphinx-doc
|
||||
|
||||
This will install Sphinx for macOS's system Python 2.7, without needing pip.
|
||||
|
||||
Either method works; if you plan to use Python for other purposes, it might best
|
||||
to install Homebrew's Python 3 so that you have the latest Python as well as pip.
|
||||
If not, just installing sphinx-doc for macOS's system Python 2.7 is fine.
|
||||
|
||||
|
||||
Windows
|
||||
-------
|
||||
Python for Windows can be downloaded `from python.org <https://www.python.org/downloads/>`_.
|
||||
The latest version of Python 3 is recommended, as it includes pip already.
|
||||
|
||||
You can also install Python and pip through the Chocolatey package manager.
|
||||
After installing Chocolatey as outlined in the `Windows compilation instructions <compile-windows>`,
|
||||
run the following command from an elevated (admin) command prompt (e.g. ``cmd.exe``)::
|
||||
|
||||
choco install python pip -y
|
||||
|
||||
Once you have pip available, you can install Sphinx with the following command::
|
||||
|
||||
pip install sphinx
|
||||
|
||||
Note that this may require opening a new (admin) command prompt if you just
|
||||
installed pip from the same command prompt.
|
||||
|
||||
Building the documentation
|
||||
==========================
|
||||
|
||||
Once the required dependencies are installed, there are multiple ways to run
|
||||
Sphinx to build the docs:
|
||||
|
||||
Using CMake
|
||||
-----------
|
||||
|
||||
Enabling the ``BUILD_DOCS`` CMake option will cause the documentation to be built
|
||||
whenever it changes as part of the normal DFHack build process. There are several
|
||||
ways to do this:
|
||||
|
||||
* When initially running CMake, add ``-DBUILD_DOCS:bool=ON`` to your ``cmake``
|
||||
command. For example::
|
||||
|
||||
cmake .. -DCMAKE_BUILD_TYPE:string=Release -DBUILD_DOCS:bool=ON -DCMAKE_INSTALL_PREFIX=<path to DF>
|
||||
|
||||
* If you have already run CMake, you can simply run it again from your build
|
||||
folder to update your configuration::
|
||||
|
||||
cmake .. -DBUILD_DOCS:bool=ON
|
||||
|
||||
* You can edit the ``BUILD_DOCS`` setting in CMakeCache.txt directly
|
||||
|
||||
* You can use the CMake GUI or ``ccmake`` to change the ``BUILD_DOCS`` setting
|
||||
|
||||
* On Windows, if you prefer to use the batch scripts, you can run
|
||||
``generate-msvc-gui.bat`` and set ``BUILD_DOCS`` through the GUI. If you are
|
||||
running another file, such as ``generate-msvc-all.bat``, you will need to edit
|
||||
it to add the flag. You can also run ``cmake`` on the command line, similar to
|
||||
other platforms.
|
||||
|
||||
The generated documentation will be stored in ``docs/html`` in the root DFHack
|
||||
folder, and will be installed to ``hack/docs`` when you next install DFHack in a
|
||||
DF folder.
|
||||
|
||||
Running Sphinx manually
|
||||
-----------------------
|
||||
|
||||
You can also build the documentation without running CMake - this is faster if
|
||||
you only want to rebuild the documentation regardless of any code changes. There
|
||||
is a ``docs/build.sh`` script provided for Linux and macOS that will run
|
||||
essentially the same command that CMake runs when building the docs - see the
|
||||
script for additional options.
|
||||
|
||||
To build the documentation with default options, run the following command from
|
||||
the root DFHack folder::
|
||||
|
||||
sphinx-build . docs/html
|
||||
|
||||
The resulting documentation will be stored in ``docs/html`` (you can specify
|
||||
a different path when running ``sphinx-build`` manually, but be warned that
|
||||
Sphinx may overwrite existing files in this folder).
|
||||
|
||||
Sphinx has many options to enable clean builds, parallel builds, logging, and
|
||||
more - run ``sphinx-build --help`` for details.
|
||||
|
||||
Building a PDF version
|
||||
----------------------
|
||||
|
||||
ReadTheDocs automatically builds a PDF version of the documentation (available
|
||||
under the "Downloads" section when clicking on the release selector). If you
|
||||
want to build a PDF version locally, you will need ``pdflatex``, which is part
|
||||
of a TeX distribution. The following command will then build a PDF, located in
|
||||
``docs/pdf/latex/DFHack.pdf``, with default options::
|
||||
|
||||
sphinx-build -M latexpdf . docs/pdf
|
||||
|
||||
There is a ``docs/build-pdf.sh`` script provided for Linux and macOS that runs
|
||||
this command for convenience - see the script for additional options.
|
||||
|
||||
.. _build-changelog:
|
||||
|
||||
Building the changelogs
|
||||
=======================
|
||||
If you have Python installed, you can build just the changelogs without building
|
||||
the rest of the documentation by running the ``docs/gen_changelog.py`` script.
|
||||
This script provides additional options, including one to build individual
|
||||
changelogs for all DFHack versions - run ``python docs/gen_changelog.py --help``
|
||||
for details.
|
||||
|
||||
Changelog entries are obtained from ``changelog.txt`` files in multiple repos.
|
||||
This allows changes to be listed in the same repo where they were made. These
|
||||
changelogs are combined as part of the changelog build process:
|
||||
|
||||
* ``docs/changelog.txt`` for changes in the main ``dfhack`` repo
|
||||
* ``scripts/changelog.txt`` for changes made to scripts in the ``scripts`` repo
|
||||
* ``library/xml/changelog.txt`` for changes made in the ``df-structures`` repo
|
||||
|
||||
Building the changelogs generates two files: ``docs/_auto/news.rst`` and
|
||||
``docs/_auto/news-dev.rst``. These correspond to `changelog` and `dev-changelog`
|
||||
and contain changes organized by stable and development DFHack releases,
|
||||
respectively. For example, an entry listed under "0.44.05-alpha1" in
|
||||
changelog.txt will be listed under that version in the development changelog as
|
||||
well, but under "0.44.05-r1" in the stable changelog (assuming that is the
|
||||
closest stable release after 0.44.05-alpha1). An entry listed under a stable
|
||||
release like "0.44.05-r1" in changelog.txt will be listed under that release in
|
||||
both the stable changelog and the development changelog.
|
||||
|
||||
|
||||
Changelog syntax
|
||||
----------------
|
||||
|
||||
.. include:: /docs/changelog.txt
|
||||
:start-after: ===help
|
||||
:end-before: ===end
|
||||
|
||||
.. _docs-ci:
|
||||
|
||||
GitHub Actions
|
||||
==============
|
||||
|
||||
Documentation is built automatically with GitHub Actions (a GitHub-provided
|
||||
continuous integration service) for all pull requests and commits in the
|
||||
"dfhack" and "scripts" repositories. These builds run with strict settings, i.e.
|
||||
warnings are treated as errors. If a build fails, you will see a red "x" next to
|
||||
the relevant commit or pull request. You can view detailed output from Sphinx in
|
||||
a few ways:
|
||||
|
||||
* Click on the red "x" (or green checkmark), then click "Details" next to
|
||||
the "Build / docs" entry
|
||||
* For pull requests only: navigate to the "Checks" tab, then click on "Build" in
|
||||
the sidebar to expand it, then "docs" under it
|
||||
|
||||
Sphinx output will be visible under the step named "Build docs". If a different
|
||||
step failed, or you aren't sure how to interpret the output, leave a comment
|
||||
on the pull request (or commit).
|
||||
|
||||
You can also download the "docs" artifact from the summary page (typically
|
||||
accessible by clicking "Build") if the build succeeded. This is a way to
|
||||
visually inspect what the documentation looks like when built without installing
|
||||
Sphinx locally, although we recommend installing Sphinx if you are planning to
|
||||
do any significant work on the documentation.
|
@ -0,0 +1,168 @@
|
||||
.. _installing:
|
||||
|
||||
=================
|
||||
Installing DFHack
|
||||
=================
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
DFHack supports Windows, Linux, and macOS, and both 64-bit and 32-bit builds
|
||||
of Dwarf Fortress.
|
||||
|
||||
.. _installing-df-version:
|
||||
|
||||
DFHack releases generally only support the version of Dwarf Fortress that they
|
||||
are named after. For example, DFHack 0.40.24-r5 only supported DF 0.40.24.
|
||||
DFHack releases *never* support newer versions of DF, because DFHack requires
|
||||
data about DF that is only possible to obtain after DF has been released.
|
||||
Occasionally, DFHack releases will be able to maintain support for older
|
||||
versions of DF - for example, DFHack 0.34.11-r5 supported both DF 0.34.11 and
|
||||
0.34.10. For maximum stability, you should usually use the latest versions of
|
||||
both DF and DFHack.
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
* DFHack only supports the SDL version of Dwarf Fortress. The "legacy" version
|
||||
will *not* work with DFHack (the "small" SDL version is acceptable, however).
|
||||
* Windows XP and older are *not* supported, due in part to a
|
||||
`Visual C++ 2015 bug <https://stackoverflow.com/questions/32452777/visual-c-2015-express-stat-not-working-on-windows-xp>`_
|
||||
|
||||
The Windows build of DFHack should work under Wine on other operating systems,
|
||||
although this is not tested very often. It is recommended to use the native
|
||||
build for your operating system instead.
|
||||
|
||||
.. _installing-reqs-linux:
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
||||
Generally, DFHack should work on any modern Linux distribution. There are
|
||||
multiple release binaries provided - as of DFHack 0.47.04-r1, there are built
|
||||
with GCC 7 and GCC 4.8 (as indicated by the ``gcc`` component of their
|
||||
filenames). Using the newest build that works on your system is recommended.
|
||||
The GCC 4.8 build is built on Ubuntu 14.04 and targets an older glibc, so it
|
||||
should work on older distributions.
|
||||
|
||||
In the event that none of the provided binaries work on your distribution,
|
||||
you may need to `compile DFHack from source <compile>`.
|
||||
|
||||
macOS
|
||||
-----
|
||||
|
||||
OS X 10.6.8 or later is required.
|
||||
|
||||
|
||||
.. _downloading:
|
||||
|
||||
Downloading DFHack
|
||||
==================
|
||||
|
||||
Stable builds of DFHack are available on `GitHub <https://github.com/dfhack/dfhack/releases>`_.
|
||||
GitHub has been known to change their layout periodically, but as of July 2020,
|
||||
downloads are available at the bottom of the release notes for each release, under a section
|
||||
named "Assets" (which you may have to expand). The name of the file indicates
|
||||
which DF version, platform, and architecture the build supports - the platform
|
||||
and architecture (64-bit or 32-bit) **must** match your build of DF. The DF
|
||||
version should also match your DF version - see `above <installing-df-version>`
|
||||
for details. For example:
|
||||
|
||||
* ``dfhack-0.47.04-r1-Windows-64bit.zip`` supports 64-bit DF on Windows
|
||||
* ``dfhack-0.47.04-r1-Linux-32bit-gcc-7.tar.bz2`` supports 32-bit DF on Linux
|
||||
(see `installing-reqs-linux` for details on the GCC version indicator)
|
||||
|
||||
The `DFHack website <https://dfhack.org/builds>`_ also provides links to
|
||||
unstable builds. These files have a different naming scheme, but the same
|
||||
restrictions apply (e.g. a file named ``Windows64`` is for 64-bit Windows DF).
|
||||
|
||||
.. warning::
|
||||
|
||||
Do *not* download the source code from GitHub, either from the releases page
|
||||
or by clicking "Download ZIP" on the repo homepage. This will give you an
|
||||
incomplete copy of the DFHack source code, which will not work as-is. (If
|
||||
you want to compile DFHack instead of using a pre-built release, see
|
||||
`compile` for instructions.)
|
||||
|
||||
Installing DFHack
|
||||
=================
|
||||
|
||||
When you `download DFHack <downloading>`, you will end up with a release archive
|
||||
(a ``.zip`` file on Windows, or a ``.tar.bz2`` file on other platforms). Your
|
||||
operating system should have built-in utilities capable of extracting files from
|
||||
these archives.
|
||||
|
||||
The release archives contain several files and folders, including a ``hack``
|
||||
folder, a ``dfhack-config`` folder, and a ``dfhack.init-example`` file. To
|
||||
install DFHack, copy all of the files from the DFHack archive into the root DF
|
||||
folder, which should already include a ``data`` folder and a ``raw`` folder,
|
||||
among other things. Some packs and other redistributions of Dwarf Fortress may
|
||||
place DF in another folder, so ensure that the ``hack`` folder ends up next to
|
||||
the ``data`` folder.
|
||||
|
||||
.. note::
|
||||
|
||||
On Windows, installing DFHack will overwrite ``SDL.dll``. This is
|
||||
intentional and necessary for DFHack to work, so be sure to choose to
|
||||
overwrite ``SDL.dll`` if prompted. (If you are not prompted, you may be
|
||||
installing DFHack in the wrong place.)
|
||||
|
||||
|
||||
Uninstalling DFHack
|
||||
===================
|
||||
|
||||
Uninstalling DFHack essentially involves reversing what you did to install
|
||||
DFHack. On Windows, replace ``SDL.dll`` with ``SDLreal.dll`` first. Then, you
|
||||
can remove any files that were part of the DFHack archive. DFHack does not
|
||||
currently maintain a list of these files, so if you want to completely remove
|
||||
them, you should consult the DFHack archive that you installed for a full list.
|
||||
Generally, any files left behind should not negatively affect DF.
|
||||
|
||||
|
||||
Upgrading DFHack
|
||||
================
|
||||
|
||||
The recommended approach to upgrade DFHack is to uninstall DFHack first, then
|
||||
install the new version. This will ensure that any files that are only part
|
||||
of the older DFHack installation do not affect the new DFHack installation
|
||||
(although this is unlikely to occur).
|
||||
|
||||
It is also possible to overwrite an existing DFHack installation in-place.
|
||||
To do this, follow the installation instructions above, but overwrite all files
|
||||
that exist in the new DFHack archive (on Windows, this includes ``SDL.dll`` again).
|
||||
|
||||
.. note::
|
||||
|
||||
You may wish to make a backup of your ``dfhack-config`` folder first if you
|
||||
have made changes to it. Some archive managers (e.g. Archive Utility on macOS)
|
||||
will overwrite the entire folder, removing any files that you have added.
|
||||
|
||||
|
||||
Pre-packaged DFHack installations
|
||||
=================================
|
||||
|
||||
There are :wiki:`several packs available <Utility:Lazy_Newb_Pack>` that include
|
||||
DF, DFHack, and other utilities. If you are new to Dwarf Fortress and DFHack,
|
||||
these may be easier to set up. Note that these packs are not maintained by the
|
||||
DFHack team and vary in their release schedules and contents. Some may make
|
||||
significant configuration changes, and some may not include DFHack at all.
|
||||
|
||||
Linux packages
|
||||
==============
|
||||
|
||||
Third-party DFHack packages are available for some Linux distributions,
|
||||
including in:
|
||||
|
||||
* `AUR <https://aur.archlinux.org/packages/dfhack/>`__, for Arch and related
|
||||
distributions
|
||||
* `RPM Fusion <https://admin.rpmfusion.org/pkgdb/package/nonfree/dfhack/>`__,
|
||||
for Fedora and related distributions
|
||||
|
||||
Note that these may lag behind DFHack releases. If you want to use a newer
|
||||
version of DFHack, we generally recommended installing it in a clean copy of DF
|
||||
in your home folder. Attempting to upgrade an installation of DFHack from a
|
||||
package manager may break it.
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,162 @@
|
||||
.. _memory-research:
|
||||
|
||||
###############
|
||||
Memory research
|
||||
###############
|
||||
|
||||
There are a variety of tools that can be used to analyze DF memory - some are
|
||||
listed here. Note that some of these may be old and unmaintained. If you aren't
|
||||
sure what tool would be best for your purposes, feel free to ask for advice (on
|
||||
IRC, Bay12, etc.).
|
||||
|
||||
.. contents:: Contents
|
||||
:local:
|
||||
|
||||
|
||||
Cross-platform tools
|
||||
====================
|
||||
|
||||
Ghidra
|
||||
------
|
||||
|
||||
Ghidra is a cross-platform reverse-engineering framework (written in Java)
|
||||
available at https://ghidra-sre.org. It supports analyzing both 32-bit and
|
||||
64-bit executables for all supported DF platforms. There are some custom DFHack
|
||||
Ghidra scripts available in the `df_misc`_ repo (look for ``.java`` files).
|
||||
|
||||
|
||||
IDA Freeware 7.0
|
||||
----------------
|
||||
|
||||
Available from `Hex-Rays <https://www.hex-rays.com/products/ida/support/download_freeware/>`_.
|
||||
Supports analyzing both 32-bit and 64-bit executables for all supported DF platforms.
|
||||
Some ``.idc`` scripts for IDA are available in the `df_misc`_ repo.
|
||||
|
||||
.. _df_misc: https://github.com/DFHack/df_misc
|
||||
|
||||
|
||||
Hopper
|
||||
------
|
||||
|
||||
Runs on macOS and some Linux distributions; available from https://www.hopperapp.com/.
|
||||
`TWBT <https://github.com/mifki/df-twbt/blob/master/PATCHES.md>`_ uses this to produce some patches.
|
||||
|
||||
|
||||
DFHack tools
|
||||
------------
|
||||
|
||||
Plugins
|
||||
~~~~~~~
|
||||
|
||||
There are a few development plugins useful for low-level memory research. They
|
||||
are not built by default, but can be built by setting the ``BUILD_DEVEL``
|
||||
`CMake option <compile-build-options>`. These include:
|
||||
|
||||
- ``check-structures-sanity``, which performs sanity checks on the given DF
|
||||
object. Note that this will crash in several cases, some intentional, so using
|
||||
this with `GDB <linux-gdb>` is recommended.
|
||||
- ``memview``, which produces a hex dump of a given memory range. It also
|
||||
highlights valid pointers, and can be configured to work with `sizecheck`
|
||||
to auto-detect object sizes.
|
||||
- ``vectors``, which can identify instances of ``std::vector`` in a given memory range.
|
||||
|
||||
Scripts
|
||||
~~~~~~~
|
||||
|
||||
Several `development scripts <scripts-devel>` can be useful for memory research.
|
||||
These include (but are not limited to):
|
||||
|
||||
- `devel/dump-offsets`
|
||||
- `devel/find-offsets`
|
||||
- `devel/lsmem`
|
||||
- `devel/sc` (requires `sizecheck`)
|
||||
- `devel/visualize-structure`
|
||||
- Generally, any script starting with ``devel/find``
|
||||
|
||||
.. _sizecheck:
|
||||
|
||||
Sizecheck
|
||||
~~~~~~~~~
|
||||
|
||||
Sizecheck is a custom tool that hooks into the memory allocator and inserts a
|
||||
header indicating the size of every object. The corresponding logic to check for
|
||||
this header when freeing memory usually works, but is inherently not foolproof.
|
||||
You should not count on DF being stable when using this.
|
||||
|
||||
DFHack's implementation of sizecheck is currently only tested on Linux, although
|
||||
it probably also works on macOS. It can be built with the ``BUILD_SIZECHECK``
|
||||
`CMake option <compile-build-options>`, which produces a ``libsizecheck``
|
||||
library installed in the ``hack`` folder. On Linux, passing ``--sc`` as the
|
||||
first argument to the ``dfhack`` launcher script will load this library on
|
||||
startup. On other platforms, or when passing a different argument to the
|
||||
launcher (such as for `linux-gdb`), you will need to preload this library
|
||||
manually, by setting ``PRELOAD_LIB`` on Linux (or ``LD_PRELOAD`` if editing the
|
||||
``dfhack`` launcher script directly), or by editing the ``dfhack`` launcher
|
||||
script and adding the library to ``DYLD_INSERT_LIBRARIES`` on macOS.
|
||||
|
||||
There is also an older sizecheck implementation by Mifki available on
|
||||
`GitHub <https://github.com/mifki/df-sizecheck>`__ (``b.cpp`` is the main
|
||||
sizecheck library, and ``win_patch.cpp`` is used for Windows support). To use
|
||||
this with other DFHack tools, you will likely need to edit the header's
|
||||
magic number to match what is used in `devel/sc` (search for a hexadecimal
|
||||
constant starting with ``0x``).
|
||||
|
||||
Legacy tools
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Some very old DFHack tools are available in the `legacy branch on GitHub <https://github.com/dfhack/dfhack/tree/legacy/tools>`_.
|
||||
No attempt is made to support these.
|
||||
|
||||
|
||||
Linux-specific tools
|
||||
====================
|
||||
|
||||
.. _linux-gdb:
|
||||
|
||||
GDB
|
||||
---
|
||||
|
||||
`GDB <https://www.gnu.org/software/gdb/>`_ is technically cross-platform, but
|
||||
tends to work best on Linux, and DFHack currently only offers support for using
|
||||
GDB on 64-bit Linux. To start with GDB, pass ``-g`` to the DFHack launcher
|
||||
script:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
./dfhack -g
|
||||
|
||||
Some basic GDB commands:
|
||||
|
||||
- ``run``: starts DF from the GDB prompt. Any arguments will be passed as
|
||||
command-line arguments to DF (e.g. `load-save` may be useful).
|
||||
- ``bt`` will produce a backtrace if DF crashes.
|
||||
|
||||
See the `official GDB documentation <https://www.gnu.org/software/gdb/documentation/>`_
|
||||
for more details.
|
||||
|
||||
Other analysis tools
|
||||
--------------------
|
||||
|
||||
The ``dfhack`` launcher script on Linux has support for launching several other
|
||||
tools alongside DFHack, including Valgrind (as well as Callgrind and Helgrind)
|
||||
and strace. See the script for the exact command-line option to specify. Note
|
||||
that currently only one tool at a time is supported, and must be specified
|
||||
with the first argument to the script.
|
||||
|
||||
df-structures GUI
|
||||
-----------------
|
||||
|
||||
This is a tool written by Angavrilov and available on `GitHub <https://github.com/angavrilov/cl-linux-debug>`__.
|
||||
It only supports 32-bit DF. Some assistance may be available on IRC.
|
||||
|
||||
|
||||
EDB (Evan's debugger)
|
||||
---------------------
|
||||
|
||||
Available on `GitHub <https://github.com/eteran/edb-debugger>`__.
|
||||
|
||||
|
||||
Windows-specific tools
|
||||
======================
|
||||
|
||||
Some people have used `Cheat Engine <https://www.cheatengine.org/>`__ for research in the past.
|
@ -0,0 +1,238 @@
|
||||
.. _remote:
|
||||
|
||||
=======================
|
||||
DFHack Remote Interface
|
||||
=======================
|
||||
|
||||
DFHack provides a remote access interface that external tools can connect to and
|
||||
use to interact with DF. This is implemented with `Google protobuf`_ messages
|
||||
exchanged over a TCP socket. Both the core and plugins can define
|
||||
remotely-accessible methods, or **RPC methods**. The RPC methods currently
|
||||
available are not comprehensive, but can be extended with plugins.
|
||||
|
||||
.. _Google protobuf: https://developers.google.com/protocol-buffers
|
||||
|
||||
.. contents:: Contents
|
||||
:local:
|
||||
|
||||
|
||||
.. _remote-server-config:
|
||||
|
||||
Server configuration
|
||||
====================
|
||||
|
||||
DFHack attempts to start a TCP server to listen for remote connections on
|
||||
startup. If this fails (due to the port being in use, for example), an error
|
||||
message will be logged to stderr.log.
|
||||
|
||||
The server can be configured by setting options in ``dfhack-config/remote-server.json``:
|
||||
|
||||
- ``allow_remote`` (default: ``false``): if true, allows connections from hosts
|
||||
other than the local machine. This is insecure and may allow arbitrary code
|
||||
execution on your machine, so it is disabled by default.
|
||||
- ``port`` (default: ``5000``): the port that the remote server listens on.
|
||||
Overriding this will allow the server to work if you have multiple instances
|
||||
of DF running, or if you have something else running on port 5000. Note that
|
||||
the ``DFHACK_PORT`` `environment variable <env-vars>` takes precedence over
|
||||
this setting and may be more useful for overriding the port temporarily.
|
||||
|
||||
|
||||
Developing with the remote API
|
||||
==============================
|
||||
|
||||
At a high level, the core and plugins define RPC methods, and external clients
|
||||
can call these methods. Each method is assigned an ID internally, which clients
|
||||
use to call it. These method IDs can be obtained using the special ``BindMethod``
|
||||
method, which has an ID of 0.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
The `dfhack-run` command uses the RPC interface to invoke DFHack commands
|
||||
(or Lua functions) externally.
|
||||
|
||||
Plugins that implement RPC methods include:
|
||||
|
||||
- `rename`
|
||||
- `remotefortressreader`
|
||||
- `isoworldremote`
|
||||
|
||||
Plugins that use the RPC API include:
|
||||
|
||||
- `stonesense`
|
||||
|
||||
Third-party tools that use the RPC API include:
|
||||
|
||||
- `Armok Vision <https://github.com/RosaryMala/armok-vision>`_ (:forums:`Bay12 forums thread <146473>`)
|
||||
|
||||
.. _remote-client-libs:
|
||||
|
||||
Client libraries
|
||||
----------------
|
||||
|
||||
Some external libraries are available for interacting with the remote interface
|
||||
from other (non-C++) languages, including:
|
||||
|
||||
- `RemoteClientDF-Net <https://github.com/RosaryMala/RemoteClientDF-Net>`_ for C#
|
||||
- `dfhackrpc <https://github.com/BenLubar/dfhackrpc>`_ for Go
|
||||
- `dfhack-remote <https://github.com/alexchandel/dfhack-remote>`_ for JavaScript
|
||||
- `dfhack-client-qt <https://github.com/cvuchener/dfhack-client-qt>`_ for C++ with Qt
|
||||
- `dfhack-client-python <https://github.com/McArcady/dfhack-client-python>`_ for Python (adapted from :forums:`"Blendwarf" <178089>`)
|
||||
- `dfhack-client-java <https://github.com/McArcady/dfhack-client-java>`_ for Java
|
||||
|
||||
|
||||
Protocol description
|
||||
====================
|
||||
|
||||
This is a low-level description of the RPC protocol, which may be useful when
|
||||
developing custom clients.
|
||||
|
||||
A WireShark dissector for this protocol is available in the
|
||||
`df_misc repo <https://github.com/DFHack/df_misc/blob/master/wireshark_dfhack_rpc.lua>`_.
|
||||
|
||||
|
||||
Built-in messages
|
||||
-----------------
|
||||
These messages have hardcoded IDs; all others must be obtained through ``BindMethod``.
|
||||
|
||||
=== ============ =============================== =======================
|
||||
ID Method Input Output
|
||||
=== ============ =============================== =======================
|
||||
0 BindMethod dfproto.CoreBindRequest dfproto.CoreBindReply
|
||||
1 RunCommand dfproto.CoreRunCommandRequest dfproto.EmptyMessage
|
||||
=== ============ =============================== =======================
|
||||
|
||||
|
||||
|
||||
Conversation flow
|
||||
-----------------
|
||||
|
||||
* Client → Server: `handshake request`_
|
||||
* Server → Client: `handshake reply`_
|
||||
* Repeated 0 or more times:
|
||||
* Client → Server: `request`_
|
||||
* Server → Client: `text`_ (0 or more times)
|
||||
* Server → Client: `result`_ or `failure`_
|
||||
* Client → Server: `quit`_
|
||||
|
||||
Raw message types
|
||||
-----------------
|
||||
|
||||
* All numbers are little-endian
|
||||
* All strings are ASCII
|
||||
* A payload size of greater than 64MiB is an error
|
||||
* See ``RemoteClient.h`` for definitions of constants starting with ``RPC``
|
||||
|
||||
handshake request
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. csv-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
|
||||
Type, Name, Value
|
||||
char[8], magic, ``DFHack?\n``
|
||||
int32_t, version, 1
|
||||
|
||||
handshake reply
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. csv-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
|
||||
Type, Name, Value
|
||||
char[8], magic, ``DFHack!\n``
|
||||
int32_t, version, 1
|
||||
|
||||
header
|
||||
~~~~~~
|
||||
|
||||
**Note:** the two fields of this message are sometimes repurposed. Uses of this
|
||||
message are represented as ``header(x, y)``, where ``x`` corresponds to the ``id``
|
||||
field and ``y`` corresponds to ``size``.
|
||||
|
||||
.. csv-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
|
||||
Type, Name
|
||||
int16_t, id
|
||||
int16_t, (padding - unused)
|
||||
int32_t, size
|
||||
|
||||
request
|
||||
~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
:widths: 25 75
|
||||
|
||||
* - Type
|
||||
- Description
|
||||
* - `header`_
|
||||
- ``header(id, size)``
|
||||
* - buffer
|
||||
- Protobuf-encoded payload of the input message type of the method specified by ``id``; length of ``size`` bytes
|
||||
|
||||
text
|
||||
~~~~
|
||||
|
||||
.. list-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
:widths: 25 75
|
||||
|
||||
* - Type
|
||||
- Description
|
||||
* - `header`_
|
||||
- ``header(RPC_REPLY_TEXT, size)``
|
||||
* - buffer
|
||||
- Protobuf-encoded payload of type ``dfproto.CoreTextNotification``; length of ``size`` bytes
|
||||
|
||||
result
|
||||
~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
:widths: 25 75
|
||||
|
||||
* - Type
|
||||
- Description
|
||||
* - `header`_
|
||||
- ``header(RPC_REPLY_RESULT, size)``
|
||||
* - buffer
|
||||
- Protobuf-encoded payload of the output message type of the oldest incomplete method call; when received,
|
||||
that method call is considered completed. Length of ``size`` bytes.
|
||||
|
||||
failure
|
||||
~~~~~~~
|
||||
|
||||
.. list-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
:widths: 25 75
|
||||
|
||||
* - Type
|
||||
- Description
|
||||
* - `header`_
|
||||
- ``header(RPC_REPLY_FAIL, command_result)``
|
||||
* - command_result
|
||||
- return code of the command (a constant starting with ``CR_``; see ``RemoteClient.h``)
|
||||
|
||||
quit
|
||||
~~~~
|
||||
|
||||
**Note:** the server closes the connection after receiving this message.
|
||||
|
||||
.. list-table::
|
||||
:align: left
|
||||
:header-rows: 1
|
||||
:widths: 25 75
|
||||
|
||||
* - Type
|
||||
- Description
|
||||
* - `header`_
|
||||
- ``header(RPC_REQUEST_QUIT, 0)``
|
@ -0,0 +1,17 @@
|
||||
#############
|
||||
Removed tools
|
||||
#############
|
||||
|
||||
This page lists tools (plugins or scripts) that were previously included in
|
||||
DFHack but have been removed. It exists primarily so that internal links still
|
||||
work (e.g. links from the `changelog`).
|
||||
|
||||
.. contents:: Contents
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. _warn-stuck-trees:
|
||||
|
||||
warn-stuck-trees
|
||||
================
|
||||
The corresponding DF bug, :bug:`9252` was fixed in DF 0.44.01.
|
@ -1,14 +0,0 @@
|
||||
###############
|
||||
Removed scripts
|
||||
###############
|
||||
|
||||
The following scripts were removed for various reasons.
|
||||
|
||||
.. contents::
|
||||
:depth: 2
|
||||
|
||||
.. _warn-stuck-trees:
|
||||
|
||||
warn-stuck-trees
|
||||
================
|
||||
The corresponding DF bug, :bug:`9252` was fixed in DF 0.44.01.
|
@ -0,0 +1,34 @@
|
||||
===================================
|
||||
DF data definitions (DF-structures)
|
||||
===================================
|
||||
|
||||
DFHack's information about DF's data structures is stored in XML files in the
|
||||
`df-structures repository <https://github.com/DFHack/df-structures>`_. If you
|
||||
have `obtained a local copy of the DFHack source <compile-how-to-get-the-code>`,
|
||||
DF-structures is included as a submodule in ``library/xml``.
|
||||
|
||||
Data structure layouts are described in files named with the ``df.*.xml``
|
||||
pattern. This information is transformed by a Perl script (``codegen.pl``) into
|
||||
C++ headers, as well as metadata for the Lua wrapper. This ultimately allows
|
||||
DFHack code to access DF data directly, with the same speed and capabilities as
|
||||
DF itself, which is an advantage over the older out-of-process approach (used
|
||||
by debuggers and utilities like Dwarf Therapist). The main disadvantage of this
|
||||
approach is that any compiled code relying on these layouts will break when DF's
|
||||
layout changes, and will need to be recompiled for every new DF version.
|
||||
|
||||
Addresses of DF global objects and vtables are stored in a separate file,
|
||||
:file:`symbols.xml`. Since these are only absolute addresses, they do not need
|
||||
to be compiled in to DFHack code, and are instead loaded at runtime. This makes
|
||||
fixes and additions to global addresses possible without recompiling DFHack.
|
||||
In an installed copy of DFHack, this file can be found at the root of the
|
||||
``hack`` folder.
|
||||
|
||||
The following pages contain more detailed information about various aspects
|
||||
of DF-structures:
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
/library/xml/SYNTAX
|
||||
/library/xml/how-to-update
|
||||
|
@ -0,0 +1,59 @@
|
||||
.. include:: <isonum.txt>
|
||||
|
||||
========
|
||||
Maps API
|
||||
========
|
||||
|
||||
DFHack offers several ways to access and manipulate map data.
|
||||
|
||||
* C++: the ``Maps`` and ``MapCache`` modules
|
||||
* Lua: the `dfhack.maps module <lua-maps>`_
|
||||
* All languages: the ``map`` field of the ``world`` global contains raw map data
|
||||
when the world is loaded.
|
||||
|
||||
.. note::
|
||||
|
||||
This page will eventually go into more detail about the available APIs.
|
||||
For now, it is just an overview of how DF map data is structured.
|
||||
|
||||
.. contents:: Contents
|
||||
:local:
|
||||
|
||||
Tiles
|
||||
=====
|
||||
|
||||
The DF map has several types of tiles:
|
||||
|
||||
- **Local tiles** are at the smallest scale. In regular fortress/adventure mode
|
||||
play, the cursor takes up 1 local tile.
|
||||
|
||||
Objects that use local tile coordinates include:
|
||||
|
||||
- Units
|
||||
- Items
|
||||
- Projectiles
|
||||
|
||||
- **Blocks** are 16 |times| 16 |times| 1 groups of local tiles. Internally, many
|
||||
tile details are stored at the block level for space-efficiency reasons.
|
||||
Blocks are visible during zoomed-in fast travel in adventure mode.
|
||||
|
||||
Objects that use block coordinates include:
|
||||
|
||||
- Armies
|
||||
|
||||
- **Region tiles** are 3 |times| 3 groups of columns of blocks (they span the
|
||||
entire z-axis), or 48 |times| 48 columns of local tiles. DF sometimes refers
|
||||
to these as "mid-level tiles" (MLTs). Region tiles are visible when resizing
|
||||
a fortress before embarking, or in zoomed-out fast travel in adventure mode.
|
||||
|
||||
- **World tiles** are
|
||||
|
||||
- 16 |times| 16 groups of region tiles, or
|
||||
- 48 |times| 48 groups of columns of blocks, or
|
||||
- 768 |times| 768 groups of columns of local tiles
|
||||
|
||||
World tiles are visible on the world map before embarking, as well as in the
|
||||
civilization map in fortress mode and the quest log in adventure mode.
|
||||
|
||||
- Some map features are stored in 16 |times| 16 groups of world tiles, sometimes
|
||||
referred to as "feature shells".
|
@ -0,0 +1,8 @@
|
||||
====================
|
||||
DFHack API Reference
|
||||
====================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
/docs/api/Maps
|
@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
# usage:
|
||||
# ./build-pdf.sh
|
||||
# SPHINX=/path/to/sphinx-build ./build-pdf.sh
|
||||
# JOBS=3 ./build-pdf.sh ...
|
||||
# all command-line arguments are passed directly to sphinx-build - run
|
||||
# ``sphinx-build --help`` for a list, or see
|
||||
# https://www.sphinx-doc.org/en/master/man/sphinx-build.html
|
||||
|
||||
cd $(dirname "$0")
|
||||
cd ..
|
||||
|
||||
sphinx=sphinx-build
|
||||
if [ -n "$SPHINX" ]; then
|
||||
sphinx=$SPHINX
|
||||
fi
|
||||
|
||||
if [ -z "$JOBS" ]; then
|
||||
JOBS=2
|
||||
fi
|
||||
|
||||
"$sphinx" -M latexpdf . ./docs/pdf -w ./docs/_sphinx-warnings.txt -j "$JOBS" "$@"
|
@ -0,0 +1,11 @@
|
||||
DFHack's changelog is no longer stored at this location.
|
||||
|
||||
- For a local copy, see hack/docs/docs/NEWS.html
|
||||
(this requires offline docs to be installed)
|
||||
- For an online copy, see https://dfhack.readthedocs.org/en/stable/docs/NEWS.html
|
||||
|
||||
|
||||
---
|
||||
|
||||
Note to maintainers: this file is installed to hack/changelog.txt - for details,
|
||||
see https://github.com/DFHack/dfhack/issues/1775
|
@ -1,272 +1,5 @@
|
||||
import collections
|
||||
import copy
|
||||
import itertools
|
||||
import os
|
||||
import sys
|
||||
import os, sys
|
||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'sphinx_extensions'))
|
||||
|
||||
CHANGELOG_SECTIONS = [
|
||||
'New Plugins',
|
||||
'New Scripts',
|
||||
'New Tweaks',
|
||||
'New Features',
|
||||
'New Internal Commands',
|
||||
'Fixes',
|
||||
'Misc Improvements',
|
||||
'Removed',
|
||||
'API',
|
||||
'Internals',
|
||||
'Lua',
|
||||
'Ruby',
|
||||
'Structures',
|
||||
]
|
||||
|
||||
REPLACEMENTS = {
|
||||
'`search`': '`search-plugin`',
|
||||
}
|
||||
|
||||
def to_title_case(word):
|
||||
if word == word.upper():
|
||||
# Preserve acronyms
|
||||
return word
|
||||
return word[0].upper() + word[1:].lower()
|
||||
|
||||
def find_all_indices(string, substr):
|
||||
start = 0
|
||||
while True:
|
||||
i = string.find(substr, start)
|
||||
if i == -1:
|
||||
return
|
||||
yield i
|
||||
start = i + 1
|
||||
|
||||
def replace_text(string, replacements):
|
||||
for old_text, new_text in replacements.items():
|
||||
new_string = ''
|
||||
new_string_end = 0 # number of characters from string in new_string
|
||||
for i in find_all_indices(string, old_text):
|
||||
if i > 0 and string[i - 1] == '!':
|
||||
# exempt if preceded by '!'
|
||||
new_string += string[new_string_end:i - 1]
|
||||
new_string += old_text
|
||||
else:
|
||||
# copy until this occurrence
|
||||
new_string += string[new_string_end:i]
|
||||
new_string += new_text
|
||||
new_string_end = i + len(old_text)
|
||||
new_string += string[new_string_end:]
|
||||
string = new_string
|
||||
return string
|
||||
|
||||
class ChangelogEntry(object):
|
||||
def __init__(self, text, section, stable_version, dev_version):
|
||||
text = text.lstrip('- ')
|
||||
# normalize section to title case
|
||||
self.section = ' '.join(map(to_title_case, section.strip().split()))
|
||||
self.stable_version = stable_version
|
||||
self.dev_version = dev_version
|
||||
self.dev_only = text.startswith('@')
|
||||
text = text.lstrip('@ ')
|
||||
self.children = []
|
||||
|
||||
split_index = text.find(': ')
|
||||
if split_index != -1:
|
||||
self.feature, description = text[:split_index], text[split_index+1:]
|
||||
if description.strip():
|
||||
self.children.insert(0, description.strip())
|
||||
else:
|
||||
self.feature = text
|
||||
self.feature = self.feature.replace(':\\', ':').rstrip(':')
|
||||
|
||||
self.sort_key = self.feature.upper()
|
||||
|
||||
def __repr__(self):
|
||||
return 'ChangelogEntry(%r, %r)' % (self.feature, self.children)
|
||||
|
||||
def parse_changelog():
|
||||
cur_stable = None
|
||||
cur_dev = None
|
||||
cur_section = None
|
||||
last_entry = None
|
||||
entries = []
|
||||
|
||||
with open('docs/changelog.txt') as f:
|
||||
multiline = ''
|
||||
for line_id, line in enumerate(f.readlines()):
|
||||
line_id += 1
|
||||
|
||||
if multiline:
|
||||
multiline += line
|
||||
elif '[[[' in line:
|
||||
multiline = line.replace('[[[', '')
|
||||
|
||||
if ']]]' in multiline:
|
||||
line = multiline.replace(']]]', '')
|
||||
multiline = ''
|
||||
elif multiline:
|
||||
continue
|
||||
|
||||
if not line.strip() or line.startswith('==='):
|
||||
continue
|
||||
|
||||
if line.startswith('##'):
|
||||
cur_section = line.lstrip('#').strip()
|
||||
elif line.startswith('#'):
|
||||
cur_dev = line.lstrip('#').strip().lower()
|
||||
if ('alpha' not in cur_dev and 'beta' not in cur_dev and
|
||||
'rc' not in cur_dev):
|
||||
cur_stable = cur_dev
|
||||
elif line.startswith('-'):
|
||||
if not cur_stable or not cur_dev or not cur_section:
|
||||
raise ValueError(
|
||||
'changelog.txt:%i: Entry without section' % line_id)
|
||||
last_entry = ChangelogEntry(line.strip(), cur_section,
|
||||
cur_stable, cur_dev)
|
||||
entries.append(last_entry)
|
||||
elif line.lstrip().startswith('-'):
|
||||
if not cur_stable or not cur_dev:
|
||||
raise ValueError(
|
||||
'changelog.txt:%i: Sub-entry without section' % line_id)
|
||||
if not last_entry:
|
||||
raise ValueError(
|
||||
'changelog.txt:%i: Sub-entry without parent' % line_id)
|
||||
last_entry.children.append(line.strip('- \n'))
|
||||
else:
|
||||
raise ValueError('Invalid line: ' + line)
|
||||
|
||||
return entries
|
||||
|
||||
def consolidate_changelog(all_entries):
|
||||
for sections in all_entries.values():
|
||||
for section, entries in sections.items():
|
||||
# sort() is stable, so reverse entries so that older entries for the
|
||||
# same feature are on top
|
||||
entries.reverse()
|
||||
entries.sort(key=lambda entry: entry.sort_key)
|
||||
new_entries = []
|
||||
for feature, group in itertools.groupby(entries,
|
||||
lambda e: e.feature):
|
||||
old_entries = list(group)
|
||||
children = list(itertools.chain(*[entry.children
|
||||
for entry in old_entries]))
|
||||
new_entry = copy.deepcopy(old_entries[0])
|
||||
new_entry.children = children
|
||||
new_entries.append(new_entry)
|
||||
entries[:] = new_entries
|
||||
|
||||
|
||||
|
||||
def print_changelog(versions, all_entries, path, replace=True, prefix=''):
|
||||
# all_entries: version -> section -> entry
|
||||
with open(path, 'w') as f:
|
||||
def write(line):
|
||||
if replace:
|
||||
line = replace_text(line, REPLACEMENTS)
|
||||
f.write(prefix + line + '\n')
|
||||
for version in versions:
|
||||
sections = all_entries[version]
|
||||
if not sections:
|
||||
continue
|
||||
version = 'DFHack ' + version
|
||||
write(version)
|
||||
write('=' * len(version))
|
||||
write('')
|
||||
for section in CHANGELOG_SECTIONS:
|
||||
entries = sections[section]
|
||||
if not entries:
|
||||
continue
|
||||
write(section)
|
||||
write('-' * len(section))
|
||||
for entry in entries:
|
||||
if len(entry.children) == 1:
|
||||
write('- ' + entry.feature + ': ' +
|
||||
entry.children[0].strip('- '))
|
||||
continue
|
||||
elif entry.children:
|
||||
write('- ' + entry.feature + ':')
|
||||
write('')
|
||||
for child in entry.children:
|
||||
write(' - ' + child)
|
||||
write('')
|
||||
else:
|
||||
write('- ' + entry.feature)
|
||||
write('')
|
||||
write('')
|
||||
|
||||
|
||||
def generate_changelog(all=False):
|
||||
entries = parse_changelog()
|
||||
|
||||
# scan for unrecognized sections
|
||||
for entry in entries:
|
||||
if entry.section not in CHANGELOG_SECTIONS:
|
||||
raise RuntimeWarning('Unknown section: ' + entry.section)
|
||||
|
||||
# ordered versions
|
||||
versions = ['future']
|
||||
# map versions to stable versions
|
||||
stable_version_map = {}
|
||||
# version -> section -> entry
|
||||
stable_entries = collections.defaultdict(lambda:
|
||||
collections.defaultdict(list))
|
||||
dev_entries = collections.defaultdict(lambda:
|
||||
collections.defaultdict(list))
|
||||
|
||||
for entry in entries:
|
||||
# build list of all versions
|
||||
if entry.dev_version not in versions:
|
||||
versions.append(entry.dev_version)
|
||||
stable_version_map.setdefault(entry.dev_version, entry.stable_version)
|
||||
|
||||
if not entry.dev_only:
|
||||
# add non-dev-only entries to both changelogs
|
||||
stable_entries[entry.stable_version][entry.section].append(entry)
|
||||
dev_entries[entry.dev_version][entry.section].append(entry)
|
||||
|
||||
consolidate_changelog(stable_entries)
|
||||
|
||||
print_changelog(versions, stable_entries, 'docs/_auto/news.rst')
|
||||
print_changelog(versions, dev_entries, 'docs/_auto/news-dev.rst')
|
||||
|
||||
if all:
|
||||
for version in versions:
|
||||
if version not in stable_version_map:
|
||||
print('warn: skipping ' + version)
|
||||
continue
|
||||
if stable_version_map[version] == version:
|
||||
version_entries = {version: stable_entries[version]}
|
||||
else:
|
||||
version_entries = {version: dev_entries[version]}
|
||||
print_changelog([version], version_entries,
|
||||
'docs/_changelogs/%s-github.txt' % version,
|
||||
replace=False)
|
||||
print_changelog([version], version_entries,
|
||||
'docs/_changelogs/%s-reddit.txt' % version,
|
||||
replace=False,
|
||||
prefix='> ')
|
||||
|
||||
return entries
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-a', '--all', action='store_true',
|
||||
help='Print changelogs for all versions to docs/_changelogs')
|
||||
parser.add_argument('-c', '--check', action='store_true',
|
||||
help='Check that all entries are printed')
|
||||
args = parser.parse_args()
|
||||
|
||||
os.chdir(os.path.abspath(os.path.dirname(__file__)))
|
||||
os.chdir('..')
|
||||
entries = generate_changelog(all=args.all)
|
||||
|
||||
if args.check:
|
||||
with open('docs/_auto/news.rst') as f:
|
||||
content_stable = f.read()
|
||||
with open('docs/_auto/news-dev.rst') as f:
|
||||
content_dev = f.read()
|
||||
for entry in entries:
|
||||
for description in entry.children:
|
||||
if not entry.dev_only and description not in content_stable:
|
||||
print('stable missing: ' + description)
|
||||
if description not in content_dev:
|
||||
print('dev missing: ' + description)
|
||||
from dfhack.changelog import cli_entrypoint
|
||||
cli_entrypoint()
|
||||
|
@ -0,0 +1,11 @@
|
||||
===========
|
||||
User Guides
|
||||
===========
|
||||
|
||||
These pages are detailed guides covering DFHack tools.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
*
|
@ -0,0 +1,858 @@
|
||||
.. _quickfort-alias-guide:
|
||||
|
||||
Quickfort Alias Guide
|
||||
=====================
|
||||
|
||||
Aliases allow you to use simple words to represent complicated key sequences
|
||||
when configuring buildings and stockpiles in quickfort ``#query`` blueprints.
|
||||
|
||||
For example, say you have the following ``#build`` and ``#place`` blueprints::
|
||||
|
||||
#build masonry workshop
|
||||
~, ~,~,`,`,`
|
||||
~,wm,~,`,`,`
|
||||
~, ~,~,`,`,`
|
||||
|
||||
#place stockpile for mason
|
||||
~,~,~,s,s,s
|
||||
~,~,~,s,s,s
|
||||
~,~,~,s,s,s
|
||||
|
||||
and you want to configure the stockpile to hold only non-economic ("other")
|
||||
stone and to give to the adjacent mason workshop. You could write the
|
||||
key sequences directly::
|
||||
|
||||
#query configure stockpile with expanded key sequences
|
||||
~,~,~,s{Down 5}deb{Right}{Down 2}p^,`,`
|
||||
~,~,~,g{Left 2}&, `,`
|
||||
~,~,~,`, `,`
|
||||
|
||||
or you could use aliases::
|
||||
|
||||
#query configure stockpile with aliases
|
||||
~,~,~,otherstone,`,`
|
||||
~,~,~,give2left, `,`
|
||||
~,~,~,`, `,`
|
||||
|
||||
If the stockpile had only a single tile, you could also replay both aliases in
|
||||
a single cell::
|
||||
|
||||
#query configure mason with multiple aliases in one cell
|
||||
~,~,~,{otherstone}{give2left},`,`
|
||||
~,~,~,`, `,`
|
||||
~,~,~,`, `,`
|
||||
|
||||
With aliases, blueprints are much easier to read and understand. They also
|
||||
save you from having to copy the same long key sequences everywhere.
|
||||
|
||||
Alias definition files
|
||||
----------------------
|
||||
|
||||
DFHack comes with a library of aliases for you to use that are always
|
||||
available when you run a ``#query`` blueprint. Many blueprints can be built
|
||||
with just those aliases. This "standard alias library" is stored in
|
||||
:source:`data/quickfort/aliases-common.txt` (installed under the ``hack`` folder
|
||||
in your DFHack installation). The aliases in that file are described at the
|
||||
`bottom of this document <quickfort-alias-library>`.
|
||||
|
||||
Please do not edit the aliases in the standard library directly. The file will
|
||||
get overwritten when DFHack is updated and you'll lose your changes. Instead,
|
||||
add your custom aliases to :source:`dfhack-config/quickfort/aliases.txt` or
|
||||
directly to your blueprints in an `#aliases <quickfort-aliases-blueprints>`
|
||||
section. Your custom alias definitions take precedence over any definitions in
|
||||
the standard library.
|
||||
|
||||
Alias syntax and usage
|
||||
----------------------
|
||||
|
||||
The syntax for defining aliases is::
|
||||
|
||||
aliasname: expansion
|
||||
|
||||
Where ``aliasname`` is at least two letters or digits long (dashes and
|
||||
underscores are also allowed) and ``expansion`` is whatever you would type
|
||||
into the DF UI.
|
||||
|
||||
You use an alias by typing its name into a ``#query`` blueprint cell where you
|
||||
want it to be applied. You can use an alias by itself or as part of a larger
|
||||
sequence, potentially with other aliases. If the alias is the only text in the
|
||||
cell, the alias name is matched and its expansion is used. If the alias has
|
||||
other keys before or after it, the alias name must be surrounded in curly
|
||||
brackets (:kbd:`{` and :kbd:`}`). An alias can be surrounded in curly brackets
|
||||
even if it is the only text in the cell, it just isn't necesary. For example,
|
||||
the following blueprint uses the ``aliasname`` alias by itself in the first
|
||||
two rows and uses it as part of a longer sequence in the third row::
|
||||
|
||||
#query apply alias 'aliasname' in three different ways
|
||||
aliasname
|
||||
{aliasname}
|
||||
literaltext{aliasname}literaltext
|
||||
|
||||
For a more concrete example of an alias definition, a simple alias that
|
||||
configures a stockpile to have no bins (:kbd:`C`) and no barrels (:kbd:`E`)
|
||||
assigned to it would look like this::
|
||||
|
||||
nocontainers: CE
|
||||
|
||||
The alias definition can also contain references to other aliases by including
|
||||
the alias names in curly brackets. For example, ``nocontainers`` could be
|
||||
equivalently defined like this::
|
||||
|
||||
nobins: C
|
||||
nobarrels: E
|
||||
nocontainers: {nobins}{nobarrels}
|
||||
|
||||
Aliases used in alias definitions *must* be surrounded by curly brackets, even
|
||||
if they are the only text in the definition::
|
||||
|
||||
alias1: text1
|
||||
alias2: alias1
|
||||
alias3: {alias1}
|
||||
|
||||
Here, ``alias1`` and ``alias3`` expand to ``text1``, but ``alias2`` expands to
|
||||
the literal text ``alias1``.
|
||||
|
||||
Keycodes
|
||||
~~~~~~~~
|
||||
|
||||
Non-printable characters, like the arrow keys, are represented by their
|
||||
keycode name and are also surrounded by curly brackets, like ``{Right}`` or
|
||||
``{Enter}``. Keycodes are used exactly like aliases -- they just have special
|
||||
expansions that you wouldn't be able to write yourself. In order to avoid
|
||||
naming conflicts between aliases and keycodes, the convention is to start
|
||||
aliases with a lowercase letter.
|
||||
|
||||
Any keycode name from the DF interface definition file
|
||||
(data/init/interface.txt) is valid, but only a few keycodes are actually
|
||||
useful for blueprints::
|
||||
|
||||
Up
|
||||
Down
|
||||
Left
|
||||
Right
|
||||
Enter
|
||||
ESC
|
||||
Backspace
|
||||
Space
|
||||
Tab
|
||||
|
||||
There is also one pseudo-keycode that quickfort recognizes::
|
||||
|
||||
Empty
|
||||
|
||||
which has an empty expansion. It is primarily useful for defining blank default values for `Sub-aliases`_.
|
||||
|
||||
Repetitions
|
||||
~~~~~~~~~~~
|
||||
|
||||
Anything enclosed within curly brackets can also have a number, indicating how
|
||||
many times that alias or keycode should be repeated. For example:
|
||||
``{togglesequence 9}`` or ``{Down 5}`` will repeat the ``togglesequence``
|
||||
alias nine times and the ``Down`` keycode five times, respectively.
|
||||
|
||||
Modifier keys
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Ctrl, Alt, and Shift modifiers can be specified for the next key by adding
|
||||
them into the key sequence. For example, Alt-h is written as ``{Alt}h``.
|
||||
|
||||
Shorthand characters
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Some frequently-used keycodes are assigned shorthand characters. Think of them
|
||||
as single-character aliases that don't need to be surrounded in curly
|
||||
brackets::
|
||||
|
||||
& expands to {Enter}
|
||||
@ expands to {Shift}{Enter}
|
||||
~ expands to {Alt}
|
||||
! expands to {Ctrl}
|
||||
^ expands to {ESC}
|
||||
|
||||
If you need literal versions of the shorthand characters, surround them in
|
||||
curly brackets, for example: use ``{!}`` for a literal exclamation point.
|
||||
|
||||
Built-in aliases
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Most aliases that come with DFHack are in ``aliases-common.txt``, but there is
|
||||
one alias built into the code for the common shorthand for "make room"::
|
||||
|
||||
r+ expands to r+{Enter}
|
||||
|
||||
This needs special code support since ``+`` can't normally be used in alias
|
||||
names. You can use it just like any other alias, either by itself in a cell
|
||||
(``r+``) or surrounded in curly brackets (``{r+}``).
|
||||
|
||||
Sub-aliases
|
||||
~~~~~~~~~~~
|
||||
|
||||
You can specify sub-aliases that will only be defined while the current alias
|
||||
is being resolved. This is useful for "injecting" custom behavior into the
|
||||
middle of a larger alias. As a simple example, the ``givename`` alias is defined
|
||||
like this::
|
||||
|
||||
givename: !n{name}&
|
||||
|
||||
Note the use of the ``name`` alias inside of the ``givename`` expansion. In your
|
||||
``#query`` blueprint, you could write something like this, say, while over your
|
||||
main drawbridge::
|
||||
|
||||
{givename name="Front Gate"}
|
||||
|
||||
The value that you give the sub-alias ``name`` will be used when the
|
||||
``givename`` alias is expanded. Without sub-aliases, we'd have to define
|
||||
``givename`` like this::
|
||||
|
||||
givenameprefix: !n
|
||||
givenamesuffix: &
|
||||
|
||||
and use it like this::
|
||||
|
||||
{givenameprefix}Front Gate{givenamesuffix}
|
||||
|
||||
which is more difficult to write and more difficult to understand.
|
||||
|
||||
A handy technique is to define an alias with some sort of default
|
||||
behavior and then use sub-aliases to override that behavior as necessary. For
|
||||
example, here is a simplified version of the standard ``quantum`` alias that
|
||||
sets up quantum stockpiles::
|
||||
|
||||
quantum_enable: {enableanimals}{enablefood}{enablefurniture}...
|
||||
quantum: {linksonly}{nocontainers}{quantum_enable}
|
||||
|
||||
You can use the default behavior of ``quantum_enable`` by just using the
|
||||
``quantum`` alias by itself. But you can override ``quantum_enable`` to just
|
||||
enable furniture for some specific stockpile like this::
|
||||
|
||||
{quantum quantum_enable={enablefurniture}}
|
||||
|
||||
If an alias uses a sub-alias in its expansion, but the sub-alias is not defined
|
||||
when the alias is used, quickfort will halt the ``#query`` blueprint with an
|
||||
error. If you want your aliases to work regardless of whether sub-aliases are
|
||||
defined, then you must define them with default values like ``quantum_enable``
|
||||
above. If a default value should be blank, like the ``name`` sub-alias used by
|
||||
the ``givename`` alias above, define it with the ``{Empty}`` pesudo-keycode::
|
||||
|
||||
name: {Empty}
|
||||
|
||||
Sub-aliases must be in one of the following formats::
|
||||
|
||||
subaliasname=keyswithnospaces
|
||||
subaliasname="keys with spaces or {aliases}"
|
||||
subaliasname={singlealias}
|
||||
|
||||
If you specify both a sub-alias and a number of repetitions, the number for
|
||||
repetitions goes last, right before the :kbd:`}`::
|
||||
|
||||
{alias subaliasname=value repetitions}
|
||||
|
||||
Beyond query mode
|
||||
-----------------
|
||||
``#query`` blueprints normally do things in DF :kbd:`q`\uery mode, but nobody
|
||||
said that we have to *stay* in query mode. ``#query`` blueprints send
|
||||
arbitrary key sequences to Dwarf Fortress. Anything you can do by typing keys
|
||||
into DF, you can do in a ``#query`` blueprint. It is absolutely fine to
|
||||
temporarily exit out of query mode, go into, say, hauling or zone or hotkey
|
||||
mode, and do whatever needs to be done.
|
||||
|
||||
You just have to make certain to exit out of that alternate mode and get back
|
||||
into :kbd:`q`\uery mode at the end of the key sequence. That way quickfort can
|
||||
continue on configuring the next tile -- a tile configuration that assumes the
|
||||
game is still in query mode.
|
||||
|
||||
For example, here is the standard library alias for giving a name to a zone::
|
||||
|
||||
namezone: ^i{givename}^q
|
||||
|
||||
The first :kbd:`\^` exits out of query mode. Then :kbd:`i` enters zones mode.
|
||||
We then reuse the standard alias for giving something a name. Finally, we exit
|
||||
out of zones mode with another :kbd:`\^` and return to :kbd:`q`\uery mode.
|
||||
|
||||
.. _quickfort-alias-library:
|
||||
|
||||
The DFHack standard alias library
|
||||
---------------------------------
|
||||
|
||||
DFHack comes with many useful aliases for you to use in your blueprints. Many
|
||||
blueprints can be built with just these aliases alone, with no custom aliases
|
||||
required.
|
||||
|
||||
This section goes through all aliases provided by the DFHack standard alias
|
||||
library, discussing their intended usage and detailing sub-aliases that you
|
||||
can define to customize their behavior.
|
||||
|
||||
If you do define your own custom aliases in
|
||||
``dfhack-config/quickfort/aliases.txt``, try to build on library alias
|
||||
components. For example, if you create an alias to modify particular furniture
|
||||
stockpile settings, start your alias with ``{furnitureprefix}`` instead of
|
||||
``s{Down 2}``. Using library prefixes will allow library sub-aliases to work
|
||||
with your aliases just like they do with library aliases. In this case, using
|
||||
``{furnitureprefix}`` will allow your stockpile customization alias to work
|
||||
with both stockpiles and hauling routes.
|
||||
|
||||
Note that some aliases use the DFHack-provided search prompts. If you get errors
|
||||
while running ``#query`` blueprints, ensure the DFHack `search-plugin` plugin is
|
||||
enabled.
|
||||
|
||||
Naming aliases
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
These aliases give descriptive names to workshops, levers, stockpiles, zones,
|
||||
etc. Dwarf Fortress building, stockpile, and zone names have a maximum length
|
||||
of 20 characters.
|
||||
|
||||
======== ===========
|
||||
Alias Sub-aliases
|
||||
======== ===========
|
||||
givename name
|
||||
namezone name
|
||||
======== ===========
|
||||
|
||||
``givename`` works anywhere you can hit Ctrl-n to customize a name, like when
|
||||
the cursor is over buildings and stockpiles. Example::
|
||||
|
||||
#place
|
||||
f(10x2)
|
||||
|
||||
#query
|
||||
{booze}{givename name=booze}
|
||||
|
||||
``namezone`` is intended to be used when over an activity zone. It includes
|
||||
commands to get into zones mode, set the zone name, and get back to query
|
||||
mode. Example::
|
||||
|
||||
#zone
|
||||
n(2x2)
|
||||
|
||||
#query
|
||||
{namezone name="guard dog pen"}
|
||||
|
||||
Quantum stockpile aliases
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
These aliases make it easy to create :wiki:`minecart stop-based quantum stockpiles <Quantum_stockpile#The_Minecart_Stop>`.
|
||||
|
||||
+----------------------+------------------+
|
||||
| Alias | Sub-aliases |
|
||||
+======================+==================+
|
||||
| quantum | | name |
|
||||
| | | quantum_enable |
|
||||
+----------------------+------------------+
|
||||
| quantumstopfromnorth | | name |
|
||||
+----------------------+ | stop_name |
|
||||
| quantumstopfromsouth | | route_enable |
|
||||
+----------------------+ |
|
||||
| quantumstopfromeast | |
|
||||
+----------------------+ |
|
||||
| quantumstopfromwest | |
|
||||
+----------------------+------------------+
|
||||
| sp_link | | move |
|
||||
| | | move_back |
|
||||
+----------------------+------------------+
|
||||
| quantumstop | | name |
|
||||
| | | stop_name |
|
||||
| | | route_enable |
|
||||
| | | move |
|
||||
| | | move_back |
|
||||
| | | sp_links |
|
||||
+----------------------+------------------+
|
||||
|
||||
The idea is to use a minecart on a track stop to dump an infinite number of
|
||||
items into a receiving "quantum" stockpile, which significantly simplifies
|
||||
stockpile management. These aliases configure the quantum stockpile and
|
||||
hauling route that make it all work. Here is a complete example for quantum
|
||||
stockpiling weapons, armor, and ammunition. It has a 3x1 feeder stockpile on
|
||||
the bottom (South), the trackstop in the center, and the quantum stockpile on
|
||||
the top (North). Note that the feeder stockpile is the only stockpile that
|
||||
needs to be configured to control which types of items end up in the quantum
|
||||
stockpile. By default, the hauling route and quantum stockpile itself simply
|
||||
accept whatever is put into them.
|
||||
|
||||
::
|
||||
|
||||
#place
|
||||
,c
|
||||
,
|
||||
pdz(3x1)
|
||||
|
||||
#build
|
||||
,
|
||||
,trackstopN
|
||||
|
||||
#query message(remember to assign a minecart to the new route)
|
||||
,quantum
|
||||
,quantumstopfromsouth
|
||||
nocontainers
|
||||
|
||||
The ``quantum`` alias configures a 1x1 stockpile to be a quantum stockpile. It
|
||||
bans all containers and prevents the stockpile from being manually filled. By
|
||||
default, it also enables storage of all item categories (except corpses and
|
||||
refuse), so it doesn't really matter what letter you use to place the
|
||||
stockpile. :wiki:`Refuse` is excluded by default since otherwise clothes and
|
||||
armor in the quantum stockpile would rot away. If you want corpses or bones in
|
||||
your quantum stockpile, use :kbd:`y` and/or :kbd:`r` to place the stockpile
|
||||
and the ``quantum`` alias will just enable the remaining types. If you *do*
|
||||
enable refuse in your quantum stockpile, be sure you avoid putting useful
|
||||
clothes or armor in there!
|
||||
|
||||
The ``quantumstopfromsouth`` alias is run over the track stop and configures
|
||||
the hauling route, again, allowing all item categories into the minecart by
|
||||
default so any item that can go into the feeder stockpile can then be placed
|
||||
in the minecart. It also links the hauling route with the feeder stockpile to
|
||||
the South.The track stop does not need to be fully constructed before the
|
||||
``#query`` blueprint is run, but the feeder stockpile needs to exist so we can
|
||||
link to it. This means that the three blueprints above can be run one right
|
||||
after another, without any dwarven labor in between them, and the quantum
|
||||
stockpile will work properly.
|
||||
|
||||
Finally, the ``nocontainers`` alias simply configures the feeder stockpile to
|
||||
not have any containers (which would just get in the way here). If we wanted
|
||||
to be more specific about what item types we want in the quantum stockpile, we
|
||||
could configure the feeder stockpile further, for example with standard
|
||||
`stockpile adjustment aliases <quickfort-stockpile-aliases>`.
|
||||
|
||||
After the blueprints are run, the last step is to manually assign a minecart
|
||||
to the newly-defined hauling route.
|
||||
|
||||
You can define sub-aliases to customize how these aliases work, for example to
|
||||
have fine-grained control over what item types are enabled for the route and
|
||||
quantum stockpile. We'll go over those options below, but first, here is an
|
||||
example for how to just give names to everything::
|
||||
|
||||
#query message(remember to assign a minecart to the new route)
|
||||
,{quantum name="armory quantum"}
|
||||
,{quantumstopfromsouth name="Armory quantum" stop_name="Armory quantum stop"}{givename name="armory dumper"}
|
||||
{givename name="armory feeder"}
|
||||
|
||||
All ``name`` sub-aliases are completely optional, of course. Keep in mind that
|
||||
hauling route names have a maximum length of 22 characters, hauling route stop
|
||||
names have a maximum length of 21 characters, and all other names have a
|
||||
maximum length of 20 characters.
|
||||
|
||||
If you want to be absolutely certain that nothing ends up in your quantum
|
||||
stockpile other than what you've configured in the feeder stockpile, you can
|
||||
set the ``quantum_enable`` sub-alias for the ``quantum`` alias. This can
|
||||
prevent, for example, somebody's knocked-out tooth from being considered part
|
||||
of your furniture quantum stockpile when it happened to land on it during a
|
||||
fistfight::
|
||||
|
||||
#query
|
||||
{quantum name="furniture quantum" quantum_enable={enablefurniture}}
|
||||
|
||||
You can have similar control over the hauling route if you need to be more
|
||||
selective about what item types are allowed into the minecart. If you have
|
||||
multiple specialized quantum stockpiles that use a common feeder pile, for
|
||||
example, you can set the ``route_enable`` sub-alias::
|
||||
|
||||
#query
|
||||
{quantumstopfromsouth name="Steel bar quantum" route_enable="{enablebars}{steelbars}"}
|
||||
|
||||
Any of the `stockpile configuration aliases <quickfort-stockpile-aliases>` can
|
||||
be used for either the ``quantum_enable`` or ``route_enable`` sub-aliases.
|
||||
Experienced Dwarf Fortress players may be wondering how the same aliases can
|
||||
work in both contexts since the keys for entering the configuration screen
|
||||
differ. Fear not! There is some sub-alias magic at work here. If you define
|
||||
your own stockpile configuraiton aliases, you can use the magic yourself by
|
||||
building your aliases on the ``*prefix`` aliases described later in this
|
||||
guide.
|
||||
|
||||
Finally, the ``quantumstop`` alias is a more general version of the simpler
|
||||
``quantumstopfrom*`` aliases. The ``quantumstopfrom*`` aliases assume that a
|
||||
single feeder stockpile is orthogonally adjacent to your track stop (which is
|
||||
how most people set them up). If your feeder stockpile is somewhere further
|
||||
away, or you have multiple feeder stockpiles to link, you can use the
|
||||
``quantumstop`` alias directly. In addition to the sub-aliases used in the
|
||||
``quantumstopfrom*`` alias, you can define the ``move`` and ``move_back``
|
||||
sub-aliases, which let you specify the cursor keys required to move from the
|
||||
track stop to the (single) feeder stockpile and back again, respectively::
|
||||
|
||||
#query
|
||||
{quantumstop move="{Right 2}{Up}" move_back="{Down}{Left 2}"}
|
||||
|
||||
If you have multiple stockpiles to link, define the ``sp_links`` sub-alias,
|
||||
which can chain several ``sp_link`` aliases together, each with their own
|
||||
movement configuration::
|
||||
|
||||
#query
|
||||
{quantumstop sp_links="{sp_link move=""{Right}{Up}"" move_back=""{Down}{Left}""}{sp_link move=""{Right}{Down}"" move_back=""{Up}{Left}""}"}
|
||||
|
||||
Note the doubled quotes for quoted elements that are within the outer quotes.
|
||||
|
||||
Farm plots
|
||||
~~~~~~~~~~
|
||||
|
||||
Sets a farm plot to grow the first or last type of seed in the list of
|
||||
available seeds for all four seasons. The last seed is usually Plump helmet
|
||||
spawn, suitable for post-embark. But if you only have one seed type, that'll
|
||||
be grown instead.
|
||||
|
||||
+------------------+
|
||||
| Alias |
|
||||
+==================+
|
||||
| growlastcropall |
|
||||
+------------------+
|
||||
| growfirstcropall |
|
||||
+------------------+
|
||||
|
||||
Instead of these aliases, though, it might be more useful to use the DFHack
|
||||
`autofarm` plugin.
|
||||
|
||||
Stockpile configuration utility aliases
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
================ ===========
|
||||
Alias Sub-aliases
|
||||
================ ===========
|
||||
linksonly
|
||||
maxbins
|
||||
maxbarrels
|
||||
nobins
|
||||
nobarrels
|
||||
nocontainers
|
||||
give2up
|
||||
give2down
|
||||
give2left
|
||||
give2right
|
||||
give10up
|
||||
give10down
|
||||
give10left
|
||||
give10right
|
||||
give move
|
||||
togglesequence
|
||||
togglesequence2
|
||||
masterworkonly prefix
|
||||
artifactonly prefix
|
||||
togglemasterwork prefix
|
||||
toggleartifact prefix
|
||||
================ ===========
|
||||
|
||||
``linksonly``, ``maxbins``, ``maxbarrels``, ``nobins``, ``nobarrels``, and
|
||||
``nocontainers`` set the named basic properties on stockpiles. ``nocontainers``
|
||||
sets bins and barrels to 0, but does not affect wheelbarrows since the hotkeys
|
||||
for changing the number of wheelbarrows depend on whether you have DFHack's
|
||||
``tweak max-wheelbarrow`` enabled. It is better to set the number of
|
||||
wheelbarrows via the `quickfort` ``stockpiles_max_wheelbarrows`` setting (set to
|
||||
``0`` by default), or explicitly when you define the stockpile in the ``#place``
|
||||
blueprint.
|
||||
|
||||
The ``give*`` aliases set a stockpile to give to a workshop or another
|
||||
stockpile located at the indicated number of tiles in the indicated direction
|
||||
from the current tile. For example, here we use the ``give2down`` alias to
|
||||
connect an ``otherstone`` stockpile with a mason workshop::
|
||||
|
||||
#place
|
||||
s,s,s,s,s
|
||||
s, , , ,s
|
||||
s, , , ,s
|
||||
s, , , ,s
|
||||
s,s,s,s,s
|
||||
|
||||
#build
|
||||
`,`,`,`,`
|
||||
`, , , ,`
|
||||
`, ,wm,,`
|
||||
`, , , ,`
|
||||
`,`,`,`,`
|
||||
|
||||
#query
|
||||
, ,give2down
|
||||
otherstone
|
||||
|
||||
and here is a generic stone stockpile that gives to a stockpile that only
|
||||
takes flux::
|
||||
|
||||
#place
|
||||
s(10x1)
|
||||
s(10x10)
|
||||
|
||||
#query
|
||||
flux
|
||||
,
|
||||
give2up
|
||||
|
||||
If you want to give to some other tile that is not already covered by the
|
||||
``give2*`` or ``give10*`` aliases, you can use the generic ``give`` alias and
|
||||
specify the movement keys yourself in the ``move`` sub-alias. Here is how to
|
||||
give to a stockpile or workshop one z-level above, 9 tiles to the left, and 14
|
||||
tiles down::
|
||||
|
||||
#query
|
||||
{give move="<{Left 9}{Down 14}"}
|
||||
|
||||
``togglesequence`` and ``togglesequence2`` send ``{Down}{Enter}`` or
|
||||
``{Down 2}{Enter}`` to toggle adjacent (or alternating) items in a list. This
|
||||
is useful when toggling a bunch of related item types in the stockpile config.
|
||||
For example, the ``dye`` alias in the standard alias library needs to select
|
||||
four adjacent items::
|
||||
|
||||
dye: {foodprefix}b{Right}{Down 11}{Right}{Down 28}{togglesequence 4}^
|
||||
|
||||
Finally, the ``masterwork`` and ``artifact`` group of aliases configure the
|
||||
corresponding allowable core quality for the stockpile categories that have
|
||||
them. This alias is used to implement category-specific aliases below, like
|
||||
``artifactweapons`` and ``forbidartifactweapons``.
|
||||
|
||||
.. _quickfort-stockpile-aliases:
|
||||
|
||||
Stockpile adjustment aliases
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
For each stockpile item category, there are three standard aliases:
|
||||
|
||||
* ``*prefix`` aliases enter the stockpile configuration screen and position
|
||||
the cursor at a particular item category in the left-most column, ready for
|
||||
further keys that configure the elements within that category. All other
|
||||
stockpile adjustment aliases are built on these prefixes. You can use them
|
||||
yourself to create stockpile adjustment aliases that aren't already covered
|
||||
by the standard library aliases. Using the library prefix instead of
|
||||
creating your own also allows your stockpile configuration aliases to be
|
||||
used for both stockpiles and hauling routes. For example, here is the
|
||||
library definition for ``booze``::
|
||||
|
||||
booze: {foodprefix}b{Right}{Down 5}p{Down}p^
|
||||
|
||||
* ``enable*`` aliases enter the stockpile configuration screen, enable all
|
||||
subtypes of the named category, and exit the stockpile configuration screen
|
||||
* ``disable*`` aliases enter the stockpile configuration screen, disable all
|
||||
subtypes of the named category, and exit the stockpile configuration screen
|
||||
|
||||
==================== ==================== =====================
|
||||
Prefix Enable Disable
|
||||
==================== ==================== =====================
|
||||
animalsprefix enableanimals disableanimals
|
||||
foodprefix enablefood disablefood
|
||||
furnitureprefix enablefurniture disablefurniture
|
||||
corpsesprefix enablecorpses disablecorpses
|
||||
refuseprefix enablerefuse disablerefuse
|
||||
stoneprefix enablestone disablestone
|
||||
ammoprefix enableammo disableammo
|
||||
coinsprefix enablecoins disablecoins
|
||||
barsprefix enablebars disablebars
|
||||
gemsprefix enablegems disablegems
|
||||
finishedgoodsprefix enablefinishedgoods disablefinishedgoods
|
||||
leatherprefix enableleather disableleather
|
||||
clothprefix enablecloth disablecloth
|
||||
woodprefix enablewood disablewood
|
||||
weaponsprefix enableweapons disableweapons
|
||||
armorprefix enablearmor disablearmor
|
||||
sheetprefix enablesheet disablesheet
|
||||
==================== ==================== =====================
|
||||
|
||||
Then, for each item category, there are aliases that manipulate interesting
|
||||
subsets of that category:
|
||||
|
||||
* Exclusive aliases forbid everthing within a category and then enable only
|
||||
the named item type (or named class of items)
|
||||
* ``forbid*`` aliases forbid the named type and leave the rest of the
|
||||
stockpile untouched.
|
||||
* ``permit*`` aliases permit the named type and leave the rest of the
|
||||
stockpile untouched.
|
||||
|
||||
Note that for specific item types (items in the third stockpile configuration
|
||||
column), you can only toggle the item type on and off. Aliases can't know
|
||||
whether sending the ``{Enter}`` key will enable or disable the type. The
|
||||
``forbid*`` aliases that affect these item types assume the item type was
|
||||
enabled and toggle it off. Likewise, the ``permit*`` aliases assume the item
|
||||
type was disabled and toggle it on. If the item type is not in the expected
|
||||
enabled/disabled state when the alias is run, the aliases will not behave
|
||||
properly.
|
||||
|
||||
Animal stockpile adjustments
|
||||
````````````````````````````
|
||||
|
||||
=========== =========== ============
|
||||
Exclusive Forbid Permit
|
||||
=========== =========== ============
|
||||
cages forbidcages permitcages
|
||||
traps forbidtraps permittraps
|
||||
=========== =========== ============
|
||||
|
||||
Food stockpile adjustments
|
||||
``````````````````````````
|
||||
|
||||
=============== ==================== ====================
|
||||
Exclusive Forbid Permit
|
||||
=============== ==================== ====================
|
||||
preparedfood forbidpreparedfood permitpreparedfood
|
||||
unpreparedfish forbidunpreparedfish permitunpreparedfish
|
||||
plants forbidplants permitplants
|
||||
booze forbidbooze permitbooze
|
||||
seeds forbidseeds permitseeds
|
||||
dye forbiddye permitdye
|
||||
tallow forbidtallow permittallow
|
||||
miscliquid forbidmiscliquid permitmiscliquid
|
||||
=============== ==================== ====================
|
||||
|
||||
Furniture stockpile adjustments
|
||||
```````````````````````````````
|
||||
|
||||
=================== ========================= =========================
|
||||
Exclusive Forbid Permit
|
||||
=================== ========================= =========================
|
||||
pots forbidpots permitpots
|
||||
bags
|
||||
buckets forbidbuckets permitbuckets
|
||||
sand forbidsand permitsand
|
||||
masterworkfurniture forbidmasterworkfurniture permitmasterworkfurniture
|
||||
artifactfurniture forbidartifactfurniture permitartifactfurniture
|
||||
=================== ========================= =========================
|
||||
|
||||
Notes:
|
||||
|
||||
* The ``bags`` alias excludes coffers and other boxes by forbidding all
|
||||
materials other than cloth, yarn, silk, and leather. Therefore, it is
|
||||
difficult to create ``forbidbags`` and ``permitbags`` without affecting other
|
||||
types of furniture stored in the same stockpile.
|
||||
|
||||
* Because of the limitations of Dwarf Fortress, ``bags`` cannot distinguish
|
||||
between empty bags and bags filled with gypsum powder.
|
||||
|
||||
Refuse stockpile adjustments
|
||||
````````````````````````````
|
||||
|
||||
=========== ================== ==================
|
||||
Exclusive Forbid Permit
|
||||
=========== ================== ==================
|
||||
corpses forbidcorpses permitcorpses
|
||||
rawhides forbidrawhides permitrawhides
|
||||
tannedhides forbidtannedhides permittannedhides
|
||||
skulls forbidskulls permitskulls
|
||||
bones forbidbones permitbones
|
||||
shells forbidshells permitshells
|
||||
teeth forbidteeth permitteeth
|
||||
horns forbidhorns permithorns
|
||||
hair forbidhair permithair
|
||||
craftrefuse forbidcraftrefuse permitcraftrefuse
|
||||
=========== ================== ==================
|
||||
|
||||
Notes:
|
||||
|
||||
* ``craftrefuse`` includes everything a craftsdwarf can use: skulls, bones,
|
||||
shells, teeth, horns, and hair.
|
||||
|
||||
Stone stockpile adjustments
|
||||
```````````````````````````
|
||||
|
||||
============= ==================== ====================
|
||||
Exclusive Forbid Permit
|
||||
============= ==================== ====================
|
||||
metal forbidmetal permitmetal
|
||||
iron forbidiron permitiron
|
||||
economic forbideconomic permiteconomic
|
||||
flux forbidflux permitflux
|
||||
plaster forbidplaster permitplaster
|
||||
coalproducing forbidcoalproducing permitcoalproducing
|
||||
otherstone forbidotherstone permitotherstone
|
||||
bauxite forbidbauxite permitbauxite
|
||||
clay forbidclay permitclay
|
||||
============= ==================== ====================
|
||||
|
||||
Ammo stockpile adjustments
|
||||
``````````````````````````
|
||||
|
||||
============== ==================== ====================
|
||||
Exclusive Forbid Permit
|
||||
============== ==================== ====================
|
||||
bolts
|
||||
\ forbidmetalbolts
|
||||
\ forbidwoodenbolts
|
||||
\ forbidbonebolts
|
||||
masterworkammo forbidmasterworkammo permitmasterworkammo
|
||||
artifactammo forbidartifactammo permitartifactammo
|
||||
============== ==================== ====================
|
||||
|
||||
Bar stockpile adjustments
|
||||
`````````````````````````
|
||||
|
||||
=========== ==================
|
||||
Exclusive Forbid
|
||||
=========== ==================
|
||||
bars forbidbars
|
||||
metalbars forbidmetalbars
|
||||
ironbars forbidironbars
|
||||
steelbars forbidsteelbars
|
||||
pigironbars forbidpigironbars
|
||||
otherbars forbidotherbars
|
||||
coal forbidcoal
|
||||
potash forbidpotash
|
||||
ash forbidash
|
||||
pearlash forbidpearlash
|
||||
soap forbidsoap
|
||||
blocks forbidblocks
|
||||
=========== ==================
|
||||
|
||||
Gem stockpile adjustments
|
||||
`````````````````````````
|
||||
|
||||
=========== ================
|
||||
Exclusive Forbid
|
||||
=========== ================
|
||||
roughgems forbidroughgems
|
||||
roughglass forbidroughglass
|
||||
cutgems forbidcutgems
|
||||
cutglass forbidcutglass
|
||||
cutstone forbidcutstone
|
||||
=========== ================
|
||||
|
||||
Finished goods stockpile adjustments
|
||||
````````````````````````````````````
|
||||
|
||||
======================= ============================= =============================
|
||||
Exclusive Forbid Permit
|
||||
======================= ============================= =============================
|
||||
jugs
|
||||
crafts forbidcrafts permitcrafts
|
||||
masterworkfinishedgoods forbidmasterworkfinishedgoods permitmasterworkfinishedgoods
|
||||
artifactfinishedgoods forbidartifactfinishedgoods permitartifactfinishedgoods
|
||||
======================= ============================= =============================
|
||||
|
||||
Cloth stockpile adjustments
|
||||
```````````````````````````
|
||||
|
||||
+------------------+
|
||||
| Exclusive |
|
||||
+==================+
|
||||
| thread |
|
||||
+------------------+
|
||||
| adamantinethread |
|
||||
+------------------+
|
||||
| cloth |
|
||||
+------------------+
|
||||
| adamantinecloth |
|
||||
+------------------+
|
||||
|
||||
Weapon stockpile adjustments
|
||||
````````````````````````````
|
||||
|
||||
================= ======================== =======================
|
||||
Exclusive Forbid Permit
|
||||
================= ======================== =======================
|
||||
\ forbidweapons permitweapons
|
||||
\ forbidtrapcomponents permittrapcomponents
|
||||
metalweapons forbidmetalweapons permitmetalweapons
|
||||
\ forbidstoneweapons permitstoneweapons
|
||||
\ forbidotherweapons permitotherweapons
|
||||
ironweapons forbidironweapons permitironweapons
|
||||
bronzeweapons forbidbronzeweapons permitbronzeweapons
|
||||
copperweapons forbidcopperweapons permitcopperweapons
|
||||
steelweapons forbidsteelweapons permitsteelweapons
|
||||
masterworkweapons forbidmasterworkweapons permitmasterworkweapons
|
||||
artifactweapons forbidartifactweapons permitartifactweapons
|
||||
================= ======================== =======================
|
||||
|
||||
Armor stockpile adjustments
|
||||
```````````````````````````
|
||||
|
||||
=============== ====================== =====================
|
||||
Exclusive Forbid Permit
|
||||
=============== ====================== =====================
|
||||
metalarmor forbidmetalarmor permitmetalarmor
|
||||
otherarmor forbidotherarmor permitotherarmor
|
||||
ironarmor forbidironarmor permitironarmor
|
||||
bronzearmor forbidbronzearmor permitbronzearmor
|
||||
copperarmor forbidcopperarmor permitcopperarmor
|
||||
steelarmor forbidsteelarmor permitsteelarmor
|
||||
masterworkarmor forbidmasterworkarmor permitmasterworkarmor
|
||||
artifactarmor forbidartifactarmor permitartifactarmor
|
||||
=============== ====================== =====================
|
@ -0,0 +1,106 @@
|
||||
.. _quickfort-library-guide:
|
||||
|
||||
Quickfort Library Guide
|
||||
=======================
|
||||
|
||||
This guide contains a high-level overview of the blueprints available in the
|
||||
:source:`quickfort blueprint library <data/blueprints/library>`. You can list
|
||||
library blueprints by running ``quickfort list --library`` or by hitting
|
||||
:kbd:`Alt`:kbd:`l` in the ``quickfort gui`` interactive dialog.
|
||||
|
||||
Each file is hyperlinked to its online version so you can see exactly what the
|
||||
blueprints do.
|
||||
|
||||
Whole fort blueprint sets
|
||||
-------------------------
|
||||
|
||||
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.
|
||||
|
||||
- :source:`library/dreamfort.csv <data/blueprints/library/dreamfort.csv>`
|
||||
- :source:`library/quickfortress.csv <data/blueprints/library/quickfortress.csv>`
|
||||
|
||||
Dreamfort
|
||||
~~~~~~~~~
|
||||
|
||||
Dreamfort is a fully functional, self-sustaining fortress with defenses,
|
||||
farming, a complete set of workshops, self-managing quantum stockpiles, a grand
|
||||
dining hall, hospital, jail, fresh water well system, guildhalls, and bedrooms
|
||||
for hundreds of dwarves. It also comes with manager work orders to automate
|
||||
basic fort needs, such as food and booze production. It can function by itself
|
||||
or as the core of a larger, more ambitious fortress. Read the high-level
|
||||
walkthrough by running ``quickfort run library/dreamfort.csv`` and list the
|
||||
walkthroughs for the individual levels by running ``quickfort list dreamfort -l
|
||||
-m notes`` or by opening the ``quickfort gui`` dialog, enabling the library
|
||||
with :kbd:`Alt`:kbd:`l`, and setting the filter to ``dreamfort notes``.
|
||||
|
||||
Dreamfort blueprints are also available for easy viewing and copying `online
|
||||
<https://drive.google.com/drive/folders/1iS90EEVqUkxTeZiiukVj1pLloZqabKuP>`__.
|
||||
|
||||
The Quick Fortresses
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The Quick Fortress is an updated version of the example fortress that came with
|
||||
`Python Quickfort 2.0 <https://github.com/joelpt/quickfort>`__ (the program
|
||||
DFHack quickfort was inspired by). While it is not a complete fortress by
|
||||
itself, it is much simpler than Dreamfort and is good for a first introduction
|
||||
to `quickfort` blueprints. Read its walkthrough with ``quickfort run
|
||||
library/quickfortress.csv``.
|
||||
|
||||
Layout helpers
|
||||
--------------
|
||||
|
||||
These files simply draw diagonal marker-mode lines starting from the cursor.
|
||||
They are especially useful for finding the center of the map when you are
|
||||
planning your fortress. Once you are done using them for alignment, use
|
||||
``quickfort undo`` at the same cursor position to make them disappear. Since
|
||||
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
|
||||
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_right.csv <data/blueprints/library/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_left.csv <data/blueprints/library/layout-helpers/mark_down_left.csv>`
|
||||
|
||||
Bedrooms
|
||||
--------
|
||||
|
||||
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
|
||||
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/95-9-Hactar1_3_Branch_Tree.csv <data/blueprints/library/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>`
|
||||
|
||||
Tombs
|
||||
-----
|
||||
|
||||
These blueprints have burial plot layouts for fortress that expect a lot of
|
||||
casualties.
|
||||
|
||||
- :source:`library/tombs/Mini_Saracen.csv <data/blueprints/library/tombs/Mini_Saracen.csv>`
|
||||
- :source:`library/tombs/The_Saracen_Crypts.csv <data/blueprints/library/tombs/The_Saracen_Crypts.csv>`
|
||||
|
||||
Exploratory mining
|
||||
------------------
|
||||
|
||||
Several mining patterns to choose from when searching for gems or ores. The
|
||||
patterns can be repeated up or down z-levels for exploring through the depths.
|
||||
|
||||
- :source:`library/exploratory-mining/tunnels.csv <data/blueprints/library/exploratory-mining/tunnels.csv>`
|
||||
- :source:`library/exploratory-mining/vertical-mineshafts.csv <data/blueprints/library/exploratory-mining/vertical-mineshafts.csv>`
|
||||
- :source:`library/exploratory-mining/connected-mineshafts.csv <data/blueprints/library/exploratory-mining/connected-mineshafts.csv>`
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
Extra blueprints that are useful in specific situations.
|
||||
|
||||
- :source:`library/embark.csv <data/blueprints/library/embark.csv>`
|
||||
|
||||
The embark blueprints are useful directly after embark. It contains a ``#build``
|
||||
blueprint that builds important starting workshops (mason, carpenter, mechanic,
|
||||
and craftsdwarf) and a ``#place`` blueprint that lays down a pattern of useful
|
||||
starting stockpiles.
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,13 @@
|
||||
============
|
||||
About DFHack
|
||||
============
|
||||
|
||||
These pages contain information about the general DFHack project.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
/docs/NEWS
|
||||
/docs/Authors
|
||||
/LICENSE
|
||||
/docs/Removed
|
@ -0,0 +1,21 @@
|
||||
========================
|
||||
DFHack Development Guide
|
||||
========================
|
||||
|
||||
These are pages relevant to people developing for DFHack.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
/docs/Dev-intro
|
||||
/docs/Contributing
|
||||
/docs/Compile
|
||||
/docs/NEWS-dev
|
||||
/docs/Lua API
|
||||
/docs/Remote
|
||||
/docs/api/index
|
||||
/docs/Documentation
|
||||
/docs/Structures-intro
|
||||
/docs/Memory-research
|
||||
/docs/Binpatches
|
||||
|
@ -0,0 +1,303 @@
|
||||
import collections
|
||||
import copy
|
||||
import itertools
|
||||
import os
|
||||
import sys
|
||||
|
||||
from sphinx.errors import ExtensionError, SphinxError, SphinxWarning
|
||||
|
||||
from dfhack.util import DFHACK_ROOT, DOCS_ROOT
|
||||
|
||||
CHANGELOG_PATHS = (
|
||||
'docs/changelog.txt',
|
||||
'scripts/changelog.txt',
|
||||
'library/xml/changelog.txt',
|
||||
)
|
||||
CHANGELOG_PATHS = (os.path.join(DFHACK_ROOT, p) for p in CHANGELOG_PATHS)
|
||||
|
||||
CHANGELOG_SECTIONS = [
|
||||
'New Plugins',
|
||||
'New Scripts',
|
||||
'New Tweaks',
|
||||
'New Features',
|
||||
'New Internal Commands',
|
||||
'Fixes',
|
||||
'Misc Improvements',
|
||||
'Removed',
|
||||
'API',
|
||||
'Internals',
|
||||
'Lua',
|
||||
'Ruby',
|
||||
'Structures',
|
||||
'Documentation',
|
||||
]
|
||||
|
||||
REPLACEMENTS = {
|
||||
'`search`': '`search-plugin`',
|
||||
}
|
||||
|
||||
def to_title_case(word):
|
||||
if word == word.upper():
|
||||
# Preserve acronyms
|
||||
return word
|
||||
return word[0].upper() + word[1:].lower()
|
||||
|
||||
def find_all_indices(string, substr):
|
||||
start = 0
|
||||
while True:
|
||||
i = string.find(substr, start)
|
||||
if i == -1:
|
||||
return
|
||||
yield i
|
||||
start = i + 1
|
||||
|
||||
def replace_text(string, replacements):
|
||||
for old_text, new_text in replacements.items():
|
||||
new_string = ''
|
||||
new_string_end = 0 # number of characters from string in new_string
|
||||
for i in find_all_indices(string, old_text):
|
||||
if i > 0 and string[i - 1] == '!':
|
||||
# exempt if preceded by '!'
|
||||
new_string += string[new_string_end:i - 1]
|
||||
new_string += old_text
|
||||
else:
|
||||
# copy until this occurrence
|
||||
new_string += string[new_string_end:i]
|
||||
new_string += new_text
|
||||
new_string_end = i + len(old_text)
|
||||
new_string += string[new_string_end:]
|
||||
string = new_string
|
||||
return string
|
||||
|
||||
class ChangelogEntry(object):
|
||||
def __init__(self, text, section, stable_version, dev_version):
|
||||
text = text.lstrip('- ')
|
||||
# normalize section to title case
|
||||
self.section = ' '.join(map(to_title_case, section.strip().split()))
|
||||
self.stable_version = stable_version
|
||||
self.dev_version = dev_version
|
||||
self.dev_only = text.startswith('@')
|
||||
text = text.lstrip('@ ')
|
||||
self.children = []
|
||||
|
||||
split_index = text.find(': ')
|
||||
if split_index != -1:
|
||||
self.feature, description = text[:split_index], text[split_index+1:]
|
||||
if description.strip():
|
||||
self.children.insert(0, description.strip())
|
||||
else:
|
||||
self.feature = text
|
||||
self.feature = self.feature.replace(':\\', ':').rstrip(':')
|
||||
|
||||
self.sort_key = self.feature.upper()
|
||||
|
||||
def __repr__(self):
|
||||
return 'ChangelogEntry(%r, %r)' % (self.feature, self.children)
|
||||
|
||||
def parse_changelog():
|
||||
entries = []
|
||||
|
||||
for fpath in CHANGELOG_PATHS:
|
||||
if not os.path.isfile(fpath):
|
||||
continue
|
||||
with open(fpath) as f:
|
||||
cur_stable = None
|
||||
cur_dev = None
|
||||
cur_section = None
|
||||
last_entry = None
|
||||
multiline = ''
|
||||
for line_id, line in enumerate(f.readlines()):
|
||||
line_id += 1
|
||||
|
||||
if multiline:
|
||||
multiline += line
|
||||
elif '[[[' in line:
|
||||
multiline = line.replace('[[[', '')
|
||||
|
||||
if ']]]' in multiline:
|
||||
line = multiline.replace(']]]', '')
|
||||
multiline = ''
|
||||
elif multiline:
|
||||
continue
|
||||
|
||||
if not line.strip() or line.startswith('==='):
|
||||
continue
|
||||
|
||||
if line.startswith('##'):
|
||||
cur_section = line.lstrip('#').strip()
|
||||
elif line.startswith('#'):
|
||||
cur_dev = line.lstrip('#').strip().lower()
|
||||
if ('alpha' not in cur_dev and 'beta' not in cur_dev and
|
||||
'rc' not in cur_dev):
|
||||
cur_stable = cur_dev
|
||||
elif line.startswith('-'):
|
||||
if not cur_stable or not cur_dev or not cur_section:
|
||||
raise ValueError(
|
||||
'%s:%i: Entry without section' % (fpath, line_id))
|
||||
last_entry = ChangelogEntry(line.strip(), cur_section,
|
||||
cur_stable, cur_dev)
|
||||
entries.append(last_entry)
|
||||
elif line.lstrip().startswith('-'):
|
||||
if not cur_stable or not cur_dev:
|
||||
raise ValueError(
|
||||
'%s:%i: Sub-entry without section' % (fpath, line_id))
|
||||
if not last_entry:
|
||||
raise ValueError(
|
||||
'%s:%i: Sub-entry without parent' % (fpath, line_id))
|
||||
last_entry.children.append(line.strip('- \n'))
|
||||
else:
|
||||
raise ValueError('Invalid line: ' + line)
|
||||
|
||||
if not entries:
|
||||
raise RuntimeError('No changelog files with contents found')
|
||||
|
||||
return entries
|
||||
|
||||
def consolidate_changelog(all_entries):
|
||||
for sections in all_entries.values():
|
||||
for section, entries in sections.items():
|
||||
entries.sort(key=lambda entry: entry.sort_key)
|
||||
new_entries = []
|
||||
for feature, group in itertools.groupby(entries,
|
||||
lambda e: e.feature):
|
||||
old_entries = list(group)
|
||||
children = list(itertools.chain(*[entry.children
|
||||
for entry in old_entries]))
|
||||
new_entry = copy.deepcopy(old_entries[0])
|
||||
new_entry.children = children
|
||||
new_entries.append(new_entry)
|
||||
entries[:] = new_entries
|
||||
|
||||
|
||||
|
||||
def print_changelog(versions, all_entries, path, replace=True, prefix=''):
|
||||
# all_entries: version -> section -> entry
|
||||
with open(path, 'w') as f:
|
||||
def write(line):
|
||||
if replace:
|
||||
line = replace_text(line, REPLACEMENTS)
|
||||
f.write(prefix + line + '\n')
|
||||
for version in versions:
|
||||
sections = all_entries[version]
|
||||
if not sections:
|
||||
continue
|
||||
version = 'DFHack ' + version
|
||||
write(version)
|
||||
write('=' * len(version))
|
||||
write('')
|
||||
for section in CHANGELOG_SECTIONS:
|
||||
entries = sections[section]
|
||||
if not entries:
|
||||
continue
|
||||
write(section)
|
||||
write('-' * len(section))
|
||||
for entry in entries:
|
||||
if len(entry.children) == 1:
|
||||
write('- ' + entry.feature + ': ' +
|
||||
entry.children[0].strip('- '))
|
||||
continue
|
||||
elif entry.children:
|
||||
write('- ' + entry.feature + ':')
|
||||
for child in entry.children:
|
||||
write(' - ' + child)
|
||||
else:
|
||||
write('- ' + entry.feature)
|
||||
write('')
|
||||
write('')
|
||||
|
||||
|
||||
def generate_changelog(all=False):
|
||||
entries = parse_changelog()
|
||||
|
||||
# scan for unrecognized sections
|
||||
for entry in entries:
|
||||
if entry.section not in CHANGELOG_SECTIONS:
|
||||
raise SphinxWarning('Unknown section: ' + entry.section)
|
||||
|
||||
# ordered versions
|
||||
versions = ['future']
|
||||
# map versions to stable versions
|
||||
stable_version_map = {}
|
||||
# version -> section -> entry
|
||||
stable_entries = collections.defaultdict(lambda:
|
||||
collections.defaultdict(list))
|
||||
dev_entries = collections.defaultdict(lambda:
|
||||
collections.defaultdict(list))
|
||||
|
||||
for entry in entries:
|
||||
# build list of all versions
|
||||
if entry.dev_version not in versions:
|
||||
versions.append(entry.dev_version)
|
||||
stable_version_map.setdefault(entry.dev_version, entry.stable_version)
|
||||
|
||||
if not entry.dev_only:
|
||||
# add non-dev-only entries to both changelogs
|
||||
stable_entries[entry.stable_version][entry.section].append(entry)
|
||||
dev_entries[entry.dev_version][entry.section].append(entry)
|
||||
|
||||
consolidate_changelog(stable_entries)
|
||||
consolidate_changelog(dev_entries)
|
||||
|
||||
print_changelog(versions, stable_entries, os.path.join(DOCS_ROOT, '_auto/news.rst'))
|
||||
print_changelog(versions, dev_entries, os.path.join(DOCS_ROOT, '_auto/news-dev.rst'))
|
||||
|
||||
if all:
|
||||
for version in versions:
|
||||
if version not in stable_version_map:
|
||||
print('warn: skipping ' + version)
|
||||
continue
|
||||
if stable_version_map[version] == version:
|
||||
version_entries = {version: stable_entries[version]}
|
||||
else:
|
||||
version_entries = {version: dev_entries[version]}
|
||||
print_changelog([version], version_entries,
|
||||
os.path.join(DOCS_ROOT, '_changelogs/%s-github.txt' % version),
|
||||
replace=False)
|
||||
print_changelog([version], version_entries,
|
||||
os.path.join(DOCS_ROOT, '_changelogs/%s-reddit.txt' % version),
|
||||
replace=False,
|
||||
prefix='> ')
|
||||
|
||||
return entries
|
||||
|
||||
def cli_entrypoint():
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-a', '--all', action='store_true',
|
||||
help='Print changelogs for all versions to docs/_changelogs')
|
||||
parser.add_argument('-c', '--check', action='store_true',
|
||||
help='Check that all entries are printed')
|
||||
args = parser.parse_args()
|
||||
|
||||
entries = generate_changelog(all=args.all)
|
||||
|
||||
if args.check:
|
||||
with open(os.path.join(DOCS_ROOT, '_auto/news.rst')) as f:
|
||||
content_stable = f.read()
|
||||
with open(os.path.join(DOCS_ROOT, '_auto/news-dev.rst')) as f:
|
||||
content_dev = f.read()
|
||||
for entry in entries:
|
||||
for description in entry.children:
|
||||
if not entry.dev_only and description not in content_stable:
|
||||
print('stable missing: ' + description)
|
||||
if description not in content_dev:
|
||||
print('dev missing: ' + description)
|
||||
|
||||
|
||||
def sphinx_entrypoint(app, config):
|
||||
try:
|
||||
generate_changelog()
|
||||
except SphinxError:
|
||||
raise
|
||||
except Exception as e:
|
||||
raise ExtensionError(str(e), e)
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.connect('config-inited', sphinx_entrypoint)
|
||||
|
||||
return {
|
||||
'version': '0.1',
|
||||
'parallel_read_safe': True,
|
||||
'parallel_write_safe': True,
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
# adapted from:
|
||||
# https://stackoverflow.com/a/16470058
|
||||
# https://pygments.org/docs/lexerdevelopment/
|
||||
|
||||
import re
|
||||
|
||||
from pygments.lexer import RegexLexer
|
||||
from pygments.token import Comment, Generic, Text
|
||||
from sphinx.highlighting import lexers
|
||||
|
||||
class DFHackLexer(RegexLexer):
|
||||
name = 'DFHack'
|
||||
aliases = ['dfhack']
|
||||
flags = re.IGNORECASE | re.MULTILINE
|
||||
|
||||
tokens = {
|
||||
'root': [
|
||||
(r'\#.+$', Comment.Single),
|
||||
(r'^\[[a-z]+\]\# ', Generic.Prompt),
|
||||
(r'.+?', Text),
|
||||
]
|
||||
}
|
||||
|
||||
def register_lexer(app):
|
||||
lexers['dfhack'] = DFHackLexer()
|
||||
|
||||
def setup(app):
|
||||
app.connect('builder-inited', register_lexer)
|
||||
|
||||
return {
|
||||
'version': '0.1',
|
||||
'parallel_read_safe': True,
|
||||
'parallel_write_safe': True,
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
import os
|
||||
|
||||
DFHACK_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
||||
DOCS_ROOT = os.path.join(DFHACK_ROOT, 'docs')
|
||||
|
||||
if not os.path.isdir(DOCS_ROOT):
|
||||
raise ReferenceError('docs root not found: %s' % DOCS_ROOT)
|
@ -0,0 +1,6 @@
|
||||
<p class="logo">
|
||||
<a href="{{ pathto(master_doc) }}">
|
||||
<img class="logo" src="{{ pathto('_static/' ~ theme_logo, 1) }}" alt="Logo"/>
|
||||
<h3 class="logo logo-name">Home</h3>
|
||||
</a>
|
||||
</p>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue