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
|
# Helper to download files as needed
|
||||||
|
|
||||||
function(file_md5_if_exists FILE VAR)
|
function(file_md5_if_exists FILE VAR)
|
||||||
if(EXISTS "${FILE}")
|
if(EXISTS "${FILE}")
|
||||||
file(MD5 "${FILE}" "${VAR}")
|
file(MD5 "${FILE}" "${VAR}")
|
||||||
set(${VAR} "${${VAR}}" PARENT_SCOPE)
|
set(${VAR} "${${VAR}}" PARENT_SCOPE)
|
||||||
else()
|
else()
|
||||||
set(${VAR} "" PARENT_SCOPE)
|
set(${VAR} "" PARENT_SCOPE)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(search_downloads FILE_MD5 VAR)
|
function(search_downloads FILE_MD5 VAR)
|
||||||
set(${VAR} "" PARENT_SCOPE)
|
set(${VAR} "" PARENT_SCOPE)
|
||||||
file(GLOB FILES ${CMAKE_SOURCE_DIR}/CMake/downloads/*)
|
file(GLOB FILES ${CMAKE_SOURCE_DIR}/CMake/downloads/*)
|
||||||
foreach(FILE ${FILES})
|
foreach(FILE ${FILES})
|
||||||
file(MD5 "${FILE}" CUR_MD5)
|
file(MD5 "${FILE}" CUR_MD5)
|
||||||
if("${CUR_MD5}" STREQUAL "${FILE_MD5}")
|
if("${CUR_MD5}" STREQUAL "${FILE_MD5}")
|
||||||
set(${VAR} ${FILE} PARENT_SCOPE)
|
set(${VAR} ${FILE} PARENT_SCOPE)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(download_file URL DEST EXPECTED_MD5)
|
function(download_file URL DEST EXPECTED_MD5)
|
||||||
get_filename_component(FILENAME "${URL}" NAME)
|
get_filename_component(FILENAME "${URL}" NAME)
|
||||||
file_md5_if_exists("${DEST}" CUR_MD5)
|
file_md5_if_exists("${DEST}" CUR_MD5)
|
||||||
|
|
||||||
if(NOT "${EXPECTED_MD5}" STREQUAL "${CUR_MD5}")
|
if(NOT "${EXPECTED_MD5}" STREQUAL "${CUR_MD5}")
|
||||||
search_downloads(${EXPECTED_MD5} DLPATH)
|
search_downloads(${EXPECTED_MD5} DLPATH)
|
||||||
if(NOT("${DLPATH}" STREQUAL ""))
|
if(NOT("${DLPATH}" STREQUAL ""))
|
||||||
message("* Copying ${FILENAME} from ${DLPATH}")
|
message("* Copying ${FILENAME} from ${DLPATH}")
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy
|
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy
|
||||||
"${DLPATH}"
|
"${DLPATH}"
|
||||||
"${DEST}")
|
"${DEST}")
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
message("* Downloading ${FILENAME}")
|
message("* Downloading ${FILENAME}")
|
||||||
file(DOWNLOAD "${URL}" "${DEST}" EXPECTED_MD5 "${EXPECTED_MD5}" SHOW_PROGRESS)
|
file(DOWNLOAD "${URL}" "${DEST}" EXPECTED_MD5 "${EXPECTED_MD5}" SHOW_PROGRESS)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Download a file and uncompress it
|
# Download a file and uncompress it
|
||||||
function(download_file_unzip URL ZIP_TYPE ZIP_DEST ZIP_MD5 UNZIP_DEST UNZIP_MD5)
|
function(download_file_unzip URL ZIP_TYPE ZIP_DEST ZIP_MD5 UNZIP_DEST UNZIP_MD5)
|
||||||
get_filename_component(FILENAME "${URL}" NAME)
|
get_filename_component(FILENAME "${URL}" NAME)
|
||||||
file_md5_if_exists("${UNZIP_DEST}" CUR_UNZIP_MD5)
|
file_md5_if_exists("${UNZIP_DEST}" CUR_UNZIP_MD5)
|
||||||
|
|
||||||
# Redownload if the MD5 of the uncompressed file doesn't match
|
# Redownload if the MD5 of the uncompressed file doesn't match
|
||||||
if(NOT "${UNZIP_MD5}" STREQUAL "${CUR_UNZIP_MD5}")
|
if(NOT "${UNZIP_MD5}" STREQUAL "${CUR_UNZIP_MD5}")
|
||||||
download_file("${URL}" "${ZIP_DEST}" "${ZIP_MD5}")
|
download_file("${URL}" "${ZIP_DEST}" "${ZIP_MD5}")
|
||||||
|
|
||||||
if(EXISTS "${ZIP_DEST}")
|
if(EXISTS "${ZIP_DEST}")
|
||||||
message("* Decompressing ${FILENAME}")
|
message("* Decompressing ${FILENAME}")
|
||||||
if("${ZIP_TYPE}" STREQUAL "gz")
|
if("${ZIP_TYPE}" STREQUAL "gz")
|
||||||
execute_process(COMMAND
|
execute_process(COMMAND
|
||||||
"${PERL_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/depends/gunzip.pl"
|
"${PERL_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/depends/gunzip.pl"
|
||||||
"${ZIP_DEST}" --force)
|
"${ZIP_DEST}" --force)
|
||||||
else()
|
else()
|
||||||
message(SEND_ERROR "Unknown ZIP_TYPE: ${ZIP_TYPE}")
|
message(SEND_ERROR "Unknown ZIP_TYPE: ${ZIP_TYPE}")
|
||||||
endif()
|
endif()
|
||||||
if(NOT EXISTS "${UNZIP_DEST}")
|
if(NOT EXISTS "${UNZIP_DEST}")
|
||||||
message(SEND_ERROR "File failed to unzip to ${UNZIP_DEST}")
|
message(SEND_ERROR "File failed to unzip to ${UNZIP_DEST}")
|
||||||
else()
|
else()
|
||||||
file(MD5 "${UNZIP_DEST}" CUR_UNZIP_MD5)
|
file(MD5 "${UNZIP_DEST}" CUR_UNZIP_MD5)
|
||||||
if(NOT "${UNZIP_MD5}" STREQUAL "${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}")
|
message(SEND_ERROR "MD5 mismatch: ${UNZIP_DEST}: expected ${UNZIP_MD5}, got ${CUR_UNZIP_MD5}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
|
||||||
endfunction()
|
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 )
|
project(lua CXX)
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
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())
|
# Make bit32 library available (for things like bit32.extract())
|
||||||
ADD_DEFINITIONS(-DLUA_COMPAT_BITLIB)
|
add_definitions(-DLUA_COMPAT_BITLIB)
|
||||||
|
|
||||||
IF(WIN32)
|
if(WIN32)
|
||||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE /wd4334 )
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE /wd4334)
|
||||||
ELSE()
|
else()
|
||||||
ADD_DEFINITIONS ( -DLUA_USE_POSIX -DLUA_USE_DLOPEN )
|
add_definitions(-DLUA_USE_POSIX -DLUA_USE_DLOPEN)
|
||||||
SET ( LIBS m dl )
|
set(LIBS m dl)
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
IF(UNIX)
|
if(UNIX)
|
||||||
ADD_DEFINITIONS(-DLINUX_BUILD)
|
add_definitions(-DLINUX_BUILD)
|
||||||
IF(DFHACK_BUILD_64)
|
if(DFHACK_BUILD_64)
|
||||||
SET(CMAKE_C_FLAGS "-m64 -mno-avx")
|
set(CMAKE_C_FLAGS "-m64 -mno-avx")
|
||||||
ELSE()
|
else()
|
||||||
SET(CMAKE_C_FLAGS "-m32")
|
set(CMAKE_C_FLAGS "-m32")
|
||||||
ENDIF()
|
endif()
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
SET (HDR_LIBLUA
|
set(HDR_LIBLUA
|
||||||
include/lapi.h
|
include/lapi.h
|
||||||
include/lauxlib.h
|
include/lauxlib.h
|
||||||
include/lcode.h
|
include/lcode.h
|
||||||
include/lctype.h
|
include/lctype.h
|
||||||
include/ldebug.h
|
include/ldebug.h
|
||||||
include/ldo.h
|
include/ldo.h
|
||||||
include/lfunc.h
|
include/lfunc.h
|
||||||
include/lgc.h
|
include/lgc.h
|
||||||
include/llex.h
|
include/llex.h
|
||||||
include/llimits.h
|
include/llimits.h
|
||||||
include/lmem.h
|
include/lmem.h
|
||||||
include/lobject.h
|
include/lobject.h
|
||||||
include/lopcodes.h
|
include/lopcodes.h
|
||||||
include/lparser.h
|
include/lparser.h
|
||||||
include/lstate.h
|
include/lstate.h
|
||||||
include/lstring.h
|
include/lstring.h
|
||||||
include/ltable.h
|
include/ltable.h
|
||||||
include/ltm.h
|
include/ltm.h
|
||||||
include/lua.h
|
include/lua.h
|
||||||
include/luaconf.h
|
include/luaconf.h
|
||||||
include/lualib.h
|
include/lualib.h
|
||||||
include/lundump.h
|
include/lundump.h
|
||||||
include/lvm.h
|
include/lvm.h
|
||||||
include/lzio.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)
|
include_directories(include)
|
||||||
|
|
||||||
# Build Libraries
|
# Build Libraries
|
||||||
SET (SRC_LIBLUA
|
set(SRC_LIBLUA
|
||||||
src/lapi.c
|
src/lapi.c
|
||||||
src/lauxlib.c
|
src/lauxlib.c
|
||||||
src/lbaselib.c
|
src/lbaselib.c
|
||||||
src/lbitlib.c
|
src/lbitlib.c
|
||||||
src/lcode.c
|
src/lcode.c
|
||||||
src/lcorolib.c
|
src/lcorolib.c
|
||||||
src/lctype.c
|
src/lctype.c
|
||||||
src/ldblib.c
|
src/ldblib.c
|
||||||
src/ldebug.c
|
src/ldebug.c
|
||||||
src/ldo.c
|
src/ldo.c
|
||||||
src/ldump.c
|
src/ldump.c
|
||||||
src/lfunc.c
|
src/lfunc.c
|
||||||
src/lgc.c
|
src/lgc.c
|
||||||
src/linit.c
|
src/linit.c
|
||||||
src/liolib.c
|
src/liolib.c
|
||||||
src/llex.c
|
src/llex.c
|
||||||
src/lmathlib.c
|
src/lmathlib.c
|
||||||
src/lmem.c
|
src/lmem.c
|
||||||
src/loadlib.c
|
src/loadlib.c
|
||||||
src/lobject.c
|
src/lobject.c
|
||||||
src/lopcodes.c
|
src/lopcodes.c
|
||||||
src/loslib.c
|
src/loslib.c
|
||||||
src/lparser.c
|
src/lparser.c
|
||||||
src/lstate.c
|
src/lstate.c
|
||||||
src/lstring.c
|
src/lstring.c
|
||||||
src/lstrlib.c
|
src/lstrlib.c
|
||||||
src/ltable.c
|
src/ltable.c
|
||||||
src/ltablib.c
|
src/ltablib.c
|
||||||
src/ltm.c
|
src/ltm.c
|
||||||
src/lundump.c
|
src/lundump.c
|
||||||
src/lutf8lib.c
|
src/lutf8lib.c
|
||||||
src/lvm.c
|
src/lvm.c
|
||||||
src/lzio.c
|
src/lzio.c
|
||||||
)
|
)
|
||||||
# compile with C++ compiler
|
# compile with C++ compiler
|
||||||
set_source_files_properties(${SRC_LIBLUA} PROPERTIES LANGUAGE CXX)
|
set_source_files_properties(${SRC_LIBLUA} PROPERTIES LANGUAGE CXX)
|
||||||
# append headers to sources to make them show up in MSVC GUI
|
# 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} )
|
add_library(lua SHARED ${SRC_LIBLUA})
|
||||||
TARGET_LINK_LIBRARIES ( lua ${LIBS})
|
target_link_libraries(lua ${LIBS})
|
||||||
|
|
||||||
install(TARGETS lua
|
if(MSVC)
|
||||||
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
# need no space to prevent /FI from being stripped: https://github.com/DFHack/dfhack/issues/1455
|
||||||
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
target_compile_options(lua PRIVATE "/FIdfhack_llimits.h")
|
||||||
|
else()
|
||||||
IDE_FOLDER(lua "Depends")
|
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 )
|
install(TARGETS lua
|
||||||
#SET ( SRC_LUAC src/luac.c src/print.c )
|
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
||||||
|
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
||||||
#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 )
|
|
||||||
|
|
||||||
|
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)
|
project(dfhack-md5)
|
||||||
ADD_LIBRARY(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp)
|
add_library(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp)
|
||||||
IDE_FOLDER(dfhack-md5 "Depends")
|
ide_folder(dfhack-md5 "Depends")
|
||||||
IF(UNIX)
|
if(UNIX)
|
||||||
SET_TARGET_PROPERTIES(dfhack-md5 PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
|
set_target_properties(dfhack-md5 PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
|
||||||
ENDIF()
|
endif()
|
||||||
|
@ -1,195 +1,195 @@
|
|||||||
PROJECT(protobuf)
|
project(protobuf)
|
||||||
|
|
||||||
SET(HASH_MAP_H <unordered_map>)
|
set(HASH_MAP_H <unordered_map>)
|
||||||
SET(HASH_SET_H <unordered_map>)
|
set(HASH_SET_H <unordered_map>)
|
||||||
SET(HASH_NAMESPACE std)
|
set(HASH_NAMESPACE std)
|
||||||
SET(HASH_MAP_CLASS unordered_map)
|
set(HASH_MAP_CLASS unordered_map)
|
||||||
SET(HASH_SET_CLASS unordered_set)
|
set(HASH_SET_CLASS unordered_set)
|
||||||
SET(HAVE_HASH_MAP 1)
|
set(HAVE_HASH_MAP 1)
|
||||||
SET(HAVE_HASH_SET 1)
|
set(HAVE_HASH_SET 1)
|
||||||
|
|
||||||
IF (HAVE_HASH_MAP EQUAL 0)
|
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.")
|
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()
|
endif()
|
||||||
|
|
||||||
IF(UNIX)
|
if(UNIX)
|
||||||
FIND_PACKAGE(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
||||||
|
|
||||||
SET(LIBPROTOBUF_LITE_HDRS
|
set(LIBPROTOBUF_LITE_HDRS
|
||||||
google/protobuf/io/coded_stream.h
|
google/protobuf/io/coded_stream.h
|
||||||
google/protobuf/io/coded_stream_inl.h
|
google/protobuf/io/coded_stream_inl.h
|
||||||
google/protobuf/stubs/common.h
|
google/protobuf/stubs/common.h
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/config.h
|
${CMAKE_CURRENT_BINARY_DIR}/config.h
|
||||||
google/protobuf/extension_set.h
|
google/protobuf/extension_set.h
|
||||||
google/protobuf/generated_message_util.h
|
google/protobuf/generated_message_util.h
|
||||||
google/protobuf/stubs/hash.h
|
google/protobuf/stubs/hash.h
|
||||||
google/protobuf/stubs/map-util.h
|
google/protobuf/stubs/map-util.h
|
||||||
google/protobuf/message_lite.h
|
google/protobuf/message_lite.h
|
||||||
google/protobuf/stubs/once.h
|
google/protobuf/stubs/once.h
|
||||||
google/protobuf/repeated_field.h
|
google/protobuf/repeated_field.h
|
||||||
google/protobuf/stubs/stl_util-inl.h
|
google/protobuf/stubs/stl_util-inl.h
|
||||||
google/protobuf/wire_format_lite.h
|
google/protobuf/wire_format_lite.h
|
||||||
google/protobuf/wire_format_lite_inl.h
|
google/protobuf/wire_format_lite_inl.h
|
||||||
google/protobuf/io/zero_copy_stream.h
|
google/protobuf/io/zero_copy_stream.h
|
||||||
google/protobuf/io/zero_copy_stream_impl_lite.h
|
google/protobuf/io/zero_copy_stream_impl_lite.h
|
||||||
google/protobuf/io/gzip_stream.h
|
google/protobuf/io/gzip_stream.h
|
||||||
google/protobuf/io/zero_copy_stream_impl.h
|
google/protobuf/io/zero_copy_stream_impl.h
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(LIBPROTOBUF_FULL_HDRS
|
set(LIBPROTOBUF_FULL_HDRS
|
||||||
google/protobuf/descriptor.h
|
google/protobuf/descriptor.h
|
||||||
google/protobuf/descriptor.pb.h
|
google/protobuf/descriptor.pb.h
|
||||||
google/protobuf/descriptor_database.h
|
google/protobuf/descriptor_database.h
|
||||||
google/protobuf/dynamic_message.h
|
google/protobuf/dynamic_message.h
|
||||||
google/protobuf/generated_message_reflection.h
|
google/protobuf/generated_message_reflection.h
|
||||||
google/protobuf/compiler/importer.h
|
google/protobuf/compiler/importer.h
|
||||||
google/protobuf/message.h
|
google/protobuf/message.h
|
||||||
google/protobuf/compiler/parser.h
|
google/protobuf/compiler/parser.h
|
||||||
google/protobuf/io/printer.h
|
google/protobuf/io/printer.h
|
||||||
google/protobuf/reflection_ops.h
|
google/protobuf/reflection_ops.h
|
||||||
google/protobuf/service.h
|
google/protobuf/service.h
|
||||||
google/protobuf/stubs/strutil.h
|
google/protobuf/stubs/strutil.h
|
||||||
google/protobuf/stubs/substitute.h
|
google/protobuf/stubs/substitute.h
|
||||||
google/protobuf/text_format.h
|
google/protobuf/text_format.h
|
||||||
google/protobuf/io/tokenizer.h
|
google/protobuf/io/tokenizer.h
|
||||||
google/protobuf/unknown_field_set.h
|
google/protobuf/unknown_field_set.h
|
||||||
google/protobuf/wire_format.h
|
google/protobuf/wire_format.h
|
||||||
)
|
)
|
||||||
|
|
||||||
LIST(APPEND LIBPROTOBUF_FULL_HDRS ${LIBPROTOBUF_LITE_HDRS})
|
list(APPEND LIBPROTOBUF_FULL_HDRS ${LIBPROTOBUF_LITE_HDRS})
|
||||||
|
|
||||||
SET(LIBPROTOBUF_LITE_SRCS
|
set(LIBPROTOBUF_LITE_SRCS
|
||||||
google/protobuf/io/coded_stream.cc
|
google/protobuf/io/coded_stream.cc
|
||||||
google/protobuf/stubs/common.cc
|
google/protobuf/stubs/common.cc
|
||||||
google/protobuf/extension_set.cc
|
google/protobuf/extension_set.cc
|
||||||
google/protobuf/generated_message_util.cc
|
google/protobuf/generated_message_util.cc
|
||||||
google/protobuf/message_lite.cc
|
google/protobuf/message_lite.cc
|
||||||
google/protobuf/stubs/once.cc
|
google/protobuf/stubs/once.cc
|
||||||
google/protobuf/repeated_field.cc
|
google/protobuf/repeated_field.cc
|
||||||
google/protobuf/wire_format_lite.cc
|
google/protobuf/wire_format_lite.cc
|
||||||
google/protobuf/io/zero_copy_stream.cc
|
google/protobuf/io/zero_copy_stream.cc
|
||||||
google/protobuf/io/zero_copy_stream_impl_lite.cc
|
google/protobuf/io/zero_copy_stream_impl_lite.cc
|
||||||
google/protobuf/io/gzip_stream.cc
|
google/protobuf/io/gzip_stream.cc
|
||||||
google/protobuf/io/zero_copy_stream_impl.cc
|
google/protobuf/io/zero_copy_stream_impl.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(LIBPROTOBUF_FULL_SRCS
|
set(LIBPROTOBUF_FULL_SRCS
|
||||||
google/protobuf/descriptor.cc
|
google/protobuf/descriptor.cc
|
||||||
google/protobuf/descriptor.pb.cc
|
google/protobuf/descriptor.pb.cc
|
||||||
google/protobuf/descriptor_database.cc
|
google/protobuf/descriptor_database.cc
|
||||||
google/protobuf/dynamic_message.cc
|
google/protobuf/dynamic_message.cc
|
||||||
google/protobuf/extension_set_heavy.cc
|
google/protobuf/extension_set_heavy.cc
|
||||||
google/protobuf/generated_message_reflection.cc
|
google/protobuf/generated_message_reflection.cc
|
||||||
google/protobuf/compiler/importer.cc
|
google/protobuf/compiler/importer.cc
|
||||||
google/protobuf/io/gzip_stream.cc
|
google/protobuf/io/gzip_stream.cc
|
||||||
google/protobuf/message.cc
|
google/protobuf/message.cc
|
||||||
google/protobuf/compiler/parser.cc
|
google/protobuf/compiler/parser.cc
|
||||||
google/protobuf/io/printer.cc
|
google/protobuf/io/printer.cc
|
||||||
google/protobuf/reflection_ops.cc
|
google/protobuf/reflection_ops.cc
|
||||||
google/protobuf/service.cc
|
google/protobuf/service.cc
|
||||||
google/protobuf/stubs/structurally_valid.cc
|
google/protobuf/stubs/structurally_valid.cc
|
||||||
google/protobuf/stubs/strutil.cc
|
google/protobuf/stubs/strutil.cc
|
||||||
google/protobuf/stubs/substitute.cc
|
google/protobuf/stubs/substitute.cc
|
||||||
google/protobuf/text_format.cc
|
google/protobuf/text_format.cc
|
||||||
google/protobuf/io/tokenizer.cc
|
google/protobuf/io/tokenizer.cc
|
||||||
google/protobuf/unknown_field_set.cc
|
google/protobuf/unknown_field_set.cc
|
||||||
google/protobuf/wire_format.cc
|
google/protobuf/wire_format.cc
|
||||||
google/protobuf/io/zero_copy_stream_impl.cc
|
google/protobuf/io/zero_copy_stream_impl.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(LIBPROTOC_HDRS
|
set(LIBPROTOC_HDRS
|
||||||
google/protobuf/compiler/code_generator.h
|
google/protobuf/compiler/code_generator.h
|
||||||
google/protobuf/compiler/command_line_interface.h
|
google/protobuf/compiler/command_line_interface.h
|
||||||
google/protobuf/compiler/cpp/cpp_enum.h
|
google/protobuf/compiler/cpp/cpp_enum.h
|
||||||
google/protobuf/compiler/cpp/cpp_enum_field.h
|
google/protobuf/compiler/cpp/cpp_enum_field.h
|
||||||
google/protobuf/compiler/cpp/cpp_extension.h
|
google/protobuf/compiler/cpp/cpp_extension.h
|
||||||
google/protobuf/compiler/cpp/cpp_field.h
|
google/protobuf/compiler/cpp/cpp_field.h
|
||||||
google/protobuf/compiler/cpp/cpp_file.h
|
google/protobuf/compiler/cpp/cpp_file.h
|
||||||
google/protobuf/compiler/cpp/cpp_generator.h
|
google/protobuf/compiler/cpp/cpp_generator.h
|
||||||
google/protobuf/compiler/cpp/cpp_helpers.h
|
google/protobuf/compiler/cpp/cpp_helpers.h
|
||||||
google/protobuf/compiler/cpp/cpp_message.h
|
google/protobuf/compiler/cpp/cpp_message.h
|
||||||
google/protobuf/compiler/cpp/cpp_message_field.h
|
google/protobuf/compiler/cpp/cpp_message_field.h
|
||||||
google/protobuf/compiler/cpp/cpp_primitive_field.h
|
google/protobuf/compiler/cpp/cpp_primitive_field.h
|
||||||
google/protobuf/compiler/cpp/cpp_service.h
|
google/protobuf/compiler/cpp/cpp_service.h
|
||||||
google/protobuf/compiler/cpp/cpp_string_field.h
|
google/protobuf/compiler/cpp/cpp_string_field.h
|
||||||
google/protobuf/compiler/plugin.h
|
google/protobuf/compiler/plugin.h
|
||||||
google/protobuf/compiler/plugin.pb.h
|
google/protobuf/compiler/plugin.pb.h
|
||||||
google/protobuf/compiler/subprocess.h
|
google/protobuf/compiler/subprocess.h
|
||||||
google/protobuf/compiler/zip_writer.h
|
google/protobuf/compiler/zip_writer.h
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(LIBPROTOC_SRCS
|
set(LIBPROTOC_SRCS
|
||||||
google/protobuf/compiler/code_generator.cc
|
google/protobuf/compiler/code_generator.cc
|
||||||
google/protobuf/compiler/command_line_interface.cc
|
google/protobuf/compiler/command_line_interface.cc
|
||||||
google/protobuf/compiler/cpp/cpp_enum.cc
|
google/protobuf/compiler/cpp/cpp_enum.cc
|
||||||
google/protobuf/compiler/cpp/cpp_enum_field.cc
|
google/protobuf/compiler/cpp/cpp_enum_field.cc
|
||||||
google/protobuf/compiler/cpp/cpp_extension.cc
|
google/protobuf/compiler/cpp/cpp_extension.cc
|
||||||
google/protobuf/compiler/cpp/cpp_field.cc
|
google/protobuf/compiler/cpp/cpp_field.cc
|
||||||
google/protobuf/compiler/cpp/cpp_file.cc
|
google/protobuf/compiler/cpp/cpp_file.cc
|
||||||
google/protobuf/compiler/cpp/cpp_generator.cc
|
google/protobuf/compiler/cpp/cpp_generator.cc
|
||||||
google/protobuf/compiler/cpp/cpp_helpers.cc
|
google/protobuf/compiler/cpp/cpp_helpers.cc
|
||||||
google/protobuf/compiler/cpp/cpp_message.cc
|
google/protobuf/compiler/cpp/cpp_message.cc
|
||||||
google/protobuf/compiler/cpp/cpp_message_field.cc
|
google/protobuf/compiler/cpp/cpp_message_field.cc
|
||||||
google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
google/protobuf/compiler/cpp/cpp_primitive_field.cc
|
||||||
google/protobuf/compiler/cpp/cpp_service.cc
|
google/protobuf/compiler/cpp/cpp_service.cc
|
||||||
google/protobuf/compiler/cpp/cpp_string_field.cc
|
google/protobuf/compiler/cpp/cpp_string_field.cc
|
||||||
google/protobuf/compiler/plugin.cc
|
google/protobuf/compiler/plugin.cc
|
||||||
google/protobuf/compiler/plugin.pb.cc
|
google/protobuf/compiler/plugin.pb.cc
|
||||||
google/protobuf/compiler/subprocess.cc
|
google/protobuf/compiler/subprocess.cc
|
||||||
google/protobuf/compiler/zip_writer.cc
|
google/protobuf/compiler/zip_writer.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
LIST(APPEND LIBPROTOBUF_FULL_SRCS ${LIBPROTOBUF_LITE_SRCS})
|
list(APPEND LIBPROTOBUF_FULL_SRCS ${LIBPROTOBUF_LITE_SRCS})
|
||||||
|
|
||||||
IF(CMAKE_COMPILER_IS_GNUCC)
|
if(CMAKE_COMPILER_IS_GNUCC)
|
||||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wno-sign-compare")
|
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")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result -Wno-unused-local-typedefs -Wno-misleading-indentation -Wno-class-memaccess")
|
||||||
ELSEIF(MSVC)
|
elseif(MSVC)
|
||||||
# Disable warnings for integer conversion to smaller type
|
# Disable warnings for integer conversion to smaller type
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267")
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
SET(PROTOBUF_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
|
set(PROTOBUF_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
|
include_directories(${ZLIB_INCLUDE_DIRS})
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
# Protobuf shared libraries
|
# Protobuf shared libraries
|
||||||
|
|
||||||
ADD_LIBRARY(protobuf SHARED ${LIBPROTOBUF_FULL_SRCS} ${LIBPROTOBUF_FULL_HDRS})
|
add_library(protobuf SHARED ${LIBPROTOBUF_FULL_SRCS} ${LIBPROTOBUF_FULL_HDRS})
|
||||||
IDE_FOLDER(protobuf "Depends")
|
ide_folder(protobuf "Depends")
|
||||||
ADD_LIBRARY(protobuf-lite SHARED ${LIBPROTOBUF_LITE_SRCS} ${LIBPROTOBUF_LITE_HDRS})
|
add_library(protobuf-lite SHARED ${LIBPROTOBUF_LITE_SRCS} ${LIBPROTOBUF_LITE_HDRS})
|
||||||
IDE_FOLDER(protobuf-lite "Depends")
|
ide_folder(protobuf-lite "Depends")
|
||||||
|
|
||||||
SET_TARGET_PROPERTIES(protobuf PROPERTIES COMPILE_DEFINITIONS LIBPROTOBUF_EXPORTS)
|
set_target_properties(protobuf PROPERTIES COMPILE_DEFINITIONS LIBPROTOBUF_EXPORTS)
|
||||||
SET_TARGET_PROPERTIES(protobuf-lite 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 ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES})
|
||||||
TARGET_LINK_LIBRARIES(protobuf-lite ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES})
|
target_link_libraries(protobuf-lite ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES})
|
||||||
|
|
||||||
install(TARGETS protobuf-lite
|
install(TARGETS protobuf-lite
|
||||||
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION}
|
||||||
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION})
|
||||||
|
|
||||||
IF(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
# Protobuf compiler shared library
|
# Protobuf compiler shared library
|
||||||
|
|
||||||
ADD_LIBRARY(protoc SHARED ${LIBPROTOC_SRCS} ${LIBPROTOC_HDRS})
|
add_library(protoc SHARED ${LIBPROTOC_SRCS} ${LIBPROTOC_HDRS})
|
||||||
IDE_FOLDER(protoc "Depends")
|
ide_folder(protoc "Depends")
|
||||||
|
|
||||||
SET_TARGET_PROPERTIES(protoc PROPERTIES COMPILE_DEFINITIONS LIBPROTOC_EXPORTS)
|
set_target_properties(protoc PROPERTIES COMPILE_DEFINITIONS LIBPROTOC_EXPORTS)
|
||||||
TARGET_LINK_LIBRARIES(protoc protobuf)
|
target_link_libraries(protoc protobuf)
|
||||||
|
|
||||||
# Protobuf compiler executable
|
# 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)
|
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")
|
ide_folder(protoc-bin "Depends")
|
||||||
|
|
||||||
SET_TARGET_PROPERTIES(protoc-bin PROPERTIES OUTPUT_NAME protoc)
|
set_target_properties(protoc-bin PROPERTIES OUTPUT_NAME protoc)
|
||||||
TARGET_LINK_LIBRARIES(protoc-bin protoc)
|
target_link_libraries(protoc-bin protoc)
|
||||||
|
|
||||||
EXPORT(TARGETS protoc-bin FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake )
|
export(TARGETS protoc-bin FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake )
|
||||||
ENDIF()
|
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)
|
if(NOT TinyXML_FOUND)
|
||||||
project(dfhack-tinyxml)
|
project(dfhack-tinyxml)
|
||||||
ADD_LIBRARY(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp)
|
add_library(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp)
|
||||||
IDE_FOLDER(dfhack-tinyxml "Depends")
|
ide_folder(dfhack-tinyxml "Depends")
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
PROJECT(dfhack-tinythread)
|
project(dfhack-tinythread)
|
||||||
ADD_LIBRARY(dfhack-tinythread STATIC EXCLUDE_FROM_ALL tinythread.cpp tinythread.h fast_mutex.h)
|
add_library(dfhack-tinythread STATIC EXCLUDE_FROM_ALL tinythread.cpp tinythread.h)
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
target_link_libraries(dfhack-tinythread pthread)
|
target_link_libraries(dfhack-tinythread pthread)
|
||||||
endif()
|
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 os, sys
|
||||||
import copy
|
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'sphinx_extensions'))
|
||||||
import itertools
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
CHANGELOG_SECTIONS = [
|
from dfhack.changelog import cli_entrypoint
|
||||||
'New Plugins',
|
cli_entrypoint()
|
||||||
'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)
|
|
||||||
|
@ -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