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,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
												
											
										
									
								| @ -0,0 +1,61 @@ | ||||
| /**
 | ||||
| Copyright © 2018 Pauli <suokkos@gmail.com> | ||||
| 
 | ||||
| This software is provided 'as-is', without any express or implied | ||||
| warranty. In no event will the authors be held liable for any | ||||
| damages arising from the use of this software. | ||||
| 
 | ||||
| Permission is granted to anyone to use this software for any | ||||
| purpose, including commercial applications, and to alter it and | ||||
| redistribute it freely, subject to the following restrictions: | ||||
| 
 | ||||
| 1. The origin of this software must not be misrepresented; you must | ||||
|    not claim that you wrote the original software. If you use this | ||||
|    software in a product, an acknowledgment in the product | ||||
|    documentation would be appreciated but is not required. | ||||
| 
 | ||||
| 2. Altered source versions must be plainly marked as such, and | ||||
|    must not be misrepresented as being the original software. | ||||
| 
 | ||||
| 3. This notice may not be removed or altered from any source | ||||
|    distribution. | ||||
|  */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #ifdef _MSC_VER | ||||
| #include <windows.h> | ||||
| #else | ||||
| #include <pthread.h> | ||||
| #endif | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| 
 | ||||
| /*! \file dfhack_llimits.h
 | ||||
|  * dfhack specific lua porting header that overrides lua defaults for thread | ||||
|  * safety. | ||||
|  */ | ||||
| 
 | ||||
| #ifdef _MSC_VER | ||||
| typedef CRITICAL_SECTION mutex_t; | ||||
| #else | ||||
| typedef pthread_mutex_t mutex_t; | ||||
| #endif | ||||
| 
 | ||||
| struct lua_extra_state { | ||||
|     mutex_t* mutex; | ||||
| }; | ||||
| 
 | ||||
| #define luai_mutex(L) ((lua_extra_state*)lua_getextraspace(L))->mutex | ||||
| 
 | ||||
| #ifdef _MSC_VER | ||||
| #define luai_userstateopen(L) luai_mutex(L) = (mutex_t*)malloc(sizeof(mutex_t)); InitializeCriticalSection(luai_mutex(L)) | ||||
| #define luai_userstateclose(L) lua_unlock(L); DeleteCriticalSection(luai_mutex(L)); free(luai_mutex(L)) | ||||
| #define lua_lock(L) EnterCriticalSection(luai_mutex(L)) | ||||
| #define lua_unlock(L) LeaveCriticalSection(luai_mutex(L)) | ||||
| #else | ||||
| #define luai_userstateopen(L) luai_mutex(L) = (mutex_t*)malloc(sizeof(mutex_t)); *luai_mutex(L) = PTHREAD_MUTEX_INITIALIZER | ||||
| #define luai_userstateclose(L) lua_unlock(L); pthread_mutex_destroy(luai_mutex(L)); free(luai_mutex(L)) | ||||
| #define lua_lock(L) pthread_mutex_lock(luai_mutex(L)) | ||||
| #define lua_unlock(L) pthread_mutex_unlock(luai_mutex(L)) | ||||
| #endif | ||||
| @ -0,0 +1 @@ | ||||
| Subproject commit 19b52ca0298c8942df82dd441d7a4a588db4c413 | ||||
| @ -1,6 +1,6 @@ | ||||
| project(dfhack-md5) | ||||
| ADD_LIBRARY(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp) | ||||
| IDE_FOLDER(dfhack-md5 "Depends") | ||||
| IF(UNIX) | ||||
|     SET_TARGET_PROPERTIES(dfhack-md5 PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing") | ||||
| ENDIF() | ||||
| add_library(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp) | ||||
| ide_folder(dfhack-md5 "Depends") | ||||
| if(UNIX) | ||||
|     set_target_properties(dfhack-md5 PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing") | ||||
| endif() | ||||
|  | ||||
| @ -0,0 +1,6 @@ | ||||
| project(sizecheck) | ||||
| add_library(sizecheck SHARED sizecheck.cpp) | ||||
| ide_folder(sizecheck "Depends") | ||||
| install(TARGETS sizecheck | ||||
|     LIBRARY DESTINATION ${DFHACK_LIBRARY_DESTINATION} | ||||
|     RUNTIME DESTINATION ${DFHACK_LIBRARY_DESTINATION}) | ||||
| @ -0,0 +1,76 @@ | ||||
| // adapted from https://github.com/mifki/df-sizecheck/blob/master/b.cpp
 | ||||
| // usage:
 | ||||
| // linux: PRELOAD_LIB=hack/libsizecheck.so ./dfhack
 | ||||
| 
 | ||||
| #include <cstdint> | ||||
| #include <cstdio> | ||||
| #include <cstdlib> | ||||
| #include <cstring> | ||||
| #include <memory> | ||||
| 
 | ||||
| using namespace std; | ||||
| 
 | ||||
| const uint32_t MAGIC = 0xdfdf4ac8; | ||||
| bool initialized = false; | ||||
| int perturb = -1; | ||||
| 
 | ||||
| void init() { | ||||
| #ifndef _LINUX | ||||
|     if (getenv("MALLOC_PERTURB_")) { | ||||
|         perturb = atoi(getenv("MALLOC_PERTURB_")); | ||||
|     } | ||||
| #endif | ||||
|     initialized = true; | ||||
| } | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
| static int posix_memalign(void **ptr, size_t alignment, size_t size) | ||||
| { | ||||
|     if ((*ptr = _aligned_malloc(size, alignment))) | ||||
|     { | ||||
|         return 0; | ||||
|     } | ||||
| 
 | ||||
|     return errno; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| void* alloc(size_t n) { | ||||
|     if (!initialized) { | ||||
|         init(); | ||||
|     } | ||||
|     void* addr; | ||||
|     if (posix_memalign(&addr, 32, n + 16) != 0) { | ||||
|         return addr; | ||||
|     } | ||||
|     memset(addr, 0, 16); | ||||
|     *(size_t*)addr = n; | ||||
|     *(uint32_t*)((uint8_t*)addr + 8) = MAGIC; | ||||
|     if (perturb > 0) { | ||||
|         memset((uint8_t*)addr + 16, ~(perturb & 0xff), n); | ||||
|     } | ||||
|     return (uint8_t*)addr + 16; | ||||
| } | ||||
| 
 | ||||
| void dealloc(void* addr) { | ||||
|     if (!initialized) { | ||||
|         init(); | ||||
|     } | ||||
|     if (uintptr_t(addr) % 32 == 16 && *(uint32_t*)((uint8_t*)addr - 8) == MAGIC) { | ||||
|         addr = (void*)((uint8_t*)addr - 16); | ||||
|         memset((uint8_t*)addr + 16, perturb & 0xff, *(size_t*)addr); | ||||
|     } | ||||
|     free(addr); | ||||
| } | ||||
| 
 | ||||
| void* operator new (size_t n, const nothrow_t& tag) { | ||||
|     return alloc(n); | ||||
| } | ||||
| 
 | ||||
| void* operator new (size_t n) { | ||||
|     return alloc(n); | ||||
| } | ||||
| 
 | ||||
| void operator delete (void* addr) { | ||||
|     return dealloc(addr); | ||||
| } | ||||
| @ -1,5 +1,5 @@ | ||||
| if(NOT TinyXML_FOUND) | ||||
|     project(dfhack-tinyxml) | ||||
|     ADD_LIBRARY(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp) | ||||
|     IDE_FOLDER(dfhack-tinyxml "Depends") | ||||
|     add_library(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp) | ||||
|     ide_folder(dfhack-tinyxml "Depends") | ||||
| endif() | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| PROJECT(dfhack-tinythread) | ||||
| ADD_LIBRARY(dfhack-tinythread STATIC EXCLUDE_FROM_ALL tinythread.cpp tinythread.h fast_mutex.h) | ||||
| project(dfhack-tinythread) | ||||
| add_library(dfhack-tinythread STATIC EXCLUDE_FROM_ALL tinythread.cpp tinythread.h) | ||||
| if(UNIX) | ||||
|     target_link_libraries(dfhack-tinythread pthread) | ||||
| endif() | ||||
| IDE_FOLDER(dfhack-tinythread "Depends") | ||||
| ide_folder(dfhack-tinythread "Depends") | ||||
|  | ||||
| @ -1,249 +0,0 @@ | ||||
| /* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; -*-
 | ||||
| Copyright (c) 2010-2012 Marcus Geelnard | ||||
| 
 | ||||
| This software is provided 'as-is', without any express or implied | ||||
| warranty. In no event will the authors be held liable for any damages | ||||
| arising from the use of this software. | ||||
| 
 | ||||
| Permission is granted to anyone to use this software for any purpose, | ||||
| including commercial applications, and to alter it and redistribute it | ||||
| freely, subject to the following restrictions: | ||||
| 
 | ||||
|     1. The origin of this software must not be misrepresented; you must not | ||||
|     claim that you wrote the original software. If you use this software | ||||
|     in a product, an acknowledgment in the product documentation would be | ||||
|     appreciated but is not required. | ||||
| 
 | ||||
|     2. Altered source versions must be plainly marked as such, and must not be | ||||
|     misrepresented as being the original software. | ||||
| 
 | ||||
|     3. This notice may not be removed or altered from any source | ||||
|     distribution. | ||||
| */ | ||||
| 
 | ||||
| #ifndef _FAST_MUTEX_H_ | ||||
| #define _FAST_MUTEX_H_ | ||||
| 
 | ||||
| /// @file
 | ||||
| 
 | ||||
| // Which platform are we on?
 | ||||
| #if !defined(_TTHREAD_PLATFORM_DEFINED_) | ||||
|   #if defined(_WIN32) || defined(__WIN32__) || defined(__WINDOWS__) | ||||
|     #define _TTHREAD_WIN32_ | ||||
|   #else | ||||
|     #define _TTHREAD_POSIX_ | ||||
|   #endif | ||||
|   #define _TTHREAD_PLATFORM_DEFINED_ | ||||
| #endif | ||||
| 
 | ||||
| // Check if we can support the assembly language level implementation (otherwise
 | ||||
| // revert to the system API)
 | ||||
| #if (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) || \ | ||||
|     (defined(_MSC_VER) && (defined(_M_IX86) /*|| defined(_M_X64)*/)) || \ | ||||
|     (defined(__GNUC__) && (defined(__ppc__))) | ||||
|   #define _FAST_MUTEX_ASM_ | ||||
| #else | ||||
|   #define _FAST_MUTEX_SYS_ | ||||
| #endif | ||||
| 
 | ||||
| #if defined(_TTHREAD_WIN32_) | ||||
|   #define NOMINMAX | ||||
|   #ifndef WIN32_LEAN_AND_MEAN | ||||
|     #define WIN32_LEAN_AND_MEAN | ||||
|     #define __UNDEF_LEAN_AND_MEAN | ||||
|   #endif | ||||
|   #include <windows.h> | ||||
|   #ifdef __UNDEF_LEAN_AND_MEAN | ||||
|     #undef WIN32_LEAN_AND_MEAN | ||||
|     #undef __UNDEF_LEAN_AND_MEAN | ||||
|   #endif | ||||
| #else | ||||
|   #ifdef _FAST_MUTEX_ASM_ | ||||
|     #include <sched.h> | ||||
|   #else | ||||
|     #include <pthread.h> | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| namespace tthread { | ||||
| 
 | ||||
| /// Fast mutex class.
 | ||||
| /// This is a mutual exclusion object for synchronizing access to shared
 | ||||
| /// memory areas for several threads. It is similar to the tthread::mutex class,
 | ||||
| /// but instead of using system level functions, it is implemented as an atomic
 | ||||
| /// spin lock with very low CPU overhead.
 | ||||
| ///
 | ||||
| /// The \c fast_mutex class is NOT compatible with the \c condition_variable
 | ||||
| /// class (however, it IS compatible with the \c lock_guard class). It should
 | ||||
| /// also be noted that the \c fast_mutex class typically does not provide
 | ||||
| /// as accurate thread scheduling as a the standard \c mutex class does.
 | ||||
| ///
 | ||||
| /// Because of the limitations of the class, it should only be used in
 | ||||
| /// situations where the mutex needs to be locked/unlocked very frequently.
 | ||||
| ///
 | ||||
| /// @note The "fast" version of this class relies on inline assembler language,
 | ||||
| /// which is currently only supported for 32/64-bit Intel x86/AMD64 and
 | ||||
| /// PowerPC architectures on a limited number of compilers (GNU g++ and MS
 | ||||
| /// Visual C++).
 | ||||
| /// For other architectures/compilers, system functions are used instead.
 | ||||
| class fast_mutex { | ||||
|   public: | ||||
|     /// Constructor.
 | ||||
| #if defined(_FAST_MUTEX_ASM_) | ||||
|     fast_mutex() : mLock(0) {} | ||||
| #else | ||||
|     fast_mutex() | ||||
|     { | ||||
|   #if defined(_TTHREAD_WIN32_) | ||||
|       InitializeCriticalSection(&mHandle); | ||||
|   #elif defined(_TTHREAD_POSIX_) | ||||
|       pthread_mutex_init(&mHandle, NULL); | ||||
|   #endif | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
| #if !defined(_FAST_MUTEX_ASM_) | ||||
|     /// Destructor.
 | ||||
|     ~fast_mutex() | ||||
|     { | ||||
|   #if defined(_TTHREAD_WIN32_) | ||||
|       DeleteCriticalSection(&mHandle); | ||||
|   #elif defined(_TTHREAD_POSIX_) | ||||
|       pthread_mutex_destroy(&mHandle); | ||||
|   #endif | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
|     /// Lock the mutex.
 | ||||
|     /// The method will block the calling thread until a lock on the mutex can
 | ||||
|     /// be obtained. The mutex remains locked until \c unlock() is called.
 | ||||
|     /// @see lock_guard
 | ||||
|     inline void lock() | ||||
|     { | ||||
| #if defined(_FAST_MUTEX_ASM_) | ||||
|       bool gotLock; | ||||
|       do { | ||||
|         gotLock = try_lock(); | ||||
|         if(!gotLock) | ||||
|         { | ||||
|   #if defined(_TTHREAD_WIN32_) | ||||
|           Sleep(0); | ||||
|   #elif defined(_TTHREAD_POSIX_) | ||||
|           sched_yield(); | ||||
|   #endif | ||||
|         } | ||||
|       } while(!gotLock); | ||||
| #else | ||||
|   #if defined(_TTHREAD_WIN32_) | ||||
|       EnterCriticalSection(&mHandle); | ||||
|   #elif defined(_TTHREAD_POSIX_) | ||||
|       pthread_mutex_lock(&mHandle); | ||||
|   #endif | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     /// Try to lock the mutex.
 | ||||
|     /// The method will try to lock the mutex. If it fails, the function will
 | ||||
|     /// return immediately (non-blocking).
 | ||||
|     /// @return \c true if the lock was acquired, or \c false if the lock could
 | ||||
|     /// not be acquired.
 | ||||
|     inline bool try_lock() | ||||
|     { | ||||
| #if defined(_FAST_MUTEX_ASM_) | ||||
|       int oldLock; | ||||
|   #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) | ||||
|       asm volatile ( | ||||
|         "movl $1,%%eax\n\t" | ||||
|         "xchg %%eax,%0\n\t" | ||||
|         "movl %%eax,%1\n\t" | ||||
|         : "=m" (mLock), "=m" (oldLock) | ||||
|         : | ||||
|         : "%eax", "memory" | ||||
|       ); | ||||
|   #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) | ||||
|       int *ptrLock = &mLock; | ||||
|       __asm { | ||||
|         mov eax,1 | ||||
|         mov ecx,ptrLock | ||||
|         xchg eax,[ecx] | ||||
|         mov oldLock,eax | ||||
|       } | ||||
|   #elif defined(__GNUC__) && (defined(__ppc__)) | ||||
|       int newLock = 1; | ||||
|       asm volatile ( | ||||
|         "\n1:\n\t" | ||||
|         "lwarx  %0,0,%1\n\t" | ||||
|         "cmpwi  0,%0,0\n\t" | ||||
|         "bne-   2f\n\t" | ||||
|         "stwcx. %2,0,%1\n\t" | ||||
|         "bne-   1b\n\t" | ||||
|         "isync\n" | ||||
|         "2:\n\t" | ||||
|         : "=&r" (oldLock) | ||||
|         : "r" (&mLock), "r" (newLock) | ||||
|         : "cr0", "memory" | ||||
|       ); | ||||
|   #endif | ||||
|       return (oldLock == 0); | ||||
| #else | ||||
|   #if defined(_TTHREAD_WIN32_) | ||||
|       return TryEnterCriticalSection(&mHandle) ? true : false; | ||||
|   #elif defined(_TTHREAD_POSIX_) | ||||
|       return (pthread_mutex_trylock(&mHandle) == 0) ? true : false; | ||||
|   #endif | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     /// Unlock the mutex.
 | ||||
|     /// If any threads are waiting for the lock on this mutex, one of them will
 | ||||
|     /// be unblocked.
 | ||||
|     inline void unlock() | ||||
|     { | ||||
| #if defined(_FAST_MUTEX_ASM_) | ||||
|   #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) | ||||
|       asm volatile ( | ||||
|         "movl $0,%%eax\n\t" | ||||
|         "xchg %%eax,%0\n\t" | ||||
|         : "=m" (mLock) | ||||
|         : | ||||
|         : "%eax", "memory" | ||||
|       ); | ||||
|   #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) | ||||
|       int *ptrLock = &mLock; | ||||
|       __asm { | ||||
|         mov eax,0 | ||||
|         mov ecx,ptrLock | ||||
|         xchg eax,[ecx] | ||||
|       } | ||||
|   #elif defined(__GNUC__) && (defined(__ppc__)) | ||||
|       asm volatile ( | ||||
|         "sync\n\t"  // Replace with lwsync where possible?
 | ||||
|         : : : "memory" | ||||
|       ); | ||||
|       mLock = 0; | ||||
|   #endif | ||||
| #else | ||||
|   #if defined(_TTHREAD_WIN32_) | ||||
|       LeaveCriticalSection(&mHandle); | ||||
|   #elif defined(_TTHREAD_POSIX_) | ||||
|       pthread_mutex_unlock(&mHandle); | ||||
|   #endif | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|   private: | ||||
| #if defined(_FAST_MUTEX_ASM_) | ||||
|     int mLock; | ||||
| #else | ||||
|   #if defined(_TTHREAD_WIN32_) | ||||
|     CRITICAL_SECTION mHandle; | ||||
|   #elif defined(_TTHREAD_POSIX_) | ||||
|     pthread_mutex_t mHandle; | ||||
|   #endif | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| #endif // _FAST_MUTEX_H_
 | ||||
| 
 | ||||
| @ -0,0 +1 @@ | ||||
| Subproject commit 4056226fe0df6bff4593ee2353cca07c2b7f327e | ||||
| @ -0,0 +1,17 @@ | ||||
| # Custom aliases for quickfort query mode blueprints | ||||
| # | ||||
| # This file defines custom key sequence shortcuts for query mode blueprints. | ||||
| # Definitions in this file take precedence over any definitions in the | ||||
| # baseline aliases configuration file in | ||||
| #   hack/data/quickfort/aliases-common.txt | ||||
| # | ||||
| # Please see | ||||
| #   https://docs.dfhack.org/en/latest/docs/guides/quickfort-alias-guide.html | ||||
| # or | ||||
| #   hack/docs/docs/guides/quickfort-alias-guide.html | ||||
| # in your DF installation directory for alias syntax documentation and an | ||||
| # overview of the DFHack alias standard library. | ||||
| # | ||||
| # | ||||
| # Add your custom aliases here. Example: | ||||
| #   food_stash: {foodprefix}b{Right}{Down 11}p^{permitplants} | ||||
| @ -0,0 +1,37 @@ | ||||
| # quickfort main configuration file | ||||
| # | ||||
| # Set startup defaults for the quickfort script in this file. Settings can be | ||||
| # temporarily overridden in the active session with the `quickfort set` command. | ||||
| # | ||||
| # If you have edited this file but want to revert to "factory defaults", delete | ||||
| # this file and a fresh one will be copied from | ||||
| # dfhack-config/default/quickfort/quickfort.txt the next time you start DFHack. | ||||
| 
 | ||||
| # Directory tree to search for blueprints. Can be set to an absolute or relative | ||||
| # path. If set to a relative path, resolves to a directory under the DF folder. | ||||
| # Note that if you change this directory, you will not automatically pick up | ||||
| # blueprints written by the DFHack "blueprint" plugin (which always writes to | ||||
| # the "blueprints" dir). | ||||
| blueprints_dir=blueprints | ||||
| 
 | ||||
| # Set to "true" or "false". If true, will designate all dig blueprints in marker | ||||
| # mode. If false, only cells with dig codes explicitly prefixed with an "m" will | ||||
| # be designated in marker mode. | ||||
| force_marker_mode=false | ||||
| 
 | ||||
| # Skip query blueprint sanity checks that detect common blueprint errors and | ||||
| # halt or skip keycode playback. Checks include ensuring a configurable building | ||||
| # exists at the designated cursor position and verifying the active UI screen is | ||||
| # the same before and after sending keys for the cursor position. Temporarily | ||||
| # enable this if you are running a query blueprint that sends a key sequence | ||||
| # that is *not* related to stockpile or building configuration. | ||||
| query_unsafe=false | ||||
| 
 | ||||
| # Set to the maximum number of resources you want assigned to stockpiles of the | ||||
| # relevant types. Set to -1 for DF defaults (number of stockpile tiles for | ||||
| # stockpiles that take barrels and bins, 1 wheelbarrow for stone stockpiles). | ||||
| # The default here for wheelbarrows is 0 since using wheelbarrows normally | ||||
| # *decreases* the efficiency of your fort. | ||||
| stockpiles_max_barrels=-1 | ||||
| stockpiles_max_bins=-1 | ||||
| stockpiles_max_wheelbarrows=0 | ||||
| @ -0,0 +1,86 @@ | ||||
| .. _contributing: | ||||
| 
 | ||||
| ########################### | ||||
| How to contribute to DFHack | ||||
| ########################### | ||||
| 
 | ||||
| .. contents:: Contents | ||||
|   :local: | ||||
| 
 | ||||
| .. _contributing-code: | ||||
| 
 | ||||
| Contributing Code | ||||
| ================= | ||||
| Several things should be kept in mind when contributing code to DFHack. | ||||
| 
 | ||||
| Code format | ||||
| ----------- | ||||
| * Four space indents for C++. Never use tabs for indentation in any language. | ||||
| * LF (Unix style) line terminators | ||||
| * Avoid trailing whitespace | ||||
| * UTF-8 encoding | ||||
| * For C++: | ||||
| 
 | ||||
|   * Opening and closing braces on their own lines or opening brace at the end of the previous line | ||||
|   * Braces placed at original indent level if on their own lines | ||||
|   * #includes should be sorted. C++ libraries first, then dfhack modules, then df structures, | ||||
|     then local includes. Within each category they should be sorted alphabetically. | ||||
| 
 | ||||
| Pull request guidelines | ||||
| ----------------------- | ||||
| * Pull requests should be based on (and submitted to) the default branch of the | ||||
|   relevant repo, which is the branch you see when you access the repo on GitHub | ||||
|   or clone the repo without specifying a branch. As of 0.47.04-r1, this is | ||||
|   ``develop`` for the main DFHack repo and ``master`` for other repos. | ||||
| * Use a new branch for each feature or bugfix so that your changes can be merged | ||||
|   independently (i.e. not the ``master`` or ``develop`` branch of your fork). | ||||
| 
 | ||||
|   * An exception: for a collection of small miscellaneous changes (e.g. | ||||
|     structures research), one branch instead of many small branches is fine. It | ||||
|     is still preferred that this branch be dedicated to this purpose, i.e. not | ||||
|     ``master`` or ``develop``. Your pull request may be merged at any point | ||||
|     unless you indicate that it isn't ready (see below), but you can continue to | ||||
|     push to the same branch and open new pull requests as needed. | ||||
| 
 | ||||
| * Try to keep pull requests relatively small so that they are easier to review | ||||
|   and merge. | ||||
| 
 | ||||
|   * If you expect to make a large number of related additions or changes (e.g. | ||||
|     adding a large new plugin), multiple PRs are preferred, as they allow more | ||||
|     frequent (and easier) feedback. If development of this feature is expected | ||||
|     to take a while, we may create a dedicated branch to merge your pull | ||||
|     requests into instead of the repo's default branch. | ||||
| 
 | ||||
| * If you plan to make additional changes to your pull request in the near | ||||
|   future, or if it isn't quite ready to be merged, mark it as a | ||||
|   `draft pull request <https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#draft-pull-requests>`_ | ||||
|   or add "WIP" to the title. Otherwise, your pull request may be reviewed and/or | ||||
|   merged prematurely. | ||||
| 
 | ||||
| General contribution guidelines | ||||
| ------------------------------- | ||||
| * If convenient, compile on multiple platforms when changing anything that | ||||
|   compiles. Our CI should catch anything that fails to build, but checking in | ||||
|   advance can be faster. | ||||
| * Update documentation when applicable - see `docs-standards` for details. | ||||
| * Update ``changelog.txt`` and ``docs/Authors.rst`` when applicable. See | ||||
|   `build-changelog` for more information on the changelog format. | ||||
| * Submit ideas and bug reports as :issue:`issues on GitHub <>`. | ||||
|   Posts in the forum thread can easily get missed or forgotten. | ||||
| * Work on :issue:`reported problems <?q=is:open+-label:idea>` | ||||
|   will take priority over ideas or suggestions. | ||||
| 
 | ||||
| 
 | ||||
| Other ways to help | ||||
| ================== | ||||
| DFHack is a software project, but there's a lot more to it than programming. | ||||
| If you're not comfortable programming, you can help by: | ||||
| 
 | ||||
| * reporting bugs and incomplete documentation | ||||
| * improving the documentation | ||||
| * finding third-party scripts to add | ||||
| * writing tutorials for newbies | ||||
| 
 | ||||
| All those things are crucial, and often under-represented.  So if that's | ||||
| your thing, go get started! | ||||
| 
 | ||||
| @ -0,0 +1,82 @@ | ||||
| =========================== | ||||
| DFHack development overview | ||||
| =========================== | ||||
| 
 | ||||
| DFHack has various components; this page provides an overview of some. If you | ||||
| are looking to develop a tool for DFHack, developing a script or plugin is | ||||
| likely the most straightforward choice. | ||||
| 
 | ||||
| Other pages that may be relevant include: | ||||
| 
 | ||||
| - `contributing` | ||||
| - `documentation` | ||||
| - `license` | ||||
| 
 | ||||
| 
 | ||||
| .. contents:: Contents | ||||
|     :local: | ||||
| 
 | ||||
| 
 | ||||
| Plugins | ||||
| ------- | ||||
| 
 | ||||
| DFHack plugins are written in C++ and located in the ``plugins`` folder. | ||||
| Currently, documentation on how to write plugins is somewhat sparse. There are | ||||
| templates that you can get use to get started in the ``plugins/skeleton`` | ||||
| folder, and the source code of existing plugins can also be helpful. | ||||
| 
 | ||||
| If you want to compile a plugin that you have just added, you will need to add a | ||||
| call to ``DFHACK_PLUGIN`` in ``plugins/CMakeLists.txt``. | ||||
| 
 | ||||
| Plugins have the ability to make one or more commands available to users of the | ||||
| DFHack console. Examples include `3dveins` (which implements the ``3dveins`` | ||||
| command) and `reveal` (which implements ``reveal``, ``unreveal``, and several | ||||
| other commands). | ||||
| 
 | ||||
| Plugins can also register handlers to run on every tick, and can interface with | ||||
| the built-in `enable` and `disable` commands. For the full plugin API, see the | ||||
| skeleton plugins or ``PluginManager.cpp``. | ||||
| 
 | ||||
| Installed plugins live in the ``hack/plugins`` folder of a DFHack installation, | ||||
| and the `load` family of commands can be used to load a recompiled plugin | ||||
| without restarting DF. | ||||
| 
 | ||||
| See `plugins-index` for a list of all plugins included in DFHack. | ||||
| 
 | ||||
| Scripts | ||||
| ------- | ||||
| 
 | ||||
| DFHack scripts can currently be written in Lua or Ruby. The `Lua API <lua-api>` | ||||
| is more complete and currently better-documented, however. Referring to existing | ||||
| scripts as well as the API documentation can be helpful when developing new | ||||
| scripts. | ||||
| 
 | ||||
| `Scripts included in DFHack <scripts-index>` live in a separate `scripts repository <https://github.com/dfhack/scripts>`_. | ||||
| This can be found in the ``scripts`` submodule if you have | ||||
| `cloned DFHack <compile-how-to-get-the-code>`, or the ``hack/scripts`` folder | ||||
| of an installed copy of DFHack. | ||||
| 
 | ||||
| Core | ||||
| ---- | ||||
| 
 | ||||
| The `DFHack core <dfhack-core>` has a variety of low-level functions. It is | ||||
| responsible for hooking into DF (via SDL), providing a console, and providing an | ||||
| interface for plugins and scripts to interact with DF. | ||||
| 
 | ||||
| Modules | ||||
| ------- | ||||
| 
 | ||||
| A lot of shared code to interact with DF in more complicated ways is contained | ||||
| in **modules**. For example, the Units module contains functions for checking | ||||
| various traits of units, changing nicknames properly, and more. Generally, code | ||||
| that is useful to multiple plugins and scripts should go in the appropriate | ||||
| module, if there is one. | ||||
| 
 | ||||
| Several modules are also `exposed to Lua <lua-cpp-func-wrappers>`, although | ||||
| some functions (and some entire modules) are currently only available in C++. | ||||
| 
 | ||||
| Remote access interface | ||||
| ----------------------- | ||||
| 
 | ||||
| DFHack provides a remote access interface that external tools can connect to and | ||||
| use to interact with DF. See `remote` for more information. | ||||
| @ -0,0 +1,344 @@ | ||||
| .. _documentation: | ||||
| 
 | ||||
| ########################### | ||||
| DFHack Documentation System | ||||
| ########################### | ||||
| 
 | ||||
| 
 | ||||
| DFHack documentation, like the file you are reading now, is created as ``.rst`` files, | ||||
| which are in `reStructuredText (reST) <https://www.sphinx-doc.org/rest.html>`_ format. | ||||
| This is a documentation format common in the Python community. It is very | ||||
| similar in concept - and in syntax - to Markdown, as found on GitHub and many other | ||||
| places. However it is more advanced than Markdown, with more features available when | ||||
| compiled to HTML, such as automatic tables of contents, cross-linking, special | ||||
| external links (forum, wiki, etc) and more. The documentation is compiled by a | ||||
| Python tool, `Sphinx <https://www.sphinx-doc.org>`_. | ||||
| 
 | ||||
| The DFHack build process will compile the documentation, but this is disabled | ||||
| by default due to the additional Python and Sphinx requirements. You typically | ||||
| only need to build the docs if you're changing them, or perhaps | ||||
| if you want a local HTML copy; otherwise, you can read an | ||||
| `online version hosted by ReadTheDocs <https://dfhack.readthedocs.org>`_. | ||||
| 
 | ||||
| (Note that even if you do want a local copy, it is certainly not necessary to | ||||
| compile the documentation in order to read it. Like Markdown, reST documents are | ||||
| designed to be just as readable in a plain-text editor as they are in HTML format. | ||||
| The main thing you lose in plain text format is hyperlinking.) | ||||
| 
 | ||||
| .. contents:: Contents | ||||
|   :local: | ||||
| 
 | ||||
| .. _docs-standards: | ||||
| 
 | ||||
| Documentation standards | ||||
| ======================= | ||||
| 
 | ||||
| Whether you're adding new code or just fixing old documentation (and there's plenty), | ||||
| there are a few important standards for completeness and consistent style.  Treat | ||||
| this section as a guide rather than iron law, match the surrounding text, and you'll | ||||
| be fine. | ||||
| 
 | ||||
| Each command should have a short (~54 character) help string, which is shown | ||||
| by the `ls` command.  For scripts, this is a comment on the first line | ||||
| (the comment marker and whitespace is stripped).  For plugins it's the second | ||||
| argument to ``PluginCommand``.  Please make this brief but descriptive! | ||||
| 
 | ||||
| Everything should be documented!  If it's not clear *where* a particular | ||||
| thing should be documented, ask on IRC or in the DFHack thread on Bay12 - | ||||
| as well as getting help, you'll be providing valuable feedback that | ||||
| makes it easier for future readers! | ||||
| 
 | ||||
| Scripts can use a custom autodoc function, based on the Sphinx ``include`` | ||||
| directive - anything between the tokens is copied into the appropriate scripts | ||||
| documentation page.  For Ruby, we follow the built-in docstring convention | ||||
| (``=begin`` and ``=end``).  For Lua, the tokens are ``[====[`` and ``]====]`` | ||||
| - ordinary multi-line strings.  It is highly encouraged to reuse this string | ||||
| as the in-console documentation by (e.g.) printing it when a ``-help`` argument | ||||
| is given. | ||||
| 
 | ||||
| The docs **must** have a heading which exactly matches the command, underlined | ||||
| with ``=====`` to the same length.  For example, a lua file would have: | ||||
| 
 | ||||
| .. code-block:: lua | ||||
| 
 | ||||
|     local helpstr = [====[ | ||||
| 
 | ||||
|     add-thought | ||||
|     =========== | ||||
|     Adds a thought or emotion to the selected unit.  Can be used by other scripts, | ||||
|     or the gui invoked by running ``add-thought gui`` with a unit selected. | ||||
| 
 | ||||
|     ]====] | ||||
| 
 | ||||
| 
 | ||||
| .. highlight:: rst | ||||
| 
 | ||||
| Where the heading for a section is also the name of a command, the spelling | ||||
| and case should exactly match the command to enter in the DFHack command line. | ||||
| 
 | ||||
| Try to keep lines within 80-100 characters, so it's readable in plain text | ||||
| in the terminal - Sphinx (our documentation system) will make sure | ||||
| paragraphs flow. | ||||
| 
 | ||||
| If there aren't many options or examples to show, they can go in a paragraph of | ||||
| text.  Use double-backticks to put commands in monospaced font, like this:: | ||||
| 
 | ||||
|     You can use ``cleanowned scattered x`` to dump tattered or abandoned items. | ||||
| 
 | ||||
| If the command takes more than three arguments, format the list as a table | ||||
| called Usage.  The table *only* lists arguments, not full commands. | ||||
| Input values are specified in angle brackets.  Example:: | ||||
| 
 | ||||
|     Usage: | ||||
| 
 | ||||
|     :arg1:          A simple argument. | ||||
|     :arg2 <input>:  Does something based on the input value. | ||||
|     :Very long argument: | ||||
|                     Is very specific. | ||||
| 
 | ||||
| To demonstrate usage - useful mainly when the syntax is complicated, list the | ||||
| full command with arguments in monospaced font, then indent the next line and | ||||
| describe the effect:: | ||||
| 
 | ||||
|     ``resume all`` | ||||
|             Resumes all suspended constructions. | ||||
| 
 | ||||
| If it would be helpful to mention another DFHack command, don't just type the | ||||
| name - add a hyperlink!  Specify the link target in backticks, and it will be | ||||
| replaced with the corresponding title and linked:  e.g. ```autolabor``` | ||||
| => `autolabor`.  Link targets should be equivalent to the command | ||||
| described (without file extension), and placed above the heading of that | ||||
| section like this:: | ||||
| 
 | ||||
|     .. _autolabor: | ||||
| 
 | ||||
|     autolabor | ||||
|     ========= | ||||
| 
 | ||||
| Add link targets if you need them, but otherwise plain headings are preferred. | ||||
| Scripts have link targets created automatically. | ||||
| 
 | ||||
| 
 | ||||
| Required dependencies | ||||
| ===================== | ||||
| 
 | ||||
| .. highlight:: shell | ||||
| 
 | ||||
| In order to build the documentation, you must have Python with Sphinx | ||||
| version |sphinx_min_version| or later. Python 3 is recommended. | ||||
| 
 | ||||
| When installing Sphinx from OS package managers, be aware that there is | ||||
| another program called Sphinx, completely unrelated to documentation management. | ||||
| Be sure you are installing the right Sphinx; it may be called ``python-sphinx``, | ||||
| for example. To avoid doubt, ``pip`` can be used instead as detailed below. | ||||
| 
 | ||||
| Once you have installed Sphinx, ``sphinx-build --version`` should report the | ||||
| version of Sphinx that you have installed. If this works, CMake should also be | ||||
| able to find Sphinx. | ||||
| 
 | ||||
| For more detailed platform-specific instructions, see the sections below: | ||||
| 
 | ||||
| .. contents:: | ||||
|   :local: | ||||
|   :backlinks: none | ||||
| 
 | ||||
| 
 | ||||
| Linux | ||||
| ----- | ||||
| Most Linux distributions will include Python by default. If not, start by | ||||
| installing Python (preferably Python 3). On Debian-based distros:: | ||||
| 
 | ||||
|   sudo apt install python3 | ||||
| 
 | ||||
| Check your package manager to see if Sphinx |sphinx_min_version| or later is | ||||
| available. On Debian-based distros, this package is named ``python3-sphinx``. | ||||
| If this package is new enough, you can install it directly. If not, or if you | ||||
| want to use a newer Sphinx version (which may result in faster builds), you | ||||
| can install Sphinx through the ``pip`` package manager instead. On Debian-based | ||||
| distros, you can install pip with:: | ||||
| 
 | ||||
|   sudo apt install python3-pip | ||||
| 
 | ||||
| Once pip is available, you can then install Sphinx with:: | ||||
| 
 | ||||
|   pip3 install sphinx | ||||
| 
 | ||||
| If you run this as an unprivileged user, it may install a local copy of Sphinx | ||||
| for your user only. The ``sphinx-build`` executable will typically end up in | ||||
| ``~/.local/bin/`` in this case. Alternatively, you can install Sphinx | ||||
| system-wide by running pip with ``sudo``. In any case, you will need the folder | ||||
| containing ``sphinx-build`` to be in your ``$PATH``. | ||||
| 
 | ||||
| macOS | ||||
| ----- | ||||
| macOS has Python 2.7 installed by default, but it does not have the pip package manager. | ||||
| 
 | ||||
| You can install Homebrew's Python 3, which includes pip, and then install the | ||||
| latest Sphinx using pip:: | ||||
| 
 | ||||
|   brew install python3 | ||||
|   pip3 install sphinx | ||||
| 
 | ||||
| Alternatively, you can simply install Sphinx directly from Homebrew:: | ||||
| 
 | ||||
|   brew install sphinx-doc | ||||
| 
 | ||||
| This will install Sphinx for macOS's system Python 2.7, without needing pip. | ||||
| 
 | ||||
| Either method works; if you plan to use Python for other purposes, it might best | ||||
| to install Homebrew's Python 3 so that you have the latest Python as well as pip. | ||||
| If not, just installing sphinx-doc for macOS's system Python 2.7 is fine. | ||||
| 
 | ||||
| 
 | ||||
| Windows | ||||
| ------- | ||||
| Python for Windows can be downloaded `from python.org <https://www.python.org/downloads/>`_. | ||||
| The latest version of Python 3 is recommended, as it includes pip already. | ||||
| 
 | ||||
| You can also install Python and pip through the Chocolatey package manager. | ||||
| After installing Chocolatey as outlined in the `Windows compilation instructions <compile-windows>`, | ||||
| run the following command from an elevated (admin) command prompt (e.g. ``cmd.exe``):: | ||||
| 
 | ||||
|   choco install python pip -y | ||||
| 
 | ||||
| Once you have pip available, you can install Sphinx with the following command:: | ||||
| 
 | ||||
|   pip install sphinx | ||||
| 
 | ||||
| Note that this may require opening a new (admin) command prompt if you just | ||||
| installed pip from the same command prompt. | ||||
| 
 | ||||
| Building the documentation | ||||
| ========================== | ||||
| 
 | ||||
| Once the required dependencies are installed, there are multiple ways to run | ||||
| Sphinx to build the docs: | ||||
| 
 | ||||
| Using CMake | ||||
| ----------- | ||||
| 
 | ||||
| Enabling the ``BUILD_DOCS`` CMake option will cause the documentation to be built | ||||
| whenever it changes as part of the normal DFHack build process. There are several | ||||
| ways to do this: | ||||
| 
 | ||||
| * When initially running CMake, add ``-DBUILD_DOCS:bool=ON`` to your ``cmake`` | ||||
|   command. For example:: | ||||
| 
 | ||||
|     cmake .. -DCMAKE_BUILD_TYPE:string=Release -DBUILD_DOCS:bool=ON -DCMAKE_INSTALL_PREFIX=<path to DF> | ||||
| 
 | ||||
| * If you have already run CMake, you can simply run it again from your build | ||||
|   folder to update your configuration:: | ||||
| 
 | ||||
|     cmake .. -DBUILD_DOCS:bool=ON | ||||
| 
 | ||||
| * You can edit the ``BUILD_DOCS`` setting in CMakeCache.txt directly | ||||
| 
 | ||||
| * You can use the CMake GUI or ``ccmake`` to change the ``BUILD_DOCS`` setting | ||||
| 
 | ||||
| * On Windows, if you prefer to use the batch scripts, you can run | ||||
|   ``generate-msvc-gui.bat`` and set ``BUILD_DOCS`` through the GUI. If you are | ||||
|   running another file, such as ``generate-msvc-all.bat``, you will need to edit | ||||
|   it to add the flag. You can also run ``cmake`` on the command line, similar to | ||||
|   other platforms. | ||||
| 
 | ||||
| The generated documentation will be stored in ``docs/html`` in the root DFHack | ||||
| folder, and will be installed to ``hack/docs`` when you next install DFHack in a | ||||
| DF folder. | ||||
| 
 | ||||
| Running Sphinx manually | ||||
| ----------------------- | ||||
| 
 | ||||
| You can also build the documentation without running CMake - this is faster if | ||||
| you only want to rebuild the documentation regardless of any code changes. There | ||||
| is a ``docs/build.sh`` script provided for Linux and macOS that will run | ||||
| essentially the same command that CMake runs when building the docs - see the | ||||
| script for additional options. | ||||
| 
 | ||||
| To build the documentation with default options, run the following command from | ||||
| the root DFHack folder:: | ||||
| 
 | ||||
|     sphinx-build . docs/html | ||||
| 
 | ||||
| The resulting documentation will be stored in ``docs/html`` (you can specify | ||||
| a different path when running ``sphinx-build`` manually, but be warned that | ||||
| Sphinx may overwrite existing files in this folder). | ||||
| 
 | ||||
| Sphinx has many options to enable clean builds, parallel builds, logging, and | ||||
| more - run ``sphinx-build --help`` for details. | ||||
| 
 | ||||
| Building a PDF version | ||||
| ---------------------- | ||||
| 
 | ||||
| ReadTheDocs automatically builds a PDF version of the documentation (available | ||||
| under the "Downloads" section when clicking on the release selector). If you | ||||
| want to build a PDF version locally, you will need ``pdflatex``, which is part | ||||
| of a TeX distribution. The following command will then build a PDF, located in | ||||
| ``docs/pdf/latex/DFHack.pdf``, with default options:: | ||||
| 
 | ||||
|   sphinx-build -M latexpdf . docs/pdf | ||||
| 
 | ||||
| There is a ``docs/build-pdf.sh`` script provided for Linux and macOS that runs | ||||
| this command for convenience - see the script for additional options. | ||||
| 
 | ||||
| .. _build-changelog: | ||||
| 
 | ||||
| Building the changelogs | ||||
| ======================= | ||||
| If you have Python installed, you can build just the changelogs without building | ||||
| the rest of the documentation by running the ``docs/gen_changelog.py`` script. | ||||
| This script provides additional options, including one to build individual | ||||
| changelogs for all DFHack versions - run ``python docs/gen_changelog.py --help`` | ||||
| for details. | ||||
| 
 | ||||
| Changelog entries are obtained from ``changelog.txt`` files in multiple repos. | ||||
| This allows changes to be listed in the same repo where they were made. These | ||||
| changelogs are combined as part of the changelog build process: | ||||
| 
 | ||||
| * ``docs/changelog.txt`` for changes in the main ``dfhack`` repo | ||||
| * ``scripts/changelog.txt`` for changes made to scripts in the ``scripts`` repo | ||||
| * ``library/xml/changelog.txt`` for changes made in the ``df-structures`` repo | ||||
| 
 | ||||
| Building the changelogs generates two files: ``docs/_auto/news.rst`` and | ||||
| ``docs/_auto/news-dev.rst``. These correspond to `changelog` and `dev-changelog` | ||||
| and contain changes organized by stable and development DFHack releases, | ||||
| respectively. For example, an entry listed under "0.44.05-alpha1" in | ||||
| changelog.txt will be listed under that version in the development changelog as | ||||
| well, but under "0.44.05-r1" in the stable changelog (assuming that is the | ||||
| closest stable release after 0.44.05-alpha1). An entry listed under a stable | ||||
| release like "0.44.05-r1" in changelog.txt will be listed under that release in | ||||
| both the stable changelog and the development changelog. | ||||
| 
 | ||||
| 
 | ||||
| Changelog syntax | ||||
| ---------------- | ||||
| 
 | ||||
| .. include:: /docs/changelog.txt | ||||
|    :start-after: ===help | ||||
|    :end-before: ===end | ||||
| 
 | ||||
| .. _docs-ci: | ||||
| 
 | ||||
| GitHub Actions | ||||
| ============== | ||||
| 
 | ||||
| Documentation is built automatically with GitHub Actions (a GitHub-provided | ||||
| continuous integration service) for all pull requests and commits in the | ||||
| "dfhack" and "scripts" repositories. These builds run with strict settings, i.e. | ||||
| warnings are treated as errors. If a build fails, you will see a red "x" next to | ||||
| the relevant commit or pull request. You can view detailed output from Sphinx in | ||||
| a few ways: | ||||
| 
 | ||||
| * Click on the red "x" (or green checkmark), then click "Details" next to | ||||
|   the "Build / docs" entry | ||||
| * For pull requests only: navigate to the "Checks" tab, then click on "Build" in | ||||
|   the sidebar to expand it, then "docs" under it | ||||
| 
 | ||||
| Sphinx output will be visible under the step named "Build docs". If a different | ||||
| step failed, or you aren't sure how to interpret the output, leave a comment | ||||
| on the pull request (or commit). | ||||
| 
 | ||||
| You can also download the "docs" artifact from the summary page (typically | ||||
| accessible by clicking "Build") if the build succeeded. This is a way to | ||||
| visually inspect what the documentation looks like when built without installing | ||||
| Sphinx locally, although we recommend installing Sphinx if you are planning to | ||||
| do any significant work on the documentation. | ||||
| @ -0,0 +1,168 @@ | ||||
| .. _installing: | ||||
| 
 | ||||
| ================= | ||||
| Installing DFHack | ||||
| ================= | ||||
| 
 | ||||
| .. contents:: | ||||
|     :local: | ||||
| 
 | ||||
| 
 | ||||
| Requirements | ||||
| ============ | ||||
| 
 | ||||
| DFHack supports Windows, Linux, and macOS, and both 64-bit and 32-bit builds | ||||
| of Dwarf Fortress. | ||||
| 
 | ||||
| .. _installing-df-version: | ||||
| 
 | ||||
| DFHack releases generally only support the version of Dwarf Fortress that they | ||||
| are named after. For example, DFHack 0.40.24-r5 only supported DF 0.40.24. | ||||
| DFHack releases *never* support newer versions of DF, because DFHack requires | ||||
| data about DF that is only possible to obtain after DF has been released. | ||||
| Occasionally, DFHack releases will be able to maintain support for older | ||||
| versions of DF - for example, DFHack 0.34.11-r5 supported both DF 0.34.11 and | ||||
| 0.34.10. For maximum stability, you should usually use the latest versions of | ||||
| both DF and DFHack. | ||||
| 
 | ||||
| Windows | ||||
| ------- | ||||
| 
 | ||||
| * DFHack only supports the SDL version of Dwarf Fortress. The "legacy" version | ||||
|   will *not* work with DFHack (the "small" SDL version is acceptable, however). | ||||
| * Windows XP and older are *not* supported, due in part to a | ||||
|   `Visual C++ 2015 bug <https://stackoverflow.com/questions/32452777/visual-c-2015-express-stat-not-working-on-windows-xp>`_ | ||||
| 
 | ||||
| The Windows build of DFHack should work under Wine on other operating systems, | ||||
| although this is not tested very often. It is recommended to use the native | ||||
| build for your operating system instead. | ||||
| 
 | ||||
| .. _installing-reqs-linux: | ||||
| 
 | ||||
| Linux | ||||
| ----- | ||||
| 
 | ||||
| Generally, DFHack should work on any modern Linux distribution. There are | ||||
| multiple release binaries provided - as of DFHack 0.47.04-r1, there are built | ||||
| with GCC 7 and GCC 4.8 (as indicated by the ``gcc`` component of their | ||||
| filenames). Using the newest build that works on your system is recommended. | ||||
| The GCC 4.8 build is built on Ubuntu 14.04 and targets an older glibc, so it | ||||
| should work on older distributions. | ||||
| 
 | ||||
| In the event that none of the provided binaries work on your distribution, | ||||
| you may need to `compile DFHack from source <compile>`. | ||||
| 
 | ||||
| macOS | ||||
| ----- | ||||
| 
 | ||||
| OS X 10.6.8 or later is required. | ||||
| 
 | ||||
| 
 | ||||
| .. _downloading: | ||||
| 
 | ||||
| Downloading DFHack | ||||
| ================== | ||||
| 
 | ||||
| Stable builds of DFHack are available on `GitHub <https://github.com/dfhack/dfhack/releases>`_. | ||||
| GitHub has been known to change their layout periodically, but as of July 2020, | ||||
| downloads are available at the bottom of the release notes for each release, under a section | ||||
| named "Assets" (which you may have to expand). The name of the file indicates | ||||
| which DF version, platform, and architecture the build supports - the platform | ||||
| and architecture (64-bit or 32-bit) **must** match your build of DF. The DF | ||||
| version should also match your DF version - see `above <installing-df-version>` | ||||
| for details. For example: | ||||
| 
 | ||||
| * ``dfhack-0.47.04-r1-Windows-64bit.zip`` supports 64-bit DF on Windows | ||||
| * ``dfhack-0.47.04-r1-Linux-32bit-gcc-7.tar.bz2`` supports 32-bit DF on Linux | ||||
|   (see `installing-reqs-linux` for details on the GCC version indicator) | ||||
| 
 | ||||
| The `DFHack website <https://dfhack.org/builds>`_ also provides links to | ||||
| unstable builds. These files have a different naming scheme, but the same | ||||
| restrictions apply (e.g. a file named ``Windows64`` is for 64-bit Windows DF). | ||||
| 
 | ||||
| .. warning:: | ||||
| 
 | ||||
|     Do *not* download the source code from GitHub, either from the releases page | ||||
|     or by clicking "Download ZIP" on the repo homepage. This will give you an | ||||
|     incomplete copy of the DFHack source code, which will not work as-is. (If | ||||
|     you want to compile DFHack instead of using a pre-built release, see | ||||
|     `compile` for instructions.) | ||||
| 
 | ||||
| Installing DFHack | ||||
| ================= | ||||
| 
 | ||||
| When you `download DFHack <downloading>`, you will end up with a release archive | ||||
| (a ``.zip`` file on Windows, or a ``.tar.bz2`` file on other platforms). Your | ||||
| operating system should have built-in utilities capable of extracting files from | ||||
| these archives. | ||||
| 
 | ||||
| The release archives contain several files and folders, including a ``hack`` | ||||
| folder, a ``dfhack-config`` folder, and a ``dfhack.init-example`` file. To | ||||
| install DFHack, copy all of the files from the DFHack archive into the root DF | ||||
| folder, which should already include a ``data`` folder and a ``raw`` folder, | ||||
| among other things. Some packs and other redistributions of Dwarf Fortress may | ||||
| place DF in another folder, so ensure that the ``hack`` folder ends up next to | ||||
| the ``data`` folder. | ||||
| 
 | ||||
| .. note:: | ||||
| 
 | ||||
|     On Windows, installing DFHack will overwrite ``SDL.dll``. This is | ||||
|     intentional and necessary for DFHack to work, so be sure to choose to | ||||
|     overwrite ``SDL.dll`` if prompted. (If you are not prompted, you may be | ||||
|     installing DFHack in the wrong place.) | ||||
| 
 | ||||
| 
 | ||||
| Uninstalling DFHack | ||||
| =================== | ||||
| 
 | ||||
| Uninstalling DFHack essentially involves reversing what you did to install | ||||
| DFHack. On Windows, replace ``SDL.dll`` with ``SDLreal.dll`` first. Then, you | ||||
| can remove any files that were part of the DFHack archive. DFHack does not | ||||
| currently maintain a list of these files, so if you want to completely remove | ||||
| them, you should consult the DFHack archive that you installed for a full list. | ||||
| Generally, any files left behind should not negatively affect DF. | ||||
| 
 | ||||
| 
 | ||||
| Upgrading DFHack | ||||
| ================ | ||||
| 
 | ||||
| The recommended approach to upgrade DFHack is to uninstall DFHack first, then | ||||
| install the new version. This will ensure that any files that are only part | ||||
| of the older DFHack installation do not affect the new DFHack installation | ||||
| (although this is unlikely to occur). | ||||
| 
 | ||||
| It is also possible to overwrite an existing DFHack installation in-place. | ||||
| To do this, follow the installation instructions above, but overwrite all files | ||||
| that exist in the new DFHack archive (on Windows, this includes ``SDL.dll`` again). | ||||
| 
 | ||||
| .. note:: | ||||
| 
 | ||||
|     You may wish to make a backup of your ``dfhack-config`` folder first if you | ||||
|     have made changes to it. Some archive managers (e.g. Archive Utility on macOS) | ||||
|     will overwrite the entire folder, removing any files that you have added. | ||||
| 
 | ||||
| 
 | ||||
| Pre-packaged DFHack installations | ||||
| ================================= | ||||
| 
 | ||||
| There are :wiki:`several packs available <Utility:Lazy_Newb_Pack>` that include | ||||
| DF, DFHack, and other utilities. If you are new to Dwarf Fortress and DFHack, | ||||
| these may be easier to set up. Note that these packs are not maintained by the | ||||
| DFHack team and vary in their release schedules and contents. Some may make | ||||
| significant configuration changes, and some may not include DFHack at all. | ||||
| 
 | ||||
| Linux packages | ||||
| ============== | ||||
| 
 | ||||
| Third-party DFHack packages are available for some Linux distributions, | ||||
| including in: | ||||
| 
 | ||||
| * `AUR <https://aur.archlinux.org/packages/dfhack/>`__, for Arch and related | ||||
|   distributions | ||||
| * `RPM Fusion <https://admin.rpmfusion.org/pkgdb/package/nonfree/dfhack/>`__, | ||||
|   for Fedora and related distributions | ||||
| 
 | ||||
| Note that these may lag behind DFHack releases. If you want to use a newer | ||||
| version of DFHack, we generally recommended installing it in a clean copy of DF | ||||
| in your home folder. Attempting to upgrade an installation of DFHack from a | ||||
| package manager may break it. | ||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								| @ -0,0 +1,162 @@ | ||||
| .. _memory-research: | ||||
| 
 | ||||
| ############### | ||||
| Memory research | ||||
| ############### | ||||
| 
 | ||||
| There are a variety of tools that can be used to analyze DF memory - some are | ||||
| listed here. Note that some of these may be old and unmaintained. If you aren't | ||||
| sure what tool would be best for your purposes, feel free to ask for advice (on | ||||
| IRC, Bay12, etc.). | ||||
| 
 | ||||
| .. contents:: Contents | ||||
|   :local: | ||||
| 
 | ||||
| 
 | ||||
| Cross-platform tools | ||||
| ==================== | ||||
| 
 | ||||
| Ghidra | ||||
| ------ | ||||
| 
 | ||||
| Ghidra is a cross-platform reverse-engineering framework (written in Java) | ||||
| available at https://ghidra-sre.org. It supports analyzing both 32-bit and | ||||
| 64-bit executables for all supported DF platforms. There are some custom DFHack | ||||
| Ghidra scripts available in the `df_misc`_ repo (look for ``.java`` files). | ||||
| 
 | ||||
| 
 | ||||
| IDA Freeware 7.0 | ||||
| ---------------- | ||||
| 
 | ||||
| Available from `Hex-Rays <https://www.hex-rays.com/products/ida/support/download_freeware/>`_. | ||||
| Supports analyzing both 32-bit and 64-bit executables for all supported DF platforms. | ||||
| Some ``.idc`` scripts for IDA are available in the `df_misc`_ repo. | ||||
| 
 | ||||
| .. _df_misc: https://github.com/DFHack/df_misc | ||||
| 
 | ||||
| 
 | ||||
| Hopper | ||||
| ------ | ||||
| 
 | ||||
| Runs on macOS and some Linux distributions; available from https://www.hopperapp.com/. | ||||
| `TWBT <https://github.com/mifki/df-twbt/blob/master/PATCHES.md>`_ uses this to produce some patches. | ||||
| 
 | ||||
| 
 | ||||
| DFHack tools | ||||
| ------------ | ||||
| 
 | ||||
| Plugins | ||||
| ~~~~~~~ | ||||
| 
 | ||||
| There are a few development plugins useful for low-level memory research. They | ||||
| are not built by default, but can be built by setting the ``BUILD_DEVEL`` | ||||
| `CMake option <compile-build-options>`. These include: | ||||
| 
 | ||||
| - ``check-structures-sanity``, which performs sanity checks on the given DF | ||||
|   object. Note that this will crash in several cases, some intentional, so using | ||||
|   this with `GDB <linux-gdb>` is recommended. | ||||
| - ``memview``, which produces a hex dump of a given memory range. It also | ||||
|   highlights valid pointers, and can be configured to work with `sizecheck` | ||||
|   to auto-detect object sizes. | ||||
| - ``vectors``, which can identify instances of ``std::vector`` in a given memory range. | ||||
| 
 | ||||
| Scripts | ||||
| ~~~~~~~ | ||||
| 
 | ||||
| Several `development scripts <scripts-devel>` can be useful for memory research. | ||||
| These include (but are not limited to): | ||||
| 
 | ||||
| - `devel/dump-offsets` | ||||
| - `devel/find-offsets` | ||||
| - `devel/lsmem` | ||||
| - `devel/sc` (requires `sizecheck`) | ||||
| - `devel/visualize-structure` | ||||
| - Generally, any script starting with ``devel/find`` | ||||
| 
 | ||||
| .. _sizecheck: | ||||
| 
 | ||||
| Sizecheck | ||||
| ~~~~~~~~~ | ||||
| 
 | ||||
| Sizecheck is a custom tool that hooks into the memory allocator and inserts a | ||||
| header indicating the size of every object. The corresponding logic to check for | ||||
| this header when freeing memory usually works, but is inherently not foolproof. | ||||
| You should not count on DF being stable when using this. | ||||
| 
 | ||||
| DFHack's implementation of sizecheck is currently only tested on Linux, although | ||||
| it probably also works on macOS. It can be built with the ``BUILD_SIZECHECK`` | ||||
| `CMake option <compile-build-options>`, which produces a ``libsizecheck`` | ||||
| library installed in the ``hack`` folder. On Linux, passing ``--sc`` as the | ||||
| first argument to the ``dfhack`` launcher script will load this library on | ||||
| startup. On other platforms, or when passing a different argument to the | ||||
| launcher (such as for `linux-gdb`), you will need to preload this library | ||||
| manually, by setting ``PRELOAD_LIB`` on Linux (or ``LD_PRELOAD`` if editing the | ||||
| ``dfhack`` launcher script directly), or by editing the ``dfhack`` launcher | ||||
| script and adding the library to ``DYLD_INSERT_LIBRARIES`` on macOS. | ||||
| 
 | ||||
| There is also an older sizecheck implementation by Mifki available on | ||||
| `GitHub <https://github.com/mifki/df-sizecheck>`__ (``b.cpp`` is the main | ||||
| sizecheck library, and ``win_patch.cpp`` is used for Windows support). To use | ||||
| this with other DFHack tools, you will likely need to edit the header's | ||||
| magic number to match what is used in `devel/sc` (search for a hexadecimal | ||||
| constant starting with ``0x``). | ||||
| 
 | ||||
| Legacy tools | ||||
| ~~~~~~~~~~~~ | ||||
| 
 | ||||
| Some very old DFHack tools are available in the `legacy branch on GitHub <https://github.com/dfhack/dfhack/tree/legacy/tools>`_. | ||||
| No attempt is made to support these. | ||||
| 
 | ||||
| 
 | ||||
| Linux-specific tools | ||||
| ==================== | ||||
| 
 | ||||
| .. _linux-gdb: | ||||
| 
 | ||||
| GDB | ||||
| --- | ||||
| 
 | ||||
| `GDB <https://www.gnu.org/software/gdb/>`_ is technically cross-platform, but | ||||
| tends to work best on Linux, and DFHack currently only offers support for using | ||||
| GDB on 64-bit Linux. To start with GDB, pass ``-g`` to the DFHack launcher | ||||
| script: | ||||
| 
 | ||||
| .. code-block:: shell | ||||
| 
 | ||||
|     ./dfhack -g | ||||
| 
 | ||||
| Some basic GDB commands: | ||||
| 
 | ||||
| - ``run``: starts DF from the GDB prompt. Any arguments will be passed as | ||||
|   command-line arguments to DF (e.g. `load-save` may be useful). | ||||
| - ``bt`` will produce a backtrace if DF crashes. | ||||
| 
 | ||||
| See the `official GDB documentation <https://www.gnu.org/software/gdb/documentation/>`_ | ||||
| for more details. | ||||
| 
 | ||||
| Other analysis tools | ||||
| -------------------- | ||||
| 
 | ||||
| The ``dfhack`` launcher script on Linux has support for launching several other | ||||
| tools alongside DFHack, including Valgrind (as well as Callgrind and Helgrind) | ||||
| and strace. See the script for the exact command-line option to specify. Note | ||||
| that currently only one tool at a time is supported, and must be specified | ||||
| with the first argument to the script. | ||||
| 
 | ||||
| df-structures GUI | ||||
| ----------------- | ||||
| 
 | ||||
| This is a tool written by Angavrilov and available on `GitHub <https://github.com/angavrilov/cl-linux-debug>`__. | ||||
| It only supports 32-bit DF. Some assistance may be available on IRC. | ||||
| 
 | ||||
| 
 | ||||
| EDB (Evan's debugger) | ||||
| --------------------- | ||||
| 
 | ||||
| Available on `GitHub <https://github.com/eteran/edb-debugger>`__. | ||||
| 
 | ||||
| 
 | ||||
| Windows-specific tools | ||||
| ====================== | ||||
| 
 | ||||
| Some people have used `Cheat Engine <https://www.cheatengine.org/>`__ for research in the past. | ||||
| @ -0,0 +1,238 @@ | ||||
| .. _remote: | ||||
| 
 | ||||
| ======================= | ||||
| DFHack Remote Interface | ||||
| ======================= | ||||
| 
 | ||||
| DFHack provides a remote access interface that external tools can connect to and | ||||
| use to interact with DF. This is implemented with `Google protobuf`_ messages | ||||
| exchanged over a TCP socket. Both the core and plugins can define | ||||
| remotely-accessible methods, or **RPC methods**. The RPC methods currently | ||||
| available are not comprehensive, but can be extended with plugins. | ||||
| 
 | ||||
| .. _Google protobuf: https://developers.google.com/protocol-buffers | ||||
| 
 | ||||
| .. contents:: Contents | ||||
|     :local: | ||||
| 
 | ||||
| 
 | ||||
| .. _remote-server-config: | ||||
| 
 | ||||
| Server configuration | ||||
| ==================== | ||||
| 
 | ||||
| DFHack attempts to start a TCP server to listen for remote connections on | ||||
| startup. If this fails (due to the port being in use, for example), an error | ||||
| message will be logged to stderr.log. | ||||
| 
 | ||||
| The server can be configured by setting options in ``dfhack-config/remote-server.json``: | ||||
| 
 | ||||
| - ``allow_remote`` (default: ``false``): if true, allows connections from hosts | ||||
|   other than the local machine. This is insecure and may allow arbitrary code | ||||
|   execution on your machine, so it is disabled by default. | ||||
| - ``port`` (default: ``5000``): the port that the remote server listens on. | ||||
|   Overriding this will allow the server to work if you have multiple instances | ||||
|   of DF running, or if you have something else running on port 5000. Note that | ||||
|   the ``DFHACK_PORT`` `environment variable <env-vars>` takes precedence over | ||||
|   this setting and may be more useful for overriding the port temporarily. | ||||
| 
 | ||||
| 
 | ||||
| Developing with the remote API | ||||
| ============================== | ||||
| 
 | ||||
| At a high level, the core and plugins define RPC methods, and external clients | ||||
| can call these methods. Each method is assigned an ID internally, which clients | ||||
| use to call it. These method IDs can be obtained using the special ``BindMethod`` | ||||
| method, which has an ID of 0. | ||||
| 
 | ||||
| Examples | ||||
| -------- | ||||
| 
 | ||||
| The `dfhack-run` command uses the RPC interface to invoke DFHack commands | ||||
| (or Lua functions) externally. | ||||
| 
 | ||||
| Plugins that implement RPC methods include: | ||||
| 
 | ||||
| - `rename` | ||||
| - `remotefortressreader` | ||||
| - `isoworldremote` | ||||
| 
 | ||||
| Plugins that use the RPC API include: | ||||
| 
 | ||||
| - `stonesense` | ||||
| 
 | ||||
| Third-party tools that use the RPC API include: | ||||
| 
 | ||||
| - `Armok Vision <https://github.com/RosaryMala/armok-vision>`_ (:forums:`Bay12 forums thread <146473>`) | ||||
| 
 | ||||
| .. _remote-client-libs: | ||||
| 
 | ||||
| Client libraries | ||||
| ---------------- | ||||
| 
 | ||||
| Some external libraries are available for interacting with the remote interface | ||||
| from other (non-C++) languages, including: | ||||
| 
 | ||||
| - `RemoteClientDF-Net <https://github.com/RosaryMala/RemoteClientDF-Net>`_ for C# | ||||
| - `dfhackrpc <https://github.com/BenLubar/dfhackrpc>`_ for Go | ||||
| - `dfhack-remote <https://github.com/alexchandel/dfhack-remote>`_ for JavaScript | ||||
| - `dfhack-client-qt <https://github.com/cvuchener/dfhack-client-qt>`_ for C++ with Qt | ||||
| - `dfhack-client-python <https://github.com/McArcady/dfhack-client-python>`_ for Python (adapted from :forums:`"Blendwarf" <178089>`) | ||||
| - `dfhack-client-java <https://github.com/McArcady/dfhack-client-java>`_ for Java | ||||
| 
 | ||||
| 
 | ||||
| Protocol description | ||||
| ==================== | ||||
| 
 | ||||
| This is a low-level description of the RPC protocol, which may be useful when | ||||
| developing custom clients. | ||||
| 
 | ||||
| A WireShark dissector for this protocol is available in the | ||||
| `df_misc repo <https://github.com/DFHack/df_misc/blob/master/wireshark_dfhack_rpc.lua>`_. | ||||
| 
 | ||||
| 
 | ||||
| Built-in messages | ||||
| ----------------- | ||||
| These messages have hardcoded IDs; all others must be obtained through ``BindMethod``. | ||||
| 
 | ||||
| ===  ============ =============================== ======================= | ||||
| ID   Method       Input                           Output | ||||
| ===  ============ =============================== ======================= | ||||
|  0   BindMethod   dfproto.CoreBindRequest         dfproto.CoreBindReply | ||||
|  1   RunCommand   dfproto.CoreRunCommandRequest   dfproto.EmptyMessage | ||||
| ===  ============ =============================== ======================= | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Conversation flow | ||||
| ----------------- | ||||
| 
 | ||||
| * Client → Server: `handshake request`_ | ||||
| * Server → Client: `handshake reply`_ | ||||
| * Repeated 0 or more times: | ||||
|     * Client → Server: `request`_ | ||||
|     * Server → Client: `text`_ (0 or more times) | ||||
|     * Server → Client: `result`_ or `failure`_ | ||||
| * Client → Server: `quit`_ | ||||
| 
 | ||||
| Raw message types | ||||
| ----------------- | ||||
| 
 | ||||
| * All numbers are little-endian | ||||
| * All strings are ASCII | ||||
| * A payload size of greater than 64MiB is an error | ||||
| * See ``RemoteClient.h`` for definitions of constants starting with ``RPC`` | ||||
| 
 | ||||
| handshake request | ||||
| ~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| .. csv-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
| 
 | ||||
|     Type,    Name,    Value | ||||
|     char[8], magic,   ``DFHack?\n`` | ||||
|     int32_t, version, 1 | ||||
| 
 | ||||
| handshake reply | ||||
| ~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| .. csv-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
| 
 | ||||
|     Type,    Name,    Value | ||||
|     char[8], magic,   ``DFHack!\n`` | ||||
|     int32_t, version, 1 | ||||
| 
 | ||||
| header | ||||
| ~~~~~~ | ||||
| 
 | ||||
| **Note:** the two fields of this message are sometimes repurposed. Uses of this | ||||
| message are represented as ``header(x, y)``, where ``x`` corresponds to the ``id`` | ||||
| field and ``y`` corresponds to ``size``. | ||||
| 
 | ||||
| .. csv-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
| 
 | ||||
|     Type,    Name | ||||
|     int16_t, id | ||||
|     int16_t, (padding - unused) | ||||
|     int32_t, size | ||||
| 
 | ||||
| request | ||||
| ~~~~~~~ | ||||
| 
 | ||||
| .. list-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
|     :widths: 25 75 | ||||
| 
 | ||||
|     * - Type | ||||
|       - Description | ||||
|     * - `header`_ | ||||
|       - ``header(id, size)`` | ||||
|     * - buffer | ||||
|       - Protobuf-encoded payload of the input message type of the method specified by ``id``; length of ``size`` bytes | ||||
| 
 | ||||
| text | ||||
| ~~~~ | ||||
| 
 | ||||
| .. list-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
|     :widths: 25 75 | ||||
| 
 | ||||
|     * - Type | ||||
|       - Description | ||||
|     * - `header`_ | ||||
|       - ``header(RPC_REPLY_TEXT, size)`` | ||||
|     * - buffer | ||||
|       - Protobuf-encoded payload of type ``dfproto.CoreTextNotification``; length of ``size`` bytes | ||||
| 
 | ||||
| result | ||||
| ~~~~~~ | ||||
| 
 | ||||
| .. list-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
|     :widths: 25 75 | ||||
| 
 | ||||
|     * - Type | ||||
|       - Description | ||||
|     * - `header`_ | ||||
|       - ``header(RPC_REPLY_RESULT, size)`` | ||||
|     * - buffer | ||||
|       - Protobuf-encoded payload of the output message type of the oldest incomplete method call; when received, | ||||
|         that method call is considered completed. Length of ``size`` bytes. | ||||
| 
 | ||||
| failure | ||||
| ~~~~~~~ | ||||
| 
 | ||||
| .. list-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
|     :widths: 25 75 | ||||
| 
 | ||||
|     * - Type | ||||
|       - Description | ||||
|     * - `header`_ | ||||
|       - ``header(RPC_REPLY_FAIL, command_result)`` | ||||
|     * - command_result | ||||
|       - return code of the command (a constant starting with ``CR_``; see ``RemoteClient.h``) | ||||
| 
 | ||||
| quit | ||||
| ~~~~ | ||||
| 
 | ||||
| **Note:** the server closes the connection after receiving this message. | ||||
| 
 | ||||
| .. list-table:: | ||||
|     :align: left | ||||
|     :header-rows: 1 | ||||
|     :widths: 25 75 | ||||
| 
 | ||||
|     * - Type | ||||
|       - Description | ||||
|     * - `header`_ | ||||
|       - ``header(RPC_REQUEST_QUIT, 0)`` | ||||
| @ -0,0 +1,17 @@ | ||||
| ############# | ||||
| Removed tools | ||||
| ############# | ||||
| 
 | ||||
| This page lists tools (plugins or scripts) that were previously included in | ||||
| DFHack but have been removed. It exists primarily so that internal links still | ||||
| work (e.g. links from the `changelog`). | ||||
| 
 | ||||
| .. contents:: Contents | ||||
|   :local: | ||||
|   :depth: 1 | ||||
| 
 | ||||
| .. _warn-stuck-trees: | ||||
| 
 | ||||
| warn-stuck-trees | ||||
| ================ | ||||
| The corresponding DF bug, :bug:`9252` was fixed in DF 0.44.01. | ||||
| @ -1,14 +0,0 @@ | ||||
| ############### | ||||
| Removed scripts | ||||
| ############### | ||||
| 
 | ||||
| The following scripts were removed for various reasons. | ||||
| 
 | ||||
| .. contents:: | ||||
|    :depth: 2 | ||||
| 
 | ||||
| .. _warn-stuck-trees: | ||||
| 
 | ||||
| warn-stuck-trees | ||||
| ================ | ||||
| The corresponding DF bug, :bug:`9252` was fixed in DF 0.44.01. | ||||
| @ -0,0 +1,34 @@ | ||||
| =================================== | ||||
| DF data definitions (DF-structures) | ||||
| =================================== | ||||
| 
 | ||||
| DFHack's information about DF's data structures is stored in XML files in the | ||||
| `df-structures repository <https://github.com/DFHack/df-structures>`_. If you | ||||
| have `obtained a local copy of the DFHack source <compile-how-to-get-the-code>`, | ||||
| DF-structures is included as a submodule in ``library/xml``. | ||||
| 
 | ||||
| Data structure layouts are described in files named with the ``df.*.xml`` | ||||
| pattern. This information is transformed by a Perl script (``codegen.pl``) into | ||||
| C++ headers, as well as metadata for the Lua wrapper. This ultimately allows | ||||
| DFHack code to access DF data directly, with the same speed and capabilities as | ||||
| DF itself, which is an  advantage over the older out-of-process approach (used | ||||
| by debuggers and utilities like Dwarf Therapist). The main disadvantage of this | ||||
| approach is that any compiled code relying on these layouts will break when DF's | ||||
| layout changes, and will need to be recompiled for every new DF version. | ||||
| 
 | ||||
| Addresses of DF global objects and vtables are stored in a separate file, | ||||
| :file:`symbols.xml`. Since these are only absolute addresses, they do not need | ||||
| to be compiled in to DFHack code, and are instead loaded at runtime. This makes | ||||
| fixes and additions to global addresses possible without recompiling DFHack. | ||||
| In an installed copy of DFHack, this file can be found at the root of the | ||||
| ``hack`` folder. | ||||
| 
 | ||||
| The following pages contain more detailed information about various aspects | ||||
| of DF-structures: | ||||
| 
 | ||||
| .. toctree:: | ||||
|    :titlesonly: | ||||
| 
 | ||||
|    /library/xml/SYNTAX | ||||
|    /library/xml/how-to-update | ||||
| 
 | ||||
| @ -0,0 +1,59 @@ | ||||
| .. include:: <isonum.txt> | ||||
| 
 | ||||
| ======== | ||||
| Maps API | ||||
| ======== | ||||
| 
 | ||||
| DFHack offers several ways to access and manipulate map data. | ||||
| 
 | ||||
| * C++: the ``Maps`` and ``MapCache`` modules | ||||
| * Lua: the `dfhack.maps module <lua-maps>`_ | ||||
| * All languages: the ``map`` field of the ``world`` global contains raw map data | ||||
|   when the world is loaded. | ||||
| 
 | ||||
| .. note:: | ||||
| 
 | ||||
|     This page will eventually go into more detail about the available APIs. | ||||
|     For now, it is just an overview of how DF map data is structured. | ||||
| 
 | ||||
| .. contents:: Contents | ||||
|     :local: | ||||
| 
 | ||||
| Tiles | ||||
| ===== | ||||
| 
 | ||||
| The DF map has several types of tiles: | ||||
| 
 | ||||
| - **Local tiles** are at the smallest scale. In regular fortress/adventure mode | ||||
|   play, the cursor takes up 1 local tile. | ||||
| 
 | ||||
|   Objects that use local tile coordinates include: | ||||
| 
 | ||||
|   - Units | ||||
|   - Items | ||||
|   - Projectiles | ||||
| 
 | ||||
| - **Blocks** are 16 |times| 16 |times| 1 groups of local tiles. Internally, many | ||||
|   tile details are stored at the block level for space-efficiency reasons. | ||||
|   Blocks are visible during zoomed-in fast travel in adventure mode. | ||||
| 
 | ||||
|   Objects that use block coordinates include: | ||||
| 
 | ||||
|   - Armies | ||||
| 
 | ||||
| - **Region tiles** are 3 |times| 3 groups of columns of blocks (they span the | ||||
|   entire z-axis), or 48 |times| 48 columns of local tiles. DF sometimes refers | ||||
|   to these as "mid-level tiles" (MLTs). Region tiles are visible when resizing | ||||
|   a fortress before embarking, or in zoomed-out fast travel in adventure mode. | ||||
| 
 | ||||
| - **World tiles** are | ||||
| 
 | ||||
|   - 16 |times| 16 groups of region tiles, or | ||||
|   - 48 |times| 48 groups of columns of blocks, or | ||||
|   - 768 |times| 768 groups of columns of local tiles | ||||
| 
 | ||||
|   World tiles are visible on the world map before embarking, as well as in the | ||||
|   civilization map in fortress mode and the quest log in adventure mode. | ||||
| 
 | ||||
| - Some map features are stored in 16 |times| 16 groups of world tiles, sometimes | ||||
|   referred to as "feature shells". | ||||
| @ -0,0 +1,8 @@ | ||||
| ==================== | ||||
| DFHack API Reference | ||||
| ==================== | ||||
| 
 | ||||
| .. toctree:: | ||||
|     :maxdepth: 1 | ||||
| 
 | ||||
|     /docs/api/Maps | ||||
| @ -0,0 +1,23 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # usage: | ||||
| #   ./build-pdf.sh | ||||
| #   SPHINX=/path/to/sphinx-build ./build-pdf.sh | ||||
| #   JOBS=3 ./build-pdf.sh ... | ||||
| # all command-line arguments are passed directly to sphinx-build - run | ||||
| # ``sphinx-build --help`` for a list, or see | ||||
| # https://www.sphinx-doc.org/en/master/man/sphinx-build.html | ||||
| 
 | ||||
| cd $(dirname "$0") | ||||
| cd .. | ||||
| 
 | ||||
| sphinx=sphinx-build | ||||
| if [ -n "$SPHINX" ]; then | ||||
|     sphinx=$SPHINX | ||||
| fi | ||||
| 
 | ||||
| if [ -z "$JOBS" ]; then | ||||
|     JOBS=2 | ||||
| fi | ||||
| 
 | ||||
| "$sphinx" -M latexpdf . ./docs/pdf -w ./docs/_sphinx-warnings.txt -j "$JOBS" "$@" | ||||
| @ -0,0 +1,11 @@ | ||||
| DFHack's changelog is no longer stored at this location. | ||||
| 
 | ||||
| - For a local copy, see hack/docs/docs/NEWS.html | ||||
|   (this requires offline docs to be installed) | ||||
| - For an online copy, see https://dfhack.readthedocs.org/en/stable/docs/NEWS.html | ||||
| 
 | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| Note to maintainers: this file is installed to hack/changelog.txt - for details, | ||||
| see https://github.com/DFHack/dfhack/issues/1775 | ||||
| @ -1,272 +1,5 @@ | ||||
| import collections | ||||
| import copy | ||||
| import itertools | ||||
| import os | ||||
| import sys | ||||
| import os, sys | ||||
| sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'sphinx_extensions')) | ||||
| 
 | ||||
| CHANGELOG_SECTIONS = [ | ||||
|     'New Plugins', | ||||
|     'New Scripts', | ||||
|     'New Tweaks', | ||||
|     'New Features', | ||||
|     'New Internal Commands', | ||||
|     'Fixes', | ||||
|     'Misc Improvements', | ||||
|     'Removed', | ||||
|     'API', | ||||
|     'Internals', | ||||
|     'Lua', | ||||
|     'Ruby', | ||||
|     'Structures', | ||||
| ] | ||||
| 
 | ||||
| REPLACEMENTS = { | ||||
|     '`search`': '`search-plugin`', | ||||
| } | ||||
| 
 | ||||
| def to_title_case(word): | ||||
|     if word == word.upper(): | ||||
|         # Preserve acronyms | ||||
|         return word | ||||
|     return word[0].upper() + word[1:].lower() | ||||
| 
 | ||||
| def find_all_indices(string, substr): | ||||
|     start = 0 | ||||
|     while True: | ||||
|         i = string.find(substr, start) | ||||
|         if i == -1: | ||||
|             return | ||||
|         yield i | ||||
|         start = i + 1 | ||||
| 
 | ||||
| def replace_text(string, replacements): | ||||
|     for old_text, new_text in replacements.items(): | ||||
|         new_string = '' | ||||
|         new_string_end = 0  # number of characters from string in new_string | ||||
|         for i in find_all_indices(string, old_text): | ||||
|             if i > 0 and string[i - 1] == '!': | ||||
|                 # exempt if preceded by '!' | ||||
|                 new_string += string[new_string_end:i - 1] | ||||
|                 new_string += old_text | ||||
|             else: | ||||
|                 # copy until this occurrence | ||||
|                 new_string += string[new_string_end:i] | ||||
|                 new_string += new_text | ||||
|             new_string_end = i + len(old_text) | ||||
|         new_string += string[new_string_end:] | ||||
|         string = new_string | ||||
|     return string | ||||
| 
 | ||||
| class ChangelogEntry(object): | ||||
|     def __init__(self, text, section, stable_version, dev_version): | ||||
|         text = text.lstrip('- ') | ||||
|         # normalize section to title case | ||||
|         self.section = ' '.join(map(to_title_case, section.strip().split())) | ||||
|         self.stable_version = stable_version | ||||
|         self.dev_version = dev_version | ||||
|         self.dev_only = text.startswith('@') | ||||
|         text = text.lstrip('@ ') | ||||
|         self.children = [] | ||||
| 
 | ||||
|         split_index = text.find(': ') | ||||
|         if split_index != -1: | ||||
|             self.feature, description = text[:split_index], text[split_index+1:] | ||||
|             if description.strip(): | ||||
|                 self.children.insert(0, description.strip()) | ||||
|         else: | ||||
|             self.feature = text | ||||
|         self.feature = self.feature.replace(':\\', ':').rstrip(':') | ||||
| 
 | ||||
|         self.sort_key = self.feature.upper() | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return 'ChangelogEntry(%r, %r)' % (self.feature, self.children) | ||||
| 
 | ||||
| def parse_changelog(): | ||||
|     cur_stable = None | ||||
|     cur_dev = None | ||||
|     cur_section = None | ||||
|     last_entry = None | ||||
|     entries = [] | ||||
| 
 | ||||
|     with open('docs/changelog.txt') as f: | ||||
|         multiline = '' | ||||
|         for line_id, line in enumerate(f.readlines()): | ||||
|             line_id += 1 | ||||
| 
 | ||||
|             if multiline: | ||||
|                 multiline += line | ||||
|             elif '[[[' in line: | ||||
|                 multiline = line.replace('[[[', '') | ||||
| 
 | ||||
|             if ']]]' in multiline: | ||||
|                 line = multiline.replace(']]]', '') | ||||
|                 multiline = '' | ||||
|             elif multiline: | ||||
|                 continue | ||||
| 
 | ||||
|             if not line.strip() or line.startswith('==='): | ||||
|                 continue | ||||
| 
 | ||||
|             if line.startswith('##'): | ||||
|                 cur_section = line.lstrip('#').strip() | ||||
|             elif line.startswith('#'): | ||||
|                 cur_dev = line.lstrip('#').strip().lower() | ||||
|                 if ('alpha' not in cur_dev and 'beta' not in cur_dev and | ||||
|                         'rc' not in cur_dev): | ||||
|                     cur_stable = cur_dev | ||||
|             elif line.startswith('-'): | ||||
|                 if not cur_stable or not cur_dev or not cur_section: | ||||
|                     raise ValueError( | ||||
|                         'changelog.txt:%i: Entry without section' % line_id) | ||||
|                 last_entry = ChangelogEntry(line.strip(), cur_section, | ||||
|                                             cur_stable, cur_dev) | ||||
|                 entries.append(last_entry) | ||||
|             elif line.lstrip().startswith('-'): | ||||
|                 if not cur_stable or not cur_dev: | ||||
|                     raise ValueError( | ||||
|                         'changelog.txt:%i: Sub-entry without section' % line_id) | ||||
|                 if not last_entry: | ||||
|                     raise ValueError( | ||||
|                         'changelog.txt:%i: Sub-entry without parent' % line_id) | ||||
|                 last_entry.children.append(line.strip('- \n')) | ||||
|             else: | ||||
|                 raise ValueError('Invalid line: ' + line) | ||||
| 
 | ||||
|     return entries | ||||
| 
 | ||||
| def consolidate_changelog(all_entries): | ||||
|     for sections in all_entries.values(): | ||||
|         for section, entries in sections.items(): | ||||
|             # sort() is stable, so reverse entries so that older entries for the | ||||
|             # same feature are on top | ||||
|             entries.reverse() | ||||
|             entries.sort(key=lambda entry: entry.sort_key) | ||||
|             new_entries = [] | ||||
|             for feature, group in itertools.groupby(entries, | ||||
|                                                     lambda e: e.feature): | ||||
|                 old_entries = list(group) | ||||
|                 children = list(itertools.chain(*[entry.children | ||||
|                                 for entry in old_entries])) | ||||
|                 new_entry = copy.deepcopy(old_entries[0]) | ||||
|                 new_entry.children = children | ||||
|                 new_entries.append(new_entry) | ||||
|             entries[:] = new_entries | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def print_changelog(versions, all_entries, path, replace=True, prefix=''): | ||||
|     # all_entries: version -> section -> entry | ||||
|     with open(path, 'w') as f: | ||||
|         def write(line): | ||||
|             if replace: | ||||
|                 line = replace_text(line, REPLACEMENTS) | ||||
|             f.write(prefix + line + '\n') | ||||
|         for version in versions: | ||||
|             sections = all_entries[version] | ||||
|             if not sections: | ||||
|                 continue | ||||
|             version = 'DFHack ' + version | ||||
|             write(version) | ||||
|             write('=' * len(version)) | ||||
|             write('') | ||||
|             for section in CHANGELOG_SECTIONS: | ||||
|                 entries = sections[section] | ||||
|                 if not entries: | ||||
|                     continue | ||||
|                 write(section) | ||||
|                 write('-' * len(section)) | ||||
|                 for entry in entries: | ||||
|                     if len(entry.children) == 1: | ||||
|                         write('- ' + entry.feature + ': ' + | ||||
|                                 entry.children[0].strip('- ')) | ||||
|                         continue | ||||
|                     elif entry.children: | ||||
|                         write('- ' + entry.feature + ':') | ||||
|                         write('') | ||||
|                         for child in entry.children: | ||||
|                             write('    - ' + child) | ||||
|                         write('') | ||||
|                     else: | ||||
|                         write('- ' + entry.feature) | ||||
|                 write('') | ||||
|             write('') | ||||
| 
 | ||||
| 
 | ||||
| def generate_changelog(all=False): | ||||
|     entries = parse_changelog() | ||||
| 
 | ||||
|     # scan for unrecognized sections | ||||
|     for entry in entries: | ||||
|         if entry.section not in CHANGELOG_SECTIONS: | ||||
|             raise RuntimeWarning('Unknown section: ' + entry.section) | ||||
| 
 | ||||
|     # ordered versions | ||||
|     versions = ['future'] | ||||
|     # map versions to stable versions | ||||
|     stable_version_map = {} | ||||
|     # version -> section -> entry | ||||
|     stable_entries = collections.defaultdict(lambda: | ||||
|                         collections.defaultdict(list)) | ||||
|     dev_entries = collections.defaultdict(lambda: | ||||
|                         collections.defaultdict(list)) | ||||
| 
 | ||||
|     for entry in entries: | ||||
|         # build list of all versions | ||||
|         if entry.dev_version not in versions: | ||||
|             versions.append(entry.dev_version) | ||||
|         stable_version_map.setdefault(entry.dev_version, entry.stable_version) | ||||
| 
 | ||||
|         if not entry.dev_only: | ||||
|             # add non-dev-only entries to both changelogs | ||||
|             stable_entries[entry.stable_version][entry.section].append(entry) | ||||
|         dev_entries[entry.dev_version][entry.section].append(entry) | ||||
| 
 | ||||
|     consolidate_changelog(stable_entries) | ||||
| 
 | ||||
|     print_changelog(versions, stable_entries, 'docs/_auto/news.rst') | ||||
|     print_changelog(versions, dev_entries, 'docs/_auto/news-dev.rst') | ||||
| 
 | ||||
|     if all: | ||||
|         for version in versions: | ||||
|             if version not in stable_version_map: | ||||
|                 print('warn: skipping ' + version) | ||||
|                 continue | ||||
|             if stable_version_map[version] == version: | ||||
|                 version_entries = {version: stable_entries[version]} | ||||
|             else: | ||||
|                 version_entries = {version: dev_entries[version]} | ||||
|             print_changelog([version], version_entries, | ||||
|                 'docs/_changelogs/%s-github.txt' % version, | ||||
|                 replace=False) | ||||
|             print_changelog([version], version_entries, | ||||
|                 'docs/_changelogs/%s-reddit.txt' % version, | ||||
|                 replace=False, | ||||
|                 prefix='> ') | ||||
| 
 | ||||
|     return entries | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     import argparse | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('-a', '--all', action='store_true', | ||||
|         help='Print changelogs for all versions to docs/_changelogs') | ||||
|     parser.add_argument('-c', '--check', action='store_true', | ||||
|         help='Check that all entries are printed') | ||||
|     args = parser.parse_args() | ||||
| 
 | ||||
|     os.chdir(os.path.abspath(os.path.dirname(__file__))) | ||||
|     os.chdir('..') | ||||
|     entries = generate_changelog(all=args.all) | ||||
| 
 | ||||
|     if args.check: | ||||
|         with open('docs/_auto/news.rst') as f: | ||||
|             content_stable = f.read() | ||||
|         with open('docs/_auto/news-dev.rst') as f: | ||||
|             content_dev = f.read() | ||||
|         for entry in entries: | ||||
|             for description in entry.children: | ||||
|                 if not entry.dev_only and description not in content_stable: | ||||
|                     print('stable missing: ' + description) | ||||
|                 if description not in content_dev: | ||||
|                     print('dev missing: ' + description) | ||||
| from dfhack.changelog import cli_entrypoint | ||||
| cli_entrypoint() | ||||
|  | ||||
| @ -0,0 +1,11 @@ | ||||
| =========== | ||||
| User Guides | ||||
| =========== | ||||
| 
 | ||||
| These pages are detailed guides covering DFHack tools. | ||||
| 
 | ||||
| .. toctree:: | ||||
|    :maxdepth: 1 | ||||
|    :glob: | ||||
| 
 | ||||
|    * | ||||
| @ -0,0 +1,858 @@ | ||||
| .. _quickfort-alias-guide: | ||||
| 
 | ||||
| Quickfort Alias Guide | ||||
| ===================== | ||||
| 
 | ||||
| Aliases allow you to use simple words to represent complicated key sequences | ||||
| when configuring buildings and stockpiles in quickfort ``#query`` blueprints. | ||||
| 
 | ||||
| For example, say you have the following ``#build`` and ``#place`` blueprints:: | ||||
| 
 | ||||
|     #build masonry workshop | ||||
|     ~, ~,~,`,`,` | ||||
|     ~,wm,~,`,`,` | ||||
|     ~, ~,~,`,`,` | ||||
| 
 | ||||
|     #place stockpile for mason | ||||
|     ~,~,~,s,s,s | ||||
|     ~,~,~,s,s,s | ||||
|     ~,~,~,s,s,s | ||||
| 
 | ||||
| and you want to configure the stockpile to hold only non-economic ("other") | ||||
| stone and to give to the adjacent mason workshop. You could write the | ||||
| key sequences directly:: | ||||
| 
 | ||||
|     #query configure stockpile with expanded key sequences | ||||
|     ~,~,~,s{Down 5}deb{Right}{Down 2}p^,`,` | ||||
|     ~,~,~,g{Left 2}&,                   `,` | ||||
|     ~,~,~,`,                            `,` | ||||
| 
 | ||||
| or you could use aliases:: | ||||
| 
 | ||||
|     #query configure stockpile with aliases | ||||
|     ~,~,~,otherstone,`,` | ||||
|     ~,~,~,give2left, `,` | ||||
|     ~,~,~,`,         `,` | ||||
| 
 | ||||
| If the stockpile had only a single tile, you could also replay both aliases in | ||||
| a single cell:: | ||||
| 
 | ||||
|     #query configure mason with multiple aliases in one cell | ||||
|     ~,~,~,{otherstone}{give2left},`,` | ||||
|     ~,~,~,`,                      `,` | ||||
|     ~,~,~,`,                      `,` | ||||
| 
 | ||||
| With aliases, blueprints are much easier to read and understand. They also | ||||
| save you from having to copy the same long key sequences everywhere. | ||||
| 
 | ||||
| Alias definition files | ||||
| ---------------------- | ||||
| 
 | ||||
| DFHack comes with a library of aliases for you to use that are always | ||||
| available when you run a ``#query`` blueprint. Many blueprints can be built | ||||
| with just those aliases. This "standard alias library" is stored in | ||||
| :source:`data/quickfort/aliases-common.txt` (installed under the ``hack`` folder | ||||
| in your DFHack installation). The aliases in that file are described at the | ||||
| `bottom of this document <quickfort-alias-library>`. | ||||
| 
 | ||||
| Please do not edit the aliases in the standard library directly. The file will | ||||
| get overwritten when DFHack is updated and you'll lose your changes. Instead, | ||||
| add your custom aliases to :source:`dfhack-config/quickfort/aliases.txt` or | ||||
| directly to your blueprints in an `#aliases <quickfort-aliases-blueprints>` | ||||
| section. Your custom alias definitions take precedence over any definitions in | ||||
| the standard library. | ||||
| 
 | ||||
| Alias syntax and usage | ||||
| ---------------------- | ||||
| 
 | ||||
| The syntax for defining aliases is:: | ||||
| 
 | ||||
|     aliasname: expansion | ||||
| 
 | ||||
| Where ``aliasname`` is at least two letters or digits long (dashes and | ||||
| underscores are also allowed) and ``expansion`` is whatever you would type | ||||
| into the DF UI. | ||||
| 
 | ||||
| You use an alias by typing its name into a ``#query`` blueprint cell where you | ||||
| want it to be applied. You can use an alias by itself or as part of a larger | ||||
| sequence, potentially with other aliases. If the alias is the only text in the | ||||
| cell, the alias name is matched and its expansion is used. If the alias has | ||||
| other keys before or after it, the alias name must be surrounded in curly | ||||
| brackets (:kbd:`{` and :kbd:`}`). An alias can be surrounded in curly brackets | ||||
| even if it is the only text in the cell, it just isn't necesary. For example, | ||||
| the following blueprint uses the ``aliasname`` alias by itself in the first | ||||
| two rows and uses it as part of a longer sequence in the third row:: | ||||
| 
 | ||||
|     #query apply alias 'aliasname' in three different ways | ||||
|     aliasname | ||||
|     {aliasname} | ||||
|     literaltext{aliasname}literaltext | ||||
| 
 | ||||
| For a more concrete example of an alias definition, a simple alias that | ||||
| configures a stockpile to have no bins (:kbd:`C`) and no barrels (:kbd:`E`) | ||||
| assigned to it would look like this:: | ||||
| 
 | ||||
|     nocontainers: CE | ||||
| 
 | ||||
| The alias definition can also contain references to other aliases by including | ||||
| the alias names in curly brackets. For example, ``nocontainers`` could be | ||||
| equivalently defined like this:: | ||||
| 
 | ||||
|     nobins: C | ||||
|     nobarrels: E | ||||
|     nocontainers: {nobins}{nobarrels} | ||||
| 
 | ||||
| Aliases used in alias definitions *must* be surrounded by curly brackets, even | ||||
| if they are the only text in the definition:: | ||||
| 
 | ||||
|     alias1: text1 | ||||
|     alias2: alias1 | ||||
|     alias3: {alias1} | ||||
| 
 | ||||
| Here, ``alias1`` and ``alias3`` expand to ``text1``, but ``alias2`` expands to | ||||
| the literal text ``alias1``. | ||||
| 
 | ||||
| Keycodes | ||||
| ~~~~~~~~ | ||||
| 
 | ||||
| Non-printable characters, like the arrow keys, are represented by their | ||||
| keycode name and are also surrounded by curly brackets, like ``{Right}`` or | ||||
| ``{Enter}``. Keycodes are used exactly like aliases -- they just have special | ||||
| expansions that you wouldn't be able to write yourself. In order to avoid | ||||
| naming conflicts between aliases and keycodes, the convention is to start | ||||
| aliases with a lowercase letter. | ||||
| 
 | ||||
| Any keycode name from the DF interface definition file | ||||
| (data/init/interface.txt) is valid, but only a few keycodes are actually | ||||
| useful for blueprints:: | ||||
| 
 | ||||
|     Up | ||||
|     Down | ||||
|     Left | ||||
|     Right | ||||
|     Enter | ||||
|     ESC | ||||
|     Backspace | ||||
|     Space | ||||
|     Tab | ||||
| 
 | ||||
| There is also one pseudo-keycode that quickfort recognizes:: | ||||
| 
 | ||||
|     Empty | ||||
| 
 | ||||
| which has an empty expansion. It is primarily useful for defining blank default values for `Sub-aliases`_. | ||||
| 
 | ||||
| Repetitions | ||||
| ~~~~~~~~~~~ | ||||
| 
 | ||||
| Anything enclosed within curly brackets can also have a number, indicating how | ||||
| many times that alias or keycode should be repeated. For example: | ||||
| ``{togglesequence 9}`` or ``{Down 5}`` will repeat the ``togglesequence`` | ||||
| alias nine times and the ``Down`` keycode five times, respectively. | ||||
| 
 | ||||
| Modifier keys | ||||
| ~~~~~~~~~~~~~ | ||||
| 
 | ||||
| Ctrl, Alt, and Shift modifiers can be specified for the next key by adding | ||||
| them into the key sequence. For example, Alt-h is written as ``{Alt}h``. | ||||
| 
 | ||||
| Shorthand characters | ||||
| ~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| Some frequently-used keycodes are assigned shorthand characters. Think of them | ||||
| as single-character aliases that don't need to be surrounded in curly | ||||
| brackets:: | ||||
| 
 | ||||
|     &   expands to {Enter} | ||||
|     @   expands to {Shift}{Enter} | ||||
|     ~   expands to {Alt} | ||||
|     !   expands to {Ctrl} | ||||
|     ^   expands to {ESC} | ||||
| 
 | ||||
| If you need literal versions of the shorthand characters, surround them in | ||||
| curly brackets, for example: use ``{!}`` for a literal exclamation point. | ||||
| 
 | ||||
| Built-in aliases | ||||
| ~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| Most aliases that come with DFHack are in ``aliases-common.txt``, but there is | ||||
| one alias built into the code for the common shorthand for "make room":: | ||||
| 
 | ||||
|     r+  expands to r+{Enter} | ||||
| 
 | ||||
| This needs special code support since ``+`` can't normally be used in alias | ||||
| names. You can use it just like any other alias, either by itself in a cell | ||||
| (``r+``) or surrounded in curly brackets (``{r+}``). | ||||
| 
 | ||||
| Sub-aliases | ||||
| ~~~~~~~~~~~ | ||||
| 
 | ||||
| You can specify sub-aliases that will only be defined while the current alias | ||||
| is being resolved. This is useful for "injecting" custom behavior into the | ||||
| middle of a larger alias. As a simple example, the ``givename`` alias is defined | ||||
| like this:: | ||||
| 
 | ||||
|     givename: !n{name}& | ||||
| 
 | ||||
| Note the use of the ``name`` alias inside of the ``givename`` expansion. In your | ||||
| ``#query`` blueprint, you could write something like this, say, while over your | ||||
| main drawbridge:: | ||||
| 
 | ||||
|     {givename name="Front Gate"} | ||||
| 
 | ||||
| The value that you give the sub-alias ``name`` will be used when the | ||||
| ``givename`` alias is expanded. Without sub-aliases, we'd have to define | ||||
| ``givename`` like this:: | ||||
| 
 | ||||
|     givenameprefix: !n | ||||
|     givenamesuffix: & | ||||
| 
 | ||||
| and use it like this:: | ||||
| 
 | ||||
|     {givenameprefix}Front Gate{givenamesuffix} | ||||
| 
 | ||||
| which is more difficult to write and more difficult to understand. | ||||
| 
 | ||||
| A handy technique is to define an alias with some sort of default | ||||
| behavior and then use sub-aliases to override that behavior as necessary. For | ||||
| example, here is a simplified version of the standard ``quantum`` alias that | ||||
| sets up quantum stockpiles:: | ||||
| 
 | ||||
|     quantum_enable: {enableanimals}{enablefood}{enablefurniture}... | ||||
|     quantum: {linksonly}{nocontainers}{quantum_enable} | ||||
| 
 | ||||
| You can use the default behavior of ``quantum_enable`` by just using the | ||||
| ``quantum`` alias by itself. But you can override ``quantum_enable`` to just | ||||
| enable furniture for some specific stockpile like this:: | ||||
| 
 | ||||
|     {quantum quantum_enable={enablefurniture}} | ||||
| 
 | ||||
| If an alias uses a sub-alias in its expansion, but the sub-alias is not defined | ||||
| when the alias is used, quickfort will halt the ``#query`` blueprint with an | ||||
| error. If you want your aliases to work regardless of whether sub-aliases are | ||||
| defined, then you must define them with default values like ``quantum_enable`` | ||||
| above. If a default value should be blank, like the ``name`` sub-alias used by | ||||
| the ``givename`` alias above, define it with the ``{Empty}`` pesudo-keycode:: | ||||
| 
 | ||||
|     name: {Empty} | ||||
| 
 | ||||
| Sub-aliases must be in one of the following formats:: | ||||
| 
 | ||||
|     subaliasname=keyswithnospaces | ||||
|     subaliasname="keys with spaces or {aliases}" | ||||
|     subaliasname={singlealias} | ||||
| 
 | ||||
| If you specify both a sub-alias and a number of repetitions, the number for | ||||
| repetitions goes last, right before the :kbd:`}`:: | ||||
| 
 | ||||
|     {alias subaliasname=value repetitions} | ||||
| 
 | ||||
| Beyond query mode | ||||
| ----------------- | ||||
| ``#query`` blueprints normally do things in DF :kbd:`q`\uery mode, but nobody | ||||
| said that we have to *stay* in query mode. ``#query`` blueprints send | ||||
| arbitrary key sequences to Dwarf Fortress. Anything you can do by typing keys | ||||
| into DF, you can do in a ``#query`` blueprint. It is absolutely fine to | ||||
| temporarily exit out of query mode, go into, say, hauling or zone or hotkey | ||||
| mode, and do whatever needs to be done. | ||||
| 
 | ||||
| You just have to make certain to exit out of that alternate mode and get back | ||||
| into :kbd:`q`\uery mode at the end of the key sequence. That way quickfort can | ||||
| continue on configuring the next tile -- a tile configuration that assumes the | ||||
| game is still in query mode. | ||||
| 
 | ||||
| For example, here is the standard library alias for giving a name to a zone:: | ||||
| 
 | ||||
|     namezone: ^i{givename}^q | ||||
| 
 | ||||
| The first :kbd:`\^` exits out of query mode. Then :kbd:`i` enters zones mode. | ||||
| We then reuse the standard alias for giving something a name. Finally, we exit | ||||
| out of zones mode with another :kbd:`\^` and return to :kbd:`q`\uery mode. | ||||
| 
 | ||||
| .. _quickfort-alias-library: | ||||
| 
 | ||||
| The DFHack standard alias library | ||||
| --------------------------------- | ||||
| 
 | ||||
| DFHack comes with many useful aliases for you to use in your blueprints. Many | ||||
| blueprints can be built with just these aliases alone, with no custom aliases | ||||
| required. | ||||
| 
 | ||||
| This section goes through all aliases provided by the DFHack standard alias | ||||
| library, discussing their intended usage and detailing sub-aliases that you | ||||
| can define to customize their behavior. | ||||
| 
 | ||||
| If you do define your own custom aliases in | ||||
| ``dfhack-config/quickfort/aliases.txt``, try to build on library alias | ||||
| components. For example, if you create an alias to modify particular furniture | ||||
| stockpile settings, start your alias with ``{furnitureprefix}`` instead of | ||||
| ``s{Down 2}``. Using library prefixes will allow library sub-aliases to work | ||||
| with your aliases just like they do with library aliases. In this case, using | ||||
| ``{furnitureprefix}`` will allow your stockpile customization alias to work | ||||
| with both stockpiles and hauling routes. | ||||
| 
 | ||||
| Note that some aliases use the DFHack-provided search prompts. If you get errors | ||||
| while running ``#query`` blueprints, ensure the DFHack `search-plugin` plugin is | ||||
| enabled. | ||||
| 
 | ||||
| Naming aliases | ||||
| ~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| These aliases give descriptive names to workshops, levers, stockpiles, zones, | ||||
| etc. Dwarf Fortress building, stockpile, and zone names have a maximum length | ||||
| of 20 characters. | ||||
| 
 | ||||
| ========  =========== | ||||
| Alias     Sub-aliases | ||||
| ========  =========== | ||||
| givename  name | ||||
| namezone  name | ||||
| ========  =========== | ||||
| 
 | ||||
| ``givename`` works anywhere you can hit Ctrl-n to customize a name, like when | ||||
| the cursor is over buildings and stockpiles. Example:: | ||||
| 
 | ||||
|     #place | ||||
|     f(10x2) | ||||
| 
 | ||||
|     #query | ||||
|     {booze}{givename name=booze} | ||||
| 
 | ||||
| ``namezone`` is intended to be used when over an activity zone. It includes | ||||
| commands to get into zones mode, set the zone name, and get back to query | ||||
| mode. Example:: | ||||
| 
 | ||||
|     #zone | ||||
|     n(2x2) | ||||
| 
 | ||||
|     #query | ||||
|     {namezone name="guard dog pen"} | ||||
| 
 | ||||
| Quantum stockpile aliases | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| These aliases make it easy to create :wiki:`minecart stop-based quantum stockpiles <Quantum_stockpile#The_Minecart_Stop>`. | ||||
| 
 | ||||
| +----------------------+------------------+ | ||||
| | Alias                | Sub-aliases      | | ||||
| +======================+==================+ | ||||
| | quantum              | | name           | | ||||
| |                      | | quantum_enable | | ||||
| +----------------------+------------------+ | ||||
| | quantumstopfromnorth | | name           | | ||||
| +----------------------+ | stop_name      | | ||||
| | quantumstopfromsouth | | route_enable   | | ||||
| +----------------------+                  | | ||||
| | quantumstopfromeast  |                  | | ||||
| +----------------------+                  | | ||||
| | quantumstopfromwest  |                  | | ||||
| +----------------------+------------------+ | ||||
| | sp_link              | | move           | | ||||
| |                      | | move_back      | | ||||
| +----------------------+------------------+ | ||||
| | quantumstop          | | name           | | ||||
| |                      | | stop_name      | | ||||
| |                      | | route_enable   | | ||||
| |                      | | move           | | ||||
| |                      | | move_back      | | ||||
| |                      | | sp_links       | | ||||
| +----------------------+------------------+ | ||||
| 
 | ||||
| The idea is to use a minecart on a track stop to dump an infinite number of | ||||
| items into a receiving "quantum" stockpile, which significantly simplifies | ||||
| stockpile management. These aliases configure the quantum stockpile and | ||||
| hauling route that make it all work. Here is a complete example for quantum | ||||
| stockpiling weapons, armor, and ammunition. It has a 3x1 feeder stockpile on | ||||
| the bottom (South), the trackstop in the center, and the quantum stockpile on | ||||
| the top (North). Note that the feeder stockpile is the only stockpile that | ||||
| needs to be configured to control which types of items end up in the quantum | ||||
| stockpile. By default, the hauling route and quantum stockpile itself simply | ||||
| accept whatever is put into them. | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #place | ||||
|      ,c | ||||
|      , | ||||
|     pdz(3x1) | ||||
| 
 | ||||
|     #build | ||||
|      , | ||||
|      ,trackstopN | ||||
| 
 | ||||
|     #query message(remember to assign a minecart to the new route) | ||||
|      ,quantum | ||||
|      ,quantumstopfromsouth | ||||
|     nocontainers | ||||
| 
 | ||||
| The ``quantum`` alias configures a 1x1 stockpile to be a quantum stockpile. It | ||||
| bans all containers and prevents the stockpile from being manually filled. By | ||||
| default, it also enables storage of all item categories (except corpses and | ||||
| refuse), so it doesn't really matter what letter you use to place the | ||||
| stockpile. :wiki:`Refuse` is excluded by default since otherwise clothes and | ||||
| armor in the quantum stockpile would rot away. If you want corpses or bones in | ||||
| your quantum stockpile, use :kbd:`y` and/or :kbd:`r` to place the stockpile | ||||
| and the ``quantum`` alias will just enable the remaining types. If you *do* | ||||
| enable refuse in your quantum stockpile, be sure you avoid putting useful | ||||
| clothes or armor in there! | ||||
| 
 | ||||
| The ``quantumstopfromsouth`` alias is run over the track stop and configures | ||||
| the hauling route, again, allowing all item categories into the minecart by | ||||
| default so any item that can go into the feeder stockpile can then be placed | ||||
| in the minecart. It also links the hauling route with the feeder stockpile to | ||||
| the South.The track stop does not need to be fully constructed before the | ||||
| ``#query`` blueprint is run, but the feeder stockpile needs to exist so we can | ||||
| link to it. This means that the three blueprints above can be run one right | ||||
| after another, without any dwarven labor in between them, and the quantum | ||||
| stockpile will work properly. | ||||
| 
 | ||||
| Finally, the ``nocontainers`` alias simply configures the feeder stockpile to | ||||
| not have any containers (which would just get in the way here). If we wanted | ||||
| to be more specific about what item types we want in the quantum stockpile, we | ||||
| could configure the feeder stockpile further, for example with standard | ||||
| `stockpile adjustment aliases <quickfort-stockpile-aliases>`. | ||||
| 
 | ||||
| After the blueprints are run, the last step is to manually assign a minecart | ||||
| to the newly-defined hauling route. | ||||
| 
 | ||||
| You can define sub-aliases to customize how these aliases work, for example to | ||||
| have fine-grained control over what item types are enabled for the route and | ||||
| quantum stockpile. We'll go over those options below, but first, here is an | ||||
| example for how to just give names to everything:: | ||||
| 
 | ||||
|     #query message(remember to assign a minecart to the new route) | ||||
|      ,{quantum name="armory quantum"} | ||||
|      ,{quantumstopfromsouth name="Armory quantum" stop_name="Armory quantum stop"}{givename name="armory dumper"} | ||||
|     {givename name="armory feeder"} | ||||
| 
 | ||||
| All ``name`` sub-aliases are completely optional, of course. Keep in mind that | ||||
| hauling route names have a maximum length of 22 characters, hauling route stop | ||||
| names have a maximum length of 21 characters, and all other names have a | ||||
| maximum length of 20 characters. | ||||
| 
 | ||||
| If you want to be absolutely certain that nothing ends up in your quantum | ||||
| stockpile other than what you've configured in the feeder stockpile, you can | ||||
| set the ``quantum_enable`` sub-alias for the ``quantum`` alias. This can | ||||
| prevent, for example, somebody's knocked-out tooth from being considered part | ||||
| of your furniture quantum stockpile when it happened to land on it during a | ||||
| fistfight:: | ||||
| 
 | ||||
|     #query | ||||
|     {quantum name="furniture quantum" quantum_enable={enablefurniture}} | ||||
| 
 | ||||
| You can have similar control over the hauling route if you need to be more | ||||
| selective about what item types are allowed into the minecart. If you have | ||||
| multiple specialized quantum stockpiles that use a common feeder pile, for | ||||
| example, you can set the ``route_enable`` sub-alias:: | ||||
| 
 | ||||
|     #query | ||||
|     {quantumstopfromsouth name="Steel bar quantum" route_enable="{enablebars}{steelbars}"} | ||||
| 
 | ||||
| Any of the `stockpile configuration aliases <quickfort-stockpile-aliases>` can | ||||
| be used for either the ``quantum_enable`` or ``route_enable`` sub-aliases. | ||||
| Experienced Dwarf Fortress players may be wondering how the same aliases can | ||||
| work in both contexts since the keys for entering the configuration screen | ||||
| differ. Fear not! There is some sub-alias magic at work here. If you define | ||||
| your own stockpile configuraiton aliases, you can use the magic yourself by | ||||
| building your aliases on the ``*prefix`` aliases described later in this | ||||
| guide. | ||||
| 
 | ||||
| Finally, the ``quantumstop`` alias is a more general version of the simpler | ||||
| ``quantumstopfrom*`` aliases. The ``quantumstopfrom*`` aliases assume that a | ||||
| single feeder stockpile is orthogonally adjacent to your track stop (which is | ||||
| how most people set them up). If your feeder stockpile is somewhere further | ||||
| away, or you have multiple feeder stockpiles to link, you can use the | ||||
| ``quantumstop`` alias directly. In addition to the sub-aliases used in the | ||||
| ``quantumstopfrom*`` alias, you can define the ``move`` and ``move_back`` | ||||
| sub-aliases, which let you specify the cursor keys required to move from the | ||||
| track stop to the (single) feeder stockpile and back again, respectively:: | ||||
| 
 | ||||
|     #query | ||||
|     {quantumstop move="{Right 2}{Up}" move_back="{Down}{Left 2}"} | ||||
| 
 | ||||
| If you have multiple stockpiles to link, define the ``sp_links`` sub-alias, | ||||
| which can chain several ``sp_link`` aliases together, each with their own | ||||
| movement configuration:: | ||||
| 
 | ||||
|     #query | ||||
|     {quantumstop sp_links="{sp_link move=""{Right}{Up}"" move_back=""{Down}{Left}""}{sp_link move=""{Right}{Down}"" move_back=""{Up}{Left}""}"} | ||||
| 
 | ||||
| Note the doubled quotes for quoted elements that are within the outer quotes. | ||||
| 
 | ||||
| Farm plots | ||||
| ~~~~~~~~~~ | ||||
| 
 | ||||
| Sets a farm plot to grow the first or last type of seed in the list of | ||||
| available seeds for all four seasons. The last seed is usually Plump helmet | ||||
| spawn, suitable for post-embark. But if you only have one seed type, that'll | ||||
| be grown instead. | ||||
| 
 | ||||
| +------------------+ | ||||
| | Alias            | | ||||
| +==================+ | ||||
| | growlastcropall  | | ||||
| +------------------+ | ||||
| | growfirstcropall | | ||||
| +------------------+ | ||||
| 
 | ||||
| Instead of these aliases, though, it might be more useful to use the DFHack | ||||
| `autofarm` plugin. | ||||
| 
 | ||||
| Stockpile configuration utility aliases | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| ================  =========== | ||||
| Alias             Sub-aliases | ||||
| ================  =========== | ||||
| linksonly | ||||
| maxbins | ||||
| maxbarrels | ||||
| nobins | ||||
| nobarrels | ||||
| nocontainers | ||||
| give2up | ||||
| give2down | ||||
| give2left | ||||
| give2right | ||||
| give10up | ||||
| give10down | ||||
| give10left | ||||
| give10right | ||||
| give              move | ||||
| togglesequence | ||||
| togglesequence2 | ||||
| masterworkonly    prefix | ||||
| artifactonly      prefix | ||||
| togglemasterwork  prefix | ||||
| toggleartifact    prefix | ||||
| ================  =========== | ||||
| 
 | ||||
| ``linksonly``, ``maxbins``, ``maxbarrels``, ``nobins``, ``nobarrels``, and | ||||
| ``nocontainers`` set the named basic properties on stockpiles. ``nocontainers`` | ||||
| sets bins and barrels to 0, but does not affect wheelbarrows since the hotkeys | ||||
| for changing the number of wheelbarrows depend on whether you have DFHack's | ||||
| ``tweak max-wheelbarrow`` enabled. It is better to set the number of | ||||
| wheelbarrows via the `quickfort` ``stockpiles_max_wheelbarrows`` setting (set to | ||||
| ``0`` by default), or explicitly when you define the stockpile in the ``#place`` | ||||
| blueprint. | ||||
| 
 | ||||
| The ``give*`` aliases set a stockpile to give to a workshop or another | ||||
| stockpile located at the indicated number of tiles in the indicated direction | ||||
| from the current tile. For example, here we use the ``give2down`` alias to | ||||
| connect an ``otherstone`` stockpile with a mason workshop:: | ||||
| 
 | ||||
|     #place | ||||
|     s,s,s,s,s | ||||
|     s, , , ,s | ||||
|     s, , , ,s | ||||
|     s, , , ,s | ||||
|     s,s,s,s,s | ||||
| 
 | ||||
|     #build | ||||
|     `,`,`,`,` | ||||
|     `, , , ,` | ||||
|     `, ,wm,,` | ||||
|     `, , , ,` | ||||
|     `,`,`,`,` | ||||
| 
 | ||||
|     #query | ||||
|      , ,give2down | ||||
|     otherstone | ||||
| 
 | ||||
| and here is a generic stone stockpile that gives to a stockpile that only | ||||
| takes flux:: | ||||
| 
 | ||||
|     #place | ||||
|     s(10x1) | ||||
|     s(10x10) | ||||
| 
 | ||||
|     #query | ||||
|     flux | ||||
|     , | ||||
|     give2up | ||||
| 
 | ||||
| If you want to give to some other tile that is not already covered by the | ||||
| ``give2*`` or ``give10*`` aliases, you can use the generic ``give`` alias and | ||||
| specify the movement keys yourself in the ``move`` sub-alias. Here is how to | ||||
| give to a stockpile or workshop one z-level above, 9 tiles to the left, and 14 | ||||
| tiles down:: | ||||
| 
 | ||||
|     #query | ||||
|     {give move="<{Left 9}{Down 14}"} | ||||
| 
 | ||||
| ``togglesequence`` and ``togglesequence2`` send ``{Down}{Enter}`` or | ||||
| ``{Down 2}{Enter}`` to toggle adjacent (or alternating) items in a list. This | ||||
| is useful when toggling a bunch of related item types in the stockpile config. | ||||
| For example, the ``dye`` alias in the standard alias library needs to select | ||||
| four adjacent items:: | ||||
| 
 | ||||
|     dye: {foodprefix}b{Right}{Down 11}{Right}{Down 28}{togglesequence 4}^ | ||||
| 
 | ||||
| Finally, the ``masterwork`` and ``artifact`` group of aliases configure the | ||||
| corresponding allowable core quality for the stockpile categories that have | ||||
| them. This alias is used to implement category-specific aliases below, like | ||||
| ``artifactweapons`` and ``forbidartifactweapons``. | ||||
| 
 | ||||
| .. _quickfort-stockpile-aliases: | ||||
| 
 | ||||
| Stockpile adjustment aliases | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| For each stockpile item category, there are three standard aliases: | ||||
| 
 | ||||
| * ``*prefix`` aliases enter the stockpile configuration screen and position | ||||
|   the cursor at a particular item category in the left-most column, ready for | ||||
|   further keys that configure the elements within that category. All other | ||||
|   stockpile adjustment aliases are built on these prefixes. You can use them | ||||
|   yourself to create stockpile adjustment aliases that aren't already covered | ||||
|   by the standard library aliases. Using the library prefix instead of | ||||
|   creating your own also allows your stockpile configuration aliases to be | ||||
|   used for both stockpiles and hauling routes. For example, here is the | ||||
|   library definition for ``booze``:: | ||||
| 
 | ||||
|     booze: {foodprefix}b{Right}{Down 5}p{Down}p^ | ||||
| 
 | ||||
| * ``enable*`` aliases enter the stockpile configuration screen, enable all | ||||
|   subtypes of the named category, and exit the stockpile configuration screen | ||||
| * ``disable*`` aliases enter the stockpile configuration screen, disable all | ||||
|   subtypes of the named category, and exit the stockpile configuration screen | ||||
| 
 | ||||
| ====================  ====================  ===================== | ||||
| Prefix                Enable                Disable | ||||
| ====================  ====================  ===================== | ||||
| animalsprefix         enableanimals         disableanimals | ||||
| foodprefix            enablefood            disablefood | ||||
| furnitureprefix       enablefurniture       disablefurniture | ||||
| corpsesprefix         enablecorpses         disablecorpses | ||||
| refuseprefix          enablerefuse          disablerefuse | ||||
| stoneprefix           enablestone           disablestone | ||||
| ammoprefix            enableammo            disableammo | ||||
| coinsprefix           enablecoins           disablecoins | ||||
| barsprefix            enablebars            disablebars | ||||
| gemsprefix            enablegems            disablegems | ||||
| finishedgoodsprefix   enablefinishedgoods   disablefinishedgoods | ||||
| leatherprefix         enableleather         disableleather | ||||
| clothprefix           enablecloth           disablecloth | ||||
| woodprefix            enablewood            disablewood | ||||
| weaponsprefix         enableweapons         disableweapons | ||||
| armorprefix           enablearmor           disablearmor | ||||
| sheetprefix           enablesheet           disablesheet | ||||
| ====================  ====================  ===================== | ||||
| 
 | ||||
| Then, for each item category, there are aliases that manipulate interesting | ||||
| subsets of that category: | ||||
| 
 | ||||
| * Exclusive aliases forbid everthing within a category and then enable only | ||||
|   the named item type (or named class of items) | ||||
| * ``forbid*`` aliases forbid the named type and leave the rest of the | ||||
|   stockpile untouched. | ||||
| * ``permit*`` aliases permit the named type and leave the rest of the | ||||
|   stockpile untouched. | ||||
| 
 | ||||
| Note that for specific item types (items in the third stockpile configuration | ||||
| column), you can only toggle the item type on and off. Aliases can't know | ||||
| whether sending the ``{Enter}`` key will enable or disable the type. The | ||||
| ``forbid*`` aliases that affect these item types assume the item type was | ||||
| enabled and toggle it off. Likewise, the ``permit*`` aliases assume the item | ||||
| type was disabled and toggle it on. If the item type is not in the expected | ||||
| enabled/disabled state when the alias is run, the aliases will not behave | ||||
| properly. | ||||
| 
 | ||||
| Animal stockpile adjustments | ||||
| ```````````````````````````` | ||||
| 
 | ||||
| ===========  ===========  ============ | ||||
| Exclusive    Forbid       Permit | ||||
| ===========  ===========  ============ | ||||
| cages        forbidcages  permitcages | ||||
| traps        forbidtraps  permittraps | ||||
| ===========  ===========  ============ | ||||
| 
 | ||||
| Food stockpile adjustments | ||||
| `````````````````````````` | ||||
| 
 | ||||
| ===============  ====================  ==================== | ||||
| Exclusive        Forbid                Permit | ||||
| ===============  ====================  ==================== | ||||
| preparedfood     forbidpreparedfood    permitpreparedfood | ||||
| unpreparedfish   forbidunpreparedfish  permitunpreparedfish | ||||
| plants           forbidplants          permitplants | ||||
| booze            forbidbooze           permitbooze | ||||
| seeds            forbidseeds           permitseeds | ||||
| dye              forbiddye             permitdye | ||||
| tallow           forbidtallow          permittallow | ||||
| miscliquid       forbidmiscliquid      permitmiscliquid | ||||
| ===============  ====================  ==================== | ||||
| 
 | ||||
| Furniture stockpile adjustments | ||||
| ``````````````````````````````` | ||||
| 
 | ||||
| ===================  =========================  ========================= | ||||
| Exclusive            Forbid                     Permit | ||||
| ===================  =========================  ========================= | ||||
| pots                 forbidpots                 permitpots | ||||
| bags | ||||
| buckets              forbidbuckets              permitbuckets | ||||
| sand                 forbidsand                 permitsand | ||||
| masterworkfurniture  forbidmasterworkfurniture  permitmasterworkfurniture | ||||
| artifactfurniture    forbidartifactfurniture    permitartifactfurniture | ||||
| ===================  =========================  ========================= | ||||
| 
 | ||||
| Notes: | ||||
| 
 | ||||
| * The ``bags`` alias excludes coffers and other boxes by forbidding all | ||||
|   materials other than cloth, yarn, silk, and leather. Therefore, it is | ||||
|   difficult to create ``forbidbags`` and ``permitbags`` without affecting other | ||||
|   types of furniture stored in the same stockpile. | ||||
| 
 | ||||
| * Because of the limitations of Dwarf Fortress, ``bags`` cannot distinguish | ||||
|   between empty bags and bags filled with gypsum powder. | ||||
| 
 | ||||
| Refuse stockpile adjustments | ||||
| ```````````````````````````` | ||||
| 
 | ||||
| ===========  ==================  ================== | ||||
| Exclusive    Forbid              Permit | ||||
| ===========  ==================  ================== | ||||
| corpses      forbidcorpses       permitcorpses | ||||
| rawhides     forbidrawhides      permitrawhides | ||||
| tannedhides  forbidtannedhides   permittannedhides | ||||
| skulls       forbidskulls        permitskulls | ||||
| bones        forbidbones         permitbones | ||||
| shells       forbidshells        permitshells | ||||
| teeth        forbidteeth         permitteeth | ||||
| horns        forbidhorns         permithorns | ||||
| hair         forbidhair          permithair | ||||
| craftrefuse  forbidcraftrefuse   permitcraftrefuse | ||||
| ===========  ==================  ================== | ||||
| 
 | ||||
| Notes: | ||||
| 
 | ||||
| * ``craftrefuse`` includes everything a craftsdwarf can use: skulls, bones, | ||||
|   shells, teeth, horns, and hair. | ||||
| 
 | ||||
| Stone stockpile adjustments | ||||
| ``````````````````````````` | ||||
| 
 | ||||
| =============  ====================  ==================== | ||||
| Exclusive      Forbid                Permit | ||||
| =============  ====================  ==================== | ||||
| metal          forbidmetal           permitmetal | ||||
| iron           forbidiron            permitiron | ||||
| economic       forbideconomic        permiteconomic | ||||
| flux           forbidflux            permitflux | ||||
| plaster        forbidplaster         permitplaster | ||||
| coalproducing  forbidcoalproducing   permitcoalproducing | ||||
| otherstone     forbidotherstone      permitotherstone | ||||
| bauxite        forbidbauxite         permitbauxite | ||||
| clay           forbidclay            permitclay | ||||
| =============  ====================  ==================== | ||||
| 
 | ||||
| Ammo stockpile adjustments | ||||
| `````````````````````````` | ||||
| 
 | ||||
| ==============  ====================  ==================== | ||||
| Exclusive       Forbid                Permit | ||||
| ==============  ====================  ==================== | ||||
| bolts | ||||
| \               forbidmetalbolts | ||||
| \               forbidwoodenbolts | ||||
| \               forbidbonebolts | ||||
| masterworkammo  forbidmasterworkammo  permitmasterworkammo | ||||
| artifactammo    forbidartifactammo    permitartifactammo | ||||
| ==============  ====================  ==================== | ||||
| 
 | ||||
| Bar stockpile adjustments | ||||
| ````````````````````````` | ||||
| 
 | ||||
| ===========  ================== | ||||
| Exclusive    Forbid | ||||
| ===========  ================== | ||||
| bars         forbidbars | ||||
| metalbars    forbidmetalbars | ||||
| ironbars     forbidironbars | ||||
| steelbars    forbidsteelbars | ||||
| pigironbars  forbidpigironbars | ||||
| otherbars    forbidotherbars | ||||
| coal         forbidcoal | ||||
| potash       forbidpotash | ||||
| ash          forbidash | ||||
| pearlash     forbidpearlash | ||||
| soap         forbidsoap | ||||
| blocks       forbidblocks | ||||
| ===========  ================== | ||||
| 
 | ||||
| Gem stockpile adjustments | ||||
| ````````````````````````` | ||||
| 
 | ||||
| ===========  ================ | ||||
| Exclusive    Forbid | ||||
| ===========  ================ | ||||
| roughgems    forbidroughgems | ||||
| roughglass   forbidroughglass | ||||
| cutgems      forbidcutgems | ||||
| cutglass     forbidcutglass | ||||
| cutstone     forbidcutstone | ||||
| ===========  ================ | ||||
| 
 | ||||
| Finished goods stockpile adjustments | ||||
| ```````````````````````````````````` | ||||
| 
 | ||||
| =======================  =============================  ============================= | ||||
| Exclusive                Forbid                         Permit | ||||
| =======================  =============================  ============================= | ||||
| jugs | ||||
| crafts                   forbidcrafts                   permitcrafts | ||||
| masterworkfinishedgoods  forbidmasterworkfinishedgoods  permitmasterworkfinishedgoods | ||||
| artifactfinishedgoods    forbidartifactfinishedgoods    permitartifactfinishedgoods | ||||
| =======================  =============================  ============================= | ||||
| 
 | ||||
| Cloth stockpile adjustments | ||||
| ``````````````````````````` | ||||
| 
 | ||||
| +------------------+ | ||||
| | Exclusive        | | ||||
| +==================+ | ||||
| | thread           | | ||||
| +------------------+ | ||||
| | adamantinethread | | ||||
| +------------------+ | ||||
| | cloth            | | ||||
| +------------------+ | ||||
| | adamantinecloth  | | ||||
| +------------------+ | ||||
| 
 | ||||
| Weapon stockpile adjustments | ||||
| ```````````````````````````` | ||||
| 
 | ||||
| =================  ========================  ======================= | ||||
| Exclusive          Forbid                    Permit | ||||
| =================  ========================  ======================= | ||||
| \                  forbidweapons             permitweapons | ||||
| \                  forbidtrapcomponents      permittrapcomponents | ||||
| metalweapons       forbidmetalweapons        permitmetalweapons | ||||
| \                  forbidstoneweapons        permitstoneweapons | ||||
| \                  forbidotherweapons        permitotherweapons | ||||
| ironweapons        forbidironweapons         permitironweapons | ||||
| bronzeweapons      forbidbronzeweapons       permitbronzeweapons | ||||
| copperweapons      forbidcopperweapons       permitcopperweapons | ||||
| steelweapons       forbidsteelweapons        permitsteelweapons | ||||
| masterworkweapons  forbidmasterworkweapons   permitmasterworkweapons | ||||
| artifactweapons    forbidartifactweapons     permitartifactweapons | ||||
| =================  ========================  ======================= | ||||
| 
 | ||||
| Armor stockpile adjustments | ||||
| ``````````````````````````` | ||||
| 
 | ||||
| ===============  ======================  ===================== | ||||
| Exclusive        Forbid                  Permit | ||||
| ===============  ======================  ===================== | ||||
| metalarmor       forbidmetalarmor        permitmetalarmor | ||||
| otherarmor       forbidotherarmor        permitotherarmor | ||||
| ironarmor        forbidironarmor         permitironarmor | ||||
| bronzearmor      forbidbronzearmor       permitbronzearmor | ||||
| copperarmor      forbidcopperarmor       permitcopperarmor | ||||
| steelarmor       forbidsteelarmor        permitsteelarmor | ||||
| masterworkarmor  forbidmasterworkarmor   permitmasterworkarmor | ||||
| artifactarmor    forbidartifactarmor     permitartifactarmor | ||||
| ===============  ======================  ===================== | ||||
| @ -0,0 +1,106 @@ | ||||
| .. _quickfort-library-guide: | ||||
| 
 | ||||
| Quickfort Library Guide | ||||
| ======================= | ||||
| 
 | ||||
| This guide contains a high-level overview of the blueprints available in the | ||||
| :source:`quickfort blueprint library <data/blueprints/library>`. You can list | ||||
| library blueprints by running ``quickfort list --library`` or by hitting | ||||
| :kbd:`Alt`:kbd:`l` in the ``quickfort gui`` interactive dialog. | ||||
| 
 | ||||
| Each file is hyperlinked to its online version so you can see exactly what the | ||||
| blueprints do. | ||||
| 
 | ||||
| Whole fort blueprint sets | ||||
| ------------------------- | ||||
| 
 | ||||
| These files contain the plans for entire fortresses. Each file has one or more | ||||
| help sections that walk you through how to build the fort, step by step. | ||||
| 
 | ||||
| - :source:`library/dreamfort.csv <data/blueprints/library/dreamfort.csv>` | ||||
| - :source:`library/quickfortress.csv <data/blueprints/library/quickfortress.csv>` | ||||
| 
 | ||||
| Dreamfort | ||||
| ~~~~~~~~~ | ||||
| 
 | ||||
| Dreamfort is a fully functional, self-sustaining fortress with defenses, | ||||
| farming, a complete set of workshops, self-managing quantum stockpiles, a grand | ||||
| dining hall, hospital, jail, fresh water well system, guildhalls, and bedrooms | ||||
| for hundreds of dwarves. It also comes with manager work orders to automate | ||||
| basic fort needs, such as food and booze production. It can function by itself | ||||
| or as the core of a larger, more ambitious fortress. Read the high-level | ||||
| walkthrough by running ``quickfort run library/dreamfort.csv`` and list the | ||||
| walkthroughs for the individual levels by running ``quickfort list dreamfort -l | ||||
| -m notes`` or by opening the ``quickfort gui`` dialog, enabling the library | ||||
| with :kbd:`Alt`:kbd:`l`, and setting the filter to ``dreamfort notes``. | ||||
| 
 | ||||
| Dreamfort blueprints are also available for easy viewing and copying `online | ||||
| <https://drive.google.com/drive/folders/1iS90EEVqUkxTeZiiukVj1pLloZqabKuP>`__. | ||||
| 
 | ||||
| The Quick Fortresses | ||||
| ~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| The Quick Fortress is an updated version of the example fortress that came with | ||||
| `Python Quickfort 2.0 <https://github.com/joelpt/quickfort>`__ (the program | ||||
| DFHack quickfort was inspired by). While it is not a complete fortress by | ||||
| itself, it is much simpler than Dreamfort and is good for a first introduction | ||||
| to `quickfort` blueprints. Read its walkthrough with ``quickfort run | ||||
| library/quickfortress.csv``. | ||||
| 
 | ||||
| Layout helpers | ||||
| -------------- | ||||
| 
 | ||||
| These files simply draw diagonal marker-mode lines starting from the cursor. | ||||
| They are especially useful for finding the center of the map when you are | ||||
| planning your fortress. Once you are done using them for alignment, use | ||||
| ``quickfort undo`` at the same cursor position to make them disappear. Since | ||||
| these ``#dig`` blueprints can only mark undug wall tiles for mining, they are | ||||
| best used underground. They won't do much on the surface, where there aren't | ||||
| many walls. | ||||
| 
 | ||||
| - :source:`library/layout-helpers/mark_up_left.csv <data/blueprints/library/layout-helpers/mark_up_left.csv>` | ||||
| - :source:`library/layout-helpers/mark_up_right.csv <data/blueprints/library/layout-helpers/mark_up_right.csv>` | ||||
| - :source:`library/layout-helpers/mark_down_right.csv <data/blueprints/library/layout-helpers/mark_down_right.csv>` | ||||
| - :source:`library/layout-helpers/mark_down_left.csv <data/blueprints/library/layout-helpers/mark_down_left.csv>` | ||||
| 
 | ||||
| Bedrooms | ||||
| -------- | ||||
| 
 | ||||
| These are popular bedroom layouts from the :wiki:`Bedroom design` page on the | ||||
| wiki. Each file has ``#dig``, ``#build``, and ``#query`` blueprints to dig the | ||||
| rooms, build the furniture, and configure the beds as bedrooms, respectively. | ||||
| 
 | ||||
| - :source:`library/bedrooms/48-4-Raynard_Whirlpool_Housing.csv <data/blueprints/library/bedrooms/48-4-Raynard_Whirlpool_Housing.csv>` | ||||
| - :source:`library/bedrooms/95-9-Hactar1_3_Branch_Tree.csv <data/blueprints/library/bedrooms/95-9-Hactar1_3_Branch_Tree.csv>` | ||||
| - :source:`library/bedrooms/28-3-Modified_Windmill_Villas.csv <data/blueprints/library/bedrooms/28-3-Modified_Windmill_Villas.csv>` | ||||
| 
 | ||||
| Tombs | ||||
| ----- | ||||
| 
 | ||||
| These blueprints have burial plot layouts for fortress that expect a lot of | ||||
| casualties. | ||||
| 
 | ||||
| - :source:`library/tombs/Mini_Saracen.csv <data/blueprints/library/tombs/Mini_Saracen.csv>` | ||||
| - :source:`library/tombs/The_Saracen_Crypts.csv <data/blueprints/library/tombs/The_Saracen_Crypts.csv>` | ||||
| 
 | ||||
| Exploratory mining | ||||
| ------------------ | ||||
| 
 | ||||
| Several mining patterns to choose from when searching for gems or ores. The | ||||
| patterns can be repeated up or down z-levels for exploring through the depths. | ||||
| 
 | ||||
| - :source:`library/exploratory-mining/tunnels.csv <data/blueprints/library/exploratory-mining/tunnels.csv>` | ||||
| - :source:`library/exploratory-mining/vertical-mineshafts.csv <data/blueprints/library/exploratory-mining/vertical-mineshafts.csv>` | ||||
| - :source:`library/exploratory-mining/connected-mineshafts.csv <data/blueprints/library/exploratory-mining/connected-mineshafts.csv>` | ||||
| 
 | ||||
| Miscellaneous | ||||
| ------------- | ||||
| 
 | ||||
| Extra blueprints that are useful in specific situations. | ||||
| 
 | ||||
| - :source:`library/embark.csv <data/blueprints/library/embark.csv>` | ||||
| 
 | ||||
| The embark blueprints are useful directly after embark. It contains a ``#build`` | ||||
| blueprint that builds important starting workshops (mason, carpenter, mechanic, | ||||
| and craftsdwarf) and a ``#place`` blueprint that lays down a pattern of useful | ||||
| starting stockpiles. | ||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								| @ -0,0 +1,13 @@ | ||||
| ============ | ||||
| About DFHack | ||||
| ============ | ||||
| 
 | ||||
| These pages contain information about the general DFHack project. | ||||
| 
 | ||||
| .. toctree:: | ||||
|    :maxdepth: 1 | ||||
| 
 | ||||
|    /docs/NEWS | ||||
|    /docs/Authors | ||||
|    /LICENSE | ||||
|    /docs/Removed | ||||
| @ -0,0 +1,21 @@ | ||||
| ======================== | ||||
| DFHack Development Guide | ||||
| ======================== | ||||
| 
 | ||||
| These are pages relevant to people developing for DFHack. | ||||
| 
 | ||||
| .. toctree:: | ||||
|    :maxdepth: 1 | ||||
| 
 | ||||
|    /docs/Dev-intro | ||||
|    /docs/Contributing | ||||
|    /docs/Compile | ||||
|    /docs/NEWS-dev | ||||
|    /docs/Lua API | ||||
|    /docs/Remote | ||||
|    /docs/api/index | ||||
|    /docs/Documentation | ||||
|    /docs/Structures-intro | ||||
|    /docs/Memory-research | ||||
|    /docs/Binpatches | ||||
| 
 | ||||
| @ -0,0 +1,303 @@ | ||||
| import collections | ||||
| import copy | ||||
| import itertools | ||||
| import os | ||||
| import sys | ||||
| 
 | ||||
| from sphinx.errors import ExtensionError, SphinxError, SphinxWarning | ||||
| 
 | ||||
| from dfhack.util import DFHACK_ROOT, DOCS_ROOT | ||||
| 
 | ||||
| CHANGELOG_PATHS = ( | ||||
|     'docs/changelog.txt', | ||||
|     'scripts/changelog.txt', | ||||
|     'library/xml/changelog.txt', | ||||
| ) | ||||
| CHANGELOG_PATHS = (os.path.join(DFHACK_ROOT, p) for p in CHANGELOG_PATHS) | ||||
| 
 | ||||
| CHANGELOG_SECTIONS = [ | ||||
|     'New Plugins', | ||||
|     'New Scripts', | ||||
|     'New Tweaks', | ||||
|     'New Features', | ||||
|     'New Internal Commands', | ||||
|     'Fixes', | ||||
|     'Misc Improvements', | ||||
|     'Removed', | ||||
|     'API', | ||||
|     'Internals', | ||||
|     'Lua', | ||||
|     'Ruby', | ||||
|     'Structures', | ||||
|     'Documentation', | ||||
| ] | ||||
| 
 | ||||
| REPLACEMENTS = { | ||||
|     '`search`': '`search-plugin`', | ||||
| } | ||||
| 
 | ||||
| def to_title_case(word): | ||||
|     if word == word.upper(): | ||||
|         # Preserve acronyms | ||||
|         return word | ||||
|     return word[0].upper() + word[1:].lower() | ||||
| 
 | ||||
| def find_all_indices(string, substr): | ||||
|     start = 0 | ||||
|     while True: | ||||
|         i = string.find(substr, start) | ||||
|         if i == -1: | ||||
|             return | ||||
|         yield i | ||||
|         start = i + 1 | ||||
| 
 | ||||
| def replace_text(string, replacements): | ||||
|     for old_text, new_text in replacements.items(): | ||||
|         new_string = '' | ||||
|         new_string_end = 0  # number of characters from string in new_string | ||||
|         for i in find_all_indices(string, old_text): | ||||
|             if i > 0 and string[i - 1] == '!': | ||||
|                 # exempt if preceded by '!' | ||||
|                 new_string += string[new_string_end:i - 1] | ||||
|                 new_string += old_text | ||||
|             else: | ||||
|                 # copy until this occurrence | ||||
|                 new_string += string[new_string_end:i] | ||||
|                 new_string += new_text | ||||
|             new_string_end = i + len(old_text) | ||||
|         new_string += string[new_string_end:] | ||||
|         string = new_string | ||||
|     return string | ||||
| 
 | ||||
| class ChangelogEntry(object): | ||||
|     def __init__(self, text, section, stable_version, dev_version): | ||||
|         text = text.lstrip('- ') | ||||
|         # normalize section to title case | ||||
|         self.section = ' '.join(map(to_title_case, section.strip().split())) | ||||
|         self.stable_version = stable_version | ||||
|         self.dev_version = dev_version | ||||
|         self.dev_only = text.startswith('@') | ||||
|         text = text.lstrip('@ ') | ||||
|         self.children = [] | ||||
| 
 | ||||
|         split_index = text.find(': ') | ||||
|         if split_index != -1: | ||||
|             self.feature, description = text[:split_index], text[split_index+1:] | ||||
|             if description.strip(): | ||||
|                 self.children.insert(0, description.strip()) | ||||
|         else: | ||||
|             self.feature = text | ||||
|         self.feature = self.feature.replace(':\\', ':').rstrip(':') | ||||
| 
 | ||||
|         self.sort_key = self.feature.upper() | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return 'ChangelogEntry(%r, %r)' % (self.feature, self.children) | ||||
| 
 | ||||
| def parse_changelog(): | ||||
|     entries = [] | ||||
| 
 | ||||
|     for fpath in CHANGELOG_PATHS: | ||||
|         if not os.path.isfile(fpath): | ||||
|             continue | ||||
|         with open(fpath) as f: | ||||
|             cur_stable = None | ||||
|             cur_dev = None | ||||
|             cur_section = None | ||||
|             last_entry = None | ||||
|             multiline = '' | ||||
|             for line_id, line in enumerate(f.readlines()): | ||||
|                 line_id += 1 | ||||
| 
 | ||||
|                 if multiline: | ||||
|                     multiline += line | ||||
|                 elif '[[[' in line: | ||||
|                     multiline = line.replace('[[[', '') | ||||
| 
 | ||||
|                 if ']]]' in multiline: | ||||
|                     line = multiline.replace(']]]', '') | ||||
|                     multiline = '' | ||||
|                 elif multiline: | ||||
|                     continue | ||||
| 
 | ||||
|                 if not line.strip() or line.startswith('==='): | ||||
|                     continue | ||||
| 
 | ||||
|                 if line.startswith('##'): | ||||
|                     cur_section = line.lstrip('#').strip() | ||||
|                 elif line.startswith('#'): | ||||
|                     cur_dev = line.lstrip('#').strip().lower() | ||||
|                     if ('alpha' not in cur_dev and 'beta' not in cur_dev and | ||||
|                             'rc' not in cur_dev): | ||||
|                         cur_stable = cur_dev | ||||
|                 elif line.startswith('-'): | ||||
|                     if not cur_stable or not cur_dev or not cur_section: | ||||
|                         raise ValueError( | ||||
|                             '%s:%i: Entry without section' % (fpath, line_id)) | ||||
|                     last_entry = ChangelogEntry(line.strip(), cur_section, | ||||
|                                                 cur_stable, cur_dev) | ||||
|                     entries.append(last_entry) | ||||
|                 elif line.lstrip().startswith('-'): | ||||
|                     if not cur_stable or not cur_dev: | ||||
|                         raise ValueError( | ||||
|                             '%s:%i: Sub-entry without section' % (fpath, line_id)) | ||||
|                     if not last_entry: | ||||
|                         raise ValueError( | ||||
|                             '%s:%i: Sub-entry without parent' % (fpath, line_id)) | ||||
|                     last_entry.children.append(line.strip('- \n')) | ||||
|                 else: | ||||
|                     raise ValueError('Invalid line: ' + line) | ||||
| 
 | ||||
|     if not entries: | ||||
|         raise RuntimeError('No changelog files with contents found') | ||||
| 
 | ||||
|     return entries | ||||
| 
 | ||||
| def consolidate_changelog(all_entries): | ||||
|     for sections in all_entries.values(): | ||||
|         for section, entries in sections.items(): | ||||
|             entries.sort(key=lambda entry: entry.sort_key) | ||||
|             new_entries = [] | ||||
|             for feature, group in itertools.groupby(entries, | ||||
|                                                     lambda e: e.feature): | ||||
|                 old_entries = list(group) | ||||
|                 children = list(itertools.chain(*[entry.children | ||||
|                                 for entry in old_entries])) | ||||
|                 new_entry = copy.deepcopy(old_entries[0]) | ||||
|                 new_entry.children = children | ||||
|                 new_entries.append(new_entry) | ||||
|             entries[:] = new_entries | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def print_changelog(versions, all_entries, path, replace=True, prefix=''): | ||||
|     # all_entries: version -> section -> entry | ||||
|     with open(path, 'w') as f: | ||||
|         def write(line): | ||||
|             if replace: | ||||
|                 line = replace_text(line, REPLACEMENTS) | ||||
|             f.write(prefix + line + '\n') | ||||
|         for version in versions: | ||||
|             sections = all_entries[version] | ||||
|             if not sections: | ||||
|                 continue | ||||
|             version = 'DFHack ' + version | ||||
|             write(version) | ||||
|             write('=' * len(version)) | ||||
|             write('') | ||||
|             for section in CHANGELOG_SECTIONS: | ||||
|                 entries = sections[section] | ||||
|                 if not entries: | ||||
|                     continue | ||||
|                 write(section) | ||||
|                 write('-' * len(section)) | ||||
|                 for entry in entries: | ||||
|                     if len(entry.children) == 1: | ||||
|                         write('- ' + entry.feature + ': ' + | ||||
|                                 entry.children[0].strip('- ')) | ||||
|                         continue | ||||
|                     elif entry.children: | ||||
|                         write('- ' + entry.feature + ':') | ||||
|                         for child in entry.children: | ||||
|                             write('    - ' + child) | ||||
|                     else: | ||||
|                         write('- ' + entry.feature) | ||||
|                 write('') | ||||
|             write('') | ||||
| 
 | ||||
| 
 | ||||
| def generate_changelog(all=False): | ||||
|     entries = parse_changelog() | ||||
| 
 | ||||
|     # scan for unrecognized sections | ||||
|     for entry in entries: | ||||
|         if entry.section not in CHANGELOG_SECTIONS: | ||||
|             raise SphinxWarning('Unknown section: ' + entry.section) | ||||
| 
 | ||||
|     # ordered versions | ||||
|     versions = ['future'] | ||||
|     # map versions to stable versions | ||||
|     stable_version_map = {} | ||||
|     # version -> section -> entry | ||||
|     stable_entries = collections.defaultdict(lambda: | ||||
|                         collections.defaultdict(list)) | ||||
|     dev_entries = collections.defaultdict(lambda: | ||||
|                         collections.defaultdict(list)) | ||||
| 
 | ||||
|     for entry in entries: | ||||
|         # build list of all versions | ||||
|         if entry.dev_version not in versions: | ||||
|             versions.append(entry.dev_version) | ||||
|         stable_version_map.setdefault(entry.dev_version, entry.stable_version) | ||||
| 
 | ||||
|         if not entry.dev_only: | ||||
|             # add non-dev-only entries to both changelogs | ||||
|             stable_entries[entry.stable_version][entry.section].append(entry) | ||||
|         dev_entries[entry.dev_version][entry.section].append(entry) | ||||
| 
 | ||||
|     consolidate_changelog(stable_entries) | ||||
|     consolidate_changelog(dev_entries) | ||||
| 
 | ||||
|     print_changelog(versions, stable_entries, os.path.join(DOCS_ROOT, '_auto/news.rst')) | ||||
|     print_changelog(versions, dev_entries, os.path.join(DOCS_ROOT, '_auto/news-dev.rst')) | ||||
| 
 | ||||
|     if all: | ||||
|         for version in versions: | ||||
|             if version not in stable_version_map: | ||||
|                 print('warn: skipping ' + version) | ||||
|                 continue | ||||
|             if stable_version_map[version] == version: | ||||
|                 version_entries = {version: stable_entries[version]} | ||||
|             else: | ||||
|                 version_entries = {version: dev_entries[version]} | ||||
|             print_changelog([version], version_entries, | ||||
|                 os.path.join(DOCS_ROOT, '_changelogs/%s-github.txt' % version), | ||||
|                 replace=False) | ||||
|             print_changelog([version], version_entries, | ||||
|                 os.path.join(DOCS_ROOT, '_changelogs/%s-reddit.txt' % version), | ||||
|                 replace=False, | ||||
|                 prefix='> ') | ||||
| 
 | ||||
|     return entries | ||||
| 
 | ||||
| def cli_entrypoint(): | ||||
|     import argparse | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('-a', '--all', action='store_true', | ||||
|         help='Print changelogs for all versions to docs/_changelogs') | ||||
|     parser.add_argument('-c', '--check', action='store_true', | ||||
|         help='Check that all entries are printed') | ||||
|     args = parser.parse_args() | ||||
| 
 | ||||
|     entries = generate_changelog(all=args.all) | ||||
| 
 | ||||
|     if args.check: | ||||
|         with open(os.path.join(DOCS_ROOT, '_auto/news.rst')) as f: | ||||
|             content_stable = f.read() | ||||
|         with open(os.path.join(DOCS_ROOT, '_auto/news-dev.rst')) as f: | ||||
|             content_dev = f.read() | ||||
|         for entry in entries: | ||||
|             for description in entry.children: | ||||
|                 if not entry.dev_only and description not in content_stable: | ||||
|                     print('stable missing: ' + description) | ||||
|                 if description not in content_dev: | ||||
|                     print('dev missing: ' + description) | ||||
| 
 | ||||
| 
 | ||||
| def sphinx_entrypoint(app, config): | ||||
|     try: | ||||
|         generate_changelog() | ||||
|     except SphinxError: | ||||
|         raise | ||||
|     except Exception as e: | ||||
|         raise ExtensionError(str(e), e) | ||||
| 
 | ||||
| 
 | ||||
| def setup(app): | ||||
|     app.connect('config-inited', sphinx_entrypoint) | ||||
| 
 | ||||
|     return { | ||||
|         'version': '0.1', | ||||
|         'parallel_read_safe': True, | ||||
|         'parallel_write_safe': True, | ||||
|     } | ||||
| @ -0,0 +1,34 @@ | ||||
| # adapted from: | ||||
| #   https://stackoverflow.com/a/16470058 | ||||
| #   https://pygments.org/docs/lexerdevelopment/ | ||||
| 
 | ||||
| import re | ||||
| 
 | ||||
| from pygments.lexer import RegexLexer | ||||
| from pygments.token import Comment, Generic, Text | ||||
| from sphinx.highlighting import lexers | ||||
| 
 | ||||
| class DFHackLexer(RegexLexer): | ||||
|     name = 'DFHack' | ||||
|     aliases = ['dfhack'] | ||||
|     flags = re.IGNORECASE | re.MULTILINE | ||||
| 
 | ||||
|     tokens = { | ||||
|         'root': [ | ||||
|             (r'\#.+$', Comment.Single), | ||||
|             (r'^\[[a-z]+\]\# ', Generic.Prompt), | ||||
|             (r'.+?', Text), | ||||
|         ] | ||||
|     } | ||||
| 
 | ||||
| def register_lexer(app): | ||||
|     lexers['dfhack'] = DFHackLexer() | ||||
| 
 | ||||
| def setup(app): | ||||
|     app.connect('builder-inited', register_lexer) | ||||
| 
 | ||||
|     return { | ||||
|         'version': '0.1', | ||||
|         'parallel_read_safe': True, | ||||
|         'parallel_write_safe': True, | ||||
|     } | ||||
| @ -0,0 +1,7 @@ | ||||
| import os | ||||
| 
 | ||||
| DFHACK_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) | ||||
| DOCS_ROOT = os.path.join(DFHACK_ROOT, 'docs') | ||||
| 
 | ||||
| if not os.path.isdir(DOCS_ROOT): | ||||
|     raise ReferenceError('docs root not found: %s' % DOCS_ROOT) | ||||
| @ -0,0 +1,6 @@ | ||||
| <p class="logo"> | ||||
|   <a href="{{ pathto(master_doc) }}"> | ||||
|     <img class="logo" src="{{ pathto('_static/' ~ theme_logo, 1) }}" alt="Logo"/> | ||||
|     <h3 class="logo logo-name">Home</h3> | ||||
|   </a> | ||||
| </p> | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue