diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..50361afbf6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +docs/changelog.txt merge=union diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000000..e68a754c63 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1 @@ +If this PR makes an externally-visible change in behavior or API, please add an appropriate line to `docs/changelog.txt`. diff --git a/.github/release_template.md b/.github/release_template.md new file mode 100644 index 0000000000..2bfc7a3c04 --- /dev/null +++ b/.github/release_template.md @@ -0,0 +1,64 @@ +#### Q: How do I download DFHack? +**A:** Either add to your Steam library from our [Steam page](https://store.steampowered.com/app/2346660/DFHack) or scroll to the latest release on our [GitHub releases page](https://github.com/DFHack/dfhack/releases), expand the "Assets" list, and download the file for your platform (e.g. `dfhack-XX.XX-rX-Windows-64bit.zip`. If you are on Windows and are manually installing from the zip file, please remember to right click on the file after downloading, open the file properties, and select the "Unblock" checkbox. This will prevent issues with Windows antivirus programs. + +------------- + +This release is compatible with all distributions of Dwarf Fortress: [Steam](https://store.steampowered.com/app/975370/Dwarf_Fortress/), [Itch](https://kitfoxgames.itch.io/dwarf-fortress), and [Classic](https://www.bay12games.com/dwarves/). + +- [Install DFHack from Steam](https://store.steampowered.com/app/2346660/DFHack) +- [Manual install](https://docs.dfhack.org/en/stable/docs/Installing.html#installing) +- [Quickstart guide (for players)](https://docs.dfhack.org/en/stable/docs/Quickstart.html#quickstart) +- [Modding guide (for modders)](https://docs.dfhack.org/en/stable/docs/guides/modding-guide.html) + +Please report any issues (or feature requests) on the DFHack [GitHub issue tracker](https://github.com/DFHack/dfhack/issues). When reporting issues, please upload a zip file of your savegame and a zip file of your `mods` directory to the cloud and add links to the GitHub issue. Make sure your files are downloadable by "everyone with the link". We need your savegame to reproduce the problem and test the fix, and we need your active mods so we can load your savegame. Issues with savegames and mods attached get fixed first! + +Highlights +---------------------------------- + +
+Highlight 1, Highlight 2 + +### Highlight 1 + +Demo screenshot/vidcap + +Text + +### Highlight 2 + +Demo screenshot/vidcap + +Text + +
+ +Announcements +---------------------------------- + +
+Annc 1, PSAs + +### Annc 1 + +Text + +### PSAs + +As always, remember that, just like the vanilla DF game, DFHack tools can also have bugs. It is a good idea to **save often and keep backups** of the forts that you care about. + +Some DFHack tools that worked in previous (pre-Steam) versions of DF have not been updated yet and are marked with the "unavailable" tag in their docs. If you try to run them, they will show a warning and exit immediately. You can run the command again to override the warning (though of course the tools may not work). We make no guarantees of reliability for the tools that are marked as "unavailable". + +The in-game interface for running DFHack commands (`gui/launcher`) will not show "unavailable" tools by default. You can still run them if you know their names, or you can turn on dev mode by hitting Ctrl-D while in `gui/launcher` and they will be added to the autocomplete list. Some tools listed as "unavailable" in the docs do not compile yet and are not accessible at all, even when in dev mode. + +If you see a tool complaining about the lack of a cursor, know that it's referring to the **keyboard** cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor by entering mining mode or selecting the dump/forbid tool and hitting Alt-K (the DFHack keybinding for `toggle-kbd-cursor`). We're working on making DFHack tools more mouse-aware and accessible so this step isn't necessary in the future. + +
+ +Changelog +==================== + +
+New tools, fixes, and improvements + +%RELEASE_NOTES% +
diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 0000000000..c2d946e300 --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,205 @@ +name: Build linux64 + +on: + workflow_call: + inputs: + dfhack_repo: + type: string + default: DFHack/dfhack + dfhack_ref: + type: string + scripts_repo: + type: string + default: DFHack/scripts + scripts_ref: + type: string + structures_repo: + type: string + default: DFHack/df-structures + structures_ref: + type: string + stonesense_repo: + type: string + default: DFHack/stonesense + stonesense_ref: + type: string + artifact-name: + type: string + append-date-and-hash: + type: boolean + default: false + cache-id: + type: string + default: '' + cache-readonly: + type: boolean + default: false + platform-files: + type: boolean + default: true + plugins: + type: boolean + default: true + common-files: + type: boolean + default: true + docs: + type: boolean + default: false + html: + type: boolean + default: true + stonesense: + type: boolean + default: false + launchdf: + type: boolean + default: false + extras: + type: boolean + default: false + tests: + type: boolean + default: false + xml-dump-type-sizes: + type: boolean + default: false + gcc-ver: + type: string + default: "11" + +jobs: + build-linux64: + name: Build linux64 + runs-on: ubuntu-22.04 + steps: + - name: Install basic build dependencies + run: | + sudo apt-get update + sudo apt-get install ninja-build + - name: Install binary build dependencies + if: inputs.platform-files || inputs.xml-dump-type-sizes + run: | + sudo apt-get install \ + ccache \ + gcc-${{ inputs.gcc-ver }} \ + g++-${{ inputs.gcc-ver }} \ + libxml-libxslt-perl + - name: Install stonesense dependencies + if: inputs.stonesense + run: sudo apt-get install libgl-dev + - name: Install doc dependencies + if: inputs.docs + run: pip install 'sphinx' + - name: Clone DFHack + uses: actions/checkout@v4 + with: + repository: ${{ inputs.dfhack_repo }} + ref: ${{ inputs.dfhack_ref }} + submodules: true + fetch-depth: ${{ !inputs.platform-files && 1 || 0 }} + - name: Clone scripts + if: inputs.scripts_ref + uses: actions/checkout@v4 + with: + repository: ${{ inputs.scripts_repo }} + ref: ${{ inputs.scripts_ref }} + path: scripts + - name: Clone structures + if: inputs.structures_ref + uses: actions/checkout@v4 + with: + repository: ${{ inputs.structures_repo }} + ref: ${{ inputs.structures_ref }} + path: library/xml + - name: Clone stonesense + if: inputs.stonesense_ref + uses: actions/checkout@v4 + with: + repository: ${{ inputs.stonesense_repo }} + ref: ${{ inputs.stonesense_ref }} + path: plugins/stonesense + - name: Get 3rd party SDKs + if: inputs.launchdf + uses: actions/checkout@v4 + with: + repository: DFHack/3rdparty + ref: main + ssh-key: ${{ secrets.DFHACK_3RDPARTY_TOKEN }} + path: depends/steam + - name: Fetch ccache + if: inputs.platform-files + uses: actions/cache/restore@v4 + with: + path: ~/.cache/ccache + key: linux-gcc-${{ inputs.gcc-ver }}-${{ inputs.cache-id }}-${{ github.sha }} + restore-keys: | + linux-gcc-${{ inputs.gcc-ver }}-${{ inputs.cache-id }} + linux-gcc-${{ inputs.gcc-ver }} + - name: Configure DFHack + env: + CC: gcc-${{ inputs.gcc-ver }} + CXX: g++-${{ inputs.gcc-ver }} + run: | + cmake \ + -S . \ + -B build \ + -G Ninja \ + -DCMAKE_INSTALL_PREFIX=build/image \ + -DCMAKE_BUILD_TYPE=Release \ + -DDFHACK_RUN_URL='https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' \ + ${{ inputs.platform-files && '-DCMAKE_C_COMPILER_LAUNCHER=ccache' || '' }} \ + ${{ inputs.platform-files && '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache' || '' }} \ + -DBUILD_LIBRARY:BOOL=${{ inputs.platform-files }} \ + -DBUILD_PLUGINS:BOOL=${{ inputs.platform-files && inputs.plugins }} \ + -DBUILD_STONESENSE:BOOL=${{ inputs.stonesense }} \ + -DBUILD_DFLAUNCH:BOOL=${{ inputs.launchdf }} \ + -DBUILD_DEV_PLUGINS:BOOL=${{ inputs.extras }} \ + -DBUILD_SIZECHECK:BOOL=${{ inputs.extras }} \ + -DBUILD_SKELETON:BOOL=${{ inputs.extras }} \ + -DBUILD_DOCS:BOOL=${{ inputs.docs }} \ + -DBUILD_DOCS_NO_HTML:BOOL=${{ !inputs.html }} \ + -DBUILD_TESTS:BOOL=${{ inputs.tests }} \ + -DBUILD_XMLDUMP:BOOL=${{ inputs.xml-dump-type-sizes }} \ + ${{ inputs.xml-dump-type-sizes && '-DINSTALL_XMLDUMP:BOOL=1' || ''}} \ + -DINSTALL_DATA_FILES:BOOL=${{ inputs.common-files }} \ + -DINSTALL_SCRIPTS:BOOL=${{ inputs.common-files }} + - name: Build DFHack + run: ninja -C build install + - name: Run cpp tests + if: inputs.platform-files + run: ninja -C build test + - name: Finalize ccache + if: inputs.platform-files + run: | + ccache --show-stats --verbose + ccache --max-size 40M + ccache --cleanup + ccache --max-size 500M + ccache --zero-stats + - name: Save ccache + if: inputs.platform-files && !inputs.cache-readonly + uses: actions/cache/save@v4 + with: + path: ~/.cache/ccache + key: linux-gcc-${{ inputs.gcc-ver }}-${{ inputs.cache-id }}-${{ github.sha }} + - name: Format artifact name + if: inputs.artifact-name + id: artifactname + run: | + if test "false" = "${{ inputs.append-date-and-hash }}"; then + echo name=${{ inputs.artifact-name }} >> $GITHUB_OUTPUT + else + echo name=${{ inputs.artifact-name }}-$(date +%Y%m%d)-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT + fi + - name: Prep artifact + if: inputs.artifact-name + run: | + cd build/image + tar cjf ../../${{ steps.artifactname.outputs.name }}.tar.bz2 . + - name: Upload artifact + if: inputs.artifact-name + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.artifactname.outputs.name }} + path: ${{ steps.artifactname.outputs.name }}.tar.bz2 diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml new file mode 100644 index 0000000000..1dec211117 --- /dev/null +++ b/.github/workflows/build-windows.yml @@ -0,0 +1,206 @@ +name: Build win64 + +on: + workflow_call: + inputs: + dfhack_repo: + type: string + default: DFHack/dfhack + dfhack_ref: + type: string + scripts_repo: + type: string + default: DFHack/scripts + scripts_ref: + type: string + structures_repo: + type: string + default: DFHack/df-structures + structures_ref: + type: string + stonesense_repo: + type: string + default: DFHack/stonesense + stonesense_ref: + type: string + artifact-name: + type: string + append-date-and-hash: + type: boolean + default: false + cache-id: + type: string + default: '' + cache-readonly: + type: boolean + default: false + platform-files: + type: boolean + default: true + plugins: + type: boolean + default: true + common-files: + type: boolean + default: true + docs: + type: boolean + default: false + html: + type: boolean + default: true + stonesense: + type: boolean + default: false + tests: + type: boolean + default: false + xml-dump-type-sizes: + type: boolean + default: false + launchdf: + type: boolean + default: false + + +jobs: + build-win64: + name: Build win64 + runs-on: windows-2022 + steps: + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.x' + - name: Install build dependencies + run: | + choco install sccache + pip install Jinja2 + - name: Install doc dependencies + if: inputs.docs + run: | + pip install sphinx + - name: Clone DFHack + uses: actions/checkout@v4 + with: + repository: ${{ inputs.dfhack_repo }} + ref: ${{ inputs.dfhack_ref }} + submodules: true + fetch-depth: 0 + - name: Clone scripts + if: inputs.scripts_ref + uses: actions/checkout@v4 + with: + repository: ${{ inputs.scripts_repo }} + ref: ${{ inputs.scripts_ref }} + path: scripts + - name: Clone structures + if: inputs.structures_ref + uses: actions/checkout@v4 + with: + repository: ${{ inputs.structures_repo }} + ref: ${{ inputs.structures_ref }} + path: library/xml + - name: Clone stonesense + if: inputs.stonesense_ref + uses: actions/checkout@v4 + with: + repository: ${{ inputs.stonesense_repo }} + ref: ${{ inputs.stonesense_ref }} + path: plugins/stonesense + - name: Get 3rd party SDKs + if: inputs.launchdf + uses: actions/checkout@v4 + with: + repository: DFHack/3rdparty + ref: main + ssh-key: ${{ secrets.DFHACK_3RDPARTY_TOKEN }} + path: depends/steam + - name: Prepare output directories + run: | + mkdir output + mkdir pdb + - name: Get sccache path + run: echo ("SCCACHE_DIR=" + $env:LOCALAPPDATA + "\Mozilla\sccache\cache") >> $env:GITHUB_ENV + - name: Fetch ccache + if: inputs.platform-files + uses: actions/cache/restore@v4 + with: + path: ${{ env.SCCACHE_DIR }} + key: win-msvc-${{ inputs.cache-id }}-${{ github.sha }} + restore-keys: | + win-msvc-${{ inputs.cache-id }} + win-msvc + - uses: ilammy/msvc-dev-cmd@v1 + - name: Configure DFHack + run: | + cmake ` + -S . ` + -B build ` + -GNinja ` + -DDFHACK_BUILD_ARCH=64 ` + -DCMAKE_BUILD_TYPE=Release ` + -DCMAKE_INSTALL_PREFIX=output ` + -DCMAKE_C_COMPILER_LAUNCHER=sccache ` + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache ` + -DBUILD_PDBS:BOOL=${{ inputs.cache-id == 'release' }} ` + -DDFHACK_RUN_URL='https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' ` + -DBUILD_LIBRARY=${{ inputs.platform-files }} ` + -DBUILD_PLUGINS:BOOL=${{ inputs.platform-files && inputs.plugins }} ` + -DBUILD_STONESENSE:BOOL=${{ inputs.stonesense }} ` + -DBUILD_DOCS:BOOL=${{ inputs.docs }} ` + -DBUILD_DOCS_NO_HTML:BOOL=${{ !inputs.html }} ` + -DINSTALL_DATA_FILES:BOOL=${{ inputs.common-files }} ` + -DBUILD_DFLAUNCH:BOOL=${{ inputs.launchdf }} ` + -DBUILD_TESTS:BOOL=${{ inputs.tests }} ` + -DBUILD_XMLDUMP:BOOL=${{ inputs.xml-dump-type-sizes }} ` + ${{ inputs.xml-dump-type-sizes && '-DINSTALL_XMLDUMP:BOOL=1' || '' }} + - name: Build DFHack + env: + SCCACHE_CACHE_SIZE: 500M + run: | + ninja install -C build + - name: Finalize cache + run: | + cd build + sccache --show-stats + sccache --zero-stats + - name: Save ccache + if: inputs.platform-files && !inputs.cache-readonly + uses: actions/cache/save@v4 + with: + path: ${{ env.SCCACHE_DIR }} + key: win-msvc-${{ inputs.cache-id }}-${{ github.sha }} + - name: Format artifact name + if: inputs.artifact-name + id: artifactname + run: | + if ("${{ inputs.append-date-and-hash }}" -eq "false") { + "name=${{ inputs.artifact-name }}" | Out-File -Append $env:GITHUB_OUTPUT + } else { + $date = Get-Date -Format "yyyMMdd" + $hash = git rev-parse --short HEAD + "name=${{ inputs.artifact-name}}-$date-$hash" | Out-File -Append $env:GITHUB_OUTPUT + } + - name: Prep pdbs + if: inputs.artifact-name && inputs.cache-id == 'release' + run: | + Get-ChildItem -Recurse -File -Path "build" -Filter *.pdb | + Copy-Item -Destination "pdb" + - name: Prep artifact + run: | + cd output + 7z a -ttar -so -an . | + 7z a -si -tbzip2 ../${{ steps.artifactname.outputs.name }}.tar.bz2 + - name: Upload artifact + if: inputs.artifact-name + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.artifactname.outputs.name }} + path: ${{ steps.artifactname.outputs.name }}.tar.bz2 + - name: Upload PDBs + if: inputs.artifact-name && inputs.cache-id == 'release' + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.artifactname.outputs.name }}_pdb + path: pdb diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index abee9a86ab..3767b42ba5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,222 +3,36 @@ 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-22.04 - gcc: - - 10 - plugins: - - default - include: - - os: ubuntu-22.04 - gcc: 12 - 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 \ - ccache \ - libgtk2.0-0 \ - libncursesw5 \ - 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<4.4.0' - - 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 ci/get-df-version.sh)" - echo "df_version=${DF_VERSION}" >> $GITHUB_OUTPUT - echo "DF_VERSION=${DF_VERSION}" >> $GITHUB_ENV - echo "DF_FOLDER=${HOME}/DF/${DF_VERSION}/df_linux" >> $GITHUB_ENV - echo "CCACHE_DIR=${HOME}/.ccache" >> $GITHUB_ENV - # - name: Fetch DF cache - # uses: actions/cache@v3 - # with: - # path: ~/DF - # key: dfcache-${{ steps.env_setup.outputs.df_version }}-${{ hashFiles('ci/download-df.sh') }} - - name: Fetch ccache - uses: actions/cache@v3 - with: - path: ~/.ccache - key: ccache-v2-${{ matrix.os }}-gcc-${{ matrix.gcc }}-${{ github.ref_name }}-${{ github.sha }} - restore-keys: | - ccache-v2-${{ matrix.os }}-gcc-${{ matrix.gcc }}-${{ github.ref_name }} - ccache-v2-${{ matrix.os }}-gcc-${{ matrix.gcc }} - # - name: Download DF - # run: | - # sh ci/download-df.sh - - name: Configure 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_SKELETON:BOOL=${{ matrix.plugins == 'all' }} \ - -DBUILD_STONESENSE:BOOL=${{ matrix.plugins == 'all' }} \ - -DBUILD_SUPPORTED:BOOL=1 \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_INSTALL_PREFIX="$DF_FOLDER" - - name: Build DFHack - run: | - ninja -C build-ci install - ccache --show-stats - - name: Run cpp unit tests - id: run_tests_cpp - run: | - ninja -C build-ci test - exit $? - # - name: Run lua tests - # id: run_tests_lua - # run: | - # export TERM=dumb - # status=0 - # script -qe -c "python ci/run-tests.py --headless --keep-status \"$DF_FOLDER\"" || status=$((status + 1)) - # python ci/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt" || status=$((status + 2)) - # mkdir -p artifacts - # cp "$DF_FOLDER"/test*.json "$DF_FOLDER"/*.log artifacts || status=$((status + 4)) - # exit $status - # - 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" + test: + uses: ./.github/workflows/test.yml + with: + dfhack_repo: ${{ github.repository }} + dfhack_ref: ${{ github.ref }} + secrets: inherit - build-cross-win64: - name: Build MSVC win64 - runs-on: ubuntu-22.04 - steps: - - name: Clone DFHack - uses: actions/checkout@v3 - with: - submodules: true - fetch-depth: 0 - - name: Fetch ccache - uses: actions/cache@v3 - with: - path: build/win64-cross/ccache - key: ccache-win64-cross-msvc-${{ github.ref_name }}-${{ github.sha }} - restore-keys: | - ccache-win64-cross-msvc-${{ github.ref_name }} - ccache-win64-cross-msvc - - name: Cross-compile win64 artifacts - env: - CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1' - run: | - cd build - bash -x build-win64-from-linux.sh - - name: Format artifact name - id: artifactname - run: | - echo name=$(date +%Y%m%d)-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT - - name: Upload win64 artifacts - uses: actions/upload-artifact@v3 - with: - name: dfhack-win64-build-${{ steps.artifactname.outputs.name }} - path: build/win64-cross/output/* + package: + uses: ./.github/workflows/package.yml + with: + dfhack_repo: ${{ github.repository }} + dfhack_ref: ${{ github.ref }} + secrets: inherit docs: - runs-on: ubuntu-22.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 -j auto --color . docs/html - - name: Upload docs - uses: actions/upload-artifact@v1 - with: - name: docs - path: docs/html + uses: ./.github/workflows/build-linux.yml + with: + dfhack_repo: ${{ github.repository }} + dfhack_ref: ${{ github.ref }} + platform-files: false + common-files: false + docs: true + secrets: inherit lint: - runs-on: ubuntu-22.04 - steps: - - name: Set up Python 3 - uses: actions/setup-python@v2 - with: - python-version: 3 - - name: Set up Ruby 2.7 - uses: ruby/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 ci/lint.py --git-only --github-actions - - name: Check Authors.rst - if: success() || failure() - run: | - python ci/authors-rst.py - - name: Check for missing documentation - if: success() || failure() - run: | - python ci/script-docs.py - - name: Check Lua syntax - if: success() || failure() - run: | - python ci/script-syntax.py --ext=lua --cmd="luac5.3 -p" --github-actions - - name: Check Ruby syntax - if: success() || failure() - run: | - python ci/script-syntax.py --ext=rb --cmd="ruby -c" --github-actions + uses: ./.github/workflows/lint.yml + with: + dfhack_repo: ${{ github.repository }} + dfhack_ref: ${{ github.ref }} + secrets: inherit check-pr: runs-on: ubuntu-latest diff --git a/.github/workflows/buildmaster-rebuild.yml b/.github/workflows/buildmaster-rebuild.yml deleted file mode 100644 index 5a1fe95044..0000000000 --- a/.github/workflows/buildmaster-rebuild.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Buildmaster rebuild - -on: - workflow_dispatch: - inputs: - pull_request: - description: Pull request ID - type: string - required: true # remove if we support commit rebuilds later - -jobs: - rebuild: - runs-on: ubuntu-latest - name: Trigger Buildmaster - steps: - - name: Set up Python 3 - uses: actions/setup-python@v2 - with: - python-version: 3 - - name: Install dependencies - run: | - pip install requests - - name: Clone DFHack - uses: actions/checkout@v1 - with: - fetch-depth: 1 - submodules: false - - name: Run - env: - DFHACK_BUILDMASTER_WEBHOOK_URL: ${{ secrets.DFHACK_BUILDMASTER_WEBHOOK_URL }} - DFHACK_BUILDMASTER_WEBHOOK_SECRET: ${{ secrets.DFHACK_BUILDMASTER_WEBHOOK_SECRET }} - GITHUB_REPO: ${{ github.repository }} - GITHUB_TOKEN: ${{ github.token }} - run: | - python ci/buildmaster-rebuild-pr.py --pull-request ${{ github.event.inputs.pull_request }} diff --git a/.github/workflows/clean-cache.yml b/.github/workflows/clean-cache.yml new file mode 100644 index 0000000000..91d5675ad8 --- /dev/null +++ b/.github/workflows/clean-cache.yml @@ -0,0 +1,32 @@ +name: Clean up PR caches + +on: + workflow_call: + pull_request_target: + types: + - closed + +jobs: + cleanup: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Cleanup + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh extension install actions/gh-actions-cache + + REPO=${{ github.repository }} + BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge" + + echo "Fetching list of cache keys" + cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1) + + set +e + echo "Deleting caches..." + for cacheKey in $cacheKeysForPR; do + gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm + done + echo "Done" diff --git a/.github/workflows/generate-symbols.yml b/.github/workflows/generate-symbols.yml new file mode 100644 index 0000000000..f78da19e74 --- /dev/null +++ b/.github/workflows/generate-symbols.yml @@ -0,0 +1,421 @@ +name: Generate symbols + +on: + workflow_dispatch: + inputs: + structures_ref: + description: Structures branch to build from and update + required: true + default: master + version: + description: DF version (can be "auto" if channel is steam) + required: true + platform: + description: Target OS platform + type: choice + required: true + default: all + options: + - all + - windows + - linux + channel: + description: DF distribution channel + type: choice + required: true + default: all + options: + - all + - steam + - itch + - classic + df_steam_branch: + description: DF Steam branch to read from (if processing Steam distribution channel) + required: true + type: choice + default: default + options: + - default + - experimental + - testing + - adventure_test + - beta + steam_branch: + description: DFHack Steam branch to deploy to (leave blank to skip deploy) + type: string + +jobs: + package-linux: + uses: ./.github/workflows/build-linux.yml + if: inputs.platform == 'all' || inputs.platform == 'linux' + with: + dfhack_ref: ${{ github.ref }} + structures_ref: ${{ inputs.structures_ref }} + artifact-name: dfhack-symbols-linux64-build + append-date-and-hash: false + cache-id: test + cache-readonly: true + plugins: false + secrets: inherit + + package-win64: + uses: ./.github/workflows/build-windows.yml + if: (inputs.platform == 'all' || inputs.platform == 'windows') && inputs.version == 'auto' + with: + dfhack_ref: ${{ github.ref }} + structures_ref: ${{ inputs.structures_ref }} + artifact-name: dfhack-symbols-windows64-build + append-date-and-hash: false + cache-id: test + cache-readonly: true + plugins: false + secrets: inherit + + generate-linux: + name: Generate linux64 symbols + runs-on: ubuntu-latest + if: inputs.platform == 'all' || inputs.platform == 'linux' + needs: + - package-linux + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install \ + ansifilter \ + libsdl2-2.0-0 \ + libsdl2-image-2.0-0 + - name: Clone structures + uses: actions/checkout@v4 + with: + repository: DFHack/df-structures + ref: ${{ inputs.structures_ref }} + token: ${{ secrets.DFHACK_GITHUB_TOKEN }} + path: xml + - name: Download DFHack + uses: actions/download-artifact@v4 + with: + name: dfhack-symbols-linux64-build + - name: Start X server + run: Xvfb :0 -screen 0 1600x1200x24 & + + # Steam + - name: Setup steamcmd + if: inputs.channel == 'all' || inputs.channel == 'steam' + id: steamcmd + uses: CyberAndrii/setup-steamcmd@v1 + - name: Generate Steam symbols + if: inputs.channel == 'all' || inputs.channel == 'steam' + env: + DISPLAY: :0 + STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }} + STEAM_CONFIG_VDF: ${{ secrets.STEAM_CONFIG_VDF }} + STEAM_DF_TESTING: ${{ secrets.STEAM_DF_TESTING }} + STEAM_DF_ADVENTURE_TEST: ${{ secrets.STEAM_DF_ADVENTURE_TEST }} + run: | + mkdir DF_steam + mkdir -p $HOME/Steam/config + echo "$STEAM_CONFIG_VDF" | base64 -d >$HOME/Steam/config/config.vdf + echo "DF steam branch: ${{ inputs.df_steam_branch }}" + if [ "${{ inputs.df_steam_branch }}" = "default" ]; then + BETA_PARAMS="" + elif [ "${{ inputs.df_steam_branch }}" = "testing" ]; then + BETA_PARAMS="-beta testing -betapassword $STEAM_DF_TESTING" + elif [ "${{ inputs.df_steam_branch }}" = "adventure_test" ]; then + BETA_PARAMS="-beta adventure_test -betapassword $STEAM_DF_ADVENTURE_TEST" + else + BETA_PARAMS="-beta ${{ inputs.df_steam_branch }}" + fi + ${{ steps.steamcmd.outputs.executable }} \ + +@ShutdownOnFailedCommand 1 \ + +force_install_dir $PWD/DF_steam \ + +login $STEAM_USERNAME \ + "+app_update 975370 $BETA_PARAMS validate" \ + +quit + tar xjf dfhack-symbols-linux64-build.tar.bz2 -C DF_steam + xml/symbols_gen_linux.sh ${{ inputs.version == 'auto' && '50.0' || inputs.version }} STEAM DF_steam + if [ "${{ inputs.version }}" == "auto" ]; then + while pgrep dwarfort; do + echo "waiting for DF to exit" + sleep 0.5 + done + cp xml/symbols.xml DF_steam/hack + cd DF_steam + DFHACK_DISABLE_CONSOLE=1 ./dfhack & + while ! ./dfhack-run lua 'print(scr)' | fgrep 'viewscreen_titlest' 2>/dev/null; do + echo "waiting for DF to start" + sleep 0.5 + done + df_ver=`./dfhack-run lua 'print(dfhack.gui.getDFViewscreen(true).str_version)' | ansifilter` + echo "Found version string: '$df_ver'" + echo "DETECTED_DF_VER=$df_ver" >>$GITHUB_ENV + sed -i "s/v0.50.0 linux64 STEAM/v0.$df_ver linux64 STEAM/" ../xml/symbols.xml + ./dfhack-run die || true + fi + + # Itch + - name: Generate Itch symbols + if: (inputs.channel == 'all' || inputs.channel == 'itch') && inputs.version != 'auto' + env: + DISPLAY: :0 + ITCH_API_KEY: ${{ secrets.ITCH_API_KEY }} + run: | + mkdir DF_itch + pip install itch-dl + minor=$(echo "${{ inputs.version }}" | cut -d. -f1) + patch=$(echo "${{ inputs.version }}" | cut -d. -f2) + fname="dwarf_fortress_${minor}_${patch}_linux.tar.bz2" + itch-dl https://kitfoxgames.itch.io/dwarf-fortress --download-to . --api-key $ITCH_API_KEY --filter-files-glob "${fname}" + tar xjf "kitfoxgames/dwarf-fortress/files/${fname}" -C DF_itch + tar xjf dfhack-symbols-linux64-build.tar.bz2 -C DF_itch + xml/symbols_gen_linux.sh ${{ inputs.version }} ITCH DF_itch + + # Classic + - name: Generate Classic symbols + if: (inputs.channel == 'all' || inputs.channel == 'classic') && inputs.version != 'auto' + env: + DISPLAY: :0 + run: | + mkdir DF_classic + minor=$(echo "${{ inputs.version }}" | cut -d. -f1) + patch=$(echo "${{ inputs.version }}" | cut -d. -f2) + fname="df_${minor}_${patch}_linux.tar.bz2" + wget "https://www.bay12games.com/dwarves/${fname}" + tar xjf "${fname}" -C DF_classic + tar xjf dfhack-symbols-linux64-build.tar.bz2 -C DF_classic + xml/symbols_gen_linux.sh ${{ inputs.version }} CLASSIC DF_classic + + # Finalize + - name: Merge updates + run: | + cd xml + if ! git diff --exit-code; then + git stash + git pull + git stash pop + fi + - name: Commit symbol updates + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: Auto-update symbols for Linux DF version ${{ env.DETECTED_DF_VER || inputs.version }} + repository: xml + commit_user_name: DFHack-Urist via GitHub Actions + commit_user_email: 63161697+DFHack-Urist@users.noreply.github.com + + generate-windows: + name: Generate win64 symbols + runs-on: ubuntu-latest + if: inputs.platform == 'all' || inputs.platform == 'windows' + steps: + - name: Install dependencies + run: pip install pefile + - name: Clone structures + uses: actions/checkout@v4 + with: + repository: DFHack/df-structures + ref: ${{ inputs.structures_ref }} + token: ${{ secrets.DFHACK_GITHUB_TOKEN }} + path: xml + - name: Clone df_misc + uses: actions/checkout@v4 + with: + repository: DFHack/df_misc + path: df_misc + - name: Clone metasm + uses: actions/checkout@v4 + with: + repository: jjyg/metasm + path: metasm + + # Steam + - name: Setup steamcmd + if: inputs.channel == 'all' || inputs.channel == 'steam' + id: steamcmd + uses: CyberAndrii/setup-steamcmd@v1 + - name: Generate Steam symbols + if: inputs.channel == 'all' || inputs.channel == 'steam' + env: + STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }} + STEAM_CONFIG_VDF: ${{ secrets.STEAM_CONFIG_VDF }} + STEAM_DF_TESTING: ${{ secrets.STEAM_DF_TESTING }} + STEAM_DF_ADVENTURE_TEST: ${{ secrets.STEAM_DF_ADVENTURE_TEST }} + run: | + mkdir DF_steam + mkdir -p $HOME/Steam/config + echo "$STEAM_CONFIG_VDF" | base64 -d >$HOME/Steam/config/config.vdf + echo "DF steam branch: ${{ inputs.df_steam_branch }}" + if [ "${{ inputs.df_steam_branch }}" = "default" ]; then + BETA_PARAMS="" + elif [ "${{ inputs.df_steam_branch }}" = "testing" ]; then + BETA_PARAMS="-beta testing -betapassword $STEAM_DF_TESTING" + elif [ "${{ inputs.df_steam_branch }}" = "adventure_test" ]; then + BETA_PARAMS="-beta adventure_test -betapassword $STEAM_DF_ADVENTURE_TEST" + else + BETA_PARAMS="-beta ${{ inputs.df_steam_branch }}" + fi + ${{ steps.steamcmd.outputs.executable }} \ + +@ShutdownOnFailedCommand 1 \ + +@sSteamCmdForcePlatformType windows \ + +force_install_dir $PWD/DF_steam \ + +login $STEAM_USERNAME \ + "+app_update 975370 $BETA_PARAMS validate" \ + +quit + xml/symbols_gen_windows.sh ${{ inputs.version == 'auto' && '50.0' || inputs.version }} STEAM DF_steam + + # Itch + - name: Generate Itch symbols + if: (inputs.channel == 'all' || inputs.channel == 'itch') && inputs.version != 'auto' + env: + ITCH_API_KEY: ${{ secrets.ITCH_API_KEY }} + run: | + mkdir DF_itch + pip install itch-dl + minor=$(echo "${{ inputs.version }}" | cut -d. -f1) + patch=$(echo "${{ inputs.version }}" | cut -d. -f2) + fname="dwarf_fortress_${minor}_${patch}_windows.zip" + itch-dl https://kitfoxgames.itch.io/dwarf-fortress --download-to . --api-key $ITCH_API_KEY --filter-files-glob "${fname}" + unzip -d DF_itch "kitfoxgames/dwarf-fortress/files/${fname}" + xml/symbols_gen_windows.sh ${{ inputs.version }} ITCH DF_itch + + # Classic + - name: Generate Classic symbols + if: (inputs.channel == 'all' || inputs.channel == 'classic') && inputs.version != 'auto' + run: | + mkdir DF_classic + minor=$(echo "${{ inputs.version }}" | cut -d. -f1) + patch=$(echo "${{ inputs.version }}" | cut -d. -f2) + fname="df_${minor}_${patch}_win.zip" + wget "https://www.bay12games.com/dwarves/${fname}" + unzip -d DF_classic "${fname}" + xml/symbols_gen_windows.sh ${{ inputs.version }} CLASSIC DF_classic + + # Finalize + - name: Merge updates + run: | + cd xml + if ! git diff --exit-code; then + git stash + git pull + git stash pop + fi + - name: Commit symbol updates + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: Auto-update symbols for Windows DF version ${{ inputs.version }} + repository: xml + commit_user_name: DFHack-Urist via GitHub Actions + commit_user_email: 63161697+DFHack-Urist@users.noreply.github.com + + auto-ver-windows: + name: Autodetect DF version string (Windows) + if: (inputs.platform == 'all' || inputs.platform == 'windows') && (inputs.channel == 'all' || inputs.channel == 'steam') && inputs.version == 'auto' + needs: + - package-win64 + - generate-windows + runs-on: windows-latest + steps: + - name: Clone structures + uses: actions/checkout@v4 + with: + repository: DFHack/df-structures + ref: ${{ inputs.structures_ref }} + token: ${{ secrets.DFHACK_GITHUB_TOKEN }} + path: xml + - name: Download DFHack + uses: actions/download-artifact@v4 + with: + name: dfhack-symbols-windows64-build + - name: Setup steamcmd + id: steamcmd + uses: CyberAndrii/setup-steamcmd@v1 + - name: Update DF version string + env: + STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }} + STEAM_CONFIG_VDF: ${{ secrets.STEAM_CONFIG_VDF }} + STEAM_DF_TESTING: ${{ secrets.STEAM_DF_TESTING }} + STEAM_DF_ADVENTURE_TEST: ${{ secrets.STEAM_DF_ADVENTURE_TEST }} + shell: bash + run: | + mkdir DF_steam + echo "$STEAM_CONFIG_VDF" | base64 -d >${{ steps.steamcmd.outputs.directory }}/config/config.vdf + echo "DF steam branch: ${{ inputs.df_steam_branch }}" + if [ "${{ inputs.df_steam_branch }}" = "default" ]; then + BETA_PARAMS="" + elif [ "${{ inputs.df_steam_branch }}" = "testing" ]; then + BETA_PARAMS="-beta testing -betapassword $STEAM_DF_TESTING" + elif [ "${{ inputs.df_steam_branch }}" = "adventure_test" ]; then + BETA_PARAMS="-beta adventure_test -betapassword $STEAM_DF_ADVENTURE_TEST" + else + BETA_PARAMS="-beta ${{ inputs.df_steam_branch }}" + fi + ${{ steps.steamcmd.outputs.executable }} \ + +@ShutdownOnFailedCommand 1 \ + +@sSteamCmdForcePlatformType windows \ + +force_install_dir $PWD/DF_steam \ + +login $STEAM_USERNAME \ + "+app_update 975370 $BETA_PARAMS validate" \ + +quit + tar xjf dfhack-symbols-windows64-build.tar.bz2 -C DF_steam + cp xml/symbols.xml DF_steam/hack + cd DF_steam + "./Dwarf Fortress.exe" & + while ! ./dfhack-run.exe lua 'print(scr)' | fgrep 'viewscreen_titlest' 2>/dev/null; do + echo "waiting for DF to start" + sleep 0.5 + done + df_ver=`./dfhack-run.exe lua 'print(dfhack.gui.getDFViewscreen(true).str_version)'` + echo "Found version string: '$df_ver'" + echo "DETECTED_DF_VER=$df_ver" >>$GITHUB_ENV + sed -i "s/v0.50.0 win64 STEAM/v0.$df_ver win64 STEAM/" ../xml/symbols.xml + ./dfhack-run.exe die || true + - name: Merge updates + shell: bash + run: | + cd xml + if ! git diff --exit-code; then + git stash + git pull + git stash pop + fi + - name: Commit symbol updates + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: Auto-update Windows DF version to ${{ env.DETECTED_DF_VER }} in symbols + repository: xml + commit_user_name: DFHack-Urist via GitHub Actions + commit_user_email: 63161697+DFHack-Urist@users.noreply.github.com + + update-ref: + name: Update structures ref + runs-on: ubuntu-latest + needs: + - generate-linux + - auto-ver-windows + if: ${{ ! failure() }} + steps: + - name: Clone DFHack + uses: actions/checkout@v4 + with: + token: ${{ secrets.DFHACK_GITHUB_TOKEN }} + - name: Update ref + shell: bash + run: | + git submodule update --init --no-single-branch library/xml + cd library/xml + git checkout ${{ inputs.structures_ref }} + git pull + df_ver=`grep -E 'symbol-table.*STEAM' symbols.xml | head -n1 | sed -r "s/.*name='v0.([^ ]+) .*/\1/"` + echo "using DF version: $df_ver" + echo "DETECTED_DF_VER=$df_ver" >>$GITHUB_ENV + - name: Commit ref update + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: Auto-update structures ref for ${{ env.DETECTED_DF_VER }} + commit_user_name: DFHack-Urist via GitHub Actions + commit_user_email: 63161697+DFHack-Urist@users.noreply.github.com + - name: Launch steam-deploy + if: inputs.steam_branch + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh workflow run steam-deploy.yml -R DFHack/dfhack -r ${{ github.ref }} -f version=${{ env.DETECTED_DF_VER }} -f steam_branch=${{ inputs.steam_branch }} diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml new file mode 100644 index 0000000000..16a4602141 --- /dev/null +++ b/.github/workflows/github-release.yml @@ -0,0 +1,81 @@ +name: Deploy to GitHub + +on: + push: + tags: + - '*-r*' + + workflow_dispatch: + inputs: + ref: + description: Tag + required: true + +jobs: + package: + uses: ./.github/workflows/package.yml + with: + dfhack_ref: ${{ github.event.inputs && github.event.inputs.ref || github.event.ref }} + append-date-and-hash: false + cache-readonly: true + launchdf: true + secrets: inherit + + create-update-release: + name: Draft GitHub release + needs: package + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Install doc dependencies + run: pip install 'sphinx' + - name: Clone DFHack + uses: actions/checkout@v4 + with: + ref: ${{ github.event.inputs && github.event.inputs.ref || github.event.ref }} + submodules: true + - name: Get tag + id: gettag + run: | + TAG=$(git describe --tags --abbrev=0 --exact-match) + echo name="$TAG" >> $GITHUB_OUTPUT + echo type=$(echo "$TAG" | egrep 'r[0-9]+$' && echo "release" || echo "prerelease") >> $GITHUB_OUTPUT + - name: Generate release text + run: | + python docs/gen_changelog.py -a + CHANGELOG_FILE=docs/changelogs/${{ steps.gettag.outputs.name }}-github.txt + if ! test -f $CHANGELOG_FILE; then CHANGELOG_FILE=docs/changelogs/future-github.txt; fi + TOKEN_LINE=$(grep -Fhne '%RELEASE_NOTES%' .github/release_template.md | sed 's/:.*//') + head -n $((TOKEN_LINE - 1)) .github/release_template.md > release_body.md + CHANGELOG_LINES=$(wc -l <$CHANGELOG_FILE) + tail -n $((CHANGELOG_LINES - 3)) $CHANGELOG_FILE >> release_body.md + tail -n 1 .github/release_template.md >> release_body.md + cat release_body.md + - name: Stage release + uses: actions/download-artifact@v4 + - name: Prep artifacts + run: | + mkdir artifacts + cd dfhack-windows64-build + tar xjf dfhack-windows64-build.tar.bz2 + rm dfhack-windows64-build.tar.bz2 + zip -qr ../artifacts/dfhack-${{ steps.gettag.outputs.name }}-Windows-64bit.zip . + cd ../dfhack-linux64-build + mv dfhack-linux64-build.tar.bz2 ../artifacts/dfhack-${{ steps.gettag.outputs.name }}-Linux-64bit.tar.bz2 + - name: Create or update GitHub release + uses: ncipollo/release-action@v1 + with: + artifacts: "artifacts/dfhack-*" + bodyFile: "release_body.md" + allowUpdates: true + artifactErrorsFailBuild: true + draft: true + name: "DFHack ${{ steps.gettag.outputs.name }}" + omitBodyDuringUpdate: true + omitDraftDuringUpdate: true + omitNameDuringUpdate: true + omitPrereleaseDuringUpdate: true + prerelease: ${{ steps.gettag.outputs.type == 'prerelease' }} + replacesArtifacts: true + tag: ${{ steps.gettag.outputs.name }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000000..0b44747c01 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,50 @@ +name: Lint + +on: + workflow_call: + inputs: + dfhack_repo: + type: string + default: DFHack/dfhack + dfhack_ref: + type: string + scripts_repo: + type: string + default: DFHack/scripts + scripts_ref: + type: string + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Install Lua + run: | + sudo apt-get update + sudo apt-get install lua5.3 + - name: Clone DFHack + uses: actions/checkout@v4 + with: + repository: ${{ inputs.dfhack_repo }} + ref: ${{ inputs.dfhack_ref }} + - name: Get scripts submodule ref + if: '!inputs.scripts_ref' + id: scriptssubmoduleref + run: echo ref=$(git submodule | fgrep scripts | cut -c2-41) >> $GITHUB_OUTPUT + - name: Clone scripts + uses: actions/checkout@v4 + with: + repository: ${{ inputs.scripts_repo }} + ref: ${{ inputs.scripts_ref || steps.scriptssubmoduleref.outputs.ref }} + path: scripts + - name: Check whitespace + run: python ci/lint.py --git-only --github-actions + - name: Check Authors.rst + if: always() + run: python ci/authors-rst.py + - name: Check for missing documentation + if: always() + run: python ci/script-docs.py + - name: Check Lua syntax + if: always() + run: python ci/script-syntax.py --ext=lua --cmd="luac5.3 -p" --github-actions diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 0000000000..41e72ea636 --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,76 @@ +name: Package + +on: + workflow_call: + inputs: + dfhack_repo: + type: string + dfhack_ref: + type: string + scripts_repo: + type: string + scripts_ref: + type: string + structures_repo: + type: string + structures_ref: + type: string + append-date-and-hash: + type: boolean + default: true + cache-readonly: + type: boolean + default: false + launchdf: + type: boolean + default: false + include_windows: + type: boolean + default: true + include_linux: + type: boolean + default: true + + +jobs: + package-win64: + name: Windows + uses: ./.github/workflows/build-windows.yml + if: inputs.include_windows + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + scripts_repo: ${{ inputs.scripts_repo }} + scripts_ref: ${{ inputs.scripts_ref }} + structures_repo: ${{ inputs.structures_repo }} + structures_ref: ${{ inputs.structures_ref }} + artifact-name: dfhack-windows64-build + append-date-and-hash: ${{ inputs.append-date-and-hash }} + cache-id: release + cache-readonly: ${{ inputs.cache-readonly }} + stonesense: true + docs: true + html: false + launchdf: ${{ inputs.launchdf }} + secrets: inherit + + package-linux: + name: Linux + uses: ./.github/workflows/build-linux.yml + if: inputs.include_linux + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + scripts_repo: ${{ inputs.scripts_repo }} + scripts_ref: ${{ inputs.scripts_ref }} + structures_repo: ${{ inputs.structures_repo }} + structures_ref: ${{ inputs.structures_ref }} + artifact-name: dfhack-linux64-build + append-date-and-hash: ${{ inputs.append-date-and-hash }} + cache-id: release + cache-readonly: ${{ inputs.cache-readonly }} + stonesense: true + docs: true + html: false + launchdf: ${{ inputs.launchdf }} + secrets: inherit diff --git a/.github/workflows/steam-deploy.yml b/.github/workflows/steam-deploy.yml new file mode 100644 index 0000000000..2fbe6849e1 --- /dev/null +++ b/.github/workflows/steam-deploy.yml @@ -0,0 +1,96 @@ +name: Deploy to Steam + +on: + push: + tags: + - '*-r*' + workflow_dispatch: + inputs: + version: + description: Version or build description + type: string + required: true + steam_branch: + description: Steam release branch + type: string + required: true + default: staging + +jobs: + depot-common: + name: Common depot files + uses: ./.github/workflows/build-linux.yml + with: + artifact-name: common-depot + dfhack_ref: ${{ github.ref }} + platform-files: false + docs: true + html: false + stonesense: true + secrets: inherit + + depot-win64: + name: Windows depot files + uses: ./.github/workflows/build-windows.yml + with: + artifact-name: win64-depot + dfhack_ref: ${{ github.ref }} + cache-id: release + cache-readonly: true + common-files: false + stonesense: true + launchdf: true + secrets: inherit + + depot-linux64: + name: Linux depot files + uses: ./.github/workflows/build-linux.yml + with: + artifact-name: linux64-depot + dfhack_ref: ${{ github.ref }} + cache-id: release + cache-readonly: true + common-files: false + stonesense: true + launchdf: true + secrets: inherit + + deploy-to-steam: + name: Deploy to Steam + needs: + - depot-common + - depot-win64 + - depot-linux64 + runs-on: ubuntu-latest + concurrency: steamdeploy + steps: + - name: Download depot files + uses: actions/download-artifact@v4 + - name: Stage depot files + run: | + for name in common win64 linux64; do + cd ${name}-depot + tar xjf ${name}-depot.tar.bz2 + rm ${name}-depot.tar.bz2 + cd .. + done + - name: Get short SHA of commit + run: echo "SHORT_SHA=`echo ${{ github.sha }} | cut -c1-8`" >>$GITHUB_ENV + - name: steamcmd cache + uses: actions/cache@v4 + with: + path: /home/runner/work/_temp/_github_home + key: steamcmd-${{ github.sha }} + restore-keys: steamcmd + - name: Steam deploy + uses: game-ci/steam-deploy@v3 + with: + username: ${{ secrets.STEAM_USERNAME }} + configVdf: ${{ secrets.STEAM_CONFIG_VDF}} + appId: 2346660 + buildDescription: ${{ github.event.inputs && github.event.inputs.version || github.ref_name }} (${{ env.SHORT_SHA }}) + rootPath: . + depot1Path: common-depot + depot2Path: win64-depot + depot3Path: linux64-depot + releaseBranch: ${{ github.event.inputs && github.event.inputs.steam_branch || 'staging' }} diff --git a/.github/workflows/steam.yml b/.github/workflows/steam.yml deleted file mode 100644 index aae1621af2..0000000000 --- a/.github/workflows/steam.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Deploy to Steam - -on: - workflow_dispatch: - inputs: - commit_hash: - description: Commit hash - type: string - required: true - version: - description: Version - type: string - required: true - release_channel: - description: Release channel - type: string - required: true - default: beta - -jobs: - deploy-to-steam: - name: Deploy to Steam - runs-on: ubuntu-22.04 - steps: - - name: Clone DFHack - uses: actions/checkout@v3 - with: - submodules: true - fetch-depth: 0 - ref: ${{ github.event.inputs.commit_hash }} - - name: Fetch ccache - uses: actions/cache@v3 - with: - path: build/win64-cross/ccache - key: ccache-win64-cross-msvc-${{ github.event.inputs.commit_hash }} - restore-keys: | - ccache-win64-cross-msvc-develop-${{ github.event.inputs.commit_hash }} - ccache-win64-cross-msvc - - name: Cross-compile win64 artifacts - env: - CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1' - run: | - cd build - bash -x build-win64-from-linux.sh - - name: Steam deploy - uses: game-ci/steam-deploy@v2 - with: - username: ${{ secrets.STEAM_USERNAME }} - password: ${{ secrets.STEAM_PASSWORD }} - configVdf: ${{ secrets.STEAM_CONFIG_VDF}} - ssfnFileName: ${{ secrets.STEAM_SSFN_FILE_NAME }} - ssfnFileContents: ${{ secrets.STEAM_SSFN_FILE_CONTENTS }} - appId: 2346660 - buildDescription: ${{ github.event.inputs.version }} - rootPath: build - depot1Path: win64-cross/output - releaseBranch: ${{ github.event.inputs.release_channel }} diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml new file mode 100644 index 0000000000..3fbf683b63 --- /dev/null +++ b/.github/workflows/test-suite.yml @@ -0,0 +1,93 @@ +name: Test suite + +on: + workflow_call: + inputs: + dfhack_repo: + type: string + dfhack_ref: + type: string + os: + type: string + compiler: + type: string + plugins: + type: string + config: + type: string + +jobs: + run-tests: + name: Test (${{ inputs.os }}, ${{ inputs.compiler }}, ${{ inputs.plugins }} plugins, ${{ inputs.config }} config) + runs-on: ${{ inputs.os }}-latest + steps: + - name: Set env + shell: bash + run: echo "DF_FOLDER=DF" >>$GITHUB_ENV + - name: Install dependencies + if: inputs.os == 'ubuntu' + run: | + sudo apt-get update + sudo apt-get install \ + libsdl2-2.0-0 \ + libsdl2-image-2.0-0 + - name: Clone DFHack + uses: actions/checkout@v4 + with: + repository: ${{ inputs.dfhack_repo }} + ref: ${{ inputs.dfhack_ref }} + - name: Detect DF version + shell: bash + run: echo DF_VERSION="$(sh ci/get-df-version.sh)" >>$GITHUB_ENV + - name: Fetch DF cache + id: restore-df + uses: actions/cache/restore@v4 + with: + path: ${{ env.DF_FOLDER }} + key: df-${{ inputs.os }}-${{ env.DF_VERSION }}-${{ hashFiles('ci/download-df.sh') }} + - name: Download DF + if: steps.restore-df.outputs.cache-hit != 'true' + run: sh ci/download-df.sh ${{ env.DF_FOLDER }} ${{ inputs.os }} ${{ env.DF_VERSION }} + - name: Save DF cache + if: steps.restore-df.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: ${{ env.DF_FOLDER }} + key: df-${{ inputs.os }}-${{ env.DF_VERSION }}-${{ hashFiles('ci/download-df.sh') }} + - name: Install blank DFHack init scripts + if: inputs.config == 'empty' + shell: bash + run: | + mkdir -p ${{ env.DF_FOLDER }}/dfhack-config/init + cd data/dfhack-config/init + for fname in *.init; do touch ../../../${{ env.DF_FOLDER }}/dfhack-config/init/$fname; done + - name: Download DFHack + uses: actions/download-artifact@v4 + with: + name: test-${{ inputs.compiler }} + - name: Install DFHack + shell: bash + run: tar xjf test-${{ inputs.compiler }}.tar.bz2 -C ${{ env.DF_FOLDER }} + - name: Start X server + if: inputs.os == 'ubuntu' + run: Xvfb :0 -screen 0 1600x1200x24 & + - name: Run lua tests + uses: nick-fields/retry@v3 + env: + DISPLAY: :0 + TERM: xterm-256color + with: + timeout_minutes: 1 + command: python ci/run-tests.py --keep-status "${{ env.DF_FOLDER }}" + - name: Check RPC interface + run: python ci/check-rpc.py "${{ env.DF_FOLDER }}/dfhack-rpc.txt" + - name: Upload test artifacts + uses: actions/upload-artifact@v4 + if: always() + continue-on-error: true + with: + name: test-output-${{ inputs.compiler }}-${{ inputs.plugins }}_plugins-${{ inputs.config }}_config + path: | + ${{ env.DF_FOLDER }}/dfhack-rpc.txt + ${{ env.DF_FOLDER }}/test*.json + ${{ env.DF_FOLDER }}/*.log diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000000..175a1adf48 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,113 @@ +name: Test + +on: + workflow_call: + inputs: + dfhack_repo: + type: string + default: DFHack/dfhack + dfhack_ref: + type: string + scripts_repo: + type: string + default: DFHack/scripts + scripts_ref: + type: string + structures_repo: + type: string + default: DFHack/df-structures + structures_ref: + type: string + +jobs: + build-windows: + name: Windows MSVC + uses: ./.github/workflows/build-windows.yml + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + scripts_repo: ${{ inputs.scripts_repo }} + scripts_ref: ${{ inputs.scripts_ref }} + structures_repo: ${{ inputs.structures_repo }} + structures_ref: ${{ inputs.structures_ref }} + artifact-name: test-msvc + cache-id: test + docs: true + html: false + tests: true + + build-linux: + name: Linux gcc-${{ matrix.gcc }} + uses: ./.github/workflows/build-linux.yml + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + scripts_repo: ${{ inputs.scripts_repo }} + scripts_ref: ${{ inputs.scripts_ref }} + structures_repo: ${{ inputs.structures_repo }} + structures_ref: ${{ inputs.structures_ref }} + artifact-name: test-gcc-${{ matrix.gcc }} + cache-id: test + stonesense: ${{ matrix.plugins == 'all' }} + extras: ${{ matrix.plugins == 'all' }} + docs: true + html: false + tests: true + gcc-ver: ${{ matrix.gcc }} + secrets: inherit + strategy: + fail-fast: false + matrix: + include: + - gcc: 11 # baseline compatibility with ubuntu LTS 22.04 + plugins: "default" + - gcc: 12 # highest available in ubuntu 22.04 + plugins: "all" + + test-windows: + name: Run Windows test suite + needs: build-windows + uses: ./.github/workflows/test-suite.yml + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + os: windows + compiler: msvc + plugins: default + config: default + + test-windows-empty: + name: Run Windows test suite (empty config) + needs: build-windows + uses: ./.github/workflows/test-suite.yml + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + os: windows + compiler: msvc + plugins: default + config: empty + + test-linux: + name: Run Linux test suite + needs: build-linux + uses: ./.github/workflows/test-suite.yml + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + os: ubuntu + compiler: gcc-11 + plugins: default + config: default + + test-linux-gcc-12-all-plugins: + name: Run Linux test suite (gcc-12, all plugins) + needs: build-linux + uses: ./.github/workflows/test-suite.yml + with: + dfhack_repo: ${{ inputs.dfhack_repo }} + dfhack_ref: ${{ inputs.dfhack_ref }} + os: ubuntu + compiler: gcc-12 + plugins: all + config: default diff --git a/.github/workflows/update-submodules.yml b/.github/workflows/update-submodules.yml index 45eaceb020..c634e94d0a 100644 --- a/.github/workflows/update-submodules.yml +++ b/.github/workflows/update-submodules.yml @@ -4,11 +4,6 @@ on: schedule: - cron: '0 7 * * *' workflow_dispatch: - inputs: - branch: - description: DFHack branch to update - required: false - default: develop jobs: run: @@ -16,10 +11,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Clone DFHack - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 - ref: ${{ github.event.inputs.branch }} + ref: ${{ github.ref }} submodules: true token: ${{ secrets.DFHACK_GITHUB_TOKEN }} - name: Update submodules diff --git a/.github/workflows/watch-df-release.yml b/.github/workflows/watch-df-release.yml new file mode 100644 index 0000000000..50950140d1 --- /dev/null +++ b/.github/workflows/watch-df-release.yml @@ -0,0 +1,159 @@ +name: Watch DF Releases + +on: + schedule: + - cron: '8/10 * * * *' + workflow_dispatch: + +jobs: + check-steam: + if: github.repository == 'DFHack/dfhack' + name: Check Steam (${{ matrix.df_steam_branch }}) for new DF releases + runs-on: ubuntu-latest + concurrency: watch-release-steam-${{ matrix.df_steam_branch }} + strategy: + fail-fast: false + matrix: + # df_steam_branch: which DF Steam branch to watch + # platform: for symbols generation; leave blank to default to all + # structures_ref: leave blank to default to master + # dfhack_ref: leave blank if no structures update is desired + # steam_branch: leave blank if no DFHack steam push is desired + include: + - df_steam_branch: public +# - df_steam_branch: beta +# - df_steam_branch: experimental +# structures_ref: experimental +# dfhack_ref: experimental +# steam_branch: experimental + steps: + - name: Fetch state + uses: actions/cache/restore@v4 + with: + path: state + key: watch-release-steam-${{ matrix.df_steam_branch }} + - name: Compare branch metadata + uses: nick-fields/retry@v3 + with: + timeout_minutes: 5 + retry_wait_seconds: 60 + command: | + blob=$(wget 'https://api.steamcmd.net/v1/info/975370?pretty=1' -O- | \ + awk '/^ *"branches"/,0' | \ + awk '/^ *"${{ matrix.df_steam_branch }}"/,0') + buildid=$(echo "$blob" | \ + fgrep buildid | \ + head -n1 | \ + cut -d'"' -f4) + timestamp=$(echo "$blob" | \ + fgrep timeupdated | \ + head -n1 | \ + cut -d'"' -f4) + test -z "$buildid" && echo "no buildid result" && exit 1 + test -z "$timestamp" && echo "no timestamp result" && exit 1 + test "$buildid" -gt 0 || exit 1 + test "$timestamp" -gt 0 || exit 1 + echo "buildid and timestamp of last branch update: $buildid, $timestamp" + mkdir -p state + touch state/buildid state/timestamp + last_buildid=$(cat state/buildid) + last_timestamp=$(cat state/timestamp) + if [ -z "$last_timestamp" ]; then + echo "no stored timestamp" + last_buildid=0 + last_timestamp=0 + else + echo "stored buildid and timestamp of last branch update: $last_buildid, $last_timestamp" + fi + if [ "$buildid" -ne "$last_buildid" -a "$timestamp" -gt "$last_timestamp" ]; then + echo "branch updated" + echo "$buildid" >state/buildid + echo "$timestamp" >state/timestamp + echo BUILDID=$buildid >> $GITHUB_ENV + fi + - name: Discord Webhook Action + uses: tsickert/discord-webhook@v5.3.0 + if: env.BUILDID + with: + webhook-url: ${{ secrets.DISCORD_TEAM_PRIVATE_WEBHOOK_URL }} + content: "<@&${{ secrets.DISCORD_TEAM_ROLE_ID }}> Steam ${{ matrix.df_steam_branch }} branch updated (build id: ${{ env.BUILDID }})" + - name: Launch symbol generation workflow + if: env.BUILDID && matrix.dfhack_ref + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh workflow run generate-symbols.yml \ + -R DFHack/dfhack \ + -r ${{ matrix.dfhack_ref }} \ + -f structures_ref=${{ matrix.structures_ref }} \ + -f version=auto \ + -f platform=${{ matrix.platform }} \ + -f channel=steam \ + -f df_steam_branch=${{ matrix.df_steam_branch }} \ + -f steam_branch=${{ matrix.steam_branch }} + - name: Save state + uses: actions/cache/save@v4 + if: env.BUILDID + with: + path: state + key: watch-release-steam-${{ matrix.df_steam_branch }}-${{ env.BUILDID }} + + check-non-steam: + if: github.repository == 'DFHack/dfhack' + name: Check ${{ matrix.channel }} for new DF releases + runs-on: ubuntu-latest + concurrency: watch-release-${{ matrix.channel }} + strategy: + fail-fast: false + matrix: + include: + - channel: itch + url: 'https://kitfoxgames.itch.io/dwarf-fortress' + prefix: 'dwarf_fortress' + - channel: classic + url: 'https://www.bay12games.com/dwarves/' + prefix: 'df' + steps: + - name: Fetch state + uses: actions/cache/restore@v4 + with: + path: state + key: watch-release-${{ matrix.channel }} + - name: Compare versions + uses: nick-fields/retry@v3 + with: + timeout_minutes: 5 + retry_wait_seconds: 60 + command: | + version=$(wget "${{ matrix.url }}" -qO- | tr '"' '\n' | fgrep 'tar.bz2' | head -n1 | sed -r 's/${{ matrix.prefix }}_([0-9]{2})_([0-9]{2})_linux.tar.bz2/\1.\2/') + echo "latest ${{ matrix.channel }} version: $version" + if ! grep -qE '^[0-9]+\.[0-9]+$' <<<"$version"; then + echo "invalid version" + exit 1 + fi + mkdir -p state + touch state/last_version + last_version=$(cat state/last_version) + if [ -z "$last_version" ]; then + echo "no stored version" + last_version=0 + else + echo "stored ${{ matrix.channel }} version: $last_version" + fi + if [ "$(tr -d '.' <<<"$version")" -gt "$(tr -d '.' <<<"$last_version")" ]; then + echo "${{ matrix.channel }} has been updated" + echo "$version" >state/last_version + echo NEW_VERSION=$version >> $GITHUB_ENV + fi + - name: Discord Webhook Action + uses: tsickert/discord-webhook@v5.3.0 + if: env.NEW_VERSION + with: + webhook-url: ${{ secrets.DISCORD_TEAM_PRIVATE_WEBHOOK_URL }} + content: "<@&${{ secrets.DISCORD_TEAM_ROLE_ID }}> ${{ matrix.channel }} updated to ${{ env.NEW_VERSION }}" + - name: Save state + uses: actions/cache/save@v4 + if: env.NEW_VERSION + with: + path: state + key: watch-release-${{ matrix.channel }}-${{ env.NEW_VERSION }} diff --git a/.gitignore b/.gitignore index e24f112520..eda2b226d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ # linux backup files *~ -#Kdevelop project files +# Kdevelop project files *.kdev4 .kdev4 @@ -34,6 +34,7 @@ build/data build/docs build/lua build/bin +build/lib build/depends build/library build/package @@ -48,6 +49,7 @@ build/compile_commands.json build/dfhack_setarch.txt build/ImportExecutables.cmake build/Testing +build/_deps # Python binding binaries *.pyc @@ -63,6 +65,7 @@ build/CPack*Config.cmake # VSCode files .vscode +*.code-workspace # ctags file tags @@ -70,7 +73,7 @@ tags # Mac OS X .DS_Store files .DS_Store -#VS is annoying about this one. +# VS is annoying about this one. /build/win64/DF_PATH.txt /build/win32/DF_PATH.txt /.vs @@ -80,3 +83,7 @@ tags # external plugins /plugins/CMakeLists.custom.txt + +# 3rd party downloads +depends/steam +depends/SDL2 diff --git a/.gitmodules b/.gitmodules index c349de288b..596bafc98f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "plugins/stonesense"] path = plugins/stonesense url = ../../DFHack/stonesense.git -[submodule "plugins/isoworld"] - path = plugins/isoworld - url = ../../DFHack/isoworld.git [submodule "library/xml"] path = library/xml url = ../../DFHack/df-structures.git @@ -31,3 +28,6 @@ [submodule "depends/googletest"] path = depends/googletest url = ../../google/googletest.git +[submodule "depends/dfhooks"] + path = depends/dfhooks + url = ../../DFHack/dfhooks diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a4068bc445..47251d8ed3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ ci: repos: # shared across repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v6.0.0 hooks: - id: check-added-large-files - id: check-case-conflict @@ -20,11 +20,11 @@ repos: args: ['--fix=lf'] - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.21.0 + rev: 0.37.4 hooks: - id: check-github-workflows - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.4.2 + rev: v1.5.6 hooks: - id: forbid-tabs exclude_types: @@ -41,4 +41,4 @@ repos: entry: python3 ci/authors-rst.py files: docs/about/Authors\.rst pass_filenames: false -exclude: '^(depends/|data/.*\.json$|.*\.diff$)' +exclude: '^(depends/|data/.*\.json$|.*\.diff$|.*\.dfstock$)' diff --git a/.readthedocs.requirements.txt b/.readthedocs.requirements.txt index 1f028de414..e69de29bb2 100644 --- a/.readthedocs.requirements.txt +++ b/.readthedocs.requirements.txt @@ -1 +0,0 @@ -sphinx==4.4.0 diff --git a/.readthedocs.yml b/.readthedocs.yml index e66d3da1b1..bf71c46b78 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -5,7 +5,7 @@ version: 2 build: - os: ubuntu-20.04 + os: ubuntu-22.04 tools: python: "3" diff --git a/.ycm_extra_conf.py b/.ycm_extra_conf.py index e98f7a2a63..31a336b2b6 100644 --- a/.ycm_extra_conf.py +++ b/.ycm_extra_conf.py @@ -19,7 +19,6 @@ def DirectoryOfThisScript(): '-I','depends/md5', '-I','depends/jsoncpp/include', '-I','depends/tinyxml', - '-I','depends/tthread', '-I','depends/clsocket/src', '-x','c++', '-D','PROTOBUF_USE_DLLS', diff --git a/CMakeLists.txt b/CMakeLists.txt index 790e8f59bf..1495bea2b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,22 +1,31 @@ # main project file. use it from a build sub-folder, see COMPILE for details ## some generic CMake magic -cmake_minimum_required(VERSION 3.6 FATAL_ERROR) +cmake_minimum_required(VERSION 3.18 FATAL_ERROR) cmake_policy(SET CMP0048 NEW) -project(dfhack) +cmake_policy(SET CMP0074 NEW) +set(CMAKE_INSTALL_MESSAGE "LAZY") -if("${CMAKE_GENERATOR}" STREQUAL Ninja) - if("${CMAKE_VERSION}" VERSION_LESS 3.9) - message(WARNING "You are using an old version of CMake (${CMAKE_VERSION}) with Ninja. This may result in ninja errors - see docs/Compile.rst for more details. Upgrading your CMake version is recommended.") - endif() -endif() +# set up versioning. +set(DF_VERSION "53.16") +set(DFHACK_RELEASE "r1.1") +set(DFHACK_PRERELEASE FALSE) + +set(DFHACK_VERSION "${DF_VERSION}-${DFHACK_RELEASE}") +set(DFHACK_ABI_VERSION 2) +set(DFHACK_BUILD_ID "" CACHE STRING "Build ID (should be specified on command line)") -if(NOT("${CMAKE_VERSION}" VERSION_LESS 3.12)) - # make ZLIB_ROOT work in CMake >= 3.12 - # https://cmake.org/cmake/help/git-stage/policy/CMP0074.html - cmake_policy(SET CMP0074 NEW) +# set up ccache +find_program(CCACHE_EXECUTABLE "ccache" HINTS /usr/local/bin /opt/local/bin) +if(CCACHE_EXECUTABLE) + message(STATUS "using ccache") + set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_EXECUTABLE}" CACHE PATH "ccache" FORCE) + set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_EXECUTABLE}" CACHE PATH "ccache" FORCE) endif() +# project must be declared *after* ccache setup +project(dfhack) + # Set up build types if(CMAKE_CONFIGURATION_TYPES) set(CMAKE_CONFIGURATION_TYPES "Release;RelWithDebInfo" CACHE STRING "List of supported configuration types" FORCE) @@ -32,18 +41,20 @@ else(CMAKE_CONFIGURATION_TYPES) endif(CMAKE_CONFIGURATION_TYPES) option(BUILD_DOCS "Choose whether to build the documentation (requires python and Sphinx)." OFF) +option(BUILD_DOCS_NO_HTML "Don't build the HTML docs, only the in-game docs." OFF) option(REMOVE_SYMBOLS_FROM_DF_STUBS "Remove debug symbols from DF stubs. (Reduces libdfhack size to about half but removes a few useful symbols)" ON) macro(CHECK_GCC compiler_path) execute_process(COMMAND ${compiler_path} -dumpversion OUTPUT_VARIABLE GCC_VERSION_OUT) string(STRIP "${GCC_VERSION_OUT}" GCC_VERSION_OUT) - if(${GCC_VERSION_OUT} VERSION_LESS "4.8") - message(SEND_ERROR "${compiler_path} version ${GCC_VERSION_OUT} cannot be used - use GCC 4.8 or later") - elseif(${GCC_VERSION_OUT} VERSION_GREATER "4.9.9") - # GCC 5 changes ABI name mangling to enable C++11 changes. - # This must be disabled to enable linking against DF. - # http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/ - add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) + if(${GCC_VERSION_OUT} VERSION_LESS "11") + message(SEND_ERROR "${compiler_path} version ${GCC_VERSION_OUT} cannot be used - use GCC 11 or later") + endif() + # GCC 16 currently has a defect that prevents it from compiling DFHack + # -Warray-bounds is broken in GCC 16 and we'd rather disable the compiler than remove this warning + # will reconsider when this defect is fixed in a future GCC release + if(${GCC_VERSION_OUT} VERSION_GREATER_EQUAL "16") + message(SEND_ERROR "${compiler_path} version ${GCC_VERSION_OUT} cannot be used - use GCC 15 or earlier") endif() endmacro() @@ -61,15 +72,17 @@ if(UNIX) endif() if(WIN32) + set(MSVC_MIN_VER 1930) + set(MSVC_MAX_VER 1944) if(NOT MSVC) - message(SEND_ERROR "No MSVC found! MSVC 2022 version 1930 to 1935 is required.") - elseif((MSVC_VERSION LESS 1930) OR (MSVC_VERSION GREATER 1935)) - message(SEND_ERROR "MSVC 2022 version 1930 to 1935 is required, Version Found: ${MSVC_VERSION}") + message(SEND_ERROR "No MSVC found! MSVC 2022 version ${MSVC_MIN_VER} to ${MSVC_MAX_VER} is required.") + elseif((MSVC_VERSION LESS MSVC_MIN_VER) OR (MSVC_VERSION GREATER MSVC_MAX_VER)) + message(SEND_ERROR "MSVC 2022 version ${MSVC_MIN_VER} to ${MSVC_MAX_VER} is required, Version Found: ${MSVC_VERSION}") endif() endif() -# Ask for C++11 standard from compilers -set(CMAKE_CXX_STANDARD 11) +# Ask for C++-20 standard from compilers +set(CMAKE_CXX_STANDARD 20) # Require the standard support from compilers. set(CMAKE_CXX_STANDARD_REQUIRED ON) # Use only standard c++ to keep code portable @@ -92,11 +105,33 @@ if(MSVC) # see https://msdn.microsoft.com/en-us/library/074af4b6.aspx add_compile_options("/wd4503") - # suppress C4267 - VC++ complains whenever we implicitly convert an integer to - # a smaller type, and most of the time this is just conversion from 64 to 32 bits - # for things like vector sizes, which are never that big anyway. + # suppress C4267 - VC++ considers a narrowing conversion from size_t to a smaller + # integer type a warning. this is technically correct but there are so many instances + # of this that we don't want to fix, so.... add_compile_options("/wd4267") + # suppress C4251 - VC++ will warn when exporting an entire class which contains members + # referencing unexported compound types as this is potentially unsafe. because we don't + # guarantee a stable ABI for exports, we don't really care about this, and so we choose to + # be lazy and continue to export entire classes instead of exporting on a method-by-method basis + add_compile_options("/wd4251") + + # suppress C4068 - VC++ will warn for unknown pragmas by default. this is equivalent to gcc + # -Wno-unknown-pragmas (which is enabled for gcc below). + # we could work around this with sufficiently complex macros + add_compile_options("/wd4068") + + # suppress C4244 - VC++ warns by default (with /W3) about narrowing conversions that may lose data + # (such as double -> int or int32_t -> int16_t). dfhack has many of these, mostly related to Lua + # this is equivalent to gcc -Wno_conversions which is the default as gcc -Wall doesn't enable -Wconversions + add_compile_options("/wd4244") + + # Enable C5038 - This is equivalent to gcc's -Werror=reorder, which is enabled by default by gcc -Wall + add_compile_options("/w15038") + + # Enable C4062 - Warns about missing enum case in switch statement, equivalent to gcc -Wswitch + add_compile_options("/w14062") + # MSVC panics if an object file contains more than 65,279 sections. this # happens quite frequently with code that uses templates, such as vectors. add_compile_options("/bigobj") @@ -105,7 +140,7 @@ endif() # Automatically detect architecture based on Visual Studio generator if(MSVC AND NOT DEFINED DFHACK_BUILD_ARCH) if ((${CMAKE_GENERATOR} MATCHES "Win32") OR (${CMAKE_GENERATOR} MATCHES "x86")) - set(DFHACK_BUILD_ARCH "32") + message(SEND_ERROR "DF v50 does not support 32-bit") else() set(DFHACK_BUILD_ARCH "64") endif() @@ -123,7 +158,7 @@ elseif("${DFHACK_BUILD_ARCH}" STREQUAL "64") set(DFHACK_SETARCH "x86_64") add_definitions(-DDFHACK64) else() - message(SEND_ERROR "Invalid build architecture (should be 32/64): ${DFHACK_BUILD_ARCH}") + message(SEND_ERROR "Invalid build architecture (should be 32 or 64): ${DFHACK_BUILD_ARCH}") endif() if(CMAKE_CROSSCOMPILING) @@ -181,69 +216,51 @@ endif() # make sure all the necessary submodules have been set up if(NOT EXISTS ${dfhack_SOURCE_DIR}/library/xml/codegen.pl OR NOT EXISTS ${dfhack_SOURCE_DIR}/scripts/CMakeLists.txt + OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/dfhooks/CMakeLists.txt OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/clsocket/CMakeLists.txt + OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/jsoncpp-sub/CMakeLists.txt OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/libexpat/expat/CMakeLists.txt OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/libzip/CMakeLists.txt OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/xlsxio/CMakeLists.txt + OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/googletest/CMakeLists.txt OR NOT EXISTS ${dfhack_SOURCE_DIR}/depends/luacov/src ) - message(SEND_ERROR "One or more required submodules could not be found! Run 'git submodule update --init' from the root DFHack directory. (See the section 'Getting the Code' in docs/Compile.rst)") + message(SEND_ERROR "One or more required submodules could not be found! Run 'git submodule update --init' from the root DFHack directory. (See the section 'Getting the Code' in docs/dev/compile/Compile.rst)") endif() -# set up versioning. -set(DF_VERSION "50.07") -set(DFHACK_RELEASE "beta1") -set(DFHACK_PRERELEASE TRUE) - -set(DFHACK_VERSION "${DF_VERSION}-${DFHACK_RELEASE}") - -set(DFHACK_ABI_VERSION 1) - -set(DFHACK_BUILD_ID "" CACHE STRING "Build ID (should be specified on command line)") +# dfhack data goes here: +set(DFHACK_DATA_DESTINATION hack) ## where to install things (after the build is done, classic 'make install' or package structure) # the dfhack libraries will be installed here: -if(UNIX) - # put the lib into DF/hack - set(DFHACK_LIBRARY_DESTINATION hack) -else() - # windows is crap, therefore we can't do nice things with it. leave the libs on a nasty pile... - set(DFHACK_LIBRARY_DESTINATION .) -endif() + +# put the lib into DF/hack +# windows will find it because dfhooks will `AddDllDirectory` the hack folder at runtime +set(DFHACK_LIBRARY_DESTINATION ${DFHACK_DATA_DESTINATION}) # external tools will be installed here: set(DFHACK_BINARY_DESTINATION .) -# dfhack data goes here: -set(DFHACK_DATA_DESTINATION hack) # plugin libs go here: -set(DFHACK_PLUGIN_DESTINATION hack/plugins) -# dfhack header files go here: -set(DFHACK_INCLUDES_DESTINATION hack/include) +set(DFHACK_PLUGIN_DESTINATION ${DFHACK_DATA_DESTINATION}/plugins) # dfhack lua files go here: -set(DFHACK_LUA_DESTINATION hack/lua) -# the windows .lib file goes here: -set(DFHACK_DEVLIB_DESTINATION hack) +set(DFHACK_LUA_DESTINATION ${DFHACK_DATA_DESTINATION}/lua) # user documentation goes here: -set(DFHACK_USERDOC_DESTINATION hack) -# developer documentation goes here: -set(DFHACK_DEVDOC_DESTINATION hack) +set(DFHACK_USERDOC_DESTINATION ${DFHACK_DATA_DESTINATION}) # some options for the user/developer to play with -option(BUILD_LIBRARY "Build the library that goes into DF." ON) -option(BUILD_PLUGINS "Build the plugins." ON) +option(BUILD_LIBRARY "Build the DFHack library." ON) +option(BUILD_PLUGINS "Build the DFHack plugins." ON) +option(INSTALL_SCRIPTS "Install DFHack scripts." ON) +option(INSTALL_DATA_FILES "Install DFHack platform independent files." ON) set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) if(UNIX) ## flags for GCC # default to hidden symbols - # build 32bit # ensure compatibility with older CPUs - # enable C++11 features add_definitions(-DLINUX_BUILD) - add_definitions(-D_GLIBCXX_USE_C99) - set(GCC_COMMON_FLAGS "-fvisibility=hidden -mtune=generic -Wall -Werror") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g") + set(GCC_COMMON_FLAGS "-fvisibility=hidden -mtune=generic -Wall -Werror -Wl,--disable-new-dtags -Wno-unknown-pragmas") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COMMON_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COMMON_FLAGS}") if(DFHACK_BUILD_64) @@ -254,13 +271,20 @@ if(UNIX) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -march=i686") endif() string(REPLACE "-DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - set(CMAKE_INSTALL_RPATH "hack") + set(CMAKE_INSTALL_RPATH "$ORIGIN") elseif(MSVC) # for msvc, tell it to always use 8-byte pointers to member functions to avoid confusion set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /vmg /vmm /MP") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od") string(REPLACE "/O2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + + option(BUILD_PDBS "Build PDB debug symbol files." OFF) + if(BUILD_PDBS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /DEBUG") + endif() endif() # use shared libraries for protobuf @@ -276,44 +300,68 @@ elseif(WIN32) add_definitions(-DWIN32) endif() -#### download depends #### +#### dependencies #### + +# fix for pyenv: default to `python3` before `python3.x` +set(Python_FIND_UNVERSIONED_NAMES FIRST) include(CMake/DownloadFile.cmake) if(WIN32) - # Download zlib on Windows - set(ZLIB_DOWNLOAD_DIR ${dfhack_SOURCE_DIR}/depends/zlib/lib/win${DFHACK_BUILD_ARCH}) - if(${DFHACK_BUILD_ARCH} STREQUAL "64") - download_file("https://github.com/DFHack/dfhack-bin/releases/download/0.44.09/win64-zlib.lib" - ${ZLIB_DOWNLOAD_DIR}/zlib.lib - "a3b2fc6b68efafa89b0882e354fc8418") - else() - download_file("https://github.com/DFHack/dfhack-bin/releases/download/0.44.09/win32-zlib.lib" - ${ZLIB_DOWNLOAD_DIR}/zlib.lib - "f4ebaa21d9de28566e88b1edfcdff901") + set(ZLIB_FILE zlib.lib) + set(ZLIB_PATH ${dfhack_SOURCE_DIR}/depends/zlib/) + set(ZLIB_MD5 a3b2fc6b68efafa89b0882e354fc8418) + download_file("https://github.com/DFHack/dfhack-bin/releases/download/0.44.09/win64-${ZLIB_FILE}" + ${ZLIB_PATH}lib/${ZLIB_FILE} + ${ZLIB_MD5}) + set(ZLIB_ROOT ${ZLIB_PATH}) +else() + # Rescan for pthread and zlib if the build arch changed + if(NOT "${DFHACK_BUILD_ARCH}" STREQUAL "${DFHACK_BUILD_ARCH_PREV}") + unset(ZLIB_LIBRARY CACHE) + unset(CMAKE_HAVE_PTHREAD_H CACHE) endif() - # Move zlib to the build folder so possible 32 and 64-bit builds - # in the same source tree don't conflict - file(COPY ${dfhack_SOURCE_DIR}/depends/zlib - DESTINATION ${CMAKE_BINARY_DIR}/depends/) - file(COPY ${ZLIB_DOWNLOAD_DIR}/zlib.lib - DESTINATION ${CMAKE_BINARY_DIR}/depends/zlib/lib/) + if(NOT APPLE AND DFHACK_BUILD_32) + set(ZLIB_ROOT /usr/lib/i386-linux-gnu) + endif() +endif() +find_package(ZLIB REQUIRED) - # Do the same for SDLreal.dll - # (DFHack doesn't require this at build time, so no need to move it to the build folder) - set(SDLREAL_DOWNLOAD_DIR ${dfhack_SOURCE_DIR}/package/windows/win${DFHACK_BUILD_ARCH}) - if(${DFHACK_BUILD_ARCH} STREQUAL "64") - download_file("https://github.com/DFHack/dfhack-bin/releases/download/0.44.09/win64-SDL.dll" - ${SDLREAL_DOWNLOAD_DIR}/SDLreal.dll - "1ae242c4b94cb03756a1288122a66faf") +set(USE_SYSTEM_SDL2 OFF CACHE BOOL "Set to ON to use the system SDL2 headers.") + +if(BUILD_LIBRARY) + if(USE_SYSTEM_SDL2) + find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2) else() - download_file("https://github.com/DFHack/dfhack-bin/releases/download/0.44.09/win32-SDL.dll" - ${SDLREAL_DOWNLOAD_DIR}/SDLreal.dll - "5a09604daca6b2b5ce049d79af935d6a") + # Download SDL release and extract into depends in the build dir + # all we need are the header files (including generated headers), so the same release package + # will work for all platforms + # (the above statement is untested for OSX) + set(SDL_VERSION 2.26.2) + set(SDL_ZIP_MD5 574daf26d48de753d0b1e19823c9d8bb) + set(SDL_ZIP_FILE SDL2-devel-${SDL_VERSION}-VC.zip) + set(SDL_ZIP_PATH ${dfhack_SOURCE_DIR}/depends/SDL2/) + download_file("https://github.com/libsdl-org/SDL/releases/download/release-${SDL_VERSION}/${SDL_ZIP_FILE}" + ${SDL_ZIP_PATH}${SDL_ZIP_FILE} + ${SDL_ZIP_MD5}) + file(ARCHIVE_EXTRACT INPUT ${SDL_ZIP_PATH}${SDL_ZIP_FILE} + DESTINATION ${SDL_ZIP_PATH}) + set(SDL2_INCLUDE_DIRS ${SDL_ZIP_PATH}/SDL2-${SDL_VERSION}/include) endif() endif() +# this can be made conditional once we get to better platform support for std::format +INCLUDE(FetchContent) +FetchContent_Declare( + fmt + GIT_REPOSITORY https://github.com/fmtlib/fmt.git + GIT_TAG 790b9389ae99c4ddebdd2736a8602eca1fec684e # 12.1.0 + bugfix for MSVC warning + build time improvements +) +FetchContent_MakeAvailable(fmt) +set(FMTLIB fmt) +add_definitions("-DUSE_FMTLIB") + if(APPLE) # libstdc++ (GCC 4.8.5 for OS X 10.6) # fixes crash-on-unwind bug in DF's libstdc++ @@ -372,30 +420,6 @@ endif() #### expose depends #### -if(UNIX) - # Rescan for pthread and zlib if the build arch changed - if(NOT "${DFHACK_BUILD_ARCH}" STREQUAL "${DFHACK_BUILD_ARCH_PREV}") - unset(ZLIB_LIBRARY CACHE) - unset(CMAKE_HAVE_PTHREAD_H CACHE) - endif() -endif() - -# find and make available libz -if(NOT UNIX) # Windows - # zlib is in here so 32-bit and 64-bit builds in the same source tree are possible - set(ZLIB_ROOT ${CMAKE_BINARY_DIR}/depends/zlib/) -else() - if(NOT APPLE AND DFHACK_BUILD_32) - # 32-bit Linux - set(ZLIB_ROOT /usr/lib/i386-linux-gnu) - endif() -endif() - -find_package(ZLIB REQUIRED) -include_directories(depends/protobuf) -include_directories(depends/lua/include) -include_directories(depends/md5) - # Support linking against external tinyxml # If we find an external tinyxml, set the DFHACK_TINYXML variable to "tinyxml" # Otherwise, set it to "dfhack-tinyxml" @@ -407,23 +431,19 @@ if(EXTERNAL_TINYXML) endif() set(DFHACK_TINYXML "tinyxml") else() - include_directories(depends/tinyxml) set(DFHACK_TINYXML "dfhack-tinyxml") endif() -include_directories(depends/lodepng) -include_directories(depends/tthread) -include_directories(${ZLIB_INCLUDE_DIRS}) -include_directories(depends/clsocket/src) -include_directories(depends/xlsxio/include) -add_subdirectory(depends) +if(BUILD_LIBRARY) + add_subdirectory(depends) +endif() # Testing with CTest macro(dfhack_test name files) -if(UNIX AND NOT APPLE) # remove this once our MSVC build env has been updated +if(BUILD_LIBRARY AND UNIX AND NOT APPLE) # remove this once our MSVC build env has been updated add_executable(${name} ${files}) target_include_directories(${name} PUBLIC depends/googletest/googletest/include) - target_link_libraries(${name} dfhack gtest SDL) + target_link_libraries(${name} dfhack ${FMTLIB} gtest) add_test(NAME ${name} COMMAND ${name}) endif() endmacro() @@ -435,22 +455,25 @@ if(NOT GIT_FOUND) endif() # build the lib itself +add_subdirectory(library) if(BUILD_LIBRARY) - add_subdirectory(library) - install(FILES LICENSE.rst DESTINATION ${DFHACK_USERDOC_DESTINATION}) - install(FILES docs/changelog-placeholder.txt DESTINATION ${DFHACK_USERDOC_DESTINATION} RENAME changelog.txt) + file(WRITE ${CMAKE_BINARY_DIR}/dfhack_setarch.txt ${DFHACK_SETARCH}) + install(FILES ${CMAKE_BINARY_DIR}/dfhack_setarch.txt DESTINATION ${DFHACK_DATA_DESTINATION}) endif() -file(WRITE "${CMAKE_BINARY_DIR}/dfhack_setarch.txt" ${DFHACK_SETARCH}) -install(FILES "${CMAKE_BINARY_DIR}/dfhack_setarch.txt" DESTINATION "${DFHACK_DATA_DESTINATION}") - # build the plugins -if(BUILD_PLUGINS) - add_subdirectory(plugins) +add_subdirectory(plugins) + +if(INSTALL_DATA_FILES) + add_subdirectory(data) + install(FILES LICENSE.rst DESTINATION ${DFHACK_USERDOC_DESTINATION}) + install(FILES docs/changelog-placeholder.txt DESTINATION ${DFHACK_USERDOC_DESTINATION} RENAME changelog.txt) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/depends/luacov/src/luacov/ DESTINATION ${DFHACK_DATA_DESTINATION}/lua/luacov) endif() -add_subdirectory(data) -add_subdirectory(scripts) +if(INSTALL_SCRIPTS) + add_subdirectory(scripts) +endif() if(BUILD_DOCS) find_package(Python3) @@ -491,7 +514,14 @@ if(BUILD_DOCS) "${CMAKE_CURRENT_SOURCE_DIR}/conf.py" ) - set(SPHINX_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/docs/html/.buildinfo") + if(BUILD_DOCS_NO_HTML) + set(SPHINX_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/docs/text/index.txt") + set(SPHINX_BUILD_TARGETS text) + else() + set(SPHINX_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/docs/html/.buildinfo") + set(SPHINX_BUILD_TARGETS html text) + endif() + set_property( DIRECTORY PROPERTY ADDITIONAL_CLEAN_FILES TRUE "${CMAKE_CURRENT_SOURCE_DIR}/docs/changelogs" @@ -508,9 +538,10 @@ if(BUILD_DOCS) "${CMAKE_BINARY_DIR}/docs/text" "${CMAKE_BINARY_DIR}/docs/xml" ) + add_custom_command(OUTPUT ${SPHINX_OUTPUT} COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/docs/build.py" - html text --sphinx="${SPHINX_EXECUTABLE}" -- -q + ${SPHINX_BUILD_TARGETS} --sphinx="${SPHINX_EXECUTABLE}" --quiet -- -W DEPENDS ${SPHINX_DEPS} COMMENT "Building documentation with Sphinx" ) @@ -523,10 +554,12 @@ if(BUILD_DOCS) add_custom_command(TARGET dfhack_docs POST_BUILD COMMAND ${CMAKE_COMMAND} -E touch ${SPHINX_OUTPUT}) - install(DIRECTORY ${dfhack_SOURCE_DIR}/docs/html/ - DESTINATION ${DFHACK_USERDOC_DESTINATION}/docs - FILES_MATCHING PATTERN "*" - PATTERN html/_sources EXCLUDE) + if(NOT BUILD_DOCS_NO_HTML) + install(DIRECTORY ${dfhack_SOURCE_DIR}/docs/html/ + DESTINATION ${DFHACK_USERDOC_DESTINATION}/docs + FILES_MATCHING PATTERN "*" + PATTERN html/_sources EXCLUDE) + endif() install(DIRECTORY ${dfhack_SOURCE_DIR}/docs/text/ DESTINATION ${DFHACK_USERDOC_DESTINATION}/docs) install(FILES docs/changelogs/news.rst docs/changelogs/news-dev.rst DESTINATION ${DFHACK_USERDOC_DESTINATION}) @@ -611,9 +644,9 @@ endif() set(DFHACK_BUILD_ARCH_PREV "${DFHACK_BUILD_ARCH}" CACHE STRING "Previous build architecture" FORCE) option(BUILD_SIZECHECK "Build the sizecheck library, for research" OFF) -if(BUILD_SIZECHECK) +if(BUILD_LIBRARY AND BUILD_SIZECHECK) add_subdirectory(depends/sizecheck) add_dependencies(dfhack sizecheck) endif() -add_subdirectory(package/windows) +add_subdirectory(package) diff --git a/CMakeSettings.json b/CMakeSettings.json index fda8ecfd3d..d1511716f7 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -1,76 +1,10 @@ { - "environments": [ - { - "environment": "msvc_2015_x86", - "PATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64_x86;${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64;${env.ProgramFiles(x86)}\\Windows Kits\\10\\bin\\x86;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\bin\\x86;${env.PATH}", - "VS140COMNTOOLS": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\Common7\\Tools\\", - "VCINSTALLDIR": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\", - "WindowsSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\", - "UCRTVersion": "10.0.10240.0", - "UniversalCRTSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\", - "LIB": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\10.0.10240.0\\ucrt\\x86;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\um\\x86;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x86", - "INCLUDE": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\INCLUDE;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\10.0.10240.0\\ucrt;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\shared;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\winrt;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\shared", - "LIBPATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB" - }, - { - "environment": "msvc_2015_x64", - "PATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64;${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN;${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\1033;${env.ProgramFiles(x86)}\\Windows Kits\\bin\\x64;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\bin\\x64;${env.PATH}", - "VS140COMNTOOLS": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\Common7\\Tools\\", - "VCINSTALLDIR": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\", - "WindowsSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\", - "UCRTVersion": "10.0.10240.0", - "UniversalCRTSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\", - "LIB": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB\\amd64;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\10.0.10240.0\\ucrt\\x64;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\um\\x64;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64", - "INCLUDE": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\INCLUDE;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\10.0.10240.0\\ucrt;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\shared;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\winrt;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\shared", - "LIBPATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB\\amd64" - } - ], "configurations": [ - { - "name": "MSVC 32 Debug", - "generator": "Ninja", - "configurationType": "RelWithDebInfo", - "inheritEnvironments": [ "msvc_x86_x64", "msvc_2015_x86" ], - "variables": [ - { - "name": "DFHACK_BUILD_ARCH", - "value": "32" - }, - { - "name": "BUILD_STONESENSE", - "value": "1" - }, - { - "name": "REMOVE_SYMBOLS_FROM_DF_STUBS", - "value": "0" - }, - { - "name": "DFHACK_INCLUDE_CORE", - "value": "1" - } - ] - }, - { - "name": "MSVC 32 Release", - "generator": "Ninja", - "configurationType": "Release", - "inheritEnvironments": [ "msvc_x86_x64", "msvc_2015_x86" ], - "variables": [ - { - "name": "DFHACK_BUILD_ARCH", - "value": "32" - }, - { - "name": "BUILD_STONESENSE", - "value": "1" - } - ] - }, { "name": "MSVC 64 Debug", "generator": "Ninja", "configurationType": "RelWithDebInfo", - "inheritEnvironments": [ "msvc_x64_x64", "msvc_2015_x64" ], + "inheritEnvironments": [ "msvc_x64_x64" ], "variables": [ { "name": "DFHACK_BUILD_ARCH", @@ -94,7 +28,7 @@ "name": "MSVC 64 Release", "generator": "Ninja", "configurationType": "Release", - "inheritEnvironments": [ "msvc_x64_x64", "msvc_2015_x64" ], + "inheritEnvironments": [ "msvc_x64_x64" ], "variables": [ { "name": "DFHACK_BUILD_ARCH", diff --git a/LICENSE.rst b/LICENSE.rst index 5298144239..1ab6a682ee 100644 --- a/LICENSE.rst +++ b/LICENSE.rst @@ -4,16 +4,19 @@ Licenses ######## -DFHack is distributed under the Zlib license, with some MIT- -and BSD-licensed components. These licenses protect your right -to use DFHack for any purpose, distribute copies, and so on. +DFHack is distributed under the Zlib license, with some MIT- and BSD-licensed +components. These licenses protect your right to use DFHack for any purpose, +distribute copies, and so on. -The core, plugins, scripts, and other DFHack code all use the -ZLib license unless noted otherwise. By contributing to DFHack, -authors release the contributed work under this license. +The core, plugins, scripts, and other DFHack code all use the ZLib license +unless noted otherwise. By contributing to DFHack, authors release the +contributed work under this license. -DFHack also draws on several external packages. -Their licenses are summarised here and reproduced below. +Some graphic assets are derived from vanilla DF assets and used with permission +from Bay12. + +DFHack also draws on several external packages. Their licenses are summarised +here and reproduced below. =============== ============= ================================================= Component License Copyright @@ -31,7 +34,6 @@ luacov_ MIT \(c\) 2007 - 2018 Hisham Muhammad luafilesystem_ MIT \(c\) 2003-2014, Kepler Project lua-profiler_ MIT \(c\) 2002,2003,2004 Pepperfish protobuf_ BSD 3-clause \(c\) 2008, Google Inc. -tinythread_ Zlib \(c\) 2010, Marcus Geelnard tinyxml_ Zlib \(c\) 2000-2006, Lee Thomason UTF-8-decoder_ MIT \(c\) 2008-2010, Bjoern Hoehrmann xlsxio_ MIT \(c\) 2016-2020, Brecht Sanders @@ -52,7 +54,6 @@ googletest_ BSD 3-Clause \(c\) 2008, Google Inc. .. _luafilesystem: https://github.com/keplerproject/luafilesystem .. _lua-profiler: http://lua-users.org/wiki/PepperfishProfiler .. _protobuf: https://github.com/google/protobuf -.. _tinythread: http://tinythreadpp.bitsnbites.eu/ .. _tinyxml: http://www.sourceforge.net/projects/tinyxml .. _UTF-8-decoder: http://bjoern.hoehrmann.de/utf-8/decoder/dfa .. _xlsxio: https://github.com/brechtsanders/xlsxio diff --git a/README.md b/README.md index fa6c343e1d..3a2db02fc5 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,7 @@ DFHack is a Dwarf Fortress memory access library, distributed with scripts and plugins implementing a wide variety of useful functions and tools. The full documentation [is available online here](https://dfhack.readthedocs.org). -It is also accessible via the README.html page in the DFHack distribution or as raw text in the `./docs` folder. -If you're an end-user, modder, or interested in contributing to DFHack - -go read those docs. +If you have DFHack installed, it is also accessible as raw text in the `hack/docs` folder. +If you're an end-user, modder, or interested in contributing to DFHack -- go read those docs. If the docs are unclear or you need more help, please check out our [support page](https://docs.dfhack.org/en/latest/docs/Support.html) for ways to contact the DFHack developers. diff --git a/build/.gitignore b/build/.gitignore index f25d10ca7b..0675a165cf 100644 --- a/build/.gitignore +++ b/build/.gitignore @@ -7,3 +7,5 @@ _CPack_Packages *.tar.* .cmake win64-cross +dest +DF diff --git a/build/build-win64-from-linux.sh b/build/build-win64-from-linux.sh index 11f4dbbc58..529893412f 100755 --- a/build/build-win64-from-linux.sh +++ b/build/build-win64-from-linux.sh @@ -13,6 +13,7 @@ builder_uid=$(id -u) mkdir -p win64-cross mkdir -p win64-cross/output +mkdir -p win64-cross/pdb mkdir -p win64-cross/ccache # Check for sudo; we want to use the real user @@ -32,18 +33,18 @@ if [[ $(id -u) -eq 0 ]]; then chown -R $builder_uid win64-cross fi -# Assumes you built a container image called dfhack-build-msvc from -# https://github.com/BenLubar/build-env/tree/master/msvc, see -# docs/dev/compile/Compile.rst. +# Pulls the MSVC build env container from the GitHub registry # # NOTE: win64-cross is mounted in /src/build due to the hardcoded `cmake ..` in # the Dockerfile if ! docker run --rm -i -v "$srcdir":/src -v "$srcdir/build/win64-cross/":/src/build \ -e BUILDER_UID=$builder_uid \ -e CCACHE_DIR=/src/build/ccache \ + -e steam_username \ + -e steam_password \ --name dfhack-win \ - ghcr.io/dfhack/build-env:msvc \ - bash -c "cd /src/build && dfhack-configure windows 64 Release -DCMAKE_INSTALL_PREFIX=/src/build/output cmake .. -DBUILD_DOCS=1 $CMAKE_EXTRA_ARGS && dfhack-make -j$jobs install" \ + ghcr.io/dfhack/build-env:master \ + bash -c "cd /src/build && dfhack-configure windows 64 Release -DCMAKE_INSTALL_PREFIX=/src/build/output -DBUILD_DOCS=1 $CMAKE_EXTRA_ARGS && dfhack-make -j$jobs install && find . \! -path './pdb/*' -name '*.pdb' -type f -exec cp '{}' pdb/ \;" \ ; then echo echo "Build failed" diff --git a/build/win32/build-debug.bat b/build/win32/build-debug.bat deleted file mode 100644 index dd972093d5..0000000000 --- a/build/win32/build-debug.bat +++ /dev/null @@ -1,4 +0,0 @@ -call "%VS140COMNTOOLS%vsvars32.bat" -cd VC2015_32 -msbuild /m /p:Platform=Win32 /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj -cd .. diff --git a/build/win32/build-release.bat b/build/win32/build-release.bat deleted file mode 100644 index 71f14eaf05..0000000000 --- a/build/win32/build-release.bat +++ /dev/null @@ -1,5 +0,0 @@ -call "%VS140COMNTOOLS%vsvars32.bat" -cd VC2015_32 -msbuild /m /p:Platform=Win32 /p:Configuration=Release ALL_BUILD.vcxproj -cd .. -pause diff --git a/build/win32/generate-MSVC-all.bat b/build/win32/generate-MSVC-all.bat deleted file mode 100644 index 5c113c7b66..0000000000 --- a/build/win32/generate-MSVC-all.bat +++ /dev/null @@ -1,6 +0,0 @@ -IF EXIST DF_PATH.txt SET /P _DF_PATH= 0 Then - Set ObjF = fso.GetFolder(args.Item(0)) -else - Set objDlg = WScript.CreateObject("Shell.Application") - Set objF = objDlg.BrowseForFolder (&H0,"Select your DF folder", BIF_returnonlyfsdirs) - if IsValue(objF) Then - set ObjF = objF.self - end if -end if - -If fso.FileExists("DF_PATH.txt") Then - fso.DeleteFile "DF_PATH.txt", True -End If - -If IsValue(objF) Then - If InStr(1, TypeName(objF), "Folder") > 0 Then - Set spoFile = fso.CreateTextFile("DF_PATH.txt", True) - spoFile.WriteLine(objF.Path) - End If -End If - -Function IsValue(obj) - ' Check whether the value has been returned. - Dim tmp - On Error Resume Next - tmp = " " & obj - If Err <> 0 Then - IsValue = False - Else - IsValue = True - End If - On Error GoTo 0 -End Function diff --git a/build/win64/generate-MSVC-all.bat b/build/win64/generate-MSVC-all.bat index f43a035964..29240da7fd 100644 --- a/build/win64/generate-MSVC-all.bat +++ b/build/win64/generate-MSVC-all.bat @@ -1,4 +1,4 @@ IF EXIST DF_PATH.txt SET /P _DF_PATH= ' + io[1]) if len(missing) > 0: + print(SEP) print('Incomplete documentation for ' + ('core' if plugin_name == '' else 'plugin "' + plugin_name + '"') + ' proto files. Add the following lines:') for m in missing: print(m) error_count += 1 if len(wrong) > 0: + print(SEP) print('Incorrect documentation for ' + ('core' if plugin_name == '' else 'plugin "' + plugin_name + '"') + ' proto files. Replace the following comments:') for m in wrong: print(m) @@ -88,6 +98,7 @@ methods = expected[plugin_name] if plugin_name not in actual: + print(SEP) print('Incorrect documentation for plugin proto files: ' + plugin_name) print('The following methods are documented, but the plugin does not provide any RPC methods:') for m in methods: @@ -102,6 +113,7 @@ missing.append('// RPC ' + m + ' : ' + io[0] + ' -> ' + io[1]) if len(missing) > 0: + print(SEP) print('Incorrect documentation for ' + ('core' if plugin_name == '' else 'plugin "' + plugin_name + '"') + ' proto files. Remove the following lines:') for m in missing: print(m) diff --git a/ci/download-df.sh b/ci/download-df.sh index 8d94d54ddd..a07f75f2a1 100755 --- a/ci/download-df.sh +++ b/ci/download-df.sh @@ -1,52 +1,56 @@ #!/bin/sh +DF_FOLDER=$1 +OS_TARGET=$2 +DF_VERSION=$3 + set -e -df_tardest="df.tar.bz2" -save_tardest="test_save.tgz" - -cd "$(dirname "$0")" -echo "DF_VERSION: $DF_VERSION" -echo "DF_FOLDER: $DF_FOLDER" -mkdir -p "$DF_FOLDER" -# back out of df_linux -cd "$DF_FOLDER/.." - -if ! test -f "$df_tardest"; then - minor=$(echo "$DF_VERSION" | cut -d. -f2) - patch=$(echo "$DF_VERSION" | cut -d. -f3) - echo "Downloading DF $DF_VERSION" - while read url; do - echo "Attempting download: ${url}" - if wget -v "$url" -O "$df_tardest"; then - break - fi - done <] [] If a done_command is specified, it will be run after the tests complete. -Options: - - -h, --help display this help message and exit. - -d, --test_dir specifies which directory to look in for tests. defaults to - the "hack/scripts/test" folder in your DF installation. - -m, --modes only run tests in the given comma separated list of modes. - see the next section for a list of valid modes. if not - specified, the tests are not filtered by modes. - -r, --resume skip tests that have already been run. remove the - test_status.json file to reset the record. - -s, --save_dir the save folder to load for "fortress" mode tests. this - save is only loaded if a fort is not already loaded when - a "fortress" mode test is run. if not specified, defaults to - 'region1'. - -t, --tests only run tests that match one of the comma separated list of - patterns. if not specified, no tests are filtered. - -Modes: - - none the test can be run on any screen - title the test must be run on the DF title screen. note that if the game - has a map loaded, "title" mode tests cannot be run - fortress the test must be run while a map is loaded. if the game is - currently on the title screen, the save specified by the save_dir - parameter will be loaded. - -Examples: - - test runs all tests - test -r runs all tests that haven't been run before - test -m none runs tests that don't need the game to be in a - specific mode - test -t quickfort runs quickfort tests - test -d /path/to/dfhack-scripts/repo/test - runs tests in your dev scripts repo +Options +------- + +-d, --test_dir specifies which directory to look in for tests. defaults to + the "hack/scripts/test" folder in your DF installation. +-m, --modes only run tests in the given comma separated list of modes. + see the next section for a list of valid modes. if not + specified, the tests are not filtered by modes. +-r, --resume skip tests that have already been run. remove the + test_status.json file to reset the record. +-s, --save_dir the save folder to load for "fortress" mode tests. this + save is only loaded if a fort is not already loaded when + a "fortress" mode test is run. if not specified, defaults to + 'region1'. +-t, --tests only run tests that match one of the comma separated list of + patterns. if not specified, no tests are filtered and all tessts + are run. + +Modes +----- + +none the test can be run on any screen +title the test must be run on the DF title screen. note that if the game + has a map loaded, "title" mode tests cannot be run +fortress the test must be run while a map is loaded. if the game is + currently on the title screen, the save specified by the save_dir + parameter will be loaded. + +Examples +-------- + +test runs all tests +test -r runs all tests that haven't been run before +test -m none runs tests that don't need the game to be in a + specific mode +test -t quickfort runs quickfort tests +test -d /path/to/dfhack-scripts/repo/test + runs tests in your dev scripts repo Default values for the options may be set in a file named test_config.json in your DF folder. Options with comma-separated values should be written as json @@ -140,18 +153,37 @@ end test_envvars.require = clean_require test_envvars.reqscript = clean_reqscript -local function is_title_screen(scr) - scr = scr or dfhack.gui.getCurViewscreen() - return df.viewscreen_titlest:is_instance(scr) +local function is_title_screen() + return dfhack.gui.matchFocusString('title/Default') +end + +local function wait_for(ms, desc, predicate) + local start_ms = dfhack.getTickCount() + local prev_ms = start_ms + while not predicate() do + delay(10) + local now_ms = dfhack.getTickCount() + if now_ms - start_ms > ms then + qerror(('%s took too long (timed out at %s)'):format( + desc, dfhack.gui.getCurFocus(true)[1])) + end + if now_ms - prev_ms > 1000 then + print(('Waiting for %s...'):format(desc)) + prev_ms = now_ms + end + end end -- This only handles pre-fortress-load screens. It will time out if the player -- has already loaded a fortress or is in any screen that can't get to the title -- screen by sending ESC keys. local function ensure_title_screen() + if df.viewscreen_dwarfmodest:is_instance(dfhack.gui.getDFViewscreen(true)) then + qerror('Cannot reach title screen from loaded fort') + end for i = 1, 100 do local scr = dfhack.gui.getCurViewscreen() - if is_title_screen(scr) then + if is_title_screen() then print('Found title screen') return end @@ -160,57 +192,94 @@ local function ensure_title_screen() if i % 10 == 0 then print('Looking for title screen...') end end qerror(string.format('Could not find title screen (timed out at %s)', - dfhack.gui.getCurFocus(true))) + dfhack.gui.getCurFocus(true)[1])) end -local function is_fortress(focus_string) - focus_string = focus_string or dfhack.gui.getCurFocus(true) - return focus_string == 'dwarfmode/Default' +local function is_fortress() + return dfhack.gui.matchFocusString('dwarfmode/Default') +end + +-- error out if we're not running in a CI environment +-- the tests may corrupt saves, and we don't want to unexpectedly ruin a real player save +-- this heuristic is not perfect, but it should be able to detect most cases +local function ensure_ci_save(scr) + if #scr.savegame_header ~= 1 + or #scr.savegame_header_world ~= 1 + or not string.find(scr.savegame_header[0].fort_name, 'Dream') + then + qerror('Unexpected test save in slot 0; please manually load a fort for ' .. + 'running fortress mode tests. note that tests may alter or corrupt the ' .. + 'fort! Do not save after running tests.') + end +end + +local function click_top_title_button(scr) + local sw, sh = dfhack.screen.getWindowSize() + df.global.gps.mouse_x = sw // 2 + df.global.gps.precise_mouse_x = df.global.gps.mouse_x * df.global.gps.tile_pixel_x + if sh < 60 then + df.global.gps.mouse_y = 25 + else + df.global.gps.mouse_y = (sh // 2) + 3 + end + df.global.gps.precise_mouse_y = df.global.gps.mouse_y * df.global.gps.tile_pixel_y + gui.simulateInput(scr, '_MOUSE_L') +end + +local function load_first_save(scr) + if #scr.savegame_header == 0 then + qerror('no savegames available to load') + end + + click_top_title_button(scr) + wait_for(1000, 'world list', function() + return scr.mode == 2 + end) + click_top_title_button(scr) + wait_for(1000, 'savegame list', function() + return scr.mode == 3 + end) + click_top_title_button(scr) + wait_for(1000, 'loadgame progress bar', function() + return dfhack.gui.matchFocusString('loadgame') + end) end -- Requires that a fortress game is already loaded or is ready to be loaded via --- the "Continue Playing" option in the title screen. Otherwise the function +-- the "Continue active game" option in the title screen. Otherwise the function -- will time out and/or exit with error. local function ensure_fortress(config) - local focus_string = dfhack.gui.getCurFocus(true) for screen_timeout = 1,10 do - if is_fortress(focus_string) then - print('Loaded fortress map') + if is_fortress() then + print('Fortress map is loaded') -- pause the game (if it's not already paused) dfhack.gui.resetDwarfmodeView(true) return end - local scr = dfhack.gui.getCurViewscreen(true) - if focus_string == 'title' or - focus_string == 'dfhack/lua/load_screen' then + local scr = dfhack.gui.getCurViewscreen() + if dfhack.gui.matchFocusString('title/Default', scr) then + print('Attempting to load the test fortress') + -- TODO: reinstate loading of a specified save dir; for now + -- just load the first possible save, which will at least let us + -- run fortress tests in CI -- qerror()'s on falure - dfhack.run_script('load-save', config.save_dir) - elseif focus_string ~= 'loadgame' then + -- dfhack.run_script('load-save', config.save_dir) + ensure_ci_save(scr) + load_first_save(scr) + elseif not dfhack.gui.matchFocusString('loadgame', scr) then -- if we're not actively loading a game, hope we're in -- a screen where hitting ESC will get us to the game map -- or the title screen scr:feed_key(df.interface_key.LEAVESCREEN) end -- wait for current screen to change - local prev_focus_string = focus_string - for frame_timeout = 1,100 do - delay(10) - focus_string = dfhack.gui.getCurFocus(true) - if focus_string ~= prev_focus_string then - goto next_screen - end - if frame_timeout % 10 == 0 then - print(string.format( - 'Loading fortress (currently at screen: %s)', - focus_string)) - end - end - print('Timed out waiting for screen to change') - break - ::next_screen:: + local prev_focus_string = dfhack.gui.getCurFocus()[1] + wait_for(60000, 'screen change', function() + return dfhack.gui.getCurFocus()[1] ~= prev_focus_string + end) end qerror(string.format('Could not load fortress (timed out at %s)', - focus_string)) + table.concat(dfhack.gui.getCurFocus(), ' '))) end local MODES = { @@ -221,12 +290,13 @@ local MODES = { local function load_test_config(config_file) local config = {} + print ("loading test config from " .. config_file) if dfhack.filesystem.isfile(config_file) then config = json.decode_file(config_file) end if not config.test_dir then - config.test_dir = dfhack.getHackPath() .. 'scripts/test' + config.test_dir = dfhack.getHackPath() .. '/scripts/test' end if not config.save_dir then @@ -236,6 +306,25 @@ local function load_test_config(config_file) return config end +local function TestTable() + local inner = utils.OrderedTable() + local meta = copyall(getmetatable(inner)) + + function meta:__newindex(k, v) + if inner[k] then + error('Attempt to overwrite existing test: ' .. k) + elseif type(v) ~= 'function' then + error('Attempt to define test as non-function: ' .. k .. ' = ' .. tostring(v)) + else + inner[k] = v + end + end + + local self = {} + setmetatable(self, meta) + return self +end + -- we have to save and use the original dfhack.printerr here so our test harness -- output doesn't trigger its own dfhack.printerr usage detection (see -- detect_printerr below) @@ -280,7 +369,7 @@ end local function build_test_env(path) local env = { - test = utils.OrderedTable(), + test = TestTable(), -- config values can be overridden in the test file to define -- requirements for the tests in that file config = { @@ -339,6 +428,7 @@ end local function finish_tests(done_command) dfhack.internal.IN_TEST = false + overlay.rescan() if done_command and #done_command > 0 then dfhack.run_command(done_command) end @@ -352,33 +442,44 @@ local function load_tests(file, tests) if not code then dfhack.printerr('Failed to load file: ' .. tostring(err)) return false - else - dfhack.internal.IN_TEST = true - local ok, err = dfhack.pcall(code) - dfhack.internal.IN_TEST = false - if not ok then - dfhack.printerr('Error when running file: ' .. tostring(err)) - return false - else - if not MODES[env.config.mode] then - dfhack.printerr('Invalid config.mode: ' .. tostring(env.config.mode)) - return false - end - for name, test_func in pairs(env.test) do - if env.config.wrapper then - local fn = test_func - test_func = function() env.config.wrapper(fn) end - end - local test_data = { - full_name = short_filename .. ':' .. name, - func = test_func, - private = env_private, - config = env.config, - } - test_data.name = test_data.full_name:gsub('test/', ''):gsub('.lua', '') - table.insert(tests, test_data) - end + end + dfhack.internal.IN_TEST = true + local ok, err = dfhack.pcall(code) + dfhack.internal.IN_TEST = false + if not ok then + dfhack.printerr('Error when running file: ' .. tostring(err)) + return false + end + if not MODES[env.config.mode] then + dfhack.printerr('Invalid config.mode: ' .. tostring(env.config.mode)) + return false + end + if not env.config.target then + dfhack.printerr('Skipping tests for unspecified target in ' .. file) + return true -- TODO: change to false once existing tests have targets specified + end + local targets = type(env.config.target) == 'table' and env.config.target or {env.config.target} + for _,target in ipairs(targets) do + if target == 'core' then goto continue end + if type(target) ~= 'string' or helpdb.has_tag(target, 'unavailable') then + dfhack.printerr('Skipping tests for unavailable target: ' .. target) + return true + end + ::continue:: + end + for name, test_func in pairs(env.test) do + if env.config.wrapper then + local fn = test_func + test_func = function() env.config.wrapper(fn) end end + local test_data = { + full_name = short_filename .. ':' .. name, + func = test_func, + private = env_private, + config = env.config, + } + test_data.name = test_data.full_name:gsub('test/', ''):gsub('.lua', '') + table.insert(tests, test_data) end return true end @@ -520,6 +621,10 @@ local function filter_tests(tests, config) end local function run_tests(tests, status, counts, config) + wait_for(60000, 'game load', function() + local scr = dfhack.gui.getDFViewscreen() + return not df.viewscreen_initial_prepst:is_instance(scr) + end) print(('Running %d tests'):format(#tests)) local start_ms = dfhack.getTickCount() local num_skipped = 0 @@ -529,6 +634,7 @@ local function run_tests(tests, status, counts, config) goto skip end if not MODES[test.config.mode].detect() then + print(('Switching to %s mode for test: %s'):format(test.config.mode, test.name)) local ok, err = pcall(MODES[test.config.mode].navigate, config) if not ok then MODES[test.config.mode].failed = true @@ -537,12 +643,13 @@ local function run_tests(tests, status, counts, config) goto skip end end + -- pre-emptively mark the test as failed in case we induce a crash + status[test.full_name] = TestStatus.FAILED + save_test_status(status) if run_test(test, status, counts) then status[test.full_name] = TestStatus.PASSED - else - status[test.full_name] = TestStatus.FAILED + save_test_status(status) end - save_test_status(status) ::skip:: end local elapsed_ms = dfhack.getTickCount() - start_ms @@ -575,7 +682,7 @@ local function dump_df_state() enabler = { fps = df.global.enabler.fps, gfps = df.global.enabler.gfps, - fullscreen = df.global.enabler.fullscreen, + fullscreen_state = df.global.enabler.fullscreen_state.whole, }, gps = { dimx = df.global.gps.dimx, diff --git a/ci/update-submodules.manifest b/ci/update-submodules.manifest index e97cae6f3e..7d2c1412cf 100644 --- a/ci/update-submodules.manifest +++ b/ci/update-submodules.manifest @@ -1,9 +1,10 @@ library/xml master scripts master plugins/stonesense master -plugins/isoworld dfhack +depends/clsocket master depends/libzip dfhack depends/libexpat dfhack depends/xlsxio dfhack depends/luacov dfhack depends/jsoncpp-sub dfhack +depends/dfhooks main diff --git a/conf.py b/conf.py index 60c3be5796..f5dd4451a1 100644 --- a/conf.py +++ b/conf.py @@ -78,8 +78,7 @@ def write_tool_docs(): os.makedirs(os.path.join('docs/tools', os.path.dirname(k[0])), mode=0o755, exist_ok=True) with write_file_if_changed('docs/tools/{}.rst'.format(k[0])) as outfile: - if k[0] != 'search': - outfile.write(label) + outfile.write(label) outfile.write(include) @@ -115,7 +114,7 @@ def get_caption_str(prefix=''): get_caption_str('Bay12 forums thread ')), 'dffd': ('https://dffd.bay12games.com/file.php?id=%s', get_caption_str('DFFD file ')), - 'bug': ('https://www.bay12games.com/dwarves/mantisbt/view.php?id=%s', + 'bug': ('https://dwarffortressbugtracker.com/view.php?id=%s', get_caption_str('Bug ')), 'source': ('https://github.com/DFHack/dfhack/tree/develop/%s', get_caption_str()), @@ -182,6 +181,7 @@ def get_version(): # directories to ignore when looking for source files. exclude_patterns = [ 'README.md', + '.git/*', 'build*', 'depends/*', 'docs/html/*', diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 89abe3aaf5..75146071b8 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -10,6 +10,9 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/base_command_counts.json install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/orders/ DESTINATION "${DFHACK_DATA_DESTINATION}/data/orders") +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/stockpiles/ + DESTINATION "${DFHACK_DATA_DESTINATION}/data/stockpiles") + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/art/ DESTINATION "${DFHACK_DATA_DESTINATION}/data/art") @@ -21,6 +24,10 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/ FILES_MATCHING PATTERN "*" PATTERN blueprints/test EXCLUDE) +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/patches/ + DESTINATION ${DFHACK_DATA_DESTINATION}/patches +) + if(BUILD_TESTS) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/test/ DESTINATION "${DFHACK_DATA_DESTINATION}/data/blueprints/test") diff --git a/data/art/border-bold.png b/data/art/border-bold.png new file mode 100644 index 0000000000..16423a3a74 Binary files /dev/null and b/data/art/border-bold.png differ diff --git a/data/art/curses-small-letters_top-left.png b/data/art/curses-small-letters_top-left.png new file mode 100644 index 0000000000..2bf2e5aff2 Binary files /dev/null and b/data/art/curses-small-letters_top-left.png differ diff --git a/data/art/damp_dig_map.png b/data/art/damp_dig_map.png new file mode 100644 index 0000000000..db82f1a1b0 Binary files /dev/null and b/data/art/damp_dig_map.png differ diff --git a/data/art/damp_dig_toolbar.png b/data/art/damp_dig_toolbar.png new file mode 100644 index 0000000000..4c2c1939e6 Binary files /dev/null and b/data/art/damp_dig_toolbar.png differ diff --git a/data/art/design.png b/data/art/design.png new file mode 100644 index 0000000000..38fed7e088 Binary files /dev/null and b/data/art/design.png differ diff --git a/data/art/design_toolbar.png b/data/art/design_toolbar.png new file mode 100644 index 0000000000..935a332f00 Binary files /dev/null and b/data/art/design_toolbar.png differ diff --git a/data/art/dfhack.png b/data/art/dfhack.png deleted file mode 100644 index 133dc5aaf8..0000000000 Binary files a/data/art/dfhack.png and /dev/null differ diff --git a/data/art/logo.png b/data/art/logo.png new file mode 100644 index 0000000000..c34407b372 Binary files /dev/null and b/data/art/logo.png differ diff --git a/data/art/mass_remove_toolbar.png b/data/art/mass_remove_toolbar.png new file mode 100644 index 0000000000..d1b09ac93b Binary files /dev/null and b/data/art/mass_remove_toolbar.png differ diff --git a/data/art/note_green_pin_map.png b/data/art/note_green_pin_map.png new file mode 100644 index 0000000000..b692263f90 Binary files /dev/null and b/data/art/note_green_pin_map.png differ diff --git a/data/art/on-off_top-left.png b/data/art/on-off_top-left.png new file mode 100644 index 0000000000..7303ff10d4 Binary files /dev/null and b/data/art/on-off_top-left.png differ diff --git a/data/art/pathable.png b/data/art/pathable.png new file mode 100644 index 0000000000..00f7f831d1 Binary files /dev/null and b/data/art/pathable.png differ diff --git a/data/art/sitemap_toolbar.png b/data/art/sitemap_toolbar.png new file mode 100644 index 0000000000..a29fa9b900 Binary files /dev/null and b/data/art/sitemap_toolbar.png differ diff --git a/data/art/tiletypes.png b/data/art/tiletypes.png new file mode 100644 index 0000000000..9411c7c91d Binary files /dev/null and b/data/art/tiletypes.png differ diff --git a/data/art/unsuspend.png b/data/art/unsuspend.png new file mode 100644 index 0000000000..f1d1d33da6 Binary files /dev/null and b/data/art/unsuspend.png differ diff --git a/data/base_command_counts.json b/data/base_command_counts.json index 6acfda21b1..a05d50c1ed 100644 --- a/data/base_command_counts.json +++ b/data/base_command_counts.json @@ -98,7 +98,7 @@ "gui/mechanisms": 1, "gui/pathable": 1, "hotkeys": 1, - "infiniteSky": 1, + "infinite-sky": 1, "force": 1, "hermit": 1, "strangemood": 1, diff --git a/data/blueprints/aquifer_tap.csv b/data/blueprints/aquifer_tap.csv index 3cc560ce81..dc79e523d4 100644 --- a/data/blueprints/aquifer_tap.csv +++ b/data/blueprints/aquifer_tap.csv @@ -1,60 +1,73 @@ #notes label(help) -"This blueprint will help you get a safe, everlasting source of fresh water from a light aquifer." +"This blueprint will help you get a safe, everlasting source of fresh water from a light aquifer. See https://youtu.be/hF3_fjLc_EU for a video tutorial." "" Here's the procedure: "" -1) Dig a tunnel from where you want the water to end up (e.g. your well cistern) off to an unused portion of the map. Be sure to dig a one-tile-wide diagonal segment in this tunnel so water that will eventually flow through the tunnel is depressurized. +"1) Locate an area with a light aquifer. DFHack gives light aquifer tiles a two-drop icon that appears when you are in mining mode. If you dug through it on the way down, take note of the elevations where it's likely to be (but be aware that there is regional variation and there's no guarantee that it exists on the map where you want it to be). If you are having trouble finding the boundaries of your aquifer, you can run prospect all --show features to discover the general elevations or gui/reveal -o to see the actual tiles." "" -"2) From the end of that tunnel, dig a staircase straight up to the z-level just below the lowest aquifer level. Also dig the staircase down one z-level below the tunnel level." +2) Dig a one-tile-wide tunnel from where you want the water to end up (e.g. your well cistern) to an area on the same z-level directly below the target light aquifer. Dig a one-tile-wide diagonal segment in this tunnel near the cistern side so water that will eventually flow through the tunnel is depressurized. "" -"3) From the bottom of the staircase (the z-level below where the water will flow to your cisterns), dig a straight, one-tile wide tunnel to the edge of the map. This is your drainage tunnel. Smooth the map edge tile and carve a fortification. The water can flow through the fortification and off the map, allowing the dwarves to dig out the aquifer tap without drowning." +"3) Pause the game. From the end of that tunnel, go down one z-level then designate for digging a staircase straight up so that the top is in the lowest aquifer level (a tile with a two-drop icon). Your original tunnel should connect to the staircase one z-level above the bottom of the staircase." "" -4) Place a lever-controlled floodgate in the drainage tunnel and open the floodgate. Place the lever somewhere else in your fort so that it will remain dry and accessible. +"4) Apply this blueprint (gui/quickfort aquifer_tap /dig) to the z-level at the top of the staircase. The tiles will be designated in ""damp dig"" mode so your miners can dig it out without the damp tiles canceling the digging designations. This blueprint also changes the staircase tile below the tap to a vanilla ""blueprint"" tile (shaded in blue) so your miners don't dig the tap before your drainage tunnel is ready." "" -"5) If you care about how nice things look, haul away any boulders in the tunnels and smooth the tiles. You won't be able to access any of this area once it fills up with water!" +"5) You can now unpause the game. From the bottom of the staircase (the z-level below where the water will flow to your cisterns), dig a straight, one-tile wide tunnel to the closest edge of the map. This is your emergency drainage tunnel. Smooth the map edge tile and carve a fortification. The water can flow through the fortification and off the map, allowing the dwarves to dig out the aquifer tap without drowning." "" -"6) Apply this blueprint (gui/quickfort library/aquifer_tap.csv -n /dig) to the z-level above the top of the staircase, inside the lowest aquifer level. Do not unpause until after the next step." +6) Place a lever-controlled floodgate in the drainage tunnel and open the floodgate. Place the lever somewhere else in your fort so that it will remain dry and accessible. "" -"7) Damp tiles cancel dig designations if the tile is currently hidden, so to avoid having to re-apply this blueprint after every tile your dwarves dig, position the cursor straight up (north) of the left-most tile designated for digging and straight left (west) of the topmost designated tile and run the following commands in the DFHack console:" -tiletypes-command f any ; f designated 1 ; p any ; p hidden 0 ; r 23 23 1 -tiletypes-here +"7) If you want, haul away any boulders in the tunnels and/or smooth the tiles (e.g. mark them for dumping -- hotkey i-p -- and wait for them to be dumped). Enable prioritize in gui/control-panel to focus dwarves on dumping tasks and make it go faster. You won't be able to access any of this area once it fills up with water!" "" -"8) Unpause and dig out the tap. If you care about appearances, haul away any boulders and feel free to remove the ramps (d-z). The water will safely flow down the staircase, through the open floodgate, down the drainage tunnel, and off the map until you choose to close the floodgate." +"8) Convert the ""blueprint"" stairway tile to a regular up/down stair dig designation to allow your miners to dig out the tap. You can haul away any boulders if you like. There is no rush. The water will safely flow down the staircase, through the open floodgate, down the drainage tunnel, and off the map as long as the floodgate is open." +"8b) Sometimes, DF gets into a bad state with mining designations and miners will refuse to dig the stairway tile. If this happens to you, enter mining mode, enable the keyboard cursor if it's not already enabled (hotkey: Alt-k), highlight the undug stair designation, and run dig-now here in gui/launcher. You might also have to do this for the down stair designation in the center of the aquifer tap. Your miners should be able to handle the rest without assistance." -"9) Once everything is dug out and all dwarves are out of the waterways, close the floodgate. Your cisterns will fill with water. Since the waterway to your cisterns is depressurized, the cisterns will stay forever full, but will not flood." +"9) Once everything is dug out and all dwarves are out of the waterways, close the floodgate. Your cisterns will fill with water. Since the waterway to your cisterns is depressurized (due to the diagonal tunnel you dug), the cisterns will stay forever full, but will not flood." "" A diagram might be useful. Here is a vertical view through the z-levels. This blueprint goes at the top: "" -j <- center of this blueprint +"j <- down stairs, center of this blueprint" +"i <- up/down stairs, initially in ""blueprint mode"" to prevent digging before drainage is ready" +"... <- up/down stairs, make this as tall as you need" i -... <- make this as tall as you need -i -i <- cistern outlet level -u <- drainage level +i <- cistern outlet level with diagonal tunnel to depressurize +"u <- up stairs, drainage level" "" "Good luck! If done right, this method is the safest way to supply your fort with clean water." -#dig label(dig) start(13 13 center of tap) light aquifer water collector - -,,,,,,,,,,,,r -,,,,,,,,,,,,r -,,,,,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r -,,,,,,,,,,,,r -,,,r,,,,,,,,,r,,,,,,,,,r -,,,r,,,,,r,r,r,r,r,r,r,r,r,,,,,r -,,,r,,,,,,,,,r,,,,,,,,,r -,,,r,,,r,,,,,,r,,,,,,r,,,r -,,,r,,,r,,,,,r,r,r,,,,,r,,,r -,,,r,,,r,,,,,,r,,,,,,r,,,r -,,,r,,,r,,,r,,,r,,,r,,,r,,,r -,r,r,r,r,r,r,r,r,r,r,r,j,r,r,r,r,r,r,r,r,r,r,r -,,,r,,,r,,,r,,,r,,,r,,,r,,,r -,,,r,,,r,,,,,,r,,,,,,r,,,r -,,,r,,,r,,,,,r,r,r,,,,,r,,,r -,,,r,,,r,,,,,,r,,,,,,r,,,r -,,,r,,,,,,,,,r,,,,,,,,,r -,,,r,,,,,r,r,r,r,r,r,r,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(dig) start(10 10 center of tap) light aquifer water collector +,,,,,,,,,,,,,,,,,, +,,,,,,,,mdd3,mdd3,mdd3,,,,,,,, +,,,,,,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,,,,,, +,,,,mdd3,,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,,mdd3,,,, +,,,mdd3,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,mdd3,,, +,,mdd3,,,mdd3,mdd3,,mdd3,mdd3,mdd3,,mdd3,mdd3,,,mdd3,, +,,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,, +,,,mdd3,mdd3,,,mdd3,mdd3,,mdd3,mdd3,,,mdd3,mdd3,,, +,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3, +,mdd3,mdd3,,,mdd3,mdd3,,,mdj3,,,mdd3,mdd3,,,mdd3,mdd3, +,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3, +,,,mdd3,mdd3,,,mdd3,mdd3,,mdd3,mdd3,,,mdd3,mdd3,,, +,,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,mdd3,, +,,mdd3,,,mdd3,mdd3,,mdd3,mdd3,mdd3,,mdd3,mdd3,,,mdd3,, +,,,mdd3,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,mdd3,,, +,,,,mdd3,,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,,mdd3,,,, +,,,,,,mdd3,mdd3,mdd3,,mdd3,mdd3,mdd3,,,,,, +,,,,,,,,mdd3,mdd3,mdd3,,,,,,,, +,,,,,,,,,,,,,,,,,, +#>,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,, +,,,,,,,,`,`,`,,,,,,,, +,,,,,,`,`,`,,`,`,`,,,,,, +,,,,`,,`,`,`,,`,`,`,,`,,,, +,,,`,`,`,`,,`,`,`,,`,`,`,`,,, +,,`,,,`,`,,`,`,`,,`,`,,,`,, +,,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,, +,,,`,`,,,`,`,,`,`,,,`,`,,, +,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`, +,`,`,,,`,`,,,mbmdi3,,,`,`,,,`,`, +,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`, +,,,`,`,,,`,`,,`,`,,,`,`,,, +,,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,, +,,`,,,`,`,,`,`,`,,`,`,,,`,, +,,,`,`,`,`,,`,`,`,,`,`,`,`,,, +,,,,`,,`,`,`,,`,`,`,,`,,,, +,,,,,,`,`,`,,`,`,`,,,,,, +,,,,,,,,`,`,`,,,,,,,, diff --git a/data/blueprints/bedrooms/28-3-Modified_Windmill_Villas.csv b/data/blueprints/bedrooms/28-3-Modified_Windmill_Villas.csv index 89363e35f5..af15f0cc4f 100644 --- a/data/blueprints/bedrooms/28-3-Modified_Windmill_Villas.csv +++ b/data/blueprints/bedrooms/28-3-Modified_Windmill_Villas.csv @@ -1,70 +1,74 @@ -"#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+,, , , , , ,# - , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , ,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +"#dig label(dig) start(12; 12) 28 bedrooms, 3 tiles each" + +,,,,,,,d,,,,,,d +,,,,,,,d,,,,,,d +,,,,,d,,d,,d,,d,,d,,d +,,,,,d,,d,,d,,d,,d,,d +,,,,,d,d,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,d,,,,,,d,d,,,d +,,,d,d,d,,d,,d,d,d,,d,d,d,d,d,d,d,d,d +,,,,,,d,d,,,,d,,d,,,,d +,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,,d,d,d +,,,,,d,,,,d,~,~,~,d,,d +,,,d,d,d,,d,d,d,~,~,~,d,d,d,,d,d,d +,,,,,,,d,,d,~,~,~,d,,,,d +,,,d,d,d,,d,,d,d,d,d,d,d,d,d,d,d,d,d,d +,,,,,d,,,,d,,d,,,,d,d +,d,d,d,d,d,d,d,d,d,,d,d,d,,d,,d,d,d +,,,,,d,,,d,d,,,,,,d +,,,d,d,d,,d,,d,d,d,,d,d,d,d,d +,,,,,,,d,,d,,d,,d,,d,,d +,,,,,,,d,,d,,d,,d,,d,,d +,,,,,,,,,d,,,,,,d +,,,,,,,,,d,,,,,,d + +#meta label(rooms) +zone/zone +build/build +#zone label(zone) start(12; 12) hidden() +,,,,,,b(3x5),,,,,,b(3x5) +,,,,,,,`,,,,,,` +,,,,b(3x5),,,`,b(3x5),,b(3x5),,,`,b(3x5) +,,,,,`,,`,,`,,`,,`,,` +,,,,,`,,`,,`,,`,,`,,`,b(5x3) +,,,,,`,`,`,`,`,,`,`,`,,`,,`,`,` +,,b(5x3),,,,,`,b(5x3),,,,,`,`,,,`,b(5x3) +,,,`,`,`,,`,,`,`,`,,`,`,`,`,`,`,`,`,` +b(5x3),,,,,,`,`,,,,`,,`,b(3x5),,b(5x3),` +,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,` +,,b(5x3),,,`,b(3x5),,,`,`,`,`,`,,`,b(5x3) +,,,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,` +,,b(5x3),,,,,`,,`,`,`,`,`,,,,`,b(5x3) +,,,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +b(5x3),,,,,`,,,,`,b(5x3),`,,,,`,b(5x3) +,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,` +,,b(5x3),,,`,b(3x5),,`,`,b(3x5),,b(3x5),,,`,b(3x5) +,,,`,`,`,,`,,`,`,`,,`,`,`,`,` +,,,,,,,`,b(3x5),`,,`,,`,b(3x5),`,,` +,,,,,,,`,,`,,`,,`,,`,,` +,,,,,,,,,`,,,,,,` +,,,,,,,,,`,,,,,,` + +#build label(build) start(12; 12) hidden() + +,,,,,,,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 diff --git a/data/blueprints/bedrooms/48-4-Raynard_Whirlpool_Housing.csv b/data/blueprints/bedrooms/48-4-Raynard_Whirlpool_Housing.csv index 881be3dd1d..ae7d83f6ec 100644 --- a/data/blueprints/bedrooms/48-4-Raynard_Whirlpool_Housing.csv +++ b/data/blueprints/bedrooms/48-4-Raynard_Whirlpool_Housing.csv @@ -1,100 +1,209 @@ -"#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+,, , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +"#dig label(dig) start(17; 17) 48 rooms, 4 tiles each" + +,,,,,,,,,,,,,,d,,,,d +,,,,,d,,,,d,,,,d,d,d,d,d,d,d,,,,d,,,,d +,,,,d,d,d,d,d,d,d,,,,d,,d,,d,,,,d,d,d,d,d,d,d +,,d,,,d,,d,,d,,,d,,,,d,,,,d,,,d,,d,,d,,,d +,d,d,d,,,,d,,,,d,d,d,,d,d,d,,d,d,d,,,,d,,,,d,d,d +,,d,,,d,d,d,d,d,,,d,,,d,d,d,,,d,,,d,d,d,d,d,,,d +,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,,d,d,d,d,d,,,d,,,d,d,d,,,d,,,d,d,d,d,d,,,d +,d,d,d,,,,d,,,,d,d,d,,d,d,d,,d,d,d,,,,d,,,,d,d,d +,,d,,,d,,d,,d,,,d,,,,d,,,,d,,,d,,d,,d,,,d +,,,,d,d,d,d,d,d,d,,,,d,,d,,d,,,,d,d,d,d,d,d,d +,,,,,d,,d,,d,,,,d,d,d,d,d,d,d,,,,d,,d,,d +,,,d,,,,d,,,,d,,,d,,d,,d,,,d,,,,d,,,,d +,,d,d,d,,d,d,d,,d,d,d,,,,d,,,,d,d,d,,d,d,d,,d,d,d +,,,d,,,d,d,d,,,d,,,d,~,~,~,d,,,d,,,d,d,d,,,d +,,,d,d,d,d,d,d,d,d,d,d,d,d,~,~,~,d,d,d,d,d,d,d,d,d,d,d,d +,,,d,,,d,d,d,,,d,,,d,~,~,~,d,,,d,,,d,d,d,,,d +,,d,d,d,,d,d,d,,d,d,d,,,,d,,,,d,d,d,,d,d,d,,d,d,d +,,,d,,,,d,,,,d,,,d,,d,,d,,,d,,,,d,,,,d +,,,,,d,,d,,d,,,,d,d,d,d,d,d,d,,,,d,,d,,d +,,,,d,d,d,d,d,d,d,,,,d,,d,,d,,,,d,d,d,d,d,d,d +,,d,,,d,,d,,d,,,d,,,,d,,,,d,,,d,,d,,d,,,d +,d,d,d,,,,d,,,,d,d,d,,d,d,d,,d,d,d,,,,d,,,,d,d,d +,,d,,,d,d,d,d,d,,,d,,,d,d,d,,,d,,,d,d,d,d,d,,,d +,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,,d,d,d,d,d,,,d,,,d,d,d,,,d,,,d,d,d,d,d,,,d +,d,d,d,,,,d,,,,d,d,d,,d,d,d,,d,d,d,,,,d,,,,d,d,d +,,d,,,d,,d,,d,,,d,,,,d,,,,d,,,d,,d,,d,,,d +,,,,d,d,d,d,d,d,d,,,,d,,d,,d,,,,d,d,d,d,d,d,d +,,,,,d,,,,d,,,,d,d,d,d,d,d,d,,,,d,,,,d +,,,,,,,,,,,,,,d,,,,d + +#meta label(rooms) +zone1/zone1 +zone2/zone2 +zone3/zone3 +zone4/zone4 +build/build +#zone label(zone1) start(17; 17) hidden() + +,,,,,,,,,,,,,,`,,,,` +,,,,,`,,,,`,,,,`,,`,,`,,`,,,,`,,,,` +,b,b,b,`,,`,,`,,`,b,b,b,`,,,,`,b,b,b,`,,`,,`,,`,b,b,b +b,b,b,b,b,`,,,,`,b,b,b,b,b,,,,b,b,b,b,b,`,,,,`,b,b,b,b,b +b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b +b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b +,,,,,,,`,,,,,,,,,`,,,,,,,,,` +,,`,,,,,,,,,,`,,,,,,,,`,,,,,,,,,,` +,`,,`,,,,,,,,`,,`,,,,,,`,,`,,,,,,,,`,,` +,,`,,,`,,,,`,,,`,,,,,,,,`,,,`,,,,`,,,` +,,,,`,,`,,`,,`,,,,`,,,,`,,,,`,,`,,`,,` +,,b,b,b,`,,,,`,b,b,b,`,,`,,`,,`,b,b,b,`,,,,`,b,b,b +,b,b,b,b,b,,,,b,b,b,b,b,`,,,,`,b,b,b,b,b,,,,b,b,b,b,b +,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b +,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b +,,,,,,,`,,,,,,,,,,,,,,,,,,` +,,,`,,,,,,,,`,,,,,,,,,,`,,,,,,,,` +,,`,,`,,,,,,`,,`,,,,,,,,`,,`,,,,,,`,,` +,,,`,,,,,,,,`,,,`,,,,`,,,`,,,,,,,,` +,,,,,`,,,,`,,,,`,,`,,`,,`,,,,`,,,,` +,b,b,b,`,,`,,`,,`,b,b,b,`,,,,`,b,b,b,`,,`,,`,,`,b,b,b +b,b,b,b,b,`,,,,`,b,b,b,b,b,,,,b,b,b,b,b,`,,,,`,b,b,b,b,b +b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b +b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b +,,,,,,,`,,,,,,,,,`,,,,,,,,,` +,,`,,,,,,,,,,`,,,,,,,,`,,,,,,,,,,` +,`,,`,,,,,,,,`,,`,,,,,,`,,`,,,,,,,,`,,` +,,`,,,`,,,,`,,,`,,,,,,,,`,,,`,,,,`,,,` +,,,,`,,`,,`,,`,,,,`,,,,`,,,,`,,`,,`,,` +,,,,,`,,,,`,,,,`,,`,,`,,`,,,,`,,,,` +,,,,,,,,,,,,,,`,,,,` + +#zone label(zone2) start(17; 17) hidden() +,,,,,,,,,,,,,b,b,b +,,,,b,b,b,,,,,,b,b,b,b,,,`,,,,b,b,b +,,,b,b,b,b,,,`,,,b,b,b,b,,`,,`,,b,b,b,b,,,` +,~,~,b,b,b,b,,`,,`,~,b,b,b,b,,,`,~,~,b,b,b,b,,`,,`,~,~,~ +~,~,~,b,b,b,b,,,`,~,~,~,b,b,b,,,~,~,~,b,b,b,b,,,`,~,~,~,~,~ +~,~,~,~,b,b,b,,,,~,~,~,~,~,,,,~,~,~,~,b,b,b,,,,~,~,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +,~,~,~,,,,`,,,,~,~,~,,,`,,,~,~,~,,,,`,,,,~,~,~ +,,`,,,,,,,,,,`,,,,,,,,`,,,,,,,,,,` +,`,,`,b,b,b,,,,,`,,`,,,,,,`,,`,b,b,b,,,,,`,,` +,,`,b,b,b,b,,,`,,,`,b,b,b,,,,,`,b,b,b,b,,,`,,,` +,,,b,b,b,b,,`,,`,,b,b,b,b,,,`,,,b,b,b,b,,`,,` +,,~,b,b,b,b,,,`,~,~,b,b,b,b,,`,,`,~,b,b,b,b,,,`,~,~,~ +,~,~,~,b,b,b,,,~,~,~,b,b,b,b,,,`,~,~,~,b,b,b,,,~,~,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,b,b,b,,,,~,~,~,~,~,,,,~,~,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~ +,,~,~,~,,,`,,,~,~,~,,,,,,,,~,~,~,,,`,,,~,~,~ +,,,`,,,,,,,,`,,,,,,,,,,`,,,,,,,,` +,,`,,`,,,,,,`,,`,b,b,b,,,,,`,,`,,,,,,`,,` +,,,`,b,b,b,,,,,`,b,b,b,b,,,`,,,`,b,b,b,,,,,` +,,,b,b,b,b,,,`,,,b,b,b,b,,`,,`,,b,b,b,b,,,` +,~,~,b,b,b,b,,`,,`,~,b,b,b,b,,,`,~,~,b,b,b,b,,`,,`,~,~,~ +~,~,~,b,b,b,b,,,`,~,~,~,b,b,b,,,~,~,~,b,b,b,b,,,`,~,~,~,~,~ +~,~,~,~,b,b,b,,,,~,~,~,~,~,,,,~,~,~,~,b,b,b,,,,~,~,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +,~,~,~,,,,`,,,,~,~,~,,,`,,,~,~,~,,,,`,,,,~,~,~ +,,`,,,,,,,,,,`,,,,,,,,`,,,,,,,,,,` +,`,,`,b,b,b,,,,,`,,`,,,,,,`,,`,b,b,b,,,,,`,,` +,,`,b,b,b,b,,,`,,,`,b,b,b,,,,,`,b,b,b,b,,,`,,,` +,,,b,b,b,b,,`,,`,,b,b,b,b,,,`,,,b,b,b,b,,`,,` +,,,b,b,b,b,,,`,,,b,b,b,b,,`,,`,,b,b,b,b,,,` +,,,,b,b,b,,,,,,b,b,b,b,,,`,,,,b,b,b +,,,,,,,,,,,,,b,b,b +#zone label(zone3) start(17; 17) hidden() +,,,,,,,,,,,,,~,~,~ +,,,,~,~,~,,,,,,~,~,~,~,~,,`,,,,~,~,~ +,,,~,~,~,~,~,,`,,,~,~,~,~,~,`,,`,,~,~,~,~,~,,` +,~,~,~,~,~,~,~,`,,`,~,~,~,~,~,~,,`,~,~,~,~,~,~,~,`,,`,~,~,~ +~,~,~,~,~,~,~,~,,`,~,~,~,~,~,~,,,~,~,~,~,~,~,~,~,,`,~,~,~,~,~ +~,~,~,~,~,~,~,,,,~,~,~,~,~,,,,~,~,~,~,~,~,~,,,,~,~,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +,,,,,,,`,,,,,,,,,`,,,,,,,,,` +b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b +b,b,b,b,b,~,~,,,,b,b,b,b,b,,,,b,b,b,b,b,~,~,,,,b,b,b,b,b +b,b,b,b,b,~,~,~,,`,b,b,b,b,b,~,,,b,b,b,b,b,~,~,~,,`,b,b,b,b,b +,b,b,b,~,~,~,~,`,,`,b,b,b,~,~,~,,`,b,b,b,~,~,~,~,`,,`,b,b,b +,,~,~,~,~,~,~,,`,~,~,~,~,~,~,~,`,,`,~,~,~,~,~,~,,`,~,~,~ +,~,~,~,~,~,~,,,~,~,~,~,~,~,~,~,,`,~,~,~,~,~,~,,,~,~,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,~,~,~,,,,~,~,~,~,~,,,,~,~,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~ +,,,,,,,`,,,,,,,,,,,,,,,,,,` +,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b +,b,b,b,b,b,,,,b,b,b,b,b,~,~,,,,b,b,b,b,b,,,,b,b,b,b,b +,b,b,b,b,b,~,,,b,b,b,b,b,~,~,~,,`,b,b,b,b,b,~,,,b,b,b,b,b +,,b,b,b,~,~,~,,`,b,b,b,~,~,~,~,`,,`,b,b,b,~,~,~,,`,b,b,b +,~,~,~,~,~,~,~,`,,`,~,~,~,~,~,~,,`,~,~,~,~,~,~,~,`,,`,~,~,~ +~,~,~,~,~,~,~,~,,`,~,~,~,~,~,~,,,~,~,~,~,~,~,~,~,,`,~,~,~,~,~ +~,~,~,~,~,~,~,,,,~,~,~,~,~,,,,~,~,~,~,~,~,~,,,,~,~,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +,,,,,,,`,,,,,,,,,`,,,,,,,,,` +b,b,b,b,b,,,,,,b,b,b,b,b,,,,b,b,b,b,b,,,,,,b,b,b,b,b +b,b,b,b,b,~,~,,,,b,b,b,b,b,,,,b,b,b,b,b,~,~,,,,b,b,b,b,b +b,b,b,b,b,~,~,~,,`,b,b,b,b,b,~,,,b,b,b,b,b,~,~,~,,`,b,b,b,b,b +,b,b,b,~,~,~,~,`,,`,b,b,b,~,~,~,,`,b,b,b,~,~,~,~,`,,`,b,b,b +,,,~,~,~,~,~,,`,,,~,~,~,~,~,`,,`,,~,~,~,~,~,,` +,,,,~,~,~,,,,,,~,~,~,~,~,,`,,,,~,~,~ +,,,,,,,,,,,,,~,~,~ +#zone label(zone4) start(17; 17) hidden() +,,,,,,,,,,,,,~,~,~,,b,b,b +,,,,~,~,~,,b,b,b,,~,~,~,~,,b,b,b,b,,~,~,~,,b,b,b +,,,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b +,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~ +~,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,~,~,~,~,~,,b,b,b,b,~,~,~ +~,~,~,~,~,~,~,,b,b,b,~,~,~,~,,,,~,~,~,~,~,~,~,,b,b,b,~,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +,~,~,~,,,,`,,,,~,~,~,,,`,,,~,~,~,,,,`,,,,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +~,~,~,~,~,~,~,,b,b,b,~,~,~,~,,,,~,~,~,~,~,~,~,,b,b,b,~,~,~,~ +~,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,~,~,~,~,~,,b,b,b,b,~,~,~ +,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~ +,,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~ +,~,~,~,~,~,~,,b,b,b,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,~,~,~,,b,b,b,~,~,~,~,,,,~,~,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~ +,,~,~,~,,,`,,,~,~,~,,,,,,,,~,~,~,,,`,,,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~ +,~,~,~,~,~,,,,~,~,~,~,~,~,~,,b,b,b,~,~,~,~,,,,~,~,~,~,~ +,~,~,~,~,~,~,,b,b,b,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,~,~,~ +,,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~ +,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~ +~,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,~,~,~,~,~,,b,b,b,b,~,~,~ +~,~,~,~,~,~,~,,b,b,b,~,~,~,~,,,,~,~,~,~,~,~,~,,b,b,b,~,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +,~,~,~,,,,`,,,,~,~,~,,,`,,,~,~,~,,,,`,,,,~,~,~ +~,~,~,~,~,,,,,,~,~,~,~,~,,,,~,~,~,~,~,,,,,,~,~,~,~,~ +~,~,~,~,~,~,~,,b,b,b,~,~,~,~,,,,~,~,~,~,~,~,~,,b,b,b,~,~,~,~ +~,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,~,~,~,~,~,,b,b,b,b,~,~,~ +,~,~,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~ +,,,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b,~,~,~,~,,b,b,b,b +,,,,~,~,~,,b,b,b,,~,~,~,~,,b,b,b,b,,~,~,~,,b,b,b +,,,,,,,,,,,,,~,~,~,,b,b,b +#build label(build) start(17; 17) hidden() + +,,,,,,,,,,,,,,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 diff --git a/data/blueprints/bedrooms/95-9-Hactar1_3_Branch_Tree.csv b/data/blueprints/bedrooms/95-9-Hactar1_3_Branch_Tree.csv index ec2a1ce1ec..78543b1e04 100644 --- a/data/blueprints/bedrooms/95-9-Hactar1_3_Branch_Tree.csv +++ b/data/blueprints/bedrooms/95-9-Hactar1_3_Branch_Tree.csv @@ -1,232 +1,228 @@ -"#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+,, , , , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,~,~,~, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,~,~,~, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,~,~,~, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# - , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +"#dig label(dig) start(36;73) 95 bedrooms (including 14 suites), 190 tombs" + +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,,d,,,d,,,d,,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,,d,,,d,,,d,,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,,,,,,,d,,,,,,,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,,d,d,d,d,,d,,d,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,,d,d,d,d,,d,,d,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,d,d,d,,,d,,,,,,,d,,,,,,,d,,,,,,,d,,,,,,,d,,,d,d,d +,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,d,d,d,,,d,,,,,,,d,,,,,,d,d,d,,,,,,d,,,,,,,d,,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,d,d,d,d,d,d,,d,d,d,,d,d,d,d,d,d,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,,,,,,d,d,d,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,d,,d,d,d,,d,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,d,d,d,d,d,d,d,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,d,,d,d,d,,d,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,d,,,,,,,d,,,d,d,d,,,d,,,,,,,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,,d,,,d,d,d,,,d,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,d,,,,,,d,d,d,,d,d,d,,d,d,d,,,,,,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,,,,,d,d,d,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d +,,,,,,,,,,,,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d +,,,,,,,,,,,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d +,,,,,,,,,,,,,d,,,,,,,d,d,d,,d,,d,d,d,,,,,,d,d,d,,,,,,d,d,d,,d,,d,d,d,,,,,,,d +,,,,,d,d,d,,d,d,d,,d,,d,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,d,,d,,d,d,d,,d,d,d +,,,,,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d +,,,,,d,d,d,,d,d,d,,d,,d,d,d,d,,d,d,d,,d,,,,,,,d,,,d,d,d,,,d,,,,,,,d,,d,d,d,,d,d,d,d,,d,,d,d,d,,d,d,d +,d,d,d,,,d,,,,,,,d,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,,d,,,,,,,d,,,d,d,d +,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,d,d,d,,,d,,,,,,,d,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,,d,,,,,,,d,,,d,d,d +,,,,,d,d,d,,d,d,d,,d,,d,d,d,d,,d,d,d,,d,,,,,,,d,,,d,d,d,,,d,,,,,,,d,,d,d,d,,d,d,d,d,,d,,d,d,d,,d,d,d +,,,,,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,d,d,d,d,d,d,d,,d,d,d +,,,,,d,d,d,,d,d,d,,d,,d,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d,,d,d,d,d,,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,d,,,,,,,d,d,d,,d,,d,d,d,,,,,,d,d,d,,,,,,d,d,d,,d,,d,d,d,,,,,,,d +,,,,,,,,,,,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d +,,,,,,,,,,,,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d +,,,,,,,,,,,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d,,d,d,d,,,d,,,d,,,d,,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,,,,,d,d,d,,,,,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,d,,,,,,d,d,d,d,d,d,d,d,d,d,d,,,,,,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,,,d,,,d,d,d,,,d,,,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,d,d,d,,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,d,,,,,,,d,d,,d,d,d,,d,d,,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,d,,d,d,d,,d,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,d,d,d,,d,d,d,,d,d,d,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,d,d,d,,d,d,d,,d,d,,d,d,d,,d,d,,d,d,d,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,d,d,d +,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,~,~,~,d,d,d,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,~,~,~,d,d,d,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,~,~,~,d,d,d,d,d,d,d,d,d,d,d,d +#meta label(rooms) +zone/zone +build/build +#zone label(zone) start(36;73) hidden() +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b(5x5) +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b(5x5),,,,,`,b(5x5) +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,b(5x5),,,,,`,b(5x5) +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5) +,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,,`,,,`,,,`,,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),b(5x6),,`,,,`,b(5x6),,`,,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5) +,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,,`,,`,`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,,`,,`,`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,`,,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,,,,,,,,,,,,,,,b(5x5),,,,b(5x5),,,,,`,b(6x5),,,,,,`,b(6x5),,,,,,`,b(5x5),,,,b(5x5) +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,`,,`,,`,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,,`,`,` +,,,,,,,,,,,,,,,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,`,,`,,`,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5) +,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,,`,,,,,,,`,,,,,,,`,,,,,,,`,,,,,,,`,,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),b(5x5),,`,,b(5x5),,,,,`,b(5x5),,,,,`,`,`,b(5x5),,,,,`,b(5x5),,,,b(5x5),,`,,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,`,`,`,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,`,`,`,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,b(5x5),,,,b(5x5),,`,,b(4x5),,,,`,`,`,b(4x5),,,b(5x5),,`,,b(5x5) +,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,`,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),`,,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,,,,,,,,,,,,,,,b(5x5),,,,,`,b(5x5),,,,b(5x4),,`,,,`,`,`,b(5x4),,`,,b(5x5),,,,,`,b(5x5) +,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,b(5x5),,`,,,`,`,`,b(5x5),,`,,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,b(5x5),,,,,`,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5),,,,,`,b(5x5) +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` +,,,,,,,,,,,b(5x5),,,,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5),,,,,`,`,`,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5),,,,b(5x5) +,,,,,,,,,,,,`,`,`,,`,`,T{pets=true}(1x1),,,`,,,`,,,`,,,T{pets=true}(1x1),`,`,,`,`,`,,`,`,T{pets=true}(1x1),,,`,,,`,,,`,,,T{pets=true}(1x1),`,`,,`,`,` +,,,,,,,,,,,,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,` +,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),b(5x6),,`,,,`,b(5x5),,`,,,T{pets=true}(1x1),`,`,,`,`,`,,`,`,T{pets=true}(1x1),b(5x5),,`,,,`,b(5x6),,`,,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,b(5x5),,,,b(5x5),,,,,`,b(6x5),,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x4),,,,,`,`,`,b(5x4),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(6x5),,,,,,`,b(5x5),,,,b(5x5) +,,,,,`,`,`,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,`,`,` +,,,,,`,`,`,,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,`,,`,`,`,,`,`,`,`,`,`,`,`,`,`,,`,`,` +b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,`,,`,`,`,,`,,,,,,,`,,,`,`,`,,,`,,,,,,,`,,`,`,`,,`,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5) +,`,`,T{pets=true}(1x1),,,`,,,,,,,`,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,`,,,,,,,`,,,T{pets=true}(1x1),`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,T{pets=true}(1x1),b(5x5),,`,,b(5x5),,,,,`,b(6x5),,,,,b(5x6),,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,b(5x6),,,,b(6x5),,,,,,`,b(5x5),,,,b(5x5),,`,,,T{pets=true}(1x1),`,` +,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,`,,`,`,`,,`,b(5x5),,,,b(5x4),,`,,,`,`,`,b(5x4),,`,,b(5x5),,,,,`,,`,`,`,,`,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,`,`,`,,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,`,,`,`,`,,`,`,`,`,`,`,`,`,`,`,,`,`,` +,,,,,`,`,`,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,`,`,` +,,,,,,,,,,,b(5x5),,`,,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5),,,,,`,`,`,b(5x5),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x5),,,,b(5x5),,` +,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,,`,,,`,,,`,,,T{pets=true}(1x1),`,`,,`,`,`,,`,`,T{pets=true}(1x1),,,`,,,`,,,`,,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,` +,,,,,,,,,,,,`,`,`,,`,`,T{pets=true}(1x1),b(5x5),,`,,,`,b(5x5),,`,,,T{pets=true}(1x1),`,`,,`,`,`,,`,`,T{pets=true}(1x1),b(5x5),,`,,,`,b(5x5),,`,,,T{pets=true}(1x1),`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),b(5x6),,,,,`,`,`,b(5x6),,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,`,`,`,,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` +,,,,,,,,,,,,,,,,,,,b(5x5),,,,,`,b(5x5),,,,,`,`,`,`,`,`,`,`,`,`,`,b(5x5),,,,,`,b(5x5) +,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,,,`,,,`,`,`,,,`,,,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,T{pets=true}(1x1),,`,,T{pets=true}(1x1),`,` +,,,,,,,,,,,,,,,,,,,,,,b(5x5),,`,,b(5x5),,,,,`,`,,`,`,`,,`,`,b(5x5),,,,b(5x5),,` +,,,,,,,,,,,,,,,,,,,,,,,T{pets=true}(1x1),`,T{pets=true}(1x1),,`,`,T{pets=true}(1x1),,`,`,,`,`,`,,`,`,,T{pets=true}(1x1),`,`,,T{pets=true}(1x1),`,T{pets=true}(1x1) +,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,`,`,`,,`,`,`,,`,`,`,`,`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,T{pets=true}(1x1),,`,`,,`,`,`,,`,`,,T{pets=true}(1x1),`,`,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,` +#build label(build) start(36;73) hidden() + +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,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 +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,`,`,`,`,`,`,`,`,`,`,`,` diff --git a/data/blueprints/dreamfort.csv b/data/blueprints/dreamfort.csv index c5566920bc..c1266edb6e 100644 --- a/data/blueprints/dreamfort.csv +++ b/data/blueprints/dreamfort.csv @@ -1,152 +1,159 @@ #notes label(help) run me for the dreamfort walkthrough "Welcome to Dreamfort! These blueprints will help you build a functional, secure, fully self-sustaining fortress that you can use as-is or extend to build the fortress of your dreams!" "" -"It can be difficult to apply a set of blueprints that you did not write yourself. This walkthrough will guide you through the high-level steps of building Dreamfort. Run ""quickfort run library/dreamfort.csv -n /checklist"" (or, if you're looking at the online version, switch to the ""checklist"" sheet) for a compact list of the commands you'll be running. Each level also has its own mini-walkthrough with more details." +"It can be difficult to apply a set of blueprints that you did not write yourself. This walkthrough will guide you through the high-level steps of building Dreamfort. Run ""gui/quickfort dreamfort /checklist"" (or, if you're looking at the online version, switch to the ""checklist"" sheet) for a compact list of the blueprints you'll be applying. Each level also has its own mini-walkthrough with more details." "" "The final fort will have a walled-in area on the surface for livestock, trading, aboveground farming, and military training. One z-level down is the farming level, with related workshops and vents up to the surface for miasma prevention. The farming level also has a miniature dining hall and dormitory for use until you get the services and housing levels set up." "" "Beyond those two, the other layers can be built in any order, at any z-level, according to your preference and the layout peculiarities of your embark site:" "- The industry level has a compact, but complete set of workshops and stockpiles (minus what is already provided on the farming level)." -"- The services level has dining, hospital, marksman barracks, and justice services, plus a well system. It is 4 z-levels deep." -"- The guildhall level has large, empty rooms for building libraries, temples, and guildhalls." -- The suites level has fancy rooms for your nobles. +"- The services level has dining, hospital, marksman barracks, and justice services. It has a well system and is 4 z-levels deep." +"- The guildhall level has large rooms for building libraries, temples, and guildhalls, with optional furniture layouts." +- The suites level has fancy rooms for your nobles with the furniture that they require. - The apartments levels have small but well-furnished bedrooms for your other dwarves. +- The crypt level houses your dead. "" -"Run each level's ""help"" blueprint (e.g. ""quickfort run library/dreamfort.csv -n /surface_help"") for more details." +"Run each level's ""help"" blueprint (e.g. ""gui/quickfort dreamfort /surface_help"") for more details." "" -"Dreamfort has a central stairs-based design. For all Dreamfort levels, place the cursor on the center (undug) tile of the 3x3 stairs area when you apply the blueprints for that level. The first surface blueprint will designate a column of stairs that you can use as a guide. If you need to extend the stairs down further to lower levels, run ""quickfort run library/dreamfort.csv -n /central_stairs --repeat down,10"" with the cursor on the z-level below the lowest current stairs." +"Dreamfort has a central stairs-based design. For all Dreamfort levels, place the cursor on the center (undug) tile of the 3x3 stairs area when you apply the blueprints for that level. The first surface blueprint will designate a column of stairs that you can use as a guide. If you need to extend the stairs down further to lower levels, run ""gui/quickfort dreamfort /central_stairs"" and set the repeat option to go down however many levels you need (each repetition is 2 levels). Apply it with the cursor on the z-level below the lowest current stairs." "" -"Dreamfort blueprints take care of everything to get the fort up and running. You don't need to clear any extra trees or create any extra buildings or stockpiles (though of course you are free to do so). Blueprints that do require manual steps, like 'assign minecart to hauling route', will leave a message telling you so when you run them. Note that blueprints will designate buildings to build even if you don't have the materials needed to build them. You can use ""quickfort orders"" to automatically create the manager orders for all the needed items. Make sure your manager is available to validate all the incoming work orders!" +"Dreamfort blueprints take care of everything to get the fort up and running. You don't need to clear any extra trees or create any extra buildings or stockpiles (though of course you are free to do so). Blueprints that do require manual steps, like 'assign minecart to hauling route', will leave a message telling you so when you run them. Note that blueprints will designate buildings to build even if you don't have the materials needed to build them. You can use the ""o"" hotkey to automatically create the manager orders for all the needed items when you have a blueprint loaded in gui/quickfort. Make sure your manager is available to validate all the incoming work orders!" "" "There are some tasks common to all forts that Dreamfort doesn't specifically handle for you. For example, Dreamfort sets up a barracks, but managing squads is up to you. Here are some other common tasks that may need to be done manually (or with some other tool):" -- Exploratory mining for specific resources like iron -- Filling the well system with water -- Bringing magma up to the industry level to power magma forges/furnaces +- Exploratory mining for specific resources like iron (see gui/design for help with this) +"- Filling the well system with water (if you have a light aquifer, see library/aquifer_tap.csv for help with this)" +- Bringing magma up to the industry level to power magma forges/furnaces (see library/pump_stack.csv for help with this) - Manufacturing trade goods -- Assigning skilled labors to migrants (although the example professions included with DFHack will help with this) "- Custom stockpile setups to assist with, for example, encrusting only high-quality items" "" -"Dreamfort works best at an embark site that is flat and has at least one soil layer. New players should avoid embarks with aquifers if they are not prepared to deal with them. Bring picks for mining, an axe for woodcutting, and an anvil for a forge. Bring a few blocks to speed up initial workshop construction as well. That's all you really need, but see the example embark profile in the online spreadsheets for a more complete setup." +"Dreamfort works best at an embark site that is relatively flat and has at least one soil layer. New players should avoid embarks with aquifers if they are not prepared to deal with them. Bring picks for mining, an axe for woodcutting, and an anvil for a forge. Bring a few blocks to speed up initial workshop construction as well. That's all you really need, but see the example embark profile in the online spreadsheets for a more complete setup." "" -"Other DFHack commands also work very well with Dreamfort, such as autofarm, autonestbox, prioritize, seedwatch, tailor, and, of course, buildingplan. An init file that gets everything configured for you is distributed with DFHack as hack/examples/init/onMapLoad_dreamfort.init." -Put that file in your dfhack-config/init/ directory -- the same directory that has dfhack.init. +"Other DFHack tools also work very well with Dreamfort, such as autofarm. See the /setup_help blueprint for a suggested list to turn on in the DFHack gui/control-panel." "" -"Also check out https://docs.dfhack.org/en/stable/docs/Plugins.html#professions for more information on the default labor professions that are distributed with DFHack, including suggestions on how many dwarves of each profession you are likely to need at each stage of fort maturity." +"Once you have your starting surface workshops up and running, you might want to configure buildingplan to only use blocks for constructions so it won't use your precious wood, boulders, and bars to build floors and walls. If you bring at least 7 blocks with you on embark, you can set this to be your default in the Automation -> Autostart tab of gui/control-panel." "" -"Once you have your starting surface workshops up and running, you might want to configure buildingplan (in its global settings, accessible from any building placement screen, e.g.: b-a-G) to only use blocks for constructions so it won't use your precious wood, boulders, and bars to build floors and walls. If you bring at least 7 blocks with you on embark, you can even set this in your dfhack-config/init/onMapLoad.init file like this:" -on-new-fortress buildingplan set boulders false; buildingplan set logs false +"Directly after embark, run ""gui/quickfort dreamfort /setup_help"" to get some advice on initial settings, and get started building your fort with ""gui/quickfort dreamfort /surface1"" on the surface (see /surface_help for how to select a good spot). Read the walkthroughs for each level to understand what's going on and follow the checklist to keep track of where you are in the building process. Good luck, and have fun building an awesome Dreamfort-based fort!" "" -"Directly after embark, run ""quickfort run library/dreamfort.csv -n /setup"" with your cursor on your wagon to set settings, and get started building your fort with ""quickfort run library/dreamfort.csv -n /surface1"" on the surface (see /surface_help for how to select a good spot). Read the walkthroughs for each level to understand what's going on and follow the checklist to keep track of where you are in the building process. Good luck, and have fun building an awesome Dreamfort-based fort!" -"" -"The dreamfort.csv file distributed with DFHack is generated from online spreadsheet files. If you want to look at how these blueprints are put together, it is easier to look at the online spreadsheets than the giant .csv. You can view them at: https://drive.google.com/drive/folders/1iS90EEVqUkxTeZiiukVj1pLloZqabKuP" +"The dreamfort.csv file distributed with DFHack is generated from online spreadsheet files. If you want to look at how these blueprints are put together, it is easier to look at the online spreadsheets than the giant .csv. You can view them at: https://drive.google.com/drive/folders/1dsmvnzbOKsyFS3DCj0F8ibSnMhVHEjdV" You are welcome to copy the Dreamfort spreadsheets and make your own modifications! "" "If you like, you can download a fully built Dreamfort-based fort from https://dffd.bay12games.com/file.php?id=15434 and explore it interactively." -"# The dreamfort.csv distributed with DFHack is generated with the following command: +"# The dreamfort.csv distributed with DFHack is generated from the online spreadsheets with the following command: for fname in dreamfort*.xlsx; do xlsx2csv -a -p '' ""$fname""; done | sed 's/,*$//'" #notes label(checklist) command checklist -"Here is the recommended order for Dreamfort commands. You can copy/paste the command lines directly into the DFHack terminal, or, if you prefer, you can run the blueprints in the UI with gui/quickfort. See the walkthroughs (the ""help"" blueprints) for context and details. Also remember to read the messages the blueprints print out after you run them so you don't miss any important manual steps." +"Here is the recommended order for Dreamfort commands. Each line is a blueprint that you run with gui/quickfort (default keybinding: Ctrl-Shift-Q), except where we use other tools as noted. If you set ""dreamfort"" as the filter when you open gui/quickfort, you'll conveniently only see Dreamfort blueprints to choose from. See the walkthroughs (the ""help"" blueprints) for context and details. You can also copy text from this spreadsheet when viewing it online and paste it into gui/launcher with Ctrl-V." +"If the checklist indicates that you should generate orders, that means to hit the ""o"" hotkey when the blueprint is loaded in gui/quickfort. You'll get a popup saying which orders were generated. Also remember to read the messages the blueprints display after you run them so you don't miss any important manual steps!" "" -- Preparation (before you embark!) -- -Copy hack/examples/init/onMapLoad_dreamfort.init to your dfhack-config/init directory inside your DF installation -Optionally copy the premade Dreamfort embark profile from the online spreadsheets to the data/init/embark_profiles.txt file +Optionally copy the premade Dreamfort embark profile from the online spreadsheets to the prefs/embark_profiles.txt file. +Run gui/control-panel and enable settings on the Autostart tabs. See the /setup_help notes for details. "" -- Set settings and preload initial orders -- -quickfort run library/dreamfort.csv -n /setup,# Run before making any manual adjustments to settings! Run the /setup_help blueprint for details on what this blueprint does. -"quickfort orders library/dreamfort.csv -n ""/surface2, /farming2, /surface3, /farming3, /industry2, /surface4""","# Queue up orders required to get the fort minimally functional and secure. You can remove the order for the anvil (you brought one with you, right?)." +DFHack command,Blueprint,Generate orders,Notes +gui/quickfort,/setup_help,,For advice on how to do initial setup for success. +"quickfort orders library/dreamfort.csv -n ""/surface2, /farming2, /surface3, /industry2, /surface4, /industry3""",,,"Queue up orders required to get the fort minimally functional and secure. You can remove the order for the anvil (you brought one with you, right?)." "" -- Find a good starting spot on the surface -- -gui/quickfort library/dreamfort.csv -n /perimeter,# Run at embark. Don't actually apply the blueprint. Just use the preview shadow to find a good spot on the surface. +DFHack command,Blueprint,Generate orders,Notes +gui/quickfort,/perimeter,,Run at embark. Don't actually apply the blueprint -- it's way too early to dedicate resources to building walls. Just use the preview shadow to find a good spot on the surface. See the surface level help for how to find a good spot. "" -- Dig -- -quickfort run library/dreamfort.csv -n /surface1,# Run when you find your center tile. -quickfort run library/dreamfort.csv -n /dig_all,"# Run when you find a suitable rock layer for the industry level. It designates digging for industry, services, guildhall, suites, and apartments all in one go. This list does not include the farming level, which we'll dig in the uppermost soil layer a bit later. Note that it is more efficient for your miners if you designate your digging before they dig the central stairs past that level since the stairs are dug at a low priority. This keeps your miners focused on one level at a time. If you need to designate your levels individually due to caverns interrupting the sequence or just because it is your preference, run the level-specific dig blueprints (i.e. /industry1, /services1, /guildhall1, /suites1, and 5 levels of /apartments1) instead of running /dig_all." +DFHack command,Blueprint,Generate orders,Notes +gui/quickfort,/surface1,,Clear some trees and dig central staircase. Run when you find your center tile. Deconstruct your wagon if it is in the way. +gui/quickfort,/dig_all,,"Run when you find a suitable (non-aquifer) rock layer for the industry level. It designates digging for industry, services, guildhall, suites, apartments, and the crypt all in one go. This list does not include the farming level, which we'll designate in the uppermost soil layer once the surface miasma channels are dug. Note that it is more efficient for your miners if you designate the digging for a level before they dig the central stairs past that level. The stairs down on each level are designated at priority 5 instead of the regular priority 4. This lets the miners focus on one z-level at a time and not run up and down the stairs attempting to dig out two blueprints simultaneously. If you need to designate your levels individually due to caverns interrupting the sequence or just because it is your preference, run the level-specific dig blueprints (i.e. /industry1, /services1, /guildhall1, /suites1, 3 levels of /apartments1, and /crypt1) instead of running /dig_all." "" -- Core fort (should finish at about the third migration wave) -- -quickfort run library/dreamfort.csv -n /surface2,"# Run after initial trees are cleared. If you are deconstructing the wagon now, wait until after the wagon is deconstructed so the jobs that depend on wagon contents (e.g. blocks) don't get canceled later." -quickfort run library/dreamfort.csv -n /farming1,# Run when channels are dug and the additional designated trees are cleared. -quickfort run library/dreamfort.csv -n /farming2,# Run when the farming level has been dug out. -quickfort run library/dreamfort.csv -n /surface3,# Run right after /farming2. -quickfort run library/dreamfort.csv -n /farming3,# Run when furniture has been placed. -quickfort run library/dreamfort.csv -n /industry2,# Run when the industry level has been dug out. -prioritize ConstructBuilding,# To get those workshops up and running ASAP. You may have to run this several times as the materials for the building construction jobs become ready. -quickfort run library/dreamfort.csv -n /surface4,"# Run after the walls and floors are built on the surface. Even if /surface3 is finished before you run /industry2, though, wait until after /industry2 to run this blueprint so that surface walls, floors, and roofing don't prevent your workshops from being built (due to lack of blocks)." -"quickfort orders,run library/dreamfort.csv -n /services2",# Run when the services levels have been dug out. Feel free to remove the orders for the ropes if you already brought them with you. -orders import library/basic,"# Run after the first migration wave, so you have dorfs to do all the basic tasks. Note that this is the ""orders"" plugin, not the ""quickfort orders"" command." -"quickfort orders,run library/dreamfort.csv -n /surface5","# Run when all marked trees on the surface are chopped down and walls and floors have been constructed, including the roof section over the future barracks." -prioritize ConstructBuilding,# Run when you see the bridges ready to be built so the busy masons come and build them. -"quickfort orders,run library/dreamfort.csv -n /surface6",# Run when at least the beehives and weapon rack are constructed and you have linked all levers to their respective bridges. -"quickfort orders,run library/dreamfort.csv -n /surface7",# Run after the surface walls are completed and any marked trees are chopped down. +DFHack command,Blueprint,Generate orders,Notes +gui/quickfort,/surface2,,"Build starter workshops/stockpiles and dig miasma vents. Run after initial trees are cleared. If you are deconstructing the wagon, do it before running this blueprint so the jobs that depend on scattered wagon contents (e.g. blocks) don't get canceled later." +gui/quickfort,/farming1,,Dig out the farming level. Run when channels on the surface are dug and the additional designated trees are cleared. +gui/quickfort,/farming2,,Build farming level. Run as soon as the farming level has been completely dug out. +gui/quickfort,/surface3,,Cover the miasma vents and start protecting the central staircase from early invasions. Run when /farming2 is mostly complete. +gui/quickfort,/industry2,,"Build industry level. Run as soon as the industry level has been completely dug out. As industry workshops are built, you can remove the temporary workshops and stockpiles on the surface. Be sure that there are no items attached to jobs left in the surface workshops before deconstructing them, otherwise you'll get canceled jobs!" +gui/quickfort,/surface4,,Finish protecting the staircase and lay flooring for future buildings. Run after the walls and floors around the staircase are built and you have moved production from the surface to the industry level. +gui/quickfort,/industry3,,Build the rest of the industry level. Run once /surface4 is mostly complete. +orders import library/basic,,,"Run after the first migration wave, so you have dwarves to do all the basic tasks. Note that this is the ""orders"" plugin, not the ""quickfort orders"" command." +gui/quickfort,/services2,Yes,"Build simple hospital and dining room, including a well. Run once the 4 services levels have been dug out and you have built up some stone in your industry stone stockpiles. Feel free to remove the orders for the ropes if you brought some with you. If you are filling your wells from an aquifer or stream, now is also a good time to start digging the plumbing." +gui/quickfort,/surface5,Yes,"Build surface buildings, drawbridges, and furniture. Run when all marked trees on the surface are chopped down and previously-designated walls and floors have been constructed. Be sure to check that the little ""wing"" of roof section over the future barracks is constructed so we can place the barracks beds." +gui/quickfort,/surface6,Yes,Build security perimeter. Run once you have linked all levers to their respective bridges. +gui/quickfort,/surface7,Yes,Build roof. Run after the surface walls are completed and any marked trees are chopped down. Be sure to give your haulers some time to fill the stonecutter's stockpile with some stone first so your stonecutters won't be hauling it up from the depths by hand. "" -- Plumbing -- -"This is a good time to fill your well cisterns, either with a bucket brigade or by routing water from a freshwater stream or an aquifer (see the library/aquifer_tap.csv blueprint for help with this)." -"Also consider bringing magma up to your services level so you can replace the forge and furnaces on your industry level with more powerful magma versions. This is especially important if your embark has insufficient trees to convert into charcoal. Keep in mind that moving magma is a tricky process and can take a long time. Don't forget to continue making progress through the checklist! If you choose to use magma, I suggest getting it in place before importing the military and smelting automation orders since they make heavy use of furnaces and forges." -"" --- Mature fort (third migration wave onward) -- -orders import library/furnace,# Automated production of basic furnace-related items. Don't forget to create a sand collection zone (or remove the sand- and glass-related orders if you have no sand). -"quickfort orders,run library/dreamfort.csv -n /suites2",# Run when the suites level has been dug out. -"quickfort orders,run library/dreamfort.csv -n /surface8","# Run if/when you need longer trap corridors on the surface for larger sieges, anytime after you run /surface7." -"quickfort orders,run library/dreamfort.csv -n /apartments2",# Run when the first apartment level has been dug out. -"quickfort orders,run library/dreamfort.csv -n /services3","# Run after the dining table and chair, weapon rack, and archery targets have been constructed. Also wait until after you complete /surface7, though, because surface defenses are more important than a grand dining hall." -"quickfort orders,run library/dreamfort.csv -n /guildhall2",# Run when the guildhall level has been dug out. -"quickfort orders,run library/dreamfort.csv -n ""/guildhall3, /guildhall4""",# Optionally run after /guildhall2 to build default furnishings and declare a library and temple. -"quickfort orders,run library/dreamfort.csv -n /apartments3",# Run when all beds have been constructed on the first apartments level. -"quickfort orders,run library/dreamfort.csv -n /farming4",# Run once you have a cache of potash. -orders import library/military,# Automated production of military equipment. Turn on automelt in the meltables piles on the industry level to automatically upgrade all metal military equipment to masterwork quality. These orders are optional if you are not using a military. -orders import library/smelting,# Automated production of all types of metal bars. -"quickfort orders,run library/dreamfort.csv -n /services4","# Run when you need a jail, anytime after the restraints are placed from /services3." -orders import library/rockstock,# Maintains a small stock of all types of rock furniture. -orders import library/glassstock,# Maintains a small stock of all types of glass furniture and parts (only import if you have sand). -"" --- Repeat for each remaining apartments level as needed -- -"quickfort orders,run library/dreamfort.csv -n /apartments2",# Run when the apartment level has been dug out. -"quickfort orders,run library/dreamfort.csv -n /apartments3",# Run when all beds have been constructed. -burial -pets,# Run once the coffins are placed to set them to allow for burial. - -See this checklist online at https://docs.google.com/spreadsheets/d/13PVZ2h3Mm3x_G1OXQvwKd7oIR2lK4A1Ahf6Om1kFigw/edit#gid=1459509569 -#notes label(setup_help) -Makes common initial adjustments to in-game settings. -"" -"The /setup blueprint is intended to be run once at the start of the game, before anything else is changed. Players are welcome to make any further customizations after this blueprint is run. Please be sure to run the /setup blueprint before making any other changes, though, so your settings are not overwritten!" -"" -The following settings are changed: -"- The manager, chief medical dwarf, broker, and bookkeeper noble roles are assigned to the first suggested dwarf. This is likely to be the expedition leader, but the game could suggest others if they have relevant skills. Bookkeeping is set to the highest precision." -"" -- Standing orders are set to: - - only farmers harvest - - gather refuse from outside (incl. vermin) - - no autoloom (so the hospital always has thread -- we'll be managing cloth production with automated orders) -"" -"- A burrow named ""Inside"" is created, but it's up to the player to define the area as the fort expands. It is intended for use in getting your civilians to safety during sieges. A military alert named ""Siege"" is also created and associated with the ""Inside"" burrow." -"" -- Military uniforms get the following modifications: - - all default uniforms set to replace clothing -" - in the ""Metal armor"" uniform, the ""metal armor"" item is removed and replaced by ""metal breastplate"" and ""metal mail shirt""" -" - in the ""Metal armor"" uniform, the ""metal legwear"" item is removed and replaced by ""metal greaves""" +"If you haven't done it already, this is a good time to fill your well cisterns, either with a bucket brigade or by routing water from a freshwater stream or an aquifer (see the aquifer_tap library blueprint for help with this)." +Also consider bringing magma up to your services level so you can replace the forge and furnaces on your industry level with more powerful magma versions. This is especially important if your embark has insufficient trees to convert into charcoal. Keep in mind that moving magma is a tricky process and can take a long time. Don't forget to continue making progress on the rest of the fort! +"" +-- Mature fort (fourth migration wave onward) -- +"The order of steps in this section is not important. Feel free to reorder as per the needs of your fort. Once you have about 50 dwarves, you can queue up as much as you want and your haulers will be able to keep your stonecutters supplied. You can even build another two Stonecutter's workshops to speed things along. You might need to dig a quarry on an unused level to get enough stone, though." +DFHack command,Blueprint,Generate orders,Notes +orders import library/furnace,,,Automated production of basic furnace-related items. Don't forget to create a sand collection zone (or remove the sand- and glass-related orders if you have no sand). +gui/quickfort,/guildhall2_default,Yes,"Build library and non-denominational temple, and prepare space for future temples and guildhalls. Run when the guildhall level has been dug out." +gui/quickfort,/services3,Yes,"Extend the dining room and hospital, and start the jail. Run when your population grows to about 20." +gui/quickfort,/apartments2,Yes,Build and zone bedrooms. Run when the first apartment level has been dug out and you have outgrown your starter dormintory. +gui/quickfort,/suites2_default,Yes,Build rooms that you can zone for your nobles. Run when the suites level has been dug out and you are approaching a population of 50. +gui/quickfort,/crypt2,Yes,Build a small group of tombs. Run when the crypt level has been dug out and you have outgrown your starter tomb on the farming level. +gui/quickfort,/surface8,Yes,"Build extended trap corridors. If you have a strong military, you might not need this." +gui/quickfort,/farming3,Yes,Add in all the doors we couldn't afford to build earlier. +orders import library/military,,,Automated production of military equipment. Turn on automelt in the meltables piles on the industry level to automatically upgrade all metal military equipment to masterwork quality. These orders are optional if you are not using a military. +orders import library/smelting,,,Automated production of all types of metal bars. +gui/quickfort,/services4,Yes,Build full dining room and jail. +orders import library/rockstock,,,Maintains a small stock of all types of rock furniture. Useful for filling out future guildhalls. +orders import library/glassstock,,,Maintains a small stock of all types of glass furniture and parts (only import if you have sand). +gui/quickfort,/apartments2,Yes,Repeat as needed as your fort grows. +gui/quickfort,/crypt3,Yes,Run when the crypt is starting to run out of free tombs. "" -"All default uniforms should also have a leather cloak added, but the position of the cloak in the equipment list changes for every embark. We suggest manually adding a leather cloak to your uniforms after running the /setup blueprint." -"" -- Hotkeys are created for the 8 most interesting levels. Only the names are set -- it's up to the player to adjust them to actual locations in the (H) menu since the blueprint can't know where the levels will eventually be built. Feel free to replace any hotkeys with locations that *you* think are interesting : ) -"" -These are all set for your convenience. Nothing in Dreamfort depends on these settings staying as they are. Feel free to change any setting to your personal preference. -"" -#aliases -startnobles: n{Down 4}{togglesequence 8}{Up}s{Up}&^^ -startorders: ohrov^Wl^^ -startburrows: wa&nInside&^^ -metalarmorsetup: A{Right 2}{Down 2}&{Down}&{Left}&M{Right}{Down}&{Left}{Down}{Right}{Down}&{Left}{Down 2}L{Right}{Down 2}&{Left}{Down 3}&M{Right}{Down}&{Left 2} -startmilitary: mnr{Down}r{metalarmorsetup}{Down}racNSiege&{Right}&^ -sethotkey: {fkey}n{name}& -starthotkeys: H{sethotkey fkey={F2} name=Farming}{sethotkey fkey={F3} name=Industry}{sethotkey fkey={F4} name=Services}{sethotkey fkey={F5} name=Guildhall}{sethotkey fkey={F6} name=Quarry}{sethotkey fkey={F7} name=Cavern}{sethotkey fkey={F8} name=Magma}^ -"" -"#config label(setup) message(Please set the zoom targets of the hotkeys (the 'H' menu) according to where you actually end up digging the levels. -As you build your fort, expand the ""Inside"" burrow to include new civilian-safe areas. -Optionally, add a leather cloak to your military uniforms to enhance their protection rating. -Nothing in Dreamfort depends on these settings staying as they are. Feel free to change any setting to your personal preference.) assign nobles, set standing orders, create burrows, make adjustments to military uniforms, and set hotkey names" -{startnobles}{startorders}{startburrows}{startmilitary}{starthotkeys} -"#meta label(dig_all) start(central stairs on industry level) dig industry, services, guildhall, suites, and apartments levels. does not include farming." -# Note that this blueprint will only work for the unified dreamfort.csv. It won't work for the individual .xlsx files (since #meta blueprints can't cross file boundaries). +See this checklist online at https://docs.google.com/spreadsheets/d/13PVZ2h3Mm3x_G1OXQvwKd7oIR2lK4A1Ahf6Om1kFigw/edit#gid=1459509569 +#notes label(setup_help) pre- and post-embark tasks +These are Dreamfort's suggestions for adjustments to settings and initial setup. +"" +You can save some time by setting up your settings in gui/control-panel before you embark. +"Beyond the bugfix tools that are enabled by default, we recommend enabling the following DFHack tools in gui/control-panel (but they are not required if you prefer to do these things manually):" +"" +"On the gui/control-panel ""Autostart"" tabs, enable:" +"""Automation"":" +- autobutcher +- autobutcher target 10 10 14 2 BIRD_GOOSE +- autochop +- autocheese +- autofarm +- autofarm threshold 150 grass_tail_pig +- autofish +- automilk +- autonestbox +- autoshear +- autoslab +- ban-cooking all +- buildingplan set boulders false +- buildingplan set logs false +- cleanowned +- logistics enable autoretrain +- nestboxes +- orders-sort +- prioritize +- seedwatch +- suspendmanager +- tailor +"""Gameplay"" subtab:" +- combine +- dwarfvet +- immortal-cravings +- timestream +- work-now +"Note that if you've already started your fort and have missed the ""new fort"" trigger, you can enable these tools on the ""Enabled"" tabs instead. You can run the one-time commands (like ban-cooking all) manually from gui/launcher." +"" +"Now, after you've arrived at your embark site, open the nobles screen and:" +"- Assign dwarves to at least manager, chief medical dwarf, broker, and bookkeeper noble roles (they can all be the same dwarf)" +"" +On the work details screen (Labor -> Work details) + - Specialize your miners (click the hammer-lock button so it turns red) and make your miners also engravers (they'll need something to do once the mining is done) + - Deselect fishing from all dwarves -- you have enough food to get started and you'll need their time for hauling +"" +In standing orders (Labor -> Standing orders): +" - Change ""Automatically weave all thread"" to ""No automatic weaving"" so the hospital always has thread -- we'll be managing cloth production with automated orders" +"- On the ""Other"" tab, change ""Everybody harvests"" to ""Only farmers harvest"". This will prevent unilts that don't have the Planting labor enabled from harvesting plants, allowing planting skill gains to be concentrated into your designated planters and improving your overall crop yield." +"" +"Once you have your standing orders set the way you like, you can export them and instruct DFHack to autoload your saved settings on new embarks. The controls for getting this set up are available by default in a panel at the bottom of the Standing orders -> Automated workshops tab." +"#meta label(dig_all) start(central stairs on industry level) message(You can repeat the /central_stairs blueprint down more levels if you need more stairs.) dig industry, services, guildhall, suites, apartments, and crypt levels. does not include farming." +# Note that this blueprint will only work for the unified dreamfort.csv. It won't work if you have downloaded the individual .xlsx files since #meta blueprints can't cross file boundaries. "" /industry1 #> @@ -156,224 +163,217 @@ Nothing in Dreamfort depends on these settings staying as they are. Feel free to #> /suites1 #> -/apartments1 repeat(down 5) +/apartments1 repeat(down 3) +#>3 +/crypt1 #ignore -"Here are the minimal labors needed for essential tasks in getting Dreamfort up and running, along with suggestions for which dwarves to assign them to. You can enable additional labors as you wish. Skills with an asterisk (*) are especially worth putting points into on the embark preparation screen." +"Here are the most important skills for getting Dreamfort up and running, along with suggestions for how to distribute them." "" -Manager / Bookkeeper / Broker,Miner,Miner,Mason,Mason,Outdoorsdwarf,Farmer -Mechanic (*),Miner (*),Miner (*),Mason (*),Mason (*),Carpenter (*),Grower (*) -Stonecrafter,,,,,Wood Cutter (*) -Wood Cutter,,,,,Bee Keeper -Architect -Misc. labors needed for constructing workshops +Hauler / Manager / Bookkeeper / Broker,Miner,Miner,Stoneworker,Craftsdwarf,Outdoorsdwarf,Farmer +Noble role skills,Miner,Miner,Stonecutter,Stonecrafting,Carpenter,Planter +,,,Stone Carver,Mechanic,Wood Cutter,Stonecutter "" -"The most time-consuming tasks in early Dreamfort are: mining, chopping down trees, and making blocks. Starting with at least two miners, two woodcutters (assuming your embark has trees), and two masons helps in keeping the fort from stalling." +"The most time-consuming tasks in early Dreamfort are: mining, chopping down trees, and making blocks. Starting with at least two miners, two woodcutters (assuming your embark has trees), and two stonecutters helps keep the fort from stalling." "" We suggest bringing at least: 2 picks,for the two miners -2 battleaxes,for the two woodcutters +2 battleaxes,for one woodcutters and either a second woodcutter or an emergency weapon 1 anvil,for the forge food and seeds,as per usual -4 ropes,"for the hospital well and traction benches. you could build the ropes out of raw materials, but dwarves are usually too busy to do textile work at the start of the game." -7 blocks,for starting workshops and the temporary trade depot. necessary if you have buildingplan configured for blocks only. -many boulders,for quickly turning into more blocks. blocks are the limiting factor in the early stages. +3 ropes,"for the hospital well and traction benches. you could make the ropes out of raw materials, but dwarves are usually too busy to do textile work at the start of the game." +20 blocks,"for starting workshops, the temporary trade depot, and a few spares in case you need to shore up a light aquifer in a soil layer. necessary if you have buildingplan configured for blocks only." +many boulders,for quickly turning into more blocks while your miners are digging in dirt or dealing with aquifers. blocks are the limiting factor in the early stages. dogs and cats,for protection and vermin control -geese,"for bones and leather. bring at least 1 male and 2 females for the 2 early nestboxes. autobutcher settings in the included onMapLoad_dreamfort.init file are optimized for raising geese. if you prefer another bird, be sure to adjust the autobutcher settings." +geese,for bones and leather. bring at least 1 male and 2 females for the 2 early nestboxes. "" Also bring logs for beds if embarking in an area without many trees. "" -See ldog's Dreamfort embark profile for a more advanced (and more thoroughly explained!) approach: +See ldog's Dreamfort embark profile for a more advanced approach: https://drive.google.com/file/d/1Et42JTzeYK23iI5wrPMsFJ7lUXwVBQob/view?usp=sharing -"#ignore Add these lines to the bottom of your ""data/init/embark_profiles.txt"" file to make the ""Dreamfort"" profile available in-game. Also see ldog's dreamfort embark profile for a more advanced, dwarfy approach." +"#ignore Add these lines to the bottom of your ""prefs/embark_profiles.txt"" file to make the ""Dreamfort"" profile available in-game. Also see ldog's dreamfort embark profile for a more advanced, dwarfy approach." +[PROFILE] [TITLE:Dreamfort] -[SKILL:1:STONECRAFT:1] -[SKILL:1:MECHANICS:5] [SKILL:1:JUDGING_INTENT:1] -[SKILL:1:APPRAISAL:1] +[SKILL:1:APPRAISAL:2] [SKILL:1:ORGANIZATION:1] [SKILL:1:RECORD_KEEPING:1] +[SKILL:1:MILITARY_TACTICS:5] [SKILL:2:MINING:5] -[SKILL:2:DETAILSTONE:2] +[SKILL:2:ENGRAVE_STONE:4] [SKILL:2:SWIMMING:1] [SKILL:3:MINING:5] -[SKILL:3:DETAILSTONE:2] +[SKILL:3:ENGRAVE_STONE:4] [SKILL:3:SWIMMING:1] -[SKILL:4:MASONRY:5] -[SKILL:5:MASONRY:5] +[SKILL:4:CUT_STONE:5] +[SKILL:4:CARVE_STONE:5] +[SKILL:5:STONECRAFT:5] +[SKILL:5:MECHANICS:5] [SKILL:6:WOODCUTTING:5] [SKILL:6:CARPENTRY:5] -[SKILL:7:PLANT:3] -[ITEM:2:WEAPON:ITEM_WEAPON_PICK:INORGANIC:COPPER] -[ITEM:2:WEAPON:ITEM_WEAPON_AXE_BATTLE:INORGANIC:COPPER] +[SKILL:7:PLANT:5] +[SKILL:7:CUT_STONE:5] +[ITEM:10:CLOTH:NONE:CREATURE_MAT:SPIDER_CAVE:SILK] +[ITEM:100:WOOD:NONE:PLANT_MAT:WILLOW:WOOD] +[ITEM:30:BLOCKS:NONE:INORGANIC:QUARTZITE] +[ITEM:21:SEEDS:NONE:PLANT_MAT:MUSHROOM_HELMET_PLUMP:SEED] +[ITEM:21:SEEDS:NONE:PLANT_MAT:GRASS_TAIL_PIG:SEED] +[ITEM:21:SEEDS:NONE:PLANT_MAT:GRASS_WHEAT_CAVE:SEED] +[ITEM:21:SEEDS:NONE:PLANT_MAT:POD_SWEET:SEED] +[ITEM:21:SEEDS:NONE:PLANT_MAT:BUSH_QUARRY:SEED] +[ITEM:21:SEEDS:NONE:PLANT_MAT:MUSHROOM_CUP_DIMPLE:SEED] [ITEM:1:ANVIL:NONE:INORGANIC:IRON] -[ITEM:7:DRINK:NONE:PLANT_MAT:MUSHROOM_HELMET_PLUMP:DRINK] -[ITEM:26:DRINK:NONE:PLANT_MAT:GRASS_TAIL_PIG:DRINK] -[ITEM:26:DRINK:NONE:PLANT_MAT:GRASS_WHEAT_CAVE:DRINK] -[ITEM:26:DRINK:NONE:PLANT_MAT:POD_SWEET:DRINK] -[ITEM:10:SEEDS:NONE:PLANT_MAT:MUSHROOM_HELMET_PLUMP:SEED] -[ITEM:10:SEEDS:NONE:PLANT_MAT:GRASS_TAIL_PIG:SEED] -[ITEM:10:SEEDS:NONE:PLANT_MAT:GRASS_WHEAT_CAVE:SEED] -[ITEM:10:SEEDS:NONE:PLANT_MAT:POD_SWEET:SEED] -[ITEM:10:SEEDS:NONE:PLANT_MAT:BUSH_QUARRY:SEED] -[ITEM:10:SEEDS:NONE:PLANT_MAT:MUSHROOM_CUP_DIMPLE:SEED] -[ITEM:25:PLANT:NONE:PLANT_MAT:MUSHROOM_HELMET_PLUMP:STRUCTURAL] -[ITEM:4:CHAIN:NONE:CREATURE_MAT:SPIDER_CAVE:SILK] -[ITEM:5:CLOTH:NONE:CREATURE_MAT:SPIDER_CAVE:SILK] -[ITEM:5:THREAD:NONE:CREATURE_MAT:SPIDER_CAVE:SILK] -[ITEM:50:WOOD:NONE:PLANT_MAT:WILLOW:WOOD] -[ITEM:40:BOULDER:NONE:INORGANIC:QUARTZITE] -[ITEM:10:BLOCKS:NONE:INORGANIC:QUARTZITE] +[ITEM:2:WEAPON:ITEM_WEAPON_AXE_BATTLE:INORGANIC:COPPER] +[ITEM:2:WEAPON:ITEM_WEAPON_PICK:INORGANIC:COPPER] +[ITEM:21:DRINK:NONE:PLANT_MAT:GRASS_TAIL_PIG:DRINK] +[ITEM:20:DRINK:NONE:PLANT_MAT:MUSHROOM_HELMET_PLUMP:DRINK] +[ITEM:20:DRINK:NONE:PLANT_MAT:POD_SWEET:DRINK] +[ITEM:20:DRINK:NONE:PLANT_MAT:GRASS_WHEAT_CAVE:DRINK] +[ITEM:30:PLANT:NONE:PLANT_MAT:MUSHROOM_HELMET_PLUMP:STRUCTURAL] +[ITEM:45:BOULDER:NONE:INORGANIC:QUARTZITE] +[ITEM:21:THREAD:NONE:CREATURE_MAT:SPIDER_CAVE:SILK] +[ITEM:3:CHAIN:NONE:CREATURE_MAT:SPIDER_CAVE:SILK] [PET:2:DOG:FEMALE:STANDARD] [PET:1:DOG:MALE:STANDARD] [PET:2:CAT:FEMALE:STANDARD] [PET:1:CAT:MALE:STANDARD] [PET:2:BIRD_GOOSE:FEMALE:STANDARD] [PET:2:BIRD_GOOSE:MALE:STANDARD] -#meta label(all_orders) hidden() references all blueprints that generate orders; for testing only -/surface1 -/surface2 -/surface3 -/surface4 -/surface5 -/surface6 -/surface7 -/surface8 -/farming1 -/farming2 -/farming3 -/farming4 -/industry1 -/industry2 -/services1 -/services2 -/services3 -/services4 -/guildhall1 -/guildhall2 -/guildhall3 -/guildhall4 -/suites1 -/suites2 -/apartments1 repeat(>5) -/apartments2 repeat(>5) -/apartments3 repeat(>5) -#notes label(surface_help) +#notes label(surface_help) surface level walkthrough Sets up a protected entrance to your fort in a flat area on the surface. -Screenshot: https://drive.google.com/file/d/1YL_vQJLB2YnUEFrAg9y3HEdFq3Wpw9WP +Screenshot: https://drive.google.com/file/d/1dlu3nmwQszav-ZaTx-ac28wrcaYBQc_t "" Features: - A starting set of workshops and stockpiles (which you can later remove once you establish your permanent workshops and storage) -- Livestock grazing area with nestbox zones and beehives +"- Livestock grazing area, nestbox zones, and beehives" "- Walls, roof, and lever-controlled gates for security" - Barracks (with prisoner processing quantum dump) - Trap-filled hallways for invaders -- Optional extended trap hallways (to handle larger sieges) -- Protected trade depot -- A grid of 1x1 farm plots (intended to be managed by DFHack autofarm) +- Optional extended trap hallways (to handle larger sieges with a smaller/no military) +"- Protected trade depot, with separate trade goods stockpiles for organics and inorganics (for safe elven trading)" +- A grid of small farm plots for lucrative surface farming +"- A burrow named ""Inside+"" that grows with your fort as you dig it out. It is pre-registered as a civilian alert burrow so you can use it to get your civilians to safety during sieges." +"- A burrow named ""Clearcutting area"" that is automatically registered with autochop (if you have it enabled) to keep the area around your fort clear of trees. This prevents invaders from jumping over your walls. Moreover, it prevents trees from growing large near your exterior walls. If those trees are chopped down so they fall on the fort, they can collapse the roof." "" Manual steps you have to take: -- Assign grazing livestock to the large pasture and dogs to the pasture over the central stairs (DFHack's autonestbox can manage the nestbox zones) -- Connect levers to the gates that match the names of the levers -- Assign minecarts to the trade goods and prisoner processing quantum stockpile hauling routes +"- Assign grazing livestock to the large pasture, dogs to the pasture over the central stairs, and male birds to the zone between the rows of nestboxes (DFHack's autonestbox will auto-assign the female egg-laying birds to the nestbox zones)" +- Connect levers to the drawbridges that match the names of the levers +- Assign minecarts to the trade goods and prisoner processing quantum stockpile hauling routes with assign-minecarts all "" Be sure to choose an embark site that has a flat area on the surface large enough to use these blueprints! "" Surface Walkthrough: -"1) Choose a tile for your central fortress stairs. The terrain around that tile should be perfectly flat. Trees are ok, but no slopes, rivers, or lakes. To be sure that the tile you've chosen is in a good spot, set the cursor over that tile and run ""quickfort run library/dreamfort.csv -n /perimeter"". This will show you the eventual boundaries of the fort. Some wall segments might be missing due to existing trees, but that's ok. Make sure the area within the exterior wall is flat. Run ""quickfort undo library/dreamfort.csv -n /perimeter"" to clean up." +"1) Choose a tile for your central fortress stairs. The terrain around that tile should be perfectly flat. Trees are ok, but no slopes, rivers, or ponds. To be sure that the tile you've chosen is in a good spot, run ""gui/quickfort dreamfort /perimeter"". This will show you the eventual boundaries of the fort. Some wall segments might be missing due to existing trees, but that's ok. Make sure the area within the exterior wall is flat. Cancel out of the preview. You don't actually need to apply this blueprint. You may want to double-check your selected area with gui/biomes to make sure your surface farm plots (to the left of the central tile) will be in a biome that you want to grow in (e.g. you cannot grow surface plants in mountain biomes). Also, the biome to the north of the central tile will hold the underground farm plots, so be sure it has soil." "" -"2) With the cursor on the chosen tile, run /surface1 to clear surrounding trees and set up your pastures. Deconstruct your wagon to get it out of the way of our upcoming walls and floors. Remember to assign your dogs to the pasture around the staircase and your grazing animals to the large pasture. Your egg-layers will automatically get assigned to nestbox zones once the nestboxes are built, so you don't need to worry about them. You can let your cats roam free to chase vermin." +"2) With the cursor on the chosen tile, run /surface1 to clear surrounding trees and set up your pastures. Deconstruct your wagon to get it out of the way of our upcoming walls and floors. Remember to assign your dogs to the pasture around the staircase, your grazing animals to the large pasture, and your male birds to the zone between the nestboxes. Your female egg-layers will automatically get assigned to nestbox zones once the nestboxes are built, so you don't need to worry about them. You can let your cats roam free to chase vermin." "" -"3) Once the marked trees have been cleared, run /surface2 to setup starting workshops/stockpiles, channel out the miasma vents for the farming level, and start clearing trees from a larger area. If you haven't done it already, now is a good time to configure buildingplan to only build buildings with blocks, not logs or raw boulders. Do this by entering buildingplan's global configuration (""baG"") and ensuring the only generic building material allowed is ""blocks"". Run ""quickfort orders"" for /surface2." +"3) Once the marked trees have been cleared, run /surface2 to setup starting workshops/stockpiles, channel out the miasma vents for the farming level, and start clearing trees from a larger area. If you haven't done it already, now is a good time to configure buildingplan to only build buildings with blocks, not logs or raw boulders. Generate manager orders for /surface2 if you haven't already preordered with the checklist command." "" -"4) Once the channels are dug out and the trees are cleared, start digging the farming level one z-level down. Once you have run /farming2, come back to the surface and run /surface3 to cover the vents and build an enclosure around your central stairs. Although the vents will be covered with flooring, they will still work to prevent miasma on the farming level. Run ""quickfort orders"" for /surface3." +"4) Once the channels are dug out and the trees are cleared, start digging the farming level one z-level down. Once you have run /farming2, come back to the surface and run /surface3 to cover the vents and build an enclosure around your central stairs. Although the vents will be covered with flooring (or solid walls), they will still work to prevent miasma on the farming level. Generate manager orders for /surface3 if you haven't already preordered with the checklist command." "" -"5) Once all walls and floors have been constructed around the stairwell, run /surface4 to build floors and walls to support upcoming buildings and furniture. Run ""quickfort orders"" for /surface4." +"5) Once all walls and floors have been constructed around the stairwell, run /surface4 to build floors and walls to support upcoming buildings and furniture. Generate manager orders for /surface4 if you haven't already preordered with the checklist command." "" -"6) Once walls and floors have been constructed (including the small roof segment one z-level up over the barracks), run /surface5 to build furniture, gates, and the permanent trade depot. Remember to deconstruct the temporary trade depot once nobody is using it. Run ""quickfort orders"" for /surface5." +"6) Once walls and floors have been constructed (including the small roof segment one z-level up over the barracks), run /surface5 to build furniture and the drawbridge gates. This blueprint also clearcuts the trees from around the exterior walls. The blueprint may appear to extend off the map or into a nearby hill, but that is ok. Generate manager orders for /surface5." "" -"7) Once at least the beehives and weapon rack are built, run /surface6 to configure the rooms and build the remaining walls and floors. Run ""quickfort orders"" for /surface6." +"7) Once all marked trees are cleared, run /surface6 to build the security perimeter and remaining flooring. Generate manager orders for /surface6." "" -"8) Once you have enough dwarves to do a lot of building without starving other important tasks, run /surface7 to build the roof. Run ""quickfort orders"" for /surface7." +"8) Once you have enough dwarves to do a lot of building without starving other important tasks, run /surface7 to build the roof. This blueprint also sets up the autochop-integrated clearcutting area, so it may extend off the map or into nearby hills. It is not a problem if that happens. Generate manager orders for /surface7." "" -"9) For extra security, you can run /surface8 any time after /surface7 to extend the trap corridors. Run ""quickfort orders"" for /surface8." +"9) For extra security, you can run /surface8 any time after /surface7 to extend the trap corridors. Generate manager orders for /surface8." "" -"10) Once your industry and farming levels are set up and running, you can disassemble the surface workshops and remove the surface stockpiles. Disassembling a workshop scatters the items stored within it and cancels any pending jobs that happen to use those items. In order to avoid job cancellations, first set the surface workshops to not accept general work orders. Do this by entering query mode (""q""), selecting a workshop, entering the workshop profile (""P""), moving to work orders (right arrow), and hitting Enter. Then enter view mode (""t"") and check to see if any items in a workshop are marked with ""TSK"". Once no items in the workshop have that marker, you are free to disassemble that workshop." +"10) Once your industry and farming levels are set up and running, you can disassemble the surface workshops and remove the surface stockpiles. Disassembling a workshop scatters the items stored within it and cancels any pending jobs that happen to use those items. In order to avoid job cancellations, first set the surface workshops to not accept general work orders (click on the building, select the ""Work orders"" tab, and set the ""General work orders allowed"" to 0). Then check to see if any items in a workshop are marked as being part of an active job. Once no items in the workshop have that marker, you are free to disassemble that workshop." "" Sieges and Prisoner Processing: Here are some tips and procedures for handling seiges -- including how to clean up afterwards! "" -"- Ensure your ""Inside"" burrow includes only below-ground areas and safe surface areas of your fort. In particular, don't include the ""atrium"" area (where the ""siege bait"" zone is) or the trapped hallways." +"- Your ""Inside+"" burrow will automatically grow with your fort and should include only safe areas. In particular, it does not include the ""atrium"" area (where the ""siege bait"" pasture is) or the trapped hallways." "" -"- When a siege begins, set the civilian alert to ""Siege"" to ensure all your civilians stay out of danger. Immediately pull the lever to close the outer main gate. It is also wise to close the trade depot and inner main gate as well. That way, if enemies get past the traps, they'll have to go through the soldiers in your barracks." +"- When a siege begins, set your civilian alert (attach the alert to your ""Inside+"" burrow if it isn't already) to ensure all your civilians stay out of danger. Immediately pull the lever to close the outer main gate. It is also wise to close the trade depot and inner main gate as well. That way, if enemies get past the traps, they'll have to go through the soldiers in your barracks (assuming you have a military)." "" -"- During a siege, use the levers to control how attackers path through the trapped corridors. If there are more enemies than cage traps, time your lever pulling so that the inner gates snap closed before your last cage trap is sprung. Then the remaining attackers will have to backtrack and go through the other trap-filled hallway." +"- During a siege, you can use the levers to control how attackers path through the trapped corridors. If there are more enemies than cage traps, time your lever pulling so that the inner gates snap closed before your last cage trap is sprung. Then the remaining attackers will have to backtrack and go through the other trap-filled hallway. You can also choose *not* to use the trap hallways and instead meet the siege head-on with your military. It's up to you!" "" -"- If your cage traps fill up, ensure your hallways are free of uncaged attackers, then close the trap hallway outer gates and open the inner gates. Unset the civilian alert and allow your dwarves to reset all the traps -- make some extra cages in preparation for this! Then re-set the civilian alert to ""Siege"" and open the trap hallway outer gates." +"- If your cage traps fill up, ensure your hallways are free of uncaged attackers, then close the trap hallway outer gates and open the inner gates. Clear the civilian alert and allow your dwarves to reset all the traps -- make some extra cages in preparation for this! Then re-enable the civilian alert and open the trap hallway outer gates." "" "- Once the last attacker is caged, open all the gates and unset the civilian alert. Life is normal again!" "" "After a siege, you can use the caged prisoners to safely train your military. Here's how:" "" -"- Once the prisoners are hauled to the ""prisoner quantum"" stockpile, run ""unforbid all"" and ""stripcaged all"" in the DFHack console (or GUI launcher)." +"- Once the prisoners are hauled to the ""prisoner quantum"" stockpile in the barracks, run ""stripcaged all"" in DFHack's gui/launcher." "" "- After all the prisoners' items have been confiscated, bring your military dwarves to the barracks (if they aren't already there)." "" -- Use the zone (i) menu to assign a group prisoners to the pasture that overlaps the prisoner quantum stockpile -"" -"- Hauler dwarves will come and release prisoners one by one. Your military dwarves will immediately pounce on the released prisoner and chop them to bits, saving the hauler dwarves from being attacked. Repeat until all prisoners have been ""processed""." +- Assign a group of prisoners to the pasture that overlaps the prisoner quantum stockpile "" -"Only common hostile creatures are accepted by the prisoner hauling route by default. You can add additional creature types by configuring the hauling route stop in the 'h' menu. Note that generated creature types, like necromancer experiments, can't be explicitly added. You have to (at least temporarily) accept all animals to include them." -#meta label(perimeter) start(central stairs) message(Run quickfort undo on this blueprint to clean up.) show the eventual perimeter of the surface fort; useful for location scouting +"- Hauler dwarves will come and release prisoners one by one. Your military dwarves will immediately pounce on the released prisoners and chop them to bits, saving the hauler dwarves from being attacked. Repeat until all prisoners have been ""processed"". Some prisoners are not directly hostile (like cavern-caught gorlaks) and you may need to be target them explicitly to get your soldiers to attack them." +#dig label(central_stairs_odd) start(2;2) hidden() carved spiral stairs odd levels +`,j6,` +u,`,u +`,j6,` +#meta label(central_stairs_even) hidden() carved spiral stairs even levels +/central_stairs_odd transform(cw) +#meta label(central_stairs) two levels of carved spiral stairs (repeat down as needed) +/central_stairs_odd +#> +/central_stairs_even +#build label(central_stairs_odd_constructed) start(2;2) hidden() constructed spiral stairs odd levels +`,Cd,` +Cu,`,Cu +`,Cd,` +#meta label(central_stairs_even_constructed) hidden() constructed spiral stairs even levels +/central_stairs_odd_constructed transform(cw) +#meta label(central_stairs_constructed) two levels of constructed spiral stairs (repeat down as needed) +/central_stairs_odd_constructed +#> +/central_stairs_even_constructed +"#meta label(perimeter) start(central stairs) message(If you accidentally applied this blueprint to the map, run quickfort undo on this blueprint to clean up.) show the eventual perimeter of the surface fort; useful for location scouting. DO NOT APPLY." walls/surface_walls +corridor_gates/surface_corridor_gates corridor/surface_corridor +corridor_traps/surface_corridor_traps "" "#meta label(surface1) start(central stairs) message(Once the central stairs are mined out deeply enough, you should start digging the industry level in a non-aquifer rock layer. You'll need the boulders from the digging to make blocks. If your wagon is within the fort perimeter, deconstruct it to get it out of the way. Once the marked trees are all chopped down (if any), continue with /surface2.) clear trees and set up pastures" clear_small/surface_clear_small +burrow_start/surface_burrow_start zones/surface_zones -name_zones/surface_name_zones #> central_stairs/central_stairs repeat(down 10) "" -"#meta label(surface2) start(central stairs) message(Remember to enqueue manager orders for this blueprint. +"#meta label(surface2) start(central stairs) message(If you preordered items on the checklist, good. If not, don't forget to generate orders for this blueprint now. Once the channels are dug out and the marked trees are cleared, continue with /surface3.) set up starting workshops/stockpiles, channel miasma vents, and clear more trees" -build_start/surface_build_start place_start/surface_place_start -query_start/surface_query_start +build_start/surface_build_start channel/surface_channel clear/surface_clear "" -"#meta label(surface3) start(central stairs) message(Remember to enqueue manager orders for this blueprint. -Once the walls and floors have been constructed, continue with /surface4.) Cover vents and protect the central stairs." +"#meta label(surface3) start(central stairs) message(If you preordered items on the checklist, good. If not, don't forget to generate orders for this blueprint now. +Once the walls and floors around the staircase have been constructed, continue with /surface4.) Cover vents and protect the central stairs." cover_vents/surface_cover_vents cover_stairs/surface_cover_stairs "" -"#meta label(surface4) start(central stairs) message(Remember to enqueue manager orders for this blueprint. -Once the walls and floors have been constructed, continue with /surface5. Be sure to check one z-level above the surface to ensure the roof segment above the future barracks has been finished.) build walls and flooring to support upcoming buildings and furniture" +"#meta label(surface4) start(central stairs) message(If you preordered items on the checklist, good. If not, don't forget to generate orders for this blueprint now. +Once the bits of flooring have been constructed, continue with /surface5. Be sure to check one z-level above the surface to ensure the roof segment above the future barracks has been finished.) build walls and flooring to support upcoming buildings and furniture" stairs_doors/surface_stairs_doors pre_building/surface_pre_building "" "#meta label(surface5) start(central stairs) message(Remember to enqueue manager orders for this blueprint. -Disassemble the temporary trade depot in the pasture once the new one is constructed (and no merchants are using the old one). -Once the marked trees are cleared and at least the beehives and weapon rack have been constructed, continue with /surface6.) build gates, furniture, and trade stockpile/depot" +Once the marked trees are cleared, continue with /surface6.) build gates, furniture, and trade stockpile/depot" +traffic/surface_traffic place/surface_place build/surface_build -query/surface_query -traffic/surface_traffic clear_large/surface_clear_large "" "#meta label(surface6) start(central stairs) message(Remember to enqueue manager orders for this blueprint. -Continue with /surface7 sometime after the walls are completed and any marked trees are chopped down, whenever you have enough dwarves to build the roof without starving other important construction tasks.) configure hives and barracks, build traps and remaining walls/floors" -query2/surface_query2 +Continue with /surface7 sometime after the walls are completed and any marked trees are chopped down, whenever you have enough dwarves to build the roof without starving other important construction tasks.) build traps and remaining walls/floors" walls/surface_walls floors/surface_floors traps/surface_traps clear_large/surface_clear_large "" "#meta label(surface7) start(central stairs (on ground level)) message(Remember to enqueue manager orders for this blueprint. -For extra security, you can run /surface8 at any time to extend the trap corridors.) build roof" +For extra security, you can run /surface8 at any time to extend the trap corridors.) expand Inside+ burrow to safe surface areas and build roof" +burrows/surface_burrows #< roof/surface_roof roof2/surface_roof2 @@ -384,25 +384,14 @@ roof4/surface_roof4 corridor_gates/surface_corridor_gates corridor/surface_corridor corridor_traps/surface_corridor_traps -query_corridor/surface_query_corridor -#dig label(central_stairs_odd) start(2;2) hidden() spiral stairs odd levels -`,j6,` -u,`,u -`,j6,` -#meta label(central_stairs_even) hidden() spiral stairs even levels -/central_stairs_odd transform(cw) -#meta label(central_stairs) two levels of spiral stairs (use --repeat down) -/central_stairs_odd -#> -/central_stairs_even #dig label(surface_clear_small) start(19; 19) hidden() clear trees for starting workshops and stockpiles ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` +,,,`,,`,t1(25x11),,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,t1(25x9),,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -412,12 +401,12 @@ u,`,u ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,t1,`,`,`,`,`,`,,`,,`,`,`,`,`,t1,`,`,`,t1,`,`,,` -,,,`,,`,,`,t1,t1,,,,,,`,t1,t1,t1,t1,t1,`,,,,,,,,,,`,,` +,,,`,,`,,`,t1,t1,,,,,,`,t1,t1,t1,t1,t1,`,,,,t1(5x5),,,,,,`,,` ,,,`,,`,,`,,,,,,,,,t1,t1,t1,t1,t1,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,t1,j,t1,j,t1,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,t1,t1,t1,t1,t1,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,t1,t1,t1,t1,t1,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,t1,,,,,,t1,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,t1,t1,,,,,,t1,t1,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,t1,t1,,t1,t1,t1,,t1,t1,,,,,,,,,`,,` @@ -429,103 +418,68 @@ u,`,u -"#zone label(surface_zones) start(19; 19) hidden() message(Remember to assign your dogs to the pasture surrounding the central stairs and your grazing animals to the large pasture. -Feel free to assign an unimportant animal to the pasture in the main entranceway to use as bait during sieges.) pastures and training areas" +#burrow label(surface_burrow_start) start(19; 19) hidden() create safety burrow that will grow with your fort ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,nmt(25x11),,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,n(1x1),n(1x1),n(1x1),n(1x1),n(1x1),n(1x1),n(1x1),`,,,,,,`,nt(9x5),,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,nt,nt,nt,nt,nt,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,nt,`,~,`,nt,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,nt,nt,nt,nt,nt,,,,,,,,,,,`,,` -,,,`,,`,,`,n(1x1),n(1x1),n(1x1),n(1x1),n(1x1),n(1x1),n(1x1),`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,n,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,n,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` - - - -#query label(surface_name_zones) start(19; 19) hidden() - - - -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,"{namezone name=""main pasture""}",,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,`,`,,`,`,,` +,,,`,,`,,`,,,,,,,,`,a{name=Inside+ create=true civalert=true}(5x5),,,,,,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,`,,~,,~,,`,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` +,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,"{namezone name=""nestbox1""}","{namezone name=""nestbox2""}","{namezone name=""nestbox3""}","{namezone name=""nestbox4""}","{namezone name=""nestbox5""}","{namezone name=""nestbox6""}","{namezone name=""nestbox7""}",`,,,,,,`,"{namezone name=""taming area""}",,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,"{namezone name=""guard dogs""}",,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,"{namezone name=""nestbox8""}","{namezone name=""nestbox9""}","{namezone name=""nestbox10""}","{namezone name=""nestbox11""}","{namezone name=""nestbox12""}","{namezone name=""nestbox13""}","{namezone name=""nestbox14""}",`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,"{namezone name=""siege bait""}",,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,"{namezone name=""prisoner processing""}",,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` ,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` -#build label(surface_build_start) start(19; 19) hidden() message(There is room to the left of the carpenter's workshop to build one more workshop of any type if you need it.) starting workshops +"#zone label(surface_zones) start(19; 19) hidden() message(Remember to assign your dogs to the pasture surrounding the central stairs, your grazing animals to the large pasture, and your male birds to the zone between the rows of nestboxes. If your wagon is far away, you can let your animals wander closer to the fort before pasturing them to save hauling time.) pastures and training areas" ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` +,,,`,,`,"n{name=""Main pasture""}(25x11)",,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,"t{name=""Pet training area""}(9x5)",,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,wc,,,,wr,,,,wm,,,,wt,,,,,D,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,N,N,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` +,,,`,,`,,`,"n{name=""Nestbox 1""}(1x1)","n{name=""Nestbox 2""}(1x1)","n{name=""Nestbox 3""}(1x1)","n{name=""Nestbox 4""}(1x1)","n{name=""Nestbox 5""}(1x1)","n{name=""Nestbox 6""}(1x1)","n{name=""Nestbox 7""}(1x1)",`,,,,,,`,,,,,,,,,,`,,` +,,,`,,`,,`,"n{name=""Male birds""}(7x3)",,,,,,,,"n/guarddogs{name=""Guard dogs""}(5x1)",~,~,~,~,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,,n/guarddogs(5x1),~,~,~,~,,,,,,,,,,,`,,` +,,,`,,`,,`,"n{name=""Nestbox 8""}(1x1)","n{name=""Nestbox 9""}(1x1)","n{name=""Nestbox 10""}(1x1)","n{name=""Nestbox 11""}(1x1)","n{name=""Nestbox 12""}(1x1)","n{name=""Nestbox 13""}(1x1)","n{name=""Nestbox 14""}(1x1)",`,,,,,,`,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,m/welcome(7x1),,,,,,,`,,` +,,,`,,`,"B{name=""Surface barracks""}",B,B,B,B,B,B,B,`,,,,,,,,`,"m/welcome{name=""Welcome area/wagon parking lot""}(8x5)",,,,,,,,`,,` +,,,`,,`,B,B,B,B,B,B,B,B,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,B,B,B,B,B,B,B,B,,,,,"n{name=""Siege bait pasture""}",,,,,,,,,,,,,`,,` +,,,`,,`,B,B,B,B,B,B,B,B,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,B,B,B,B,B,B,"n{name=""Prisoner processing pen""}(1x2)",B,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` ,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` @@ -537,24 +491,24 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` +,,,`,,`,"hlr{name=""Starting cloth/trash"" containers=0}(15x2)",,,,,,,,,,,,,,,,"gunzSpd{name=""Starting misc"" containers=0}(9x4)",,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,f(8x4),,,,,,,,w(4x4),,,,s2(5x4),,,,,gunzSpd(4x4),,,,hlr(4x4),,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,"w{name=""Starting wood""}(4x4)",,,,~,~,~,,"s2{name=""Starting stone""}:=otherstone(7x3)",,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,~,~,~,,,,,,,,,,"f{name=""Starting food""}(9x2)",,,,,,,,,`,,` +,,,`,,`,,,,,~,~,~,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,~,~,~,~,~,~,~,~,~,`,,` +,,,`,,`,,,,,~,~,~,,~,~,~,,~,~,~,,~,~,~,~,~,~,~,~,~,`,,` +,,,`,,`,~,~,~,,~,~,~,,~,~,~,,~,~,~,,~,~,~,~,~,~,~,~,~,`,,` +,,,`,,`,~,~,~,,~,~,~,,~,~,~,,~,~,~,,~,~,~,~,~,~,~,~,~,`,,` +,,,`,,`,~,~,~,,,,,,,,,,,,,,~,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -566,29 +520,29 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway -#query label(surface_query_start) start(19; 19) hidden() config stockpiles +#build label(surface_build_start) start(19; 19) hidden() starting workshops ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,"{givename name=""starting food""}",,,,"{givename name=""starting wood""}",,,,,"{givename name=""starting stone""}",,,,"{givename name=""starting misc""}",,,,"{givename name=""starting cloth/trash""}",`,,` -,,,`,,`,,,,,,,,,,,,,otherstone,,,,,nocontainers,,,,nocontainers,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,~,~,~,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,~,"wt{name=""Starter mechanic's"" do_now=true}",~,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,~,~,~,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,~,~,~,,~,~,~,,~,~,~,,,,,,,,,,,`,,` +,,,`,,`,,,,,~,"wc{name=""Starter carpenter"" do_now=true}",~,,~,"wr{name=""Starter craftsdwarf's"" do_now=true}",~,,~,"wm{name=""Starter stoneworker's"" do_now=true max_general_orders=2}",~,,,,,,,,,,,`,,` +,,,`,,`,,,,,~,~,~,,~,~,~,,~,~,~,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,,`,N{do_now=true},N{do_now=true},,,,,,`,,,,,,`,,,,~,~,~,~,~,,`,,` +,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,~,~,~,~,~,,`,,` +,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,~,~,D{do_now=true},~,~,,`,,` +,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,~,~,~,~,~,,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,~,~,~,~,~,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -622,7 +576,7 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,h1,,,,,,h1,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,h1,h1,,,,,,h1,h1,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,h1,h1,,h1,h1,h1,,h1,h1,,,,,,,,,`,,` @@ -637,7 +591,7 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway #dig label(surface_clear) start(19; 19) hidden() clear trees so the farming level can be dug without fear of generating surface holes -,,,,t1(29x29) +,,,t1(31x29) ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -655,15 +609,15 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,t1,t1 -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,t1,t1 -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,t1,t1 -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,t1,t1 -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,t1,t1 -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,t1,t1 -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,t1,t1 -,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,t1,t1 -,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,t1,t1 +,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` +,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` +,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` ,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` ,,,,,,,,,,,,,,,t1,t1,t1,t1,t1,t1,t1 @@ -690,7 +644,7 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,Cf,,,,,,Cf,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,Cf,Cf,,,,,,Cf,Cf,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,Cf,Cf,,Cf,Cf,Cf,,Cf,Cf,,,,,,,,,`,,` @@ -717,14 +671,14 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,Cr,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,Cw,Cw,Cf,Cw,Cf,Cw,Cw,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,`,,,,,,,,Cw,,,,,,Cw,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,Cf,,`,`,`,,Cf,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,Cw,,H,~,H,,Cw,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,Cf,,`,`,`,,Cf,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,Cw,,,,,,Cw,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,Cw,Cw,Cf,Cw,Cf,Cw,Cw,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,Cw,Cw,Cf,Cw,Cf,Cw,Cw,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -736,7 +690,7 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway -#< +#build label(surface_stairs_doors) start(19; 19) hidden() @@ -751,14 +705,14 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,Cf,`,Cf,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,Cf,Cf,Cf,Cf,Cf,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,Cf,Cf,Cf,Cf,Cf,Cf,Cf,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,Cf,Cf,Cf,Cf,Cf,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,Cf,Cf,Cf,Cf,Cf,Cf,Cf,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,Cf,Cf,Cf,Cf,Cf,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,Cf,`,Cf,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,,,,,,,,,,,,,Cr{do_now=true},,,,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,d,`,d,`,`,`,`,`,`,`,`,`,`,`,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,d,,`,`,`,,d,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,d,,`,`,`,,d,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,d,`,d,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -770,7 +724,7 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway -#build label(surface_stairs_doors) start(19; 19) hidden() +#< @@ -786,13 +740,13 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,d,`,d,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,d,,`,`,`,,d,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,d,,`,`,`,,d,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,d,`,d,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,Cf{do_now=true},`,Cf,`,`,`,`,`,`,`,`,`,`,`,`,,` +,,,`,,`,,`,,,,,,,,`,Cf,Cf{do_now=true},Cf,Cf,Cf,`,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf,Cf,Cf,Cf,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,`,Cf,Cf,Cf,Cf,Cf,`,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,Cf{do_now=true},Cf,Cf,Cf,Cf,Cf,Cf,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,`,Cf,Cf,Cf,Cf,Cf,`,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,Cf,`,Cf,`,`,`,`,,`,`,`,`,`,`,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -825,14 +779,14 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,`,,,,,,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,~,~,~,~,~,~,~,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,~,~,~,~,~,~,~,Cf,Cf,Cf,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,~,~,~,~,~,`,,,Cf,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,~,`,~,`,`,`,`,Cf,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,Cf,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,Cf,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,Cf,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,Cf,`,,` +,,,`,,`,,`,,,,,Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},~,~,~,~,~,~,~,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,Cf{do_now=true},,,`,~,~,~,~,~,`,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,Cf{do_now=true},`,`,`,`,~,`,~,`,`,`,`,,,,,,,,`,,` +,,,`,,`,Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,,,,,,,Cf{do_now=true},,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,Cf{do_now=true},,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,Cf{do_now=true},,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},Cf{do_now=true},,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` ,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` @@ -856,24 +810,24 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,Cf,,Cf,,Cf,`,,,,,,,,,,`,,` -,,,`,,`,,Cw,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,Cf,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` -,,,`,,`,,Cw,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,Cf,Cf,Cf,Cf,Cf,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,Cw,Cf,Cw,`,`,`,,`,,`,`,`,Cw,Cf,Cw,`,`,`,`,`,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,~,,,,,,~,`,,,,,,,Cf,Cf,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,~,Cf,Cf,Cf,Cf,Cf,~,~,,,,,,,,Cf,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,~,,~,~,~,,~,~,,,,,Cf,Cf,,Cf,`,,` -,,,`,,`,,Cf,,Cf,Cf,Cf,Cf,Cf,,Cf,,~,~,~,,Cf,,,Cf,,,,,,Cf,`,,` -,,,`,,`,,Cf,,Cf,Cf,Cf,Cf,Cf,`,,,~,~,~,,,`,,Cf,,,,,Cf,Cf,`,,` +,,,`,,`,,`,~,~,N,N,N,N,N,`,Cf,,Cf,,Cf,`,Cf,Cf,,~,~,~,~,~,,`,,` +,,,`,,`,,Cw,,,,,,,,,,`,`,`,,,Cf,Cf,,~,~,~,~,~,,`,,` +,,,`,,`,,Cf,,,,,,,,`,,`,`,`,,`,Cf,Cf,,~,~,~,~,~,,`,,` +,,,`,,`,,Cw,,,,,,,,,,`,`,`,,,Cf,Cf,,~,~,~,~,~,,`,,` +,,,`,,`,,`,,,,,,,,`,Cf,Cf,Cf,Cf,Cf,`,Cf,Cf,,~,~,~,~,~,,`,,` +,,,`,,`,`,`,`,`,`,Cw,Cf,Cw,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` +,,,`,,`,Cf,Cf,Cf,Cf,Cf,,,,`,~,Cf,Cf,Cf,Cf,Cf,~,`,,,,,,,,,`,,` +,,,`,,`,Cf,Cf,Cf,Cf,Cf,,,,~,~,Cf,Cf,Cf,Cf,Cf,~,~,,,,,,,,,`,,` +,,,`,,`,Cf,Cf,,,,,,,~,~,,~,~,~,,~,~,,,,,,,,,`,,` +,,,`,,`,Cf,Cf,Cf,Cf,Cf,,Cf,,Cf,Cf,,~,~,~,,Cf,Cf,,,,,,,,,`,,` +,,,`,,`,Cf,Cf,Cf,Cf,Cf,,Cf,,`,,,~,~,~,,,`,Cf,,Cf,,,Cf,,Cf,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` -,,,`,Cf,,,,,,,,,Cf,,,,,~,,,,,Cf,,,,,,,,,Cf,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,,`,Cf,Cf,,,,,,,,Cf,Cf,,,,~,,,,Cf,Cf,,,,,,,,Cf,Cf,` +,,,`,`,`,`,`,`,`,`,`,`,`,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,`,`,`,`,`,`,`,`,`,`,` -#place label(surface_place) start(19; 19) hidden() remaining surface stockpiles +#dig label(surface_traffic) start(19; 19) hidden() set traffic designations @@ -890,64 +844,26 @@ Feel free to assign an unimportant animal to the pasture in the main entranceway ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,a5(9x5),,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` -,,,`,,`,g(3x3),,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,c,,,,,,,`,,,,,,,,`,,c,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,or,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` +,,,`,,`,,,,,,,,or,`,or,or,ol,ol,ol,ol,,`,,,,,,,,,`,,` +,,,`,,`,,,,,,,,or,ol,ol,or,ol,ol,ol,ol,ol,ol,,,,,,,,,`,,` +,,,`,,`,,,,,,,,or,ol,ol,or,,,,,ol,ol,,,,,,,,,`,,` +,,,`,,`,,,,,,,,or,ol,ol,or,,,,,ol,ol,,,,,,,,,`,,` +,,,`,,`,,,,,,,,or,`,or,or,,,,,,`,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` - - - -"#build label(surface_build) start(19; 19) hidden() message(Use autofarm to manage farm crop selection. -Remember to connect the levers to the gates once they are built.) gates, barracks, farm area, and trade area" - - - -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,~h,`,~,~,N,N,N,N,N,`,Tl,,Tl,,Tl,`,,,,,,,,,,`,,` -,,,`,,`,~h,`,p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,~h,d,p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),`,,`,`,`,,`,,,,,,,,,,`,,` -,,,`,,`,~h,`,p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,~h,`,N,N,N,N,N,N,N,`,Tl,Tl,Tl,Tl,Tl,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,d,`,`,`,`,,`,,`,`,`,`,d,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,gw,gw,gw,gw,gw,,`,,,,,,,h,b,`,,` -,,,`,,`,,,,,,,,,ga,ga,gw,gw,gw,gw,gw,gd,gd,,,,,,,,b,`,,` -,,,`,,`,,,,,,D,,,ga,ga,,,,,,gd,gd,,,,,a,r,,b,`,,` -,,,`,,`,,trackstopS,,,,,,,ga,ga,,,,,,gd,gd,,trackstopS,,,,,,b,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,h,b,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` -,,,`,gd,gd,,,,,,,,gd,gd,,,,,,,,ga,ga,,,,,,,,ga,ga,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,gw,gw,gw,gw,gw,gw,gw,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,gw,gw,gw,gw,gw,gw,gw -,,,,,,,,,,,,,,,gw,gw,gw,gw,gw,gw,gw - -#aliases -"prisoner_route_enable: {enableanimals}{cages}{permittraps}{animalsprefix}{Right}{permitsearch search="" men""}{permitsearch search=dwarves}{permitsearch search=elves}{permitsearch search=humans}{permitsearch search=kobolds}{permitsearch search=gremlins}{permitsearch search=giants}{permitsearch search=goblins}{permitsearch search=ettins}{permitsearch search=cyclopes}{permitsearch search=ogres}{permitsearch search=eyes}{permitsearch search=reachers}{permitsearch search=gorlaks}{permitsearch search=trolls}{permitsearch search=minotaurs}^" +,,,`,`,`,`,`,`,`,`,`,`,`,`,ol,ol,ol,ol,ol,ol,ol,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,ol,ol,ol,ol,ol,ol,ol +,,,,,,,,,,,,,,,ol,ol,ol,ol,ol,ol,ol -"#query label(surface_query) start(19; 19) hidden() message(Remember to assign minecarts to the trade goods and prisoner processing quantum stockpiles (run ""assign-minecarts all""). +"#place label(surface_place) start(19; 19) hidden() message(Remember to assign minecarts to the trade goods and prisoner processing quantum stockpiles (run ""assign-minecarts all""). Feel free to adjust the configuration of the ""trade goods"" feeder stockpile so it accepts the item types you want to trade away. If those items types are also accepted by other stockpiles, configure those stockpiles to give to the ""trade goods"" stockpile. -You might also want to set the ""trade goods quantum"" stockpile to Auto Trade if you have the autotrade DFHack plugin enabled.)" +The inorganic trade goods stockpile is set to autotrade, but you can toggle that according to your preference.) remaining surface stockpiles" @@ -958,30 +874,31 @@ You might also want to set the ""trade goods quantum"" stockpile to Auto Trade i ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,"a10{name=""Pets/Prisoner feeder"" autotrain=true}(9x5)",,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,"{givename name=""trade depo gate""}",,"{givename name=""inner main gate""}",,"{givename name=""barracks gate""}",`,"{givename name=""prison/training area""}",,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,"c{name=""Organic trade goods quantum"" quantum=true}:+all",,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,,,`,`,`,,,"g{name=""Trade goods"" containers=0}:-cat_finished_goods/type/,core/artifact+crafts(2x3)",,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,"{givename name=""left outer gate""}","{givename name=""left inner gate""}","{givename name=""outer main gate""}","{givename name=""right inner gate""}","{givename name=""right outer gate""}",`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` -,,,`,,`,nocontainers,crafts,,,,,,,`,,,,"{givename name=""inner main gate""}",,,,`,,,,,,,,,`,,` -,,,`,,`,"{givename name=""trade goods""}",,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,{forbidmasterworkfinishedgoods}{forbidartifactfinishedgoods},,,,,,,,"{givename name=""trade depo gate""}",,,,,,,,"{givename name=""barracks gate""}",,,,,,,,,`,,` -,,,`,,`,,"{quantumstopfromnorth name=""Trade Goods quantum""}",,,,,,,,,,,,,,,,,"{quantumstop name=""Prisoner/Cage quantum"" move={Up 5} move_back={Down 5} route_enable={prisoner_route_enable}}{givename name=""prisoner/cage dumper""}",,,,,,,`,,` -,,,`,,`,,"{quantum name=""trade goods quantum""}",,,,,,,`,,,,,,,,`,,"{quantum name=""prisoner/cage quantum"" quantum_enable={enableanimals}}",,,,,,,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,"c{name=""Inorganic trade goods quantum"" autotrade=true quantum=true}:+all-organic",,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` +,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,"a{name=""Prisoner/cage quantum"" autotrain=true quantum=true}",,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,"{givename name=""left outer gate""}",,,,,,,,,"{givename name=""left inner gate""}",,,,,,,,"{givename name=""right inner gate""}",,,,,,,,,"{givename name=""right outer gate""}",,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,"{givename name=""outer main gate""}",,,,`,`,`,`,`,`,`,`,`,`,`,` +,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` -#dig label(surface_traffic) start(19; 19) hidden() set traffic designations +"#build label(surface_build) start(19; 19) hidden() message(Use autofarm to manage farm crop selection. +Remember to connect the levers to the gates once they are built.) gates, barracks, farm area, and trade area" @@ -994,26 +911,26 @@ You might also want to set the ""trade goods quantum"" stockpile to Auto Trade i ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,~,~,~,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,~,"ww{name=""Milking/shearing station"" labor=""Milking, Shearing""}",~,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,~,~,~,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,or,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,ol,ol,ol,ol,ol,,`,or,,,,,,,,`,,` -,,,`,,`,,,,,,,,,ol,ol,ol,ol,ol,ol,ol,ol,ol,or,,,,,,,,`,,` -,,,`,,`,,,,,,,,,ol,ol,,,,,,ol,ol,or,,,,,,,,`,,` -,,,`,,`,,,,,,,,,ol,ol,,,,,,ol,ol,or,,,,,,,,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,or,,,,,,,,`,,` +,,,`,,`,~h{do_install=true do_gather=true}(1x1),`,~,~,~,~,~,~,~,`,"Tl{name=""Barracks gate"" do_now=true}",,"Tl{name=""Inner main gate"" do_now=true}",,"Tl{name=""Trade depot gate"" do_now=true}",`,"trackstopE{name=""Organic trade goods dumper"" take_from=""Trade goods"" route=""Organic trade goods quantum""}",,,~,~,~,~,~,,`,,` +,,,`,,`,~h{do_install=true do_gather=true}(1x1),`,p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),,,`,`,`,,,,,,~,~,~,~,~,,`,,` +,,,`,,`,"~h{name=""reserved for splitting"" do_install=true}(1x1)",d,p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),`,,`,`,`,,`,,,,~,~,~,~,~,,`,,` +,,,`,,`,~h{do_install=true do_gather=true}(1x1),`,p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),p(1x1),,,`,`,`,,,,,,~,~,~,~,~,,`,,` +,,,`,,`,~h{do_install=true do_gather=true}(1x1),`,N,N,N,N,N,N,N,`,"Tl{name=""Left outer gate"" do_now=true}(1x1)","Tl{name=""Left inner gate"" do_now=true}(1x1)","Tl{name=""Outer main gate"" do_now=true}(1x1)","Tl{name=""Right inner gate"" do_now=true}(1x1)","Tl{name=""Right outer gate"" do_now=true}(1x1)",`,"trackstopE{name=""Inorganic trade goods dumper"" take_from=""Trade goods,Organic trade goods quantum"" route=""Inorganic trade goods quantum""}:-organic",,,~,~,~,~,~,,`,,` +,,,`,,`,`,`,`,`,`,`,d,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` +,,,`,,`,b,b,b,b,b,,,,`,,"gw{name=""Inner main gate"" do_now=true}",gw,gw,gw,gw,,`,,,,,,,,,`,,` +,,,`,,`,h,h,h,h,h,,,,"ga{name=""Barracks gate"" do_now=true}",ga,gw,gw,gw,gw,gw,"gd{name=""Trade depot gate"" do_now=true}",gd,,,,,,,,,`,,` +,,,`,,`,a,r,,,,,,,ga,ga,,,,,,gd,gd,,,,,,,,,`,,` +,,,`,,`,h,h,h,h,h,,"trackstopS{name=""Prisoner/cage dumper"" take_from=""Pets/Prisoner feeder"" route=""Prisoner/cage quantum""}:-cat_animals/tameable",,ga,ga,,,,,,gd,gd,,,,,,,,,`,,` +,,,`,,`,b,b,b,b,b,,,,`,,,,,,,,`,s,,s,,,s,,s,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,ol,ol,ol,ol,ol,ol,ol,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,ol,ol,ol,ol,ol,ol,ol -,,,,,,,,,,,,,,,ol,ol,ol,ol,ol,ol,ol +,,,`,"gd{name=""Left outer gate"" do_now=true}",gd,,,,,,,,"gd{name=""Left inner gate"" do_now=true}",gd,,,,,,,,"ga{name=""Right inner gate"" do_now=true}",ga,,,,,,,,"ga{name=""Right outer gate"" do_now=true}",ga,` +,,,`,`,`,`,`,`,`,`,`,`,`,`,"gw{name=""Outer main gate"" do_now=true}",gw,gw,gw,gw,gw,gw,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,gw,gw,gw,gw,gw,gw,gw +,,,,,,,,,,,,,,,gw,gw,gw,gw,gw,gw,gw #dig label(surface_clear_large) start(19; 19) hidden() clear wider area of trees t1(37x33) @@ -1031,51 +948,17 @@ t1(37x33) ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,`,`,,`,`,,` +,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,`,,`,~,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` - - - -#query label(surface_query2) start(19; 19) hidden() - - - -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,cg,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,cg,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,c,,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` -,,,`,,`,cg,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,cg,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,r&,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` @@ -1105,7 +988,7 @@ t1(37x33) ,,,`,,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,,` @@ -1134,17 +1017,17 @@ t1(37x33) ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,~,`,~,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,~,Cf,~,Cf,~,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,~,Cf,Cf,Cf,Cf,Cf,~,,,,,,,,,,`,,` -,,,`,,`,,~,,,,,,,,`,Cf,`,Cf,`,Cf,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,~,Cf,Cf,Cf,Cf,Cf,~,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,~,`,`,`,`,`,`,`,,` -,,,`,,`,~,~,~,~,~,~,~,~,`,~,~,~,~,~,~,~,`,Cf,Cf,Cf,Cf,Cf,Cf,~,~,`,,` -,,,`,,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,`,,` -,,,`,,`,~,~,~,~,~,~,~,~,~,~,Cf,~,~,~,Cf,~,~,Cf,Cf,Cf,Cf,~,~,Cf,~,`,,` -,,,`,,`,Cf,~,Cf,~,~,~,~,~,~,~,Cf,~,~,~,Cf,~,~,Cf,~,Cf,Cf,Cf,Cf,Cf,~,`,,` -,,,`,,`,Cf,~,Cf,~,~,~,~,~,`,Cf,Cf,~,~,~,Cf,Cf,`,Cf,~,Cf,Cf,Cf,Cf,~,~,`,,` +,,,`,,`,,`,,,,,,,,`,~,Cf,~,Cf,~,`,~,~,Cf,~,~,~,~,~,Cf,`,,` +,,,`,,`,,`,,,,,,,,~,Cf,Cf,Cf,Cf,Cf,~,~,~,Cf,~,~,~,~,~,Cf,`,,` +,,,`,,`,,~,,,,,,,,`,Cf,`,Cf,`,Cf,`,~,~,Cf,~,~,~,~,~,Cf,`,,` +,,,`,,`,,`,,,,,,,,~,Cf,Cf,Cf,Cf,Cf,~,~,~,Cf,~,~,~,~,~,Cf,`,,` +,,,`,,`,,`,,,,,,,,`,~,~,~,~,~,`,~,~,Cf,~,~,~,~,~,Cf,`,,` +,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,~,~,~,Cf,Cf,Cf,`,~,~,~,~,~,~,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,~,~,~,Cf,Cf,Cf,~,~,~,~,~,~,~,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,Cf,Cf,Cf,Cf,Cf,Cf,~,~,Cf,~,~,~,Cf,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,~,~,~,Cf,~,Cf,~,~,Cf,~,~,~,Cf,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,~,~,~,Cf,~,Cf,`,Cf,Cf,~,~,~,Cf,Cf,`,~,Cf,~,Cf,Cf,~,Cf,~,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,`,`,`,`,`,`,`,`,`,,` ,,,`,~,,,,,,,,,,,Cf,Cf,Cf,~,Cf,Cf,Cf,,,,,,,,,,,~,` ,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` @@ -1153,8 +1036,8 @@ t1(37x33) #build label(surface_traps) start(19; 19) hidden() -,,,,,Tc,Tc,,,,,,,,,,,,,,,,,,,,,,,,Tc,Tc -,,,,,Tc,Tc,,,,,,,,,,,,,,,,,,,,,,,,Tc,Tc +,,,,,Tc,,,,,,,,,,,,,,,,,,,,,,,,,,Tc +,,,,,Tc,,,,,,,,,,,,,,,,,,,,,,,,,,Tc ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -1173,7 +1056,7 @@ t1(37x33) ,,,`,,`,,,,,,,,,,`,,`,`,`,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -1185,6 +1068,40 @@ t1(37x33) ,,,,,,,,,,,,,Tc,Tc,,,,,,,,Tc,Tc ,,,,,,,,,,,,,Tc,Tc,,,,,,,,Tc,Tc +#burrow label(surface_burrows) start(19; 19) hidden() extend safety burrow to newly safe surface areas and set up surrounding clearcutting area + + +,,,,"a{name=""Clearcutting area"" create=true autochop_clear=true}(-12x-10)","a{name=""Clearcutting area"" create=true autochop_clear=true}(28x-10)",,,,,,,,,,,,,,,,,,,,,,,,,,,"a{name=""Clearcutting area"" create=true autochop_clear=true}(12x-10)" +,,,`,"a{name=""Clearcutting area"" create=true autochop_clear=true}(-12x27)",`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,"a{name=""Clearcutting area"" create=true autochop_clear=true}(12x27)",` +,,,`,,`,a{name=Inside+}(25x17),,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,`,`,,`,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,`,,~,,~,,`,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` +,,,`,,a{name=Inside+}(8x7),`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,a{name=Inside+}(8x7),,,,,,,`,,` +,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` +,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,,,"a{name=""Clearcutting area"" create=true autochop_clear=true}(-12x10)","a{name=""Clearcutting area"" create=true autochop_clear=true}(28x10)",,,,,,,,,,,,,,,,,,,,,,,,,,,"a{name=""Clearcutting area"" create=true autochop_clear=true}(12x10)" + + #build label(surface_roof) start(19; 19) hidden() roof hatch and adjacent tiles @@ -1200,19 +1117,19 @@ t1(37x33) ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,Cf,,Cf,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,Cf,H,Cf,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,,,Cf,"H{name=""Roof access""}",Cf,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,~,`,~,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,~,~,~,~,~,~,~,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,~,~,~,~,~,~,~,~,~,~,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,~,~,~,~,~,`,,,~,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,~,`,~,`,`,`,`,~,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,~,~,~,~,~,~,~,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,~,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,~,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,~,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,~,`,,` +,,,`,,`,Cf,`,,,,,,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` +,,,`,,`,Cf,`,,,,,,,,~,~,~,~,~,~,~,,,,,,,,,,`,,` +,,,`,,`,Cf,Cf,,,,,,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` +,,,`,,`,Cf,`,,,,,~,~,~,~,~,~,~,~,~,~,,,,,,,,,,`,,` +,,,`,,`,Cf,`,,,,,~,,,`,~,~,~,~,~,`,,,,,,,,,,`,,` +,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,,,,,,,,`,,` +,,,`,,`,~,~,~,~,~,~,~,,`,,,,,,,,`,,,,,,,,,`,,` +,,,`,,`,,,,,,,~,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,~,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,,,,,,,~,,,,,,,,,,,,,,,,,,,`,,` +,,,`,,`,~,~,~,~,~,~,~,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` ,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` @@ -1236,17 +1153,17 @@ t1(37x33) ,,,`,,`,,,,,,,,,,,,~,,~,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,~,~,~,,,,,,,,,,,,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,~,`,~,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,~,~,~,~,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` -,,,`,,`,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,~,~,~,~,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,~,~,~,~,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` -,,,`,,`,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,~,~,~,~,~,~,~,~,~,Cf,Cf,Cf,Cf,Cf,Cf,`,,` -,,,`,,`,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,~,~,~,~,~,`,Cf,Cf,~,Cf,Cf,Cf,Cf,Cf,Cf,`,,` -,,,`,,`,`,`,`,`,`,`,Cf,`,`,`,`,~,`,~,`,`,`,`,~,`,`,`,`,`,`,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,Cf,~,~,~,~,~,~,~,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,`,,` -,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,`,,` +,,,`,,`,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,~,~,~,~,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,~,~,~,~,~,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,~,~,~,~,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,`,Cf,Cf,Cf,Cf,~,~,~,~,~,~,~,~,~,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,`,Cf,Cf,Cf,Cf,~,Cf,Cf,`,~,~,~,~,~,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,~,~,~,~,~,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,Cf,Cf,Cf,Cf,Cf,Cf,~,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` +,,,`,,`,~,~,~,~,~,~,~,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,,` ,,,`,,`,`,`,`,`,`,`,`,`,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,Cf,,` ,,,`,`,`,`,`,`,`,`,`,`,`,`,Cf,Cf,Cf,Cf,Cf,Cf,Cf,`,`,`,`,`,`,`,`,`,`,`,` @@ -1275,7 +1192,7 @@ t1(37x33) ,,,`,,`,~,~,~,~,~,~,~,~,~,`,~,~,~,~,~,`,~,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,`,~,~,~,~,~,~,~,`,~,~,~,~,~,`,~,~,~,~,~,~,~,~,~,`,,` -,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,~,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,~,~,~,~,~,~,~,`,~,~,~,~,~,~,~,`,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,,` @@ -1309,7 +1226,7 @@ t1(37x33) ,,,`,,`,~,~,~,~,~,~,~,~,~,`,~,~,~,~,~,`,~,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,`,~,~,~,~,~,~,~,`,~,~,~,~,~,`,~,~,~,~,~,~,~,~,~,`,,` -,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,~,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,~,~,~,~,~,~,~,`,~,~,~,~,~,~,~,`,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,,` ,,,`,,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,,` @@ -1321,10 +1238,10 @@ t1(37x33) -#build label(surface_corridor_gates) start(19; 19) hidden() gates for the longer trap hallways +#build label(surface_corridor_gates) start(19; 19) hidden() message(Remember to connect the levers to the new external trap gates.) gates for the longer trap hallways -,,,,gx,,,,,,,,,,,,,,,,,,,,,,,,,,,,gx +,,,,"gx{name=""Left trap gate"" do_now=true}",,,,,,,,,,,,,,,,,,,,,,,,,,,,"gx{name=""Right trap gate"" do_now=true}" ,,,`,gx,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,gx,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -1340,10 +1257,10 @@ t1(37x33) ,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,Tl,`,`,`,Tl,`,,,,,,,,,,`,,` +,,,`,,`,,,,,,,,,,`,"Tl{name=""Left trap gate"" do_now=true}",`,`,`,"Tl{name=""Right trap gate"" do_now=true}",`,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` ,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` +,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,` ,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` ,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` @@ -1377,7 +1294,7 @@ t1(37x33) ,,,Cw,,`,,,,,,,,,,`,~,`,`,`,~,`,,,,,,,,,,`,,Cw ,,,Cw,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,Cw ,,,Cw,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,Cw -,,,Cw,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,Cw +,,,Cw,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,,Cw ,,,Cw,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,Cw ,,,Cw,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,Cw ,,,Cw,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,Cw @@ -1411,7 +1328,7 @@ t1(37x33) ,,,`,Cf,`,~,~,~,~,~,~,~,~,~,`,~,~,~,~,~,`,~,~,~,~,~,~,~,~,~,`,Cf,` ,,,`,Cf,`,~,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,Cf,` ,,,`,Cf,`,~,`,~,~,~,~,~,~,~,`,~,~,~,~,~,`,~,~,~,~,~,~,~,~,~,`,Cf,` -,,,`,Cf,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,~,`,`,`,`,`,`,`,Cf,` +,,,`,Cf,`,`,`,`,`,`,`,~,`,`,`,`,~,`,~,`,`,`,`,~,~,~,~,~,~,~,`,Cf,` ,,,`,Cf,`,~,~,~,~,~,~,~,~,`,~,~,~,~,~,~,~,`,~,~,~,~,~,~,~,~,`,Cf,` ,,,`,Cf,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,Cf,` ,,,`,Cf,`,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,`,Cf,` @@ -1426,8 +1343,8 @@ t1(37x33) #build label(surface_corridor_traps) start(19; 19) hidden() traps for the longer trap hallways -,,,,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,~ -,,,`,~,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,~,` +,,Tc,Tc,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,~,Tc,Tc +,,Tc,`,~,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,~,`,Tc ,,,`,Tc,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,Tc,` ,,,`,Tc,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,Tc,` ,,,`,Tc,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,Tc,` @@ -1445,7 +1362,7 @@ t1(37x33) ,,,`,Tc,`,,,,,,,,,,`,~,`,`,`,~,`,,,,,,,,,,`,Tc,` ,,,`,Tc,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,Tc,` ,,,`,Tc,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,Tc,` -,,,`,Tc,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,Tc,` +,,,`,Tc,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,,,,,,,`,Tc,` ,,,`,Tc,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,Tc,` ,,,`,Tc,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,Tc,` ,,,`,Tc,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,Tc,` @@ -1453,55 +1370,21 @@ t1(37x33) ,,,`,Tc,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,Tc,` ,,,`,Tc,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,Tc,` ,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` - - +,,Tc,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,Tc +,,Tc,Tc,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Tc,Tc -#query label(surface_query_corridor) start(19; 19) hidden() (Remember to connect the levers to the new external trap gates.) configure barracks and name outer levers/gates - - -,,,`,"{givename name=""left trap gate""}",`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,"{givename name=""right trap gate""}",` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,`,"{givename name=""left trap gate""}",`,`,`,"{givename name=""right trap gate""}",`,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,,,`,`,`,,,,,,,,,,,,`,,` -,,,`,,`,,`,,,,,,,,`,,,,,,`,,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,,`,`,`,`,,`,,`,`,`,`,,`,`,`,`,`,`,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,,,,,,,,,,,,,,,,,,`,,` -,,,`,,`,,,,,,,,,`,,,,,,,,`,,,,,,,,,`,,` -,,,`,,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,,` -,,,`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,` -,,,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` - - - -#notes label(farming_help) +#notes label(farming_help) farming level walkthrough "Sets up farming, food storage, and related industries. Also provides post-embark necessities that can later be disassembled." -Screenshot: https://drive.google.com/file/d/1fBC3G5Y888l4tVe5REAyAd_zeojADVme +Screenshot: https://drive.google.com/file/d/1vDaedLcgoexUdKREUz75ZXQi0ZSdwWwj "" Features: - Pairs with the surface blueprints for vents that prevent miasma -- Farm plots (intended to be managed by DFHack autofarm) +- Farm plots (can be managed by DFHack autofarm) - Plentiful food storage - Refuse/corpse quantum stockpile -- Small dormitory and dining room for post-embark needs -- Small offices for your manager and bookkeeper +"- Starter dormitory, dining room, and tomb for use until more permanent versions are ready" +- Offices for your manager and bookkeeper "" Workshops: - Kitchen @@ -1514,84 +1397,75 @@ Workshops: - Screw Press "" Manual steps you have to take: -- Check to make sure the lower office is assigned to your manager and assign the upper office to your bookkeeper (if different from your manager) -"- Assign a minecart to your refuse quantum stockpile hauling route (you can run ""assign-minecarts all"" at the DFHack prompt to do this)" -"- If the industry level is already built, configure the jugs, pots, and bags stockpiles to take from the ""Goods"" quantum stockpile (the one on the left) on the industry level" +"- Assign a minecart to your refuse quantum stockpile hauling route (you can run ""assign-minecarts all"" to do this)" "" Farming Walkthrough: "1) Wait until you have channeled the miasma vents and cleared trees on the surface before digging out the farming level on the z-level below the surface, otherwise you will end up with extra ramps on the farming level and unprotected holes through the surface when you later chop down trees growing above empty space." "" -"2) Start digging with /farming1 and get started on manufacturing furniture by running ""quickfort orders"" on /farming2 and /farming3." +2) Start digging with /farming1 and get started on manufacturing furniture by generating manager orders for /farming2 (if you haven't already preordered with the checklist command). "" -"3) Once the level is dug out, run /farming2 to build workshops, stockpiles, and the furniture we need to anchor the rooms. Remember to assign a minecart to the newly-designated quantum refuse dump. There are also jugs, pots, and bags stockpiles on this level that should be configured to ""take"" from the industry level stockpile once we get the industry level built." +"3) Once the level is dug out, run /farming2 to designate zones, build workshops and stockpiles, and place furniture. Remember to assign a minecart to the newly-designated quantum refuse dump with assign-minecarts all." "" -"4) When the furniture is in place, run /farming3 to designate your starter dining room and dormitory and build the farm plots and remaining furniture. The blueprint also attempts to assign the lower office to your manager, but double-check this assignment in case your dwarves are in an unexpected order." +"4) Once your fort has enough free time to build the remaining doors, run /farming3. Generate manager orders for /farming3." "" -"5) Once your fort has enough free time to build the remaining doors, run /farming4. This will also enable seasonal fertilization for your farm plots. Run ""quickfort orders"" for /farming4." -"" -"6) You can disassemble the dining room and dormitory once the services and apartments levels are up and running, if you like." +"5) You can disassemble the dining room and dormitory once the services and apartments levels are up and running, if you like. Also, you can turn on seasonal fertilization for the farm plots if you need to boost your crop yields." "#dig label(farming1) start(16; 18; central stairs) message(Once the area is dug out, continue with /farming2.)" -# this level is dug at priority 2 since it is dug in soil. it's worth the miner's time to stop digging the industry level and -# quickly dig out this one. -,,,,,,,,,2,2,2,,2,2,2,2,2,,2,2,2,2 -,,,,,,,,,2,2,2,,2,2,2,2,2,,2,2,2,2 -,,,,,,,,,2,2,2,,2,2,2,2,2,,2,2,2,2 -,,,,,,,,,,,2,,2,2,2,2,2,,2,2,2,2 -,,,,,,,2,2,2,,2,,2,2,2,2,2,,2,2,2,2 -,,,,,,,2,2,2,2,2,,2,2,2,2,2,,2,2,2,2 -,,,,,,,2,2,2,,2,,2,2,2,2,2,,2 -,,,,,,,,,,,2,,2,2,2,2,2,,2,,2,2,2 -,,,,,,2,2,2,2,,2,,2,2,2,2,2,,2,2,2,2,2 -,,,,,,2,2,2,2,,2,,2,2,2,2,2,,2,,2,2,2 -,,,2,2,,2,2,2,2,,2,,2,2,2,2,2,,2 -,,2,2,2,,2,2,2,2,,2,,2,2,2,2,2,,2,,2,2,2,,2,2,2 -,,2,2,2,2,2,z2,2,2,2,2,,,2,,2,,,2,2,2,z2,2,2,2,z2,2 -,,,2,2,,2,2,2,2,,2,2,2,2,2,2,2,2,2,,2,2,2,,2,2,2 -,,,,2,,,2,,,,,,2,`,`,`,2,,,,,2,,,,2 -,,2,2,2,2,2,2,2,2,2,2,,2,`,~,`,2,,2,2,2,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,2,2,2,2,2,`,`,`,2,2,2,2,2,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,2,2,2,,2,2,2,2,2,,2,2,2,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,2,2,,,,2,,2,,,,2,2,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,2,,,z2,2,2,2,2,2,z2,,,2,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,2,,z2,z2,,,2,,,z2,z2,,2,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,,,z2,z2,,z2,z2,z2,,z2,z2,,,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,,2,2,2,,z2,z2,z2,,2,2,2,,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,,2,z2,2,,z2,z2,z2,,2,z2,2,,2,2,2,2,2,2,2 -,,2,2,2,2,2,2,2,,2,2,2,,,2,,,2,2,2,,2,2,2,2,2,2,2 -,,,,,,,,,,,,,,,z2 - - -"#meta label(farming2) start(central stairs) message(Remember to enqueue manager orders for this blueprint. +# this level is dug at priority 3 since it is dug in soil. it's worth the miner's time to +# stop digging the industry level and quickly dig out this one. +,,,,,,,,,3,3,3,,3,3,3,3,3,,3,3,3,3 +,,,,,,,,,3,3,3,,3,3,3,3,3,,3,3,3,3 +,,,,,,,,,3,3,3,,3,3,3,3,3,,3,3,3,3 +,,,,,,,,,,,3,,3,3,3,3,3,,3,3,3,3 +,,,,,,,3,3,3,,3,,3,3,3,3,3,,3,3,3,3 +,,,,,,,3,3,3,3,3,,3,3,3,3,3,,3,3,3,3 +,,,,,,,3,3,3,,3,,3,3,3,3,3,,3 +,,,,,,,,,,,3,,3,3,3,3,3,,3,,3,3,3 +,,,,,,3,3,3,3,,3,,3,3,3,3,3,,3,3,3,3,3 +,,,,,,3,3,3,3,,3,,3,3,3,3,3,,3,,3,3,3 +,,,3,3,,3,3,3,3,,3,,3,3,3,3,3,,3 +,,3,3,3,,3,3,3,3,,3,,3,3,3,3,3,,3,,3,3,3,,3,3,3 +,,3,3,3,3,3,z3,2,2,2,2,,,3,,3,,,2,2,2,z3,2,2,2,z3,3 +,,,3,3,,3,3,3,3,,2,2,2,2,2,2,2,2,2,,3,3,3,,3,3,3 +,,,,3,,,3,,,,,,2,`,`,`,2,,,,,3,,,,3 +,,3,3,3,3,3,3,3,3,3,3,,2,`,~,`,2,,3,3,3,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,3,3,3,3,2,`,`,`,2,3,3,3,3,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,3,3,3,,2,2,2,2,2,,3,3,3,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,3,3,,,,2,,2,,,,3,3,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,3,,,z3,2,2,2,2,2,z3,,,3,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,3,,z3,z3,,,2,,,z3,z3,,3,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,,,z3,z3,,z3,z3,z3,,z3,z3,,,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,,3,2,3,,z3,z3,z3,,3,2,3,,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,,3,z3,3,,z3,z3,z3,,3,z3,3,,3,3,3,3,3,3,3 +,,3,3,3,3,3,3,3,,3,3,3,,,2,,,3,3,3,,3,3,3,3,3,3,3 +,,,,,,,,,,,,,,,z3 + + +"#meta label(farming2) start(central stairs) message(If you preordered items on the checklist, good. If not, don't forget to generate orders for this blueprint now. Once furniture has been placed, continue with /farming3.) workshops, stockpiles, and important furniture" -build/farming_build +zone/farming_zone place/farming_place +build/farming_build traffic/farming_traffic -query_stockpiles/farming_query_stockpiles -link_stockpiles/farming_link +burrow/farming_burrow "" -#meta label(farming3) start(central stairs) message(Remember to enqueue manager orders for this blueprint.) configure rooms and build farm plots and more furniture -query_rooms/farming_rooms -build2/farming_build2 -"" -#meta label(farming4) start(central stairs) message(Remember to enqueue manager orders for this blueprint.) configure farm plots and build remaining furniture -query_plots/farming_query_plots -build3/farming_build3 -#build label(farming_build) start(16; 18) hidden() workshops and important furniture +#meta label(farming3) start(central stairs) message(Remember to enqueue manager orders for this blueprint.) build remaining doors +doors/farming_doors +#zone label(farming_zone) start(16; 18) hidden() rooms -,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,,,c,t,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,t,c +,,,,,,,,,T{pets=true}(1x1),`,`,,`,`,`,`,`,,"h{name=""Starter dining hall""}(4x6)",,,` +,,,,,,,,,T{pets=true}(1x1),`,`,,`,`,`,`,`,,`,`,`,` +,,,,,,,,,T{pets=true}(1x1),`,`,,`,`,`,`,`,,`,`,`,` ,,,,,,,,,,,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,c,t,`,`,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,` -,,,,,,,,,,,`,,`,`,`,`,`,,`,,`,`,b +,,,,,,,"o{name=""Manager's office"" assigned_unit=manager}(3x1)",,`,,`,,`,`,`,`,`,,`,`,`,` +,,,,,,,`,`,`,`,`,,`,`,`,`,`,,`,`,`,` +,,,,,,,"o{name=""Bookkeeper's office"" assigned_unit=bookkeeper}(3x1)",,`,,`,,`,`,`,`,`,,` +,,,,,,,,,,,`,,`,`,`,`,`,,`,,"D{name=""Starter dormitory""}(3x3)",,` ,,,,,,`,`,`,`,,`,,`,`,`,`,`,,`,`,`,`,` -,,,,,,`,wl,`,`,,`,,`,`,`,`,`,,`,,`,`,` +,,,,,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,` ,,,`,`,,`,`,`,`,,`,,`,`,`,`,`,,` -,,wq,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` -,,wp,`,`,`,`,ww,`,`,`,`,,,`,,`,,,`,`,`,wu,`,`,`,wz,` +,,`,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` +,,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` ,,,`,`,,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` ,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` ,,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,` @@ -1602,40 +1476,71 @@ build3/farming_build3 ,,`,`,`,`,`,`,`,`,,`,`,,,`,,,`,`,,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,,`,`,`,,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,wh,`,,`,`,`,,`,wn,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,,trackstopS,,,`,`,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,`,`,,,`,,,`,`,`,,`,`,`,`,`,`,` ,,,,,,,,,,,,,,,` -#place label(farming_place) start(16; 18) hidden() stockpiles +"#place label(farming_place) start(16; 18) hidden() message(remember to assign a minecart to the refuse quantum stockpile (run ""assign-minecarts all"")" -,,,,,,,,,`,`,`,,`,`,`,f10(1x9),b(1x12),,f(4x2),,,` +,,,,,,,,,`,`,`,,`,`,`,"c{name=""Seeds"" barrels=10 links_only=true take_from=""Starting food""}:+seeds(1x9)","c{name=""Potash""}:+potash(1x12)",,"c{name=""Booze"" barrels=-1 take_from=""Starting food""}:+booze(4x2)",,,` ,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,`,` ,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,`,` ,,,,,,,,,,,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,`,f(3x2),,` +,,,,,,,`,`,`,,`,,`,`,`,`,`,,`,"c{name=""Prepared food"" take_from=""Starting food""}:+preparedmeals(3x2)",,` ,,,,,,,`,`,`,`,`,,`,`,`,`,`,,`,`,`,` ,,,,,,,`,`,`,,`,,`,`,`,`,`,,` ,,,,,,,,,,,`,,`,`,`,`,`,,`,,`,`,` -,,,,,,`,`,`,u,,`,,`,`,`,`,`,,`,`,`,`,` -,,,,,,`,`,`,u,,`,,f(4x3),,,`,`,,`,,`,`,` -,,,u,u,,`,`,`,u,,`,,`,`,`,`,`,,` -,,`,u,u,,`,`,`,u,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` -,,`,g,g,`,`,`,`,u,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` -,,,g,g,,`,`,`,u,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` +,,,,,,`,`,`,"u{name=""Pots"" take_from=""Starting misc""}:-cat_furniture/type+pots(1x4)",,`,,`,`,`,`,`,,`,`,`,`,` +,,,,,,`,`,`,~,,`,,"c{name=""Seeds feeder"" give_to=""Seeds"" take_from=""Starting food""}:+seeds(4x3)",,,,`,,`,,`,`,` +,,,"u{name=""Bags"" take_from=""Starting misc""}:-cat_furniture/type+bags(2x2)",~,,`,`,`,~,,`,,`,`,`,`,`,,` +,,`,~,~,,`,`,`,~,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` +,,`,"c{name=""Jugs"" take_from=""Starting misc"" give_to=""Cookable food""}:+cat_finished_goods/core,total+woodtools(2x2)",~,`,`,`,`,"u{name=""Barrels"" take_from=""Starting misc,Starting food""}:-cat_furniture/type+barrels(1x2)",`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` +,,,~,~,,`,`,`,~,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` ,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` -,,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,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,f,f,f,f,f,,,,`,,`,,,,f,f,f,f,f,f,f,f,f -,,f,f,f,f,f,f,f,f,,,f,`,`,`,`,`,r,,,f,f,f,f,f,f,f,f -,,f,f,f,f,f,f,f,f,,f,f,,,`,,,r,r,,f,f,f,f,f,f,f,f -,,f,f,f,f,f,f,f,,,f,f,,r(2x3),,ry2(1x3),,r,r,,,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,f,f,f -,,f,f,f,f,f,f,f,,`,`,`,,,`,,,`,`,`,,f,f,f,f,f,f,f -,,,,,,,,,,,,,,,ry +,,"c{name=""Plants"" barrels=-1 take_from=""Starting food""}:+plants",c,c,c,c,c,c,c,c,c,,`,`,~,`,`,,"c{name=""Cookable food"" barrels=-1 take_from=""Starting food""}:+cat_food/meat/,fish/prepared/,egg/,cheese/,leaves/,powder/,glob/,liquid/plant/,paste/,pressed/,milk,royal_jelly-dye-cat_food/tallow,thread,liquid/misc/",c,c,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,c,c,c,`,`,`,`,`,`,`,c,c,c,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,c,c,c,,`,`,`,`,`,,c,c,c,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,c,c,,,,`,,`,,,,c,c,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,c,,,c,`,`,`,`,`,c,,,c,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,c,,"c{name=""Unprepared fish"" take_from=""Starting food""}:+unpreparedfish",c,,,`,,,"c{name=""Rawhides"" take_from=""Starting cloth/trash""}:+rawhides",c,,c,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,,,c,c,,"c{name=""Refuse feeder"" give_to=""Rawhides"" take_from=""Starting cloth/trash""}:+cat_refuse/type(1x3)","y2{name=""Corpse feeder"" take_from=""Starting cloth/trash""}:+cat_refuse/corpses,bodyparts(2x3)",~,,c,c,,,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,,`,`,`,,~,~,~,,`,`,`,,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,,`,`,`,,~,~,~,,`,`,`,,c,c,c,c,c,c,c +,,c,c,c,c,c,c,c,,`,`,`,,,`,,,`,`,`,,c,c,c,c,c,c,c +,,,,,,,,,,,,,,,"ry{name=""Refuse/corpse quantum"" give_to=""Rawhides"" quantum=true}" + + +#build label(farming_build) start(16; 18) hidden() workshops and important furniture + + +,,,,,,,,,n,`,`,,p(3x1),,,`,`,,`,`,`,` +,,,,,,,,,n,`,`,,p(3x1),,,`,`,,`,`,`,` +,,,,,,,,,n,`,`,,p(3x1),,,`,`,,c,t,t,c +,,,,,,,,,,,`,,p(3x1),,,`,`,,c,t,t,c +,,,,,,,t,c,`,,`,,p(3x1),,,`,`,,`,`,`,` +,,,,,,,`,`,`,`,`,,p(3x1),,,`,`,,`,`,`,` +,,,,,,,t,c,`,,`,,p(3x1),,,`,`,,` +,,,,,,,,,,,`,,p(3x1),,,`,`,,`,,b{do_now=true},b{do_now=true},b +,,,,,,`,`,`,`,,`,,p(3x1),,,`,`,,`,`,`,`,h +,,,,,,`,wl,`,`,,`,,`,`,`,`,`,,`,,b,b,b +,,,`,`,,`,`,`,`,,`,,`,`,`,`,`,,` +,,wq,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` +,,wp,`,`,`,`,"ww{labor_mask=""Milking, Shearing""}",`,`,`,`,,,`,,`,,,`,`,`,wu,`,`,`,wz,` +,,,`,`,,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` +,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` +,,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,,,,`,,`,,,,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,,,`,d,`,`,`,d,`,,,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,,`,`,,,d,,,`,`,,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,,`,`,`,,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,wh,`,,`,`,`,,`,wn,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,`,`,,,"trackstopS{name=""Refuse/corpse dumper"" take_from=""Refuse feeder,Corpse feeder"" route=""Refuse/corpse quantum""}",,,`,`,`,,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,` #dig label(farming_traffic) start(16; 18) hidden() keep hungry dwarves away from the crops and food stores so they prefer the prepared meals @@ -1652,167 +1557,41 @@ build3/farming_build3 ,,,,,,ol,ol,ol,ol,,ol,,or,or,or,or,or,,ol,ol,ol,ol,ol ,,,,,,ol,ol,ol,ol,,ol,,or,or,or,or,or,,ol,,ol,ol,ol ,,,ol,ol,,ol,ol,ol,ol,,ol,,or,or,or,or,or,,ol -,,ol,ol,ol,,ol,ol,ol,ol,,ol,,or,or,or,or,or,,ol,,ol,ol,ol,,ol,ol,ol -,,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,,or,,or,,,ol,ol,ol,ol,ol,ol,ol,ol,ol -,,,ol,ol,,ol,ol,ol,ol,,ol,ol,ol,ol,ol,ol,ol,ol,ol,,ol,ol,ol,,ol,ol,ol +,,ol,ol,ol,,ol,ol,ol,ol,,ol,,or,or,or,or,or,,ol,,or,or,or,,or,or,or +,,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,,or,,or,,,ol,or,or,or,or,ol,or,or,or +,,,ol,ol,,ol,ol,ol,ol,,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,,or,or,or ,,,,or,,,or,,,,,,ol,`,`,`,ol,,,,,or,,,,or ,,or,or,or,or,or,or,or,or,or,or,,ol,`,~,`,ol,,or,or,or,or,or,or,or,or,or,or ,,or,or,or,or,or,or,or,or,or,or,or,ol,`,`,`,ol,or,or,or,or,or,or,or,or,or,or,or ,,or,or,or,or,or,or,or,or,or,or,,ol,ol,ol,ol,ol,,or,or,or,or,or,or,or,or,or,or -,,or,or,or,or,or,or,or,or,or,,,,ol,,ol,,,,or,or,or,or,or,or,or,or,or -,,or,or,or,or,or,or,or,or,,,ol,ol,ol,ol,ol,ol,ol,,,or,or,or,or,or,or,or,or -,,or,or,or,or,or,or,or,or,,ol,ol,,,ol,,,ol,ol,,or,or,or,or,or,or,or,or -,,or,or,or,or,or,or,or,,,ol,ol,,ol,ol,ol,,ol,ol,,,or,or,or,or,or,or,or -,,or,or,or,or,or,or,or,,ol,ol,ol,,ol,ol,ol,,ol,ol,ol,,or,or,or,or,or,or,or -,,or,or,or,or,or,or,or,,ol,ol,ol,,ol,ol,ol,,ol,ol,ol,,or,or,or,or,or,or,or -,,or,or,or,or,or,or,or,,ol,ol,ol,,,ol,,,ol,ol,ol,,or,or,or,or,or,or,or -,,,,,,,,,,,,,,,ol - +,,or,or,or,or,or,or,or,or,or,,,,or,,or,,,,or,or,or,or,or,or,or,or,or +,,or,or,or,or,or,or,or,or,,,or,or,or,or,or,or,or,,,or,or,or,or,or,or,or,or +,,or,or,or,or,or,or,or,or,,or,or,,,or,,,or,or,,or,or,or,or,or,or,or,or +,,or,or,or,or,or,or,or,,,or,or,,or,or,or,,or,or,,,or,or,or,or,or,or,or +,,or,or,or,or,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or,or,or,or,or +,,or,or,or,or,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or,or,or,or,or +,,or,or,or,or,or,or,or,,or,or,or,,,or,,,or,or,or,,or,or,or,or,or,or,or +,,,,,,,,,,,,,,,or -"#query label(farming_query_stockpiles) start(16; 18) hidden() message(remember to: -- assign a minecart to the refuse quantum stockpile (run ""assign-minecarts all"") -- if the industry level is already built, configure the jugs, pots, and bags stockpiles to take from the ""Goods"" quantum stockpile on the industry level) config stockpiles" +#burrow label(farming_burrow) start(16; 18) hidden() fix up safety burrow after channel incursions -,,,,,,,,,`,`,`,,`,`,`,seeds,potash,,booze,,,` -,,,,,,,,,`,`,`,,`,`,`,linksonly,nocontainers,,"{givename name=""booze""}",`,`,` -,,,,,,,,,`,`,`,,`,`,`,"{givename name=""seeds""}","{givename name=""potash""}",,`,`,`,` -,,,,,,,,,,,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,`,preparedfood -,,,,,,,`,`,`,`,`,,`,`,`,`,`,,`,"{givename name=""prepared food""}",`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,` -,,,,,,,,,,,`,,`,`,`,`,`,,`,,`,`,` -,,,,,,`,`,`,pots,,`,,`,`,`,`,`,,`,`,`,`,` -,,,,,,`,`,`,"{givename name=""pots""}",,`,,seeds,nocontainers,"{givename name=""seeds feeder""}",give2up,`,,`,,`,`,` -,,,bags,,,`,`,`,`,,`,,`,`,`,`,`,,` -,,`,nocontainers,"{givename name=""bags""}",,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` -,,`,woodentools,,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` -,,,nocontainers,"{givename name=""jugs""}",,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` -,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` -,,plants,,,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,,,,,,,"{givename name=""cookable food""}" -,,`,,,,"{givename name=""plants""}",`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,forbidplants,,,,,`,` -,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,forbidtallow,,,,,`,` -,,`,`,`,`,`,`,`,`,`,,,,`,,`,,,,`,`,forbiddye,,,,`,`,` -,,`,`,`,`,`,`,`,`,,,unpreparedfish,,,,,,rawhides,,,`,forbidunpreparedfish,,,,,,` -,,`,`,`,`,`,`,`,`,,`,nocontainers,,,`,,,"{givename name=""rawhides""}",`,,`,forbidmiscliquid,,,,,,` -,,`,`,`,`,`,`,`,,,`,"{givename name=""unprepared fish""}",,forbidcraftrefuse,"{givename name=""refuse feeder""}",corpses,,t{Left 3}{Down 4}&,`,,,forbidpreparedfood,,,,,,` -,,`,`,`,`,`,`,`,,`,`,`,,forbidcorpses,"{give move=""{Right 3}{Up}""}","{givename name=""corpse feeder""}",,`,`,`,,forbidbooze,,,,,`,` -,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,forbidseeds,,,,,`,` -,,`,`,`,`,`,`,`,,`,`,`,,,"{quantumstop name=""Refuse/Corpse quantum"" sp_links=""{sp_link move={Up} move_back={Down}}{sp_link move=""""{Right}{Up}"""" move_back=""""{Down}{Left}""""}""}{givename name=""refuse/corpse dumper""}",,,`,`,`,,forbidwax,,,,`,`,` -,,,,,,,,,,,,,,,"{quantum name=""refuse/corpse quantum""}" - - -#query label(farming_link) start(16; 18) hidden() set farming stockpiles to take from starting surface stockpiles - - -,,,,,,,,,`,`,`,,`,`,`,t{Down 6}{Left 10}<&,`,,t{Down 6}{Left 13}<&,`,`,` +,,,,,,,,a{name=Inside+}(16x4) ,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,`,` ,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,,,,,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,`,t{Down 2}{Left 14}<&,`,` -,,,,,,,`,`,`,`,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,` -,,,,,,,,,,,`,,`,`,`,`,`,,`,,`,`,` -,,,,,,`,`,`,t{Up 2}{Right 11}<&,,`,,`,`,`,`,`,,`,`,`,`,` -,,,,,,`,`,`,`,,`,,t{Up 3}{Left 7}<&,`,`,`,`,,`,,`,`,` -,,,t{Up 4}{Right 17}<&,`,,`,`,`,`,,`,,`,`,`,`,`,,` -,,`,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` -,,`,t{Up 6}{Right 17}<&,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` -,,,`,`,,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` -,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` -,,t{Up 9}{Right 4}<&,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,t{Up 9}{Left 13}<&,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,,,,`,,`,,,,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,,,t{Up 13}{Left 6}<&,`,`,`,`,`,`,,,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,,`,`,,,`,,,`,`,,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,,t{Up 15}{Right 10}<&,`,`,,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,,`,,,`,`,`,,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,` - - -#query label(farming_rooms) start(16; 18) hidden() message(Check to ensure the lower office got assigned to your manager and assign the upper office to your bookkeeper (if different from your manager).) configure rooms - - ,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,,,r&a+&,,,,`,`,`,`,`,,`,`,`,` -,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,r+&h -,,,,,,,,,,,`,,`,`,`,`,`,,`,`,`,` +,,,,,,a{name=Inside+}(18x3),,,,,`,,`,`,`,`,`,,`,`,`,` ,,,,,,,`,`,`,,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,r&a+&,,,`,`,,`,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,`,`,`,`,`,,` -,,,,,,,,,,,`,,`,`,`,`,`,,`,,`,`,r&d +,,,,,,,`,`,`,`,`,,`,`,`,`,`,,`,`,`,` +,,,,,,a{name=Inside+}(19x1),`,`,`,,`,,`,`,`,`,`,,` +,,,,,a{name=Inside+}(20x2),,,,,,`,,`,`,`,`,`,,`,,`,`,` ,,,,,,`,`,`,`,,`,,`,`,`,`,`,,`,`,`,`,` -,,,,,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,` -,,,`,`,,`,`,`,`,,`,,`,`,`,`,`,,` -,,`,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` -,,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` -,,,`,`,,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` -,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` -,,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,,,,`,,`,,,,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,,`,`,,,`,,,`,`,,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,,`,`,`,,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,,`,,,`,`,`,,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,` - - -"#build label(farming_build2) start(16; 18) hidden() farm plots, remaining furniture, and important doors" - - -,,,,,,,,,`,`,`,,p(3x1),,,`,`,,`,`,`,` -,,,,,,,,,`,`,`,,p(3x1),,,`,`,,`,`,`,` -,,,,,,,,,`,`,`,,p(3x1),,,`,`,,c,t,~,~ -,,,,,,,,,,,`,,p(3x1),,,`,`,,c,t,t,c -,,,,,,,`,`,`,,`,,p(3x1),,,`,`,,`,`,`,` -,,,,,,,`,`,`,`,`,,p(3x1),,,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,p(3x1),,,`,`,,` -,,,,,,,,,,,`,,p(3x1),,,`,`,,`,,b,b,~ -,,,,,,`,`,`,`,,`,,p(3x1),,,`,`,,`,`,`,`,h -,,,,,,`,`,`,`,,`,,`,`,`,`,`,,`,,b,b,b -,,,`,`,,`,`,`,`,,`,,`,`,`,`,`,,` +,,a{name=Inside+}(23x1),,,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,` +,a{name=Inside+}(28x4),,`,`,,`,`,`,`,,`,,`,`,`,`,`,,` ,,`,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` ,,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` ,,,`,`,,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` -,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` -,,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,,,,`,,`,,,,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,,,`,d,`,`,`,d,`,,,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,,`,`,,,d,,,`,`,,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,,`,`,`,,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,`,`,,,`,,,`,`,`,,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,` - - -#query label(farming_query_plots) start(16; 18) hidden() configure farm plots for seasonal fertilization - - -,,,,,,,,,`,`,`,,s,`,`,`,`,,`,`,`,` -,,,,,,,,,`,`,`,,s,`,`,`,`,,`,`,`,` -,,,,,,,,,`,`,`,,s,`,`,`,`,,`,`,`,` -,,,,,,,,,,,`,,s,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,s,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,`,`,,s,`,`,`,`,,`,`,`,` -,,,,,,,`,`,`,,`,,s,`,`,`,`,,` -,,,,,,,,,,,`,,s,`,`,`,`,,`,,`,`,` -,,,,,,`,`,`,`,,`,,s,`,`,`,`,,`,`,`,`,` -,,,,,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,` -,,,`,`,,`,`,`,`,,`,,`,`,`,`,`,,` -,,`,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` -,,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,` -,,,`,`,,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,,`,`,` -,,,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` +,a{name=Inside+}(29x12),,,`,,,`,,,,,,`,`,`,`,`,,,,,`,,,,` ,,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,` @@ -1824,9 +1603,9 @@ build3/farming_build3 ,,`,`,`,`,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,`,`,`,,,`,,,`,`,`,,`,`,`,`,`,`,` ,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,a{name=Inside+}(3x1) - -#build label(farming_build3) start(16; 18) hidden() remaining doors +#build label(farming_doors) start(16; 18) hidden() remaining doors ,,,,,,,,,`,`,`,,`,`,`,`,`,,`,`,`,` @@ -1841,13 +1620,13 @@ build3/farming_build3 ,,,,,,`,`,`,`,,`,,`,`,`,`,`,,`,,~,~,~ ,,,`,`,,`,`,`,`,,`,,`,`,`,`,`,,` ,,`,`,`,,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,,`,`,` -,,`,`,`,d,`,`,`,`,d,`,,,d,,d,,,`,d,`,`,`,d,`,`,` -,,,`,`,,`,`,`,`,,`,d,`,`,`,`,`,d,`,,`,`,`,,`,`,` +,,`,`,`,d,`,`,`,`,d,`,,,d{name=Farming},,d{name=Farming},,,`,d,`,`,`,d,`,`,` +,,,`,`,,`,`,`,`,,`,d{name=Farming},`,`,`,`,`,d{name=Farming},`,,`,`,`,,`,`,` ,,,,d,,,d,,,,,,`,`,`,`,`,,,,,d,,,,d ,,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,d,`,`,`,`,`,d,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,d{name=Farming},`,`,`,`,`,d{name=Farming},`,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,,,,d,,d,,,,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,,,,d{name=Farming},,d{name=Farming},,,,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,,,`,~,`,`,`,~,`,,,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,,`,`,,,~,,,`,`,,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,,`,`,`,,`,`,,,`,`,`,`,`,`,` @@ -1857,24 +1636,24 @@ build3/farming_build3 ,,,,,,,,,,,,,,,` -#notes label(industry_help) +#notes label(industry_help) industry level walkthrough Sets up workshops for all non-farming industries -Screenshot: https://drive.google.com/file/d/1emMaHHCaUPcdRbkLQqvr-0ZCs2tdM5X7 +Screenshot: https://drive.google.com/file/d/1c8YTHxTgJY5tUII-BOWdLhmDFAHwIOEs "" Features: -- Space-efficient layout for all workshops +- Compact layout that covers all workshops - Manager orders that automate basic fortress maintenance "- Space available underneath the forge and smelters for magma, allowing the starting forge and smelters to be eventually replaced by magma versions." -- Quantum stockpiles for compact storage +- Quantum stockpiles for compact storage (see the wiki for more info on QSPs) with separate stockpiles for: - A reserve of uncut gems for strange moods that the jeweler's workshop cannot take from -"- Wood, steel bars, and coal so you can see at a glance if you're low on stock" -- Items that cannot be quantum stockpiled (e.g. lye and sand bags) +"- Wood, iron bars, steel bars, flux, and coal so you can see at a glance if you're low on stock" +"- Items that cannot be quantum stockpiled (e.g. lye, dye, and sand bags)" - Meltable weapons and armor "" Workshops: -- 2x Mason -- 4x Craftsdwarf +- 2x Stoneworker +- 4x Craftsdwarf (labor restrictions set to specialize for materials in adjacent stockpiles) - 1x Jeweler - 1x Mechanic - 4x Smelter @@ -1891,32 +1670,28 @@ Workshops: - 1x Loom - 1x Clothier "" -"" Manual steps you have to take: -- Assign minecarts to your quantum stockpile hauling routes -"- Give from the ""Goods"" quantum stockpile to the jugs, pots, and bags stockpiles on the farming level" +- Assign minecarts to your quantum stockpile hauling routes. The assign-minecarts all command will do it for you. "" Optional manual steps you can take: -- Restrict the Mechanic's workshop to only allow skilled workers so unskilled trap-resetters won't be tasked to build mechanisms. -"- Restrict the Craftsdwarf's workshops to only allow labors that take from the adjacent stockpiles. That is, only allow Woodcrafting for the Craftsdwarf's workshop on the left near the wood stockpile, Stonecrafting and Strand Extraction for the Craftsdwarf's workshop near the Mason's workshops, and Bonecrafting for one of the Craftsdwarf's workshop near the Clothier's workshop. The last Craftdwarf's workshop can hold all the remaining labors, or it can be a secondary workshop for a labor that you want more dwarves working on." -"- To encourage your masons to concentrate on building blocks and other high-volume orders, it helps to set one of your Mason's workshops to service a maximum of 2 manager orders at a time." -"- Once you have enough haulers, you can increase the rate of stone and ore hauling jobs by building more wheelbarrows and adding them to the stone and ore feeder stockpiles." -"- If desired, set one or both stockpiles in the bottom left to auto-melt. This results in melting all weapons and armor that are inferior to masterwork. This is great for upgrading your military, but it takes a *lot* of fuel unless you have first replaced the forge and smelters with magma versions. If you enable automelt and you don't have magma forges and magma smelters, be sure to be in a heavily forested area, enable auto-chop, and keep your coal stocks high." +"- If desired, set one or both stockpiles in the bottom left to auto-melt. This results in melting all weapons and armor that are inferior to masterwork. This is great for upgrading your military, but it takes a *lot* of fuel unless you have first replaced the forge and smelters with magma versions. If you enable automelt and you don't have magma forges and magma smelters, be sure to be in a forested area, set up autochop, and keep your coal stocks high!" "" Industry Walkthrough: -"1) Start digging out /industry1 as soon as you find a stone layer at least two layers beneath the surface so the boulders can be used by your starting workshops. The services level is intended to be dug beneath this one, and there is space on that level to route magma underneath your furnaces so you can replace the furnaces on this level with magma-powered equivalents." +"1) Start digging out /industry1 as soon as you find a non-aquifer stone layer at least two layers beneath the surface so the boulders can be used by your starting workshops. The services level is intended to be dug beneath this one, and there is space on that level to route magma underneath your furnaces so you can replace the furnaces on this level with magma-powered equivalents." +"" +"2) Generate manager orders for /industry2 if you haven't already preordered with the checklist command. You brought an anvil with you (right??), so you can remove the unneeded anvil work order from the manager orders screen. Note that stockpiles that accept containers may claim the barrels you need to build the Dyer's Workshop and Ashery. If you see those two buildings not being constructed, build a few extra barrels or run combine all to free up some existing ones." "" -"2) Queue up manufacturing by running ""quickfort orders"" on /industry2. You brought an anvil with you (right??), so you can remove the unneeded anvil work order from the manager orders screen (j-m). Note that stockpiles that accept containers may claim the barrels you need to build the Dyer's Workshop and Ashery. If you see those two buildings not being constructed, build a few extra barrels or run combine-plants and combine-drinks to free up some existing ones." +"3) Once the area is dug out, run /industry2 to build replacements for your starter workshops up on the surface. Remember to assign minecarts to to your quantum stockpile hauling routes with assign-minecarts all." "" -"3) Once the area is dug out, run /industry2. Remember to assign minecarts to to your quantum stockpile hauling routes, and if the farming level is already built, give from the ""Goods"" quantum stockpile (the one on the left) to the jugs, pots, and bags stockpiles on the farming level." +"4) After the initial workshops are constructed, run /industry3 to build the remaining workshops. Generate manager orders if you haven't already preordered with the checklist command." "" -"4) Once you have enough dwarves to do maintenance tasks (that is, after the first or second migration wave), run ""orders import library/basic"" to use the provided basic.json to take care of your fort's basic needs, such as food, booze, and raw material processing." +"5) Once you have enough dwarves to do maintenance tasks (that is, after the first or second migration wave), run ""orders import library/basic"" to use the provided manager orders to take care of your fort's basic needs, such as food, booze, and raw material processing." "" -"5) If you want to automatically melt goblinite and other low-quality weapons and armor, mark the south-east stockpiles for auto-melt. If you don't have a high density of trees to make into charcoal, though, be sure to route magma to the level beneath this one and replace the forge and furnaces with magma equivalents." +"6) If you want to automatically melt goblinite and other non-masterwork weapons and armor, mark the south-west stockpiles for auto-melt. If you don't have an abundance of fuel, though, be sure to route magma to the level beneath this one and replace the forge and furnaces with magma equivalents." "" -"6) Once you have magma furnaces (or abundant fuel) and more dwarves, run ""orders import library/furnace"", ""orders import library/military"", and ""orders import library/smelting"" to import the remaining fort automation orders. The military orders are optional if you are not planning to have a military, of course." +"7) Once you have magma furnaces (or abundant fuel) and more dwarves, run ""orders import library/furnace"", ""orders import library/military"", and ""orders import library/smelting"" (in that order) to import the remaining fort automation orders. The military orders are optional if you are not planning to have a military, of course." "" -"7) At any time, feel free to build extra workshops or designate custom stockpiles in the unused space in the top and bottom right. The space is there for you to use!" +"8) At any time, feel free to build extra workshops or designate custom stockpiles in the remaining open space. The space is there for you to use! Note the area in the bottom right can be used for additional magma-powered furnaces and workshops since there is space reserved for magma in those spots in the services level beneath." "#dig label(industry1) start(18; 18; central stairs) message(Once the area is dug out, continue with /industry2.)" @@ -1953,178 +1728,214 @@ Industry Walkthrough: ,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d -"#meta label(industry2) start(central stairs) message(Remember to enqueue manager orders for this blueprint.) build workshops and stockpiles, configure stockpiles" -build/industry_build +"#meta label(industry2) start(central stairs) message(If you preordered items on the checklist, good. If not, don't forget to generate orders for this blueprint now.) stockpiles and high-priority workshops" +traffic/industry_traffic place/industry_place -query/industry_query -#build label(industry_build) start(18; 18) hidden() +build/industry_build +"#meta label(industry3) start(central stairs) message(If you preordered items on the checklist, good. If not, don't forget to generate orders for this blueprint now.) remaining workshops" +build2/industry_build2 +#dig label(industry_traffic) start(18; 18; central stairs) hidden() traffic patterns ,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,oh,ol,ol,ol,oh,ol,ol,ol,oh,ol,ol,ol,oh +,,,,oh,oh,oh,oh,oh,oh,oh,oh,ol,ol,ol,oh,ol,ol,ol,oh,ol,ol,ol,oh,oh,oh,oh,oh,oh,oh,oh +,,,,oh,ol,ol,ol,ol,ol,ol,oh,ol,ol,ol,oh,ol,ol,ol,oh,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,oh,ol,ol,ol,ol,ol,ol,oh,ol,ol,ol,oh,oh,oh,oh,oh,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,oh,ol,ol,ol,ol,ol,ol,oh,ol,ol,ol,oh,oh,`,oh,oh,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,oh,ol,ol,ol,ol,ol,ol,oh,ol,ol,ol,oh,oh,`,oh,oh,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,oh,ol,ol,ol,ol,ol,ol,oh,ol,ol,ol,`,`,`,`,`,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,oh,ol,ol,ol,ol,ol,ol,oh,ol,ol,ol,`,`,`,`,`,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,ol,ol,ol,`,`,`,`,`,ol,ol,ol,oh,oh,oh,oh,oh,oh,oh,oh,oh,` +,,`,ol,ol,ol,ol,ol,ol,ol,ol,ol,oh,oh,oh,`,`,`,`,`,oh,oh,oh,ol,ol,ol,ol,ol,ol,ol,ol,ol,` +,,`,ol,ol,ol,ol,ol,ol,ol,ol,ol,oh,oh,oh,`,`,`,`,`,oh,oh,oh,ol,ol,ol,ol,ol,ol,ol,ol,ol,` +,,`,ol,ol,ol,ol,ol,ol,ol,ol,ol,oh,oh,,,`,,`,,,oh,oh,ol,ol,ol,ol,ol,ol,ol,ol,ol,` +,,`,oh,oh,oh,oh,oh,oh,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,oh,oh,oh,oh,oh,oh,` +,,`,ol,ol,ol,oh,oh,oh,`,`,`,`,`,`,`,,,,`,`,`,`,`,`,`,oh,oh,oh,ol,ol,ol,` +,,`,ol,ol,ol,oh,`,`,`,`,`,`,`,,`,,`,,`,,`,`,`,`,`,`,`,oh,ol,ol,ol,` +,,`,ol,ol,ol,oh,oh,oh,`,`,`,`,`,`,`,,,,`,`,`,`,`,`,`,oh,oh,oh,ol,ol,ol,` +,,`,oh,oh,oh,oh,oh,oh,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,oh,oh,oh,oh,oh,oh,` +,,`,ol,ol,ol,ol,ol,ol,ol,ol,ol,oh,oh,,,`,,`,,,oh,oh,ol,ol,ol,ol,ol,ol,ol,ol,ol,` +,,`,ol,ol,ol,ol,ol,ol,ol,ol,ol,oh,oh,oh,`,`,`,`,`,oh,oh,oh,ol,ol,ol,ol,ol,ol,ol,ol,ol,` +,,`,ol,ol,ol,ol,ol,ol,ol,ol,ol,oh,oh,oh,`,`,`,`,`,oh,oh,oh,ol,ol,ol,ol,ol,ol,ol,ol,ol,` +,,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,ol,ol,ol,`,`,`,`,`,ol,ol,ol,oh,oh,oh,oh,oh,oh,oh,oh,oh,` +,,,,`,`,`,`,`,`,`,oh,ol,ol,ol,`,`,`,`,`,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,`,`,`,`,`,`,`,oh,ol,ol,ol,`,`,`,`,`,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,`,`,`,`,`,`,`,oh,ol,ol,ol,oh,oh,`,oh,oh,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,oh,oh,oh,oh,oh,oh,oh,oh,ol,ol,ol,`,oh,`,oh,`,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,`,`,`,`,`,`,`,oh,ol,ol,ol,`,`,`,`,`,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,`,`,`,`,`,`,`,oh,ol,ol,ol,`,ol,ol,ol,`,ol,ol,ol,oh,ol,ol,ol,ol,ol,ol,oh +,,,,`,`,`,`,`,`,`,oh,ol,ol,ol,`,ol,ol,ol,`,ol,ol,ol,oh,oh,oh,oh,oh,oh,oh,oh +,,,,,,,,,,,oh,ol,ol,ol,oh,ol,ol,ol,oh,ol,ol,ol,oh +,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` + + +"#place label(industry_place) start(18; 18) hidden() message(remember to: +- assign minecarts to to your quantum stockpile hauling routes (use ""assign-minecarts all"") +- if you want to automatically melt goblinite and other low-quality weapons and armor, mark the south-east stockpiles for auto-melt +- once you have enough dwarves, run ""orders import library/basic"" to automate your fort's basic needs (see /industry_help for more info on this file)) industry stockpiles" + + +,,,,,,,,,,,"e{name=""Rough gems for moods"" containers=0 take_from=""Stoneworker quantum,Gem feeder""}:=roughgems",e,e,e,e,e,e,e,e,e,e,e,e ,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,wj,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,wr,`,`,`,`,`,`,`,wt,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,trackstopN,`,`,`,`,`,`,`,`,ws,`,`,`,` -,,,,`,`,wS,`,`,wb,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,wm,`,`,`,`,`,`,`,wm,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,"se{name=""Stoneworker quantum"" quantum=true}",`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,"s10{name=""Stone feeder""}:=otherstone(5x4)",,,~,~,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,` +,,"w{name=""Wood"" take_from=""Goods/wood quantum,Wood feeder""}",`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,"c{name=""Dye"" barrels=-1 }:+dye" +,,w,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,c +,,w,`,`,`,`,`,`,`,`,`,`,`,`,"e{name=""Gem feeder"" containers=0}(5x1)",,,~,~,`,`,`,`,`,`,`,`,`,`,`,`,c +,,w,`,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,`,`,`,c +,,w,`,`,`,`,`,`,"w{name=""Wood feeder""}(2x5)",,"g{name=""Goods feeder"" containers=0}:+cat_food/tallow+wax-crafts-goblets(3x3)",,`,,`,`,`,`,`,,"hlS{name=""Cloth/bones feeder"" containers=0}:+cat_refuse/skulls/,bones/,hair/,shells/,teeth/,horns/-adamantinethread(5x5)",,,~,~,`,`,`,`,`,`,c +,,w,`,`,`,`,`,`,~,~,~,~,~,`,`,,,,`,`,~,~,~,~,~,`,`,`,`,`,`,c +,,`,`,`,`,`,"c{name=""Goods/wood quantum"" quantum=true give_to=""Pots,Barrels,Jugs,Bags,Seeds feeder""}:+all-cat_animals",`,~,~,~,~,~,,`,,`,,`,,~,~,~,~,~,`,"r{name=""Cloth/bones quantum"" quantum=true}:+all",`,`,`,`,c +,,"c{name=""Lye"" barrels=0}:+miscliquid",`,`,`,`,`,`,~,~,"u2{name=""Furniture feeder""}:-sand(3x2)",~,~,`,`,,,,`,`,~,~,~,~,~,`,`,`,`,`,`,c +,,c,`,`,`,`,`,`,~,~,~,~,~,,`,`,`,`,`,,~,~,~,~,~,`,`,`,`,`,`,c +,,c,`,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,`,`,`,c +,,c,`,`,`,`,`,`,`,`,`,`,`,`,"bnpdz{name=""Bar/military feeder"" containers=0}:-potash+adamantinethread(5x3)",,,,~,`,`,`,`,`,`,`,`,`,`,`,`,c +,,c,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,c +,,c,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,c +,,,,"pd{name=""Meltable steel/bronze"" take_from=""Metalworker quantum,Bar/military feeder"" containers=0}:-cat_weapons/mats/,other/-cat_armor/mats/,other/+bronzeweapons+bronzearmor+steelweapons+steelarmor-masterworks-artifacts(7x3)",,,~,~,~,~,`,`,`,`,"s5{name=""Ore/clay feeder""}:-otherstone(5x2)",,,~,~,`,`,`,`,`,`,`,`,`,`,` +,,,,~,~,~,~,~,~,~,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,` +,,,,~,~,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,"c{name=""Coal"" containers=0 take_from=""Metalworker quantum,Bar/military feeder""}:+coal",`,"c{name=""Metalworker quantum"" quantum=true}:+all",`,"c{name=""Iron"" containers=0 take_from=""Metalworker quantum,Bar/military feeder""}:+ironbars",`,`,`,`,`,`,`,`,`,`,` +,,,,"pd{name=""Other meltables"" take_from=""Metalworker quantum,Bar/military feeder"" containers=0}:-cat_weapons/other/-cat_armor/other/-bronzeweapons-bronzearmor-steelweapons-steelarmor-masterworks-artifacts(7x3)",,,~,~,~,~,`,`,`,`,c,"c{name=Flux take_from=""Metalworker quantum,Ore/clay feeder"" links_only=true}:+flux(3x1)",,,c,`,`,`,`,`,`,`,`,`,`,` +,,,,~,~,~,~,~,~,~,`,`,`,`,c,`,`,`,c,`,`,`,`,`,`,`,`,`,`,` +,,,,~,~,~,~,~,~,~,`,`,`,`,c,`,`,`,c,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,"u{name=""Sand bags""}:-cat_furniture/type+sand",u,u,u,u,u,`,"c{name=""Steel"" containers=0 take_from=""Metalworker quantum,Bar/military feeder""}:+steelbars",c,c,c,c,c + + +#build label(industry_build) start(18; 18) hidden() workshops to build first + + +,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,"wj{name=""Encruster"" do_now=true take_from=""Goods/wood quantum,Stoneworker quantum,Gem feeder""}",`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,"wr{name=""Stone craftsdwarf"" do_now=true labor=Stonecrafting}",`,`,`,`,`,`,`,wt{do_now=true},`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,"trackstopN{name=""Stone/gem dumper"" do_now=true take_from=""Stone feeder,Gem feeder"" route=""Stone/gem quantum""}",`,`,`,`,`,`,`,`,~,`,`,`,` +,,,,`,`,~,`,`,~,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,wm{max_general_orders=2 do_now=true},`,`,`,`,`,`,`,wm{max_general_orders=10 do_now=true},`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,wy,`,`,ew,`,`,ew,`,`,`,`,`,`,`,`,`,`,`,`,`,wk,`,`,wo,`,`,wd,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,,,d,,d,,,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,~,`,`,~,`,`,~,`,`,`,`,`,`,`,`,`,`,`,`,`,~,`,`,~,`,`,~,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,,,~,,~,,,`,`,`,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,d,`,,,,`,d,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,wc,`,`,`,trackstopW,`,`,`,`,`,,`,,`,,`,,`,`,`,`,`,trackstopE,`,`,`,we,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,d,`,,,,`,d,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,~,`,,,,`,~,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,wc{max_general_orders=9 do_now=true},`,`,`,"trackstopW{name=""Goods/wood dumper"" do_now=true take_from=""Wood feeder,Goods feeder,Furniture feeder"" route=""Goods/wood quantum""}",`,`,`,`,`,,`,,`,,`,,`,`,`,`,`,"trackstopE{name=""Cloth/bones dumper"" do_now=true take_from=""Cloth/bones feeder"" route=""Cloth/bones quantum""}",`,`,`,~,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,~,`,,,,`,~,`,`,`,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,,,d,,d,,,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,wr,`,`,ew,`,`,ew,`,`,`,`,`,`,`,`,`,`,`,`,`,wr,`,`,wr,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,,,~,,~,,,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,~,`,`,~,`,`,~,`,`,`,`,`,`,`,`,`,`,`,`,`,~,`,`,~,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,trackstopS,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,"trackstopS{name=""Metalworker dumper"" do_now=true take_from=""Bar/military feeder,Ore/clay feeder"" route=""Metalworker quantum""}",`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,eg,`,`,`,wf,`,`,`,ek,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,~,`,`,`,~,`,`,`,~,`,`,`,`,`,`,`,`,` ,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` -#place label(industry_place) start(18; 18) hidden() +#build label(industry_build2) start(18; 18) hidden() remaining workshops -,,,,,,,,,,,e,e,e,e,e,e,e,e,e,e,e,e,e ,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,`,ws,`,`,`,` +,,,,`,`,wS,`,`,wb,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,wy,`,`,ew,`,`,ew,`,`,`,`,`,`,`,`,`,`,`,`,`,wk,`,`,wo,`,`,"wd{take_from=""Cloth/bones feeder,Cloth/bones quantum,Dye""}",`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,,,d{name=Industry},,d{name=Industry},,,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,d{name=Industry},`,,,,`,d{name=Industry},`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,~,`,`,`,~,`,`,`,`,`,,`,,`,,`,,`,`,`,`,`,~,`,`,`,we,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,d{name=Industry},`,,,,`,d{name=Industry},`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,,,d{name=Industry},,d{name=Industry},,,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,"wr{name=""Wood craftsdwarf"" labor=Woodcrafting}",`,`,ew,`,`,ew,`,`,`,`,`,`,`,`,`,`,`,`,`,"wr{name=""Misc craftsdwarf"" labor_mask=""Stonecrafting,Woodcrafting,Bone Carving""}",`,`,"wr{name=""Bone craftsdwarf"" labor=""Bone Carving""}",`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,c,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,s4(5x4),,,~,~,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,` -,,w,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,w,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,w,`,`,`,`,`,`,`,`,`,`,`,`,e(5x1),,,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,w,`,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,`,`,`,` -,,w,`,`,`,`,`,`,w(2x5),,fg(3x3),,`,,`,`,`,`,`,,frhlS(5x5),,,~,~,`,`,`,`,`,`,` -,,w,`,`,`,`,`,`,~,~,~,~,~,`,`,,,,`,`,~,~,~,~,~,`,`,`,`,`,`,` -,,`,`,`,`,`,c,`,~,~,~,~,~,,`,,`,,`,,~,~,~,~,~,`,r,`,`,`,`,` -,,f3,`,`,`,`,`,`,~,~,u2(3x2),~,~,`,`,,,,`,`,~,~,~,~,~,`,`,`,`,`,`,` -,,f3,`,`,`,`,`,`,~,~,~,~,~,,`,`,`,`,`,,~,~,~,~,~,`,`,`,`,`,`,` -,,f3,`,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,`,`,`,` -,,f3,`,`,`,`,`,`,`,`,`,`,`,`,bnpdhz(5x3),,,,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,f3,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,f3,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,pd(7x3),,,~,~,~,~,`,`,`,`,s2(5x2),,,~,~,`,`,`,`,`,`,`,`,`,`,` -,,,,~,~,~,~,~,~,~,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,` -,,,,~,~,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,b,`,c,`,b,`,`,`,`,`,`,`,`,`,`,` -,,,,pd(7x3),,,~,~,~,~,`,`,`,`,b,s,s,s,b,`,`,`,`,`,`,`,`,`,`,` -,,,,~,~,~,~,~,~,~,`,`,`,`,b,`,`,`,b,`,`,`,`,`,`,`,`,`,`,` -,,,,~,~,~,~,~,~,~,`,`,`,`,b,`,`,`,b,`,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,u,u,u,u,u,u,`,b,b,b,b,b,b - - -"#query label(industry_query) start(18; 18) hidden() message(remember to: -- assign minecarts to to your quantum stockpile hauling routes (use ""assign-minecarts all"") -- if the farming level is already built, give from the ""Goods"" quantum stockpile to the jugs, pots, and bags stockpiles on the farming level -- if you want to automatically melt goblinite and other low-quality weapons and armor, mark the south-east stockpiles for auto-melt -- once you have enough dwarves, run ""orders import library/basic"" to automate your fort's basic needs (see /industry_help for more info on this file) -- optionally, restrict the labors for your Craftsdwarf's and Mechanic's workshops as per the guidance in /industry_help)" - - -,,,,,,,,,,,roughgems,,,,nocontainers,"{givename name=""rough gems for moods""}",t{Down 5}&,,,,,~,~ -,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,~,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,es,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,"{givename name=""stone craftsdwarf""}",`,`,`,"{quantum name=""stoneworker quantum""}g{Up 3}&",`,`,`,~,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,"{quantumstop name=""Stoneworker quantum"" sp_links=""{sp_link move={Down} move_back={Up}}{sp_link move=""""{Down 5}"""" move_back=""""{Up 5}""""}""}{givename name=""stoneworker dumper""}",`,`,`,`,`,`,`,`,~,`,`,`,` -,,,,`,`,~,`,`,~,`,`,`,`,`,otherstone,,,,~,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,~,`,"{givename name=""stone feeder""}",~,~,~,~,`,~,`,`,`,`,`,`,`,`,` -,,"{givename name=""wood""}",`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,~,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,~,`,~,`,`,~,`,`,~,`,`,`,`,nocontainers,"{givename name=""gem feeder""}",~,~,~,`,`,`,`,~,`,`,~,`,`,~,`,` -,,~,`,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,`,`,`,` -,,~,`,`,`,`,`,`,"{givename name=""wood feeder""}",~,"{givename name=""goods feeder""}",nocontainers,~,,`,`,`,`,`,,craftrefuse,,,,~,`,`,`,`,`,`,` -,,t{Right 5}{Down}&,`,`,`,`,`,`,~,~,{tallow}{permitwax},~,~,`,`,,,,`,`,"{givename name=""cloth/bones feeder""}",g{Up 3}{Right 5}&,~,~,~,`,`,`,`,`,`,` -,,`,`,~,`,`,"{quantum name=""goods/wood quantum""}g{Up 13}{Right 10}&","{quantumstop name=""Goods/Wood quantum"" sp_links=""{sp_link move={Right} move_back={Left}}{sp_link move=""""{Right 5}"""" move_back=""""{Left 5}""""}{sp_link move=""""{Down}{Right 5}"""" move_back=""""{Left 5}{Up}""""}""}{givename name=""goods/wood dumper""}",~,~,{forbidcrafts}{forbidgoblets},~,~,,`,,`,,`,,nocontainers,~,~,~,~,"{quantumstopfromwest name=""Clothier/Bones quantum""}{givename name=""cloth/bones dumper""}","{quantum name=""cloth/bones quantum""}g{Up 4}&",`,`,~,`,` -,,miscliquid,`,`,`,`,`,`,~,~,"{givename name=""furniture feeder""}",~,~,`,`,,,,`,`,forbidadamantinethread,~,~,~,~,`,`,`,`,`,`,` -,,"{givename name=""miscliquid""}",`,`,`,`,`,`,~,~,forbidsand,~,~,,`,`,`,`,`,,dye,~,~,~,~,`,`,`,`,`,`,` -,,~,`,`,`,`,`,`,`,`,`,`,`,,,`,,`,,,`,`,`,`,`,`,`,`,`,`,`,` -,,~,`,"{givename name=""wood craftsdwarf""}",`,`,~,`,`,~,`,`,`,`,forbidpotash,nocontainers,"{givename name=""bar/military feeder""}",~,~,`,`,`,`,"{givename name=""misc craftsdwarf""}",`,`,"{givename name=""bone craftsdwarf""}",`,`,`,`,` -,,~,`,`,`,`,`,`,`,`,`,`,`,`,adamantinethread,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,~,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,nocontainers,t{Right 12}{Up 3}&,t{Right 11}{Down 3}&,"{givename name=""meltable steel/brnze""}",,,,`,`,~,`,forbidotherstone,,,,,`,~,`,`,`,`,`,`,`,`,` -,,,,{bronzeweapons}{permitsteelweapons}{forbidmasterworkweapons}{forbidartifactweapons},,,,,,,`,`,`,`,"{givename name=""ore/clay feeder""}",~,~,~,~,`,`,`,`,`,`,`,`,`,`,` -,,,,{bronzearmor}{permitsteelarmor}{forbidmasterworkarmor}{forbidartifactarmor},,,,,,,`,`,`,`,`,`,"{quantumstop name=""Metalworker quantum"" sp_links=""{sp_link move={Up} move_back={Down}}{sp_link move=""""{Up 5}"""" move_back=""""{Down 5}""""}""}{givename name=""metalworker dumper""}",`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,`,`,`,`,`,`,`,~,`,t{Right 2}&,`,"{quantum name=""metalworker quantum""}",`,t{Left 2}&,`,~,`,`,`,`,`,`,`,`,` -,,,,nocontainers,t{Right 12}{Up 7}&,t{Right 11}{Up 1}&,"{givename name=""other meltables""}",,,,`,`,`,`,coal,flux,t{Up}&,"{givename name=""flux""}",ironbars,`,`,`,`,`,`,`,`,`,`,` -,,,,{metalweapons}{forbidbronzeweapons}{forbidsteelweapons}{forbidmasterworkweapons}{forbidartifactweapons},,,,,,,`,`,`,`,"{givename name=""coal""}",`,`,`,"{givename name=""iron""}",`,`,`,`,`,`,`,`,`,`,` -,,,,{metalarmor}{forbidbronzearmor}{forbidsteelarmor}{forbidmasterworkarmor}{forbidartifactarmor},,,,,,,`,`,~,`,nocontainers,`,~,`,nocontainers,`,~,`,`,`,`,`,`,`,`,` +,,,,`,`,`,`,`,`,`,`,`,eg,`,`,`,wf{max_general_orders=9},`,`,`,ek,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` ,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,sand,"{givename name=""sand bags""}",nocontainers,~,~,~,`,t{Up 5}{Left}&,,,nocontainers,steelbars,"{givename name=""steel""}" -#notes label(services_help) +#notes label(services_help) services level walkthrough "Sets up public services (dining, hospital, etc.)" -Screenshot: https://drive.google.com/file/d/13vDIkTVOZGkM84tYf4O5nmRs4VZdE1gh +Screenshot: https://drive.google.com/file/d/1RQMy_zYQWM5GN7-zjn6LoLWmnrJjkxPM "" Features: -- Spacious dining room/tavern (tavern is restricted to residents-only by default) -- Prepared food and drink stockpiles -- Well cistern system (bring your own water) -- Hospital with a well for washing +- Spacious dining room/tavern (tavern is restricted to citizens and residents only by default) +- Large prepared food and drink stockpiles +- Well cistern system (route or carry your own water) +- Hospital (also restricted to residents by default) with a well and soap for washing +- Well-appointed jail cells for happy prisoners +- Bolt-recycling archery range for your marksdwarves +- Interrogation room (office) for your Captain of the Guard - Garbage dump - Empty space for magma to power forges and smelters in the industry level above "" -Note the hospital also has animal training enabled so it can be used with the dwarfvet plugin if it's enabled. -"" Manual steps you have to take: -"- If you want to tavern to attract visitors, change the restriction in the (l)ocation menu." -"- Fill the cisterns with water, either with a bucket brigade or by plumbing flowing water. Fill so that there are two z-levels of 7-depth water to prevent muddiness. If you want to fill with buckets, designate a pond zone on the level below the main floor. If you feel adventurous and are experienced with water pressure, you can instead route (depressurized!) water to the second-to-bottom level (the one above the up staircases)." +"- If you want to tavern to attract visitors, change the restriction in the location configuration screen." +"- Fill the cisterns with water, either with a bucket brigade or by plumbing flowing water (e.g. with the aquifer_tap library blueprint). Fill so that there are two z-levels of 7-depth water to prevent muddiness. If you want to fill with buckets, you can use the pre-designated pond zones on the level below the main floor. If you feel adventurous and are experienced with water pressure, you can instead route (depressurized!) water to the second-to-bottom level (the one above the up staircases). See the aquifer_tap blueprint for help with getting water from a light aquifer." "- If you are filling the wells with a bucket brigade and at least one well is already constructed, you'll run into issues with the dwarves stealing water from one well to fill another. Temporarily deconstruct the wells or temporarily build grates beneath the wells to block the buckets to avoid this issue. Remember to rebuild the wells or remove the grates afterwards, though!" -- Assign the office to the right of the barracks to your Sheriff/Captain of the Guard to use it as an interrogation room. "" Services Walkthrough: -1) Start this level when your fort grows to about 50 dwarves so everyone has a place to eat. +1) Start this level when your fort grows to about 30 dwarves so everyone has a place to eat. "" -2) Start digging with /services1. Note that this digs out the main level and three levels below for the wells. +2) Start digging with /services1. Note that this digs out the main level and three levels below for the well cisterns. "" -"3) Once the area is dug out, set up important furniture, stockpiles, hospital zone and garbage dump zone with /services2. Run ""quickfort orders"" for /services2." +"3) Once the area is dug out, start populating the rooms with /services2. Generate manager orders for /services2." "" -"4) When the table and chair have been placed in the dining room, the beds are placed in the rented rooms, and the weapon rack and archery targets are constructed in the barracks, run /services3 to build the rest of the furniture and configure your dining room/tavern and barracks. Run ""quickfort orders"" for /services3." +"4) Fill the wells with either bucket brigades or by carefully routing flowing water (you can use the ""blueprinted"" plumbing template or erase it and plan your own). If you are using a bucket brigade, you have to activate the ""Cistern"" pond zones (which you can search for in the Places screen)." "" -5) Fill the wells with either bucket brigades or by carefully routing flowing water. +"5) When your fort has grown some more, or you start needing a jail, run /services3 to extend the rooms a bit more. Generate manager orders for /services3." "" -"6) When your fort is mature enough to need jail cells, run /services4 to set those up, anytime after the restraints are built in the jail cell block. You also get some decorative statues to increase the value of your dining hall. Assign the office to the right of the barracks to your Sheriff/Captain of the Guard to use it as an interrogation room. Run ""quickfort orders"" for /services4." +"6) When your fort is more mature and you need to expand the rooms, run /services4 to finish everything up. If you didn't have a Sheriff/Captain of the Guard to automatically assign to the interrogation room when you ran /services2, you can manually assign the office now. Generate manager orders for /services4." "#dig label(services1) start(18; 18; central stairs) message(Once the area is dug out, continue with /services2.)" -,d,d,d,,d,d,d,,d,d,d,,d,h,d,,j,,d,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,h,d,,d,,d,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,d,d -,d,d,d,d,d,d,d,d,d,d,d,,,,,,d,,,,,,d,d,d,d,d -,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,,d,d,d,d,d -,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,,,,d -,d,d,d,d,d,d,d,d,d,d,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,d,,d,h,d,,d,h,d,,d,h,d,,d,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,,,,d,,,,d,,,,d,,,,d,,,,d +,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,,,,,d +,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,,d,,d,d,d,d,d +,d,d,d,d,d,d,d,d,d,d,d,,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,d,,d,,d,d,d,d,d +,d,d,d,d,d,d,d,d,d,d,d,,h,h,h,h,h,h,h,h,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,d,d,d,d,d,d,d,,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,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,d,d,d,d -,d,d,d,d,d,d,d,d,d,d,d,,,,,,d,,,,,,d,,d,,d,,d -,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,,,,,d,,d,,,,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,,,,d,d,d,d,d,,,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,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 +,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,d,d,d,d,d,d,d,d,d,d,d,,,,d,d,d,d,d,,,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,,,,,,d,,,,,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,,,d,,d,,d,,d,,d ,d,d,d,d,d,d,d,d,d,d,d ,d,d,d,d,d,d,d,d,d,d,d ,d,d,d,d,d,d,d,d,d,d,d @@ -2140,55 +1951,55 @@ Services Walkthrough: #> -,,,,,,,,,,,,,j5,h5,j,,u,,j,h5,j5 -,,,,,,,,,,,,,5,5,5,5,d,5,5,5,5 -,,,,,,,,,,,,,,,,,d -,,,,,,,,,,,,,,,,,d -,,,,,,,,,,,,,j5,h5,j,,d,,j,h5,j5 -,,,,,,,,,,,,,5,5,5,5,d,5,5,5,5 -,,,,,,,,,,,,,,,,,d -,,,,,,,,,,,,,,,,,d -,,,,,,,,,,,,,,,,,d -,,,,,,,,,,,,,,,,,d -,,,,,,,,,,,,,,,,,d -,,,,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d -,,,,,,,,,,,,,,,,,6,,,,,,,,,d -,,,,,,,,,,,,,,,,,d,,,,,,,,,d +,,,,,,,,,,,,,j5,h5,j,,j5,h5,j,,j5,h5,j,,j5,h5,j,,j5,h5,j +,,,,,,,,,,,,,5,5,5,,5,5,5,,5,5,5,,5,5,5,,5,5,5 +,,,,,,,,,,,,,,d,,,,d,,,,d,,,,d,,,,d +,,,,,,,,,,,,,,d,,,,d,,,,d,,,,d,,,,d +,,,,,,,,,,,,,,d,,,,d,,,,d,,,,d,,,,d +,,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,,,,,,,,,,,,,,,,,,,,,,,,,d +,,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,,,,d +,,,,,,,,,,,,,,,,,,,,,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,,,u,d +,,,,,,,,,,,,,,,,,,,,,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,,,,d +,,,,,,,,,,,,,,,,,,,,,,,,,,d ,,,,,,,,,,,,,,,d,d,d,d,d,,,,,,,d -,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,5,5,5 -,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,j,h5,j5 -,,,,,,,,,,,,,,,d,`,`,`,d +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,d,,,,,5,j5 +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,d,d,d,d,d,5,h5 +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,,,,,,5,j ,,,,,,,,,,,,,,,d,d,d,d,d #> -,,,,,,,,,,,,,u5,h5,i,,,,i,h5,u5 - - - -,,,,,,,,,,,,,u5,h5,i,,,,i,h5,u5 - - - - - - - - - -,,,,,,,,,,,,,,,d,d,d,d,d -,,,,,,,,,,,,,,,d,`,`,`,d -,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,i,h5,u5 -,,,,,,,,,,,,,,,d,`,`,`,d +,,,,,,,,,,,,,u5,h5,i,,u5,h5,i,,u5,h5,i,,u5,h5,i,,u5,h5,i +,,,,,,,,mbd,,,,,,mbd,,,,mbd,,,,mbd,,,,mbd,,,,mbd +,,,,,,,mbd,,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd,mbd +,,,,,,,,mbd,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,d,d,d,d,d,,,,,,,,,,,mbd +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,,,,,mbd,,u5 +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,,,,,mbd,mbd,h5 +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,,,,,,,i ,,,,,,,,,,,,,,,d,d,d,d,d #> -,,,,,,,,,,,,,,d,u,,,,u,d +,,,,,,,,,,,,,,d,u,,,d,u,,,d,u,,,d,u,,,d,u + -,,,,,,,,,,,,,,d,u,,,,u,d @@ -2200,57 +2011,55 @@ Services Walkthrough: ,,,,,,,,,,,,,,,d,d,d,d,d ,,,,,,,,,,,,,,,d,`,`,`,d -,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,u,d -,,,,,,,,,,,,,,,d,`,`,`,d +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,,,,,,,d +,,,,,,,,,,,,,,,d,`,`,`,d,,,,,,,,,,,,,u ,,,,,,,,,,,,,,,d,d,d,d,d -"#meta label(services2) start(central stairs) message(Remember to enqueue manager orders for this blueprint. -Once furniture has been placed, continue with /services3.) dining hall anchors, stockpiles, hospital, garbage dump" +"#meta label(services2) start(central stairs) message(Once furniture has been built, continue with /services3.) zones and minimally functional hospital and dining hall" +traffic/services_traffic zones/services_zones -build/services_build place/services_place -name_zones/services_name_zones -query_stockpiles/services_query_stockpiles +build/services_build +smooth/services_smooth "" -"#meta label(services3) start(central stairs) message(Remember to enqueue manager orders for this blueprint.) configure dining room/tavern, build dining hall and hospital furniture" -query_dining/services_query_dining -query_rented_rooms/services_query_rented_rooms +"#meta label(services3) start(central stairs) message(Once furniture has been built, continue with /services4.) expand furnishings" +place2/services_place2 build2/services_build2 +smooth2/services_smooth2 "" -#meta label(services4) start(central stairs) message(Remember to enqueue manager orders for this blueprint.) declare and furnish jail and build decorative furniture +#meta label(services4) start(central stairs) complete furnishings +place3/services_place3 build3/services_build3 -place_jail/services_place_jail -query_jail/services_query_jail -"#zone label(services_zones) start(18; 18) hidden() message(If you'd like to fill your wells via bucket brigade, activate the inactive pond zones one level down from where the wells will be built.) garbage dump, hospital, and pond zones" - -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,ht,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,ht,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,ht,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,ht,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,ht,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,ht,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,,,,,,d,,,,,ht,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,ht,ht,ht,ht,ht,ht,ht,ht,ht -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,,,,`,`,,`,` +#dig label(services_traffic) start(18; 18) hidden() keep lollygaggers out of the cisterns and justice areas + +,`,`,`,,`,`,`,,`,`,`,,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or +,`,`,`,,`,`,`,,`,`,`,,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or +,`,`,`,,`,`,`,,`,`,`,,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or +,,`,,,,`,,,,`,,,,or,,,,or,,,,or,,,,or,,,,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or,or,or,,or,,or,or,or,or,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or,or,or,,or,,or,or,or,or,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or,or,or,,or,,or,or,or,or,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or,or,or,,or,,or,or,or,or,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or +,`,`,`,`,`,`,`,`,`,`,`,,or,or,or,or,or,or,or,or,or,,or,,or,,or,,or,,or +,`,`,`,`,`,`,`,`,`,`,`,,,,,or,,or,,,,,or,,or,,or,,or,,or +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,or,,or,,or,,or,,or +,`,ol,ol,ol,oh,oh,oh,ol,ol,ol,`,`,`,`,`,`,`,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh +,`,or,or,ol,oh,or,oh,ol,or,or,`,,`,,`,`,`,`,`,,`,,oh,oh,oh,oh,oh,oh,oh,oh,oh,or +,`,or,or,ol,oh,oh,oh,ol,or,or,`,`,`,`,`,`,`,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh +,`,or,or,or,ol,oh,ol,or,or,or,`,,,,`,`,`,`,`,,,,or,,or,,or,,or,,or +,`,or,or,or,or,oh,or,or,or,or,`,,,,,,or,,,,,,or,,or,,or,,or,,or +,`,or,or,or,or,oh,or,or,or,or,`,,,,,,,,,,,,or,,or,,or,,or,,or +,`,or,or,or,or,oh,or,or,or,or,` +,`,or,or,or,or,oh,or,or,or,or,` +,`,or,or,or,or,oh,or,or,or,or,` +,`,or,or,or,or,oh,or,or,or,or,` +,`,`,`,oh,oh,oh,oh,oh,`,`,` +,`,`,`,oh,oh,`,oh,oh,`,`,` +,,,,oh,oh,,oh,oh ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` @@ -2259,85 +2068,94 @@ query_jail/services_query_jail #> -,,,,,,,,,,,,,`,apPf,`,,`,,`,apPf,` -,,,,,,,,,,,,,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,`,apPf,`,,`,,`,apPf,` -,,,,,,,,,,,,,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,,,`,,,,,,,,,` -,,,,,,,,,,,,,,,,,`,,,,,,,,,` -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,` -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,`,`,` -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,`,apPf,` +,,,,,,,,,,,,,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or +,,,,,,,,,,,,,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or +,,,,,,,,,,,,,,or,,,,or,,,,or,,,,or,,,,or +,,,,,,,,,,,,,,or,,,,or,,,,or,,,,or,,,,or +,,,,,,,,,,,,,,or,,,,or,,,,or,,,,or,,,,or +,,,,,,,,,,,,,,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or,or +,,,,,,,,,,,,,,,,,,,,,,,,,,or +,,,,,,,,,,,,,or,or,or,or,or,or,or,or,or,or,,,,or +,,,,,,,,,,,,,or,or,or,or,or,or,or,or,or,or,,,,or +,,,,,,,,,,,,,,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,,,,,,,,,,or,or,or +,,,,,,,,,,,,,,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,or +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,or,,,,,or,or +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,or,or,or,or,or,or,or +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,or,or +,,,,,,,,,,,,,,,`,`,`,`,` + +#> + +,,,,,,,,,,,,,or,or,or,,or,or,or,,or,or,or,,or,or,or,,or,or,or + + + + + + + + + + + + + ,,,,,,,,,,,,,,,`,`,`,`,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,,or ,,,,,,,,,,,,,,,`,`,`,`,` -#build label(services_build) start(18; 18) hidden() build basic hospital and dining room anchor - -,b,b,b,,b,b,b,,b,b,b,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,d,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,A,A,A,`,A,A,A,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,r,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,d,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,trackstopN,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,b -,`,`,`,`,`,`,`,`,`,`,`,,,,,d,,d,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,t,`,`,`,`,R -,`,`,`,`,`,`,`,`,`,`,`,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,h -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,l,`,`,`,`,R -,`,`,`,`,`,`,`,`,`,`,`,d,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,t,c,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,R -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,h,`,`,`,`,` -,,,,`,`,,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` +#> -#place label(services_place) start(18; 18) hidden() +,,,,,,,,,,,,,,or,or,,,or,or,,,or,or,,,or,or,,,or,or -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,c,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,z(7x1),,,`,`,`,`,`,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,c,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` + + + + + + + + + + + + +,,,,,,,,,,,,,,,`,`,`,`,` +,,,,,,,,,,,,,,,`,`,`,`,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,,or +,,,,,,,,,,,,,,,`,`,`,`,` + +"#zone label(services_zones) start(18; 18) hidden() message(Don't forget to assign a doctor to the hospital! +If you'd like to fill your wells via bucket brigade instead of routing water (e.g. with the aquifer_tap library blueprint), activate the inactive pond zones one level down from where the wells will be built.) garbage dump, hospital, taverrn, barracks, archery range, and pond zones" +,,,,,,,,,,,,j/jail1,"j/jail1{name=""Jail 1""}(4x5)",j/jail1,j/jail1,j/jail1,"j{name=""Jail 2""}(4x5)",,,,"j{name=""Jail 3""}(4x5)",,,,"j{name=""Jail 4""}(4x5)",,,,"j{name=""Jail 5""}(4x5)" +,"b{location=tavern/bigpub name=""Rented room 1""}(1x3)","b{location=tavern/bigpub name=""Rented room 2""}(1x3)","b{location=tavern/bigpub name=""Rented room 3""}(1x3)",,"b{location=tavern/bigpub name=""Rented room 4""}(1x3)","b{location=tavern/bigpub name=""Rented room 5""}(1x3)","b{location=tavern/bigpub name=""Rented room 6""}(1x3)",,"b{location=tavern/bigpub name=""Rented room 7""}(1x3)","b{location=tavern/bigpub name=""Rented room 8""}(1x3)","b{location=tavern/bigpub name=""Rented room 9""}(1x3)",j/jail1,j/jail1,j/jail1,j/jail1,j/jail1,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,j/jail1,j/jail1,j/jail1,j/jail1,j/jail1,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,j/jail1,j/jail1,j/jail1,j/jail1,j/jail1,`,`,`,,`,`,`,,`,`,`,,`,`,` +"h{location=tavern/bigpub allow=residents name=""Grand hall tavern""}(13x31)",,`,,,,`,,,,`,,,j/jail1,j/jail1,j/jail1,j/jail1,,`,,,,`,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,`,o/interrogation,o/interrogation,o/interrogation,o/interrogation,o/interrogation,o/interrogation,o/interrogation +,`,`,`,`,`,`,`,`,`,`,`,,"B{name=""Marksdwarf barracks""}a{name=""Shooting gallery"" shoot_from=""south""}",Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,,`,o/interrogation,"j{name=""Drunk tank""}",j,j,j,j,o/interrogation +,`,`,`,`,`,`,`,`,`,`,`,,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,,`,o/interrogation,j,"o/interrogation{name=""Interrogation room"" assigned_unit=sheriff}(3x3)",`,`,j,o/interrogation +,`,`,`,`,`,`,`,`,`,`,`,,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,,`,o/interrogation,j,`,`,`,j,o/interrogation +,`,`,`,`,`,`,`,`,`,`,`,,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,`,`,o/interrogation,j,`,`,`,j,o/interrogation +,`,`,`,`,`,`,`,`,`,`,`,,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,,`,o/interrogation,j,j,j,j,j,o/interrogation +,`,`,`,`,`,`,`,`,`,`,`,,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,,,,,o/interrogation,o/interrogation,o/interrogation,o/interrogation,o/interrogation,o/interrogation,o/interrogation +,`,`,`,`,`,`,`,`,`,`,`,,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,Ba,,m{location=hospital name=Hospital allow=residents},,m,,m,,m,,m +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,m,,m,,m,,m,,m +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,m,,m,,m,,m,,m +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,m,m,m,m,m,m,m,m,m,m +,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,m,m,m,m,m,m,m,m,m,m +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,m,m,m,m,m,m,m,m,m,m +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,m,,m,,m,,m,,m +,`,`,`,`,`,`,`,`,`,`,`,,,,,,"d{name=""Garbage dump""}",,,,,,m,,m,,m,,m,,m +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,m,,m,,m,,m,,m ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` @@ -2345,35 +2163,57 @@ query_jail/services_query_jail ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,,`,` -,f(5x5),,,`,`,,f(5x5),,,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` +,`,`,`,`,`,,`,`,`,`,` + +#> + +,,,,,,,,,,,,,`,"p{name=""Jail 1 cistern"" pond=true active=false}",`,,`,"p{name=""Jail 2 cistern"" pond=true active=false}",`,,`,"p{name=""Jail 3 cistern"" pond=true active=false}",`,,`,"p{name=""Jail 4 cistern"" pond=true active=false}",`,,`,"p{name=""Jail 5 cistern"" pond=true active=false}",` +,,,,,,,,,,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,,,,,,,,,,,,,`,,,,`,,,,`,,,,`,,,,` +,,,,,,,,,,,,,,`,,,,`,,,,`,,,,`,,,,` +,,,,,,,,,,,,,,`,,,,`,,,,`,,,,`,,,,` +,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,,,,` +,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,`,,,,,`,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,`,`,`,`,`,`,"p{name=""Hospital cistern"" pond=true active=false}" +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,`,` +,,,,,,,,,,,,,,,`,`,`,`,` + +#place label(services_place) start(18; 18) hidden() -#query label(services_name_zones) start(18; 18) hidden() - -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,"z{name=""Bolts quantum"" quantum=true}",`,`,`,`,`,`,,`,,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,"{namezone name=""hospital""}" -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,"{namezone name=""garbage dump""}" -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,"b/soap{name=""Soap"" take_from=""Metalworker quantum""}:=soap" +,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,b/soap +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,"c{name=""Garbage dump"" links_only=true}",,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,`,,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` @@ -2381,7 +2221,7 @@ query_jail/services_query_jail ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,,`,` -,`,`,`,`,`,,`,`,`,`,` +,"c{name=""Prepared food"" barrels=-1}:+preparedmeals(5x5)",,,,`,,"c{name=""Booze"" barrels=-1}:+booze(5x5)",,,,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` @@ -2389,85 +2229,86 @@ query_jail/services_query_jail #> -,,,,,,,,,,,,,`,"{namezone name=""jail3 well""}",`,,`,,`,"{namezone name=""jail4 well""}",` -,,,,,,,,,,,,,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,`,"{namezone name=""jail1 well""}",`,,`,,`,"{namezone name=""jail2 well""}",` -,,,,,,,,,,,,,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,,,`,,,,,,,,,` -,,,,,,,,,,,,,,,,,`,,,,,,,,,` +,,,,,,,,,,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,,,,,,,,,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,,,,,,,,,,,,,`,,,,`,,,,`,,,,`,,,,` +,,,,,,,,,,,,,,`,,,,`,,,,`,,,,`,,,,` +,,,,,,,,,,,,,,`,,,,`,,,,`,,,,`,,,,` +,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,"z{name=""Bolts feeder"" containers=0 take_from=""Metalworker quantum""}:-cat_ammo/type/,other/+bolts(10x1)",,,,,,,,,`,,,,` +,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,`,`,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` +,,,,,,,,,,,,,,,,,,,,,,,,,,` ,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,` -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,`,`,` -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,`,"{namezone name=""hospital well""}",` -,,,,,,,,,,,,,,,`,`,`,`,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,`,,,,,`,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,`,`,`,`,`,`,` +,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,,,,,,`,` ,,,,,,,,,,,,,,,`,`,`,`,` -"#query label(services_query_stockpiles) start(18; 18) hidden() message(Configure the training ammo stockpile to take from the metalworker quantum on the industry level. Assign a minecart to the training ammo quantum dump with ""assign-minecarts all"") configure stockpiles" - -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,"{quantum name=""training quantum""}",`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,"{quantumstopfromsouth name=""Training quantum""}{givename name=""training dumper""}",`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,nocontainers,{bolts}{forbidmetalbolts}{forbidartifactammo},"{givename name=""training bolts""}",`,`,`,`,`,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,"{givename name=""garbage dump""}" -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,` +"#build label(services_build) start(18; 18) hidden() message(Remember to enqueue manager orders for this blueprint. +Assign a minecart to the training ammo quantum dump with ""assign-minecarts all"") build basic hospital, dining room, and barracks" + +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,A,A,A,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,"trackstopS{name=""Bolts dumper"" take_from=""Bolts feeder"" route=""Bolts quantum""}",`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,h,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,b,`,`,`,`,`,`,`,`,,`,,`,,`,,b,,R +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,d,,d +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,h,`,`,`,`,t,`,`,`,l +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,`,,d +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,`,,R +,`,`,`,`,`,`,t,c,c,t,` +,`,`,`,`,`,`,t,c,c,t,` +,`,`,`,`,`,`,t,c,c,t,` +,`,`,`,`,`,`,t,c,c,t,` ,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,h,`,`,`,`,` ,,,,`,`,,`,` -,preparedfood,"{givename name=""prepared food""}",`,`,`,,booze,"{givename name=""booze""}",`,`,` +,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` -"#query label(services_query_dining) start(18; 18) hidden() message(The tavern is restricted to residents only by default. If you'd like your tavern to attract vistors, please go to the (l)ocation menu and change the restriction.) set up dining room/tavern and barracks" - -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,r+&w,r+&w,r+&w,`,r+&w,r+&w,r+&w,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,r{+ 2}&,,,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +#dig label(services_smooth) start(18; 18) hidden() smooth the floor where the pedestal will go + +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,"r{+ 12}&h{givename name=""grand hall""}lai^l{Up}r^q",,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,s1,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,`,,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` @@ -2481,29 +2322,29 @@ query_jail/services_query_jail ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` -#query label(services_query_rented_rooms) start(18; 18) hidden() attach rented rooms to tavern - -,r&l-&,r&l-&,r&l-&,,r&l-&,r&l-&,r&l-&,,r&l-&,r&l-&,r&l-&,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +#place label(services_place2) start(18; 18) hidden() jail food and booze + +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,"c{name=""Jail booze"" barrels=-1 take_from=""Booze""}:+booze(1x2)",,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,"c{name=""Jail food"" barrels=-1 take_from=""Prepared food""}:+preparedmeals(2x1)",,`,,`,`,`,,`,`,` +,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,~,`,`,`,`,`,`,,`,,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,~,,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,`,,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` @@ -2511,171 +2352,77 @@ query_jail/services_query_jail ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` - -"#build label(services_build2) start(18; 18) hidden() build rest of hospital and dining room, doors, prep for jail" - -,~,~,~,,~,~,~,,~,~,~,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,v,`,d,`,d,`,v,` -,f,`,h,,f,`,h,,f,`,h,,`,`,`,,`,,`,`,` -,,d,,,,d,,,,d,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,v,`,d,`,d,`,v,`,,`,`,c,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,~,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,b,~,~,~,`,~,~,~,h,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,b,`,`,`,~,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,b,`,`,`,`,`,`,`,`,~,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,b,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,b,`,`,`,`,`,`,`,a,,b,,b,,b,,~ -,`,`,`,`,`,`,`,`,`,`,`,,,,,~,,~,,,,,d,,d,,d,,d -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,~,`,`,`,d,~ -,`,c,t,t,c,`,c,t,t,c,`,~,`,d,`,`,`,`,`,d,`,d,`,`,`,`,`,`,~ -,`,c,t,t,c,`,c,t,t,c,`,,`,,`,`,`,`,`,,`,,`,`,`,~,`,`,`,d,~ -,`,c,t,t,c,`,c,t,t,c,`,~,`,d,`,`,`,`,`,d,`,d,`,`,`,`,`,`,f -,`,c,t,~,~,`,c,t,t,c,`,,,,`,`,`,`,`,,,,`,`,`,t,`,`,`,d,~ -,`,c,t,t,c,`,c,t,t,c,`,,,,,,`,,,,,,d,,d,,d,,d -,`,c,t,t,c,`,c,t,t,c,`,,,,,,,,,,,,b,,b,,b,,b -,`,c,t,t,c,`,c,t,t,c,` -,`,c,t,t,c,`,c,t,t,c,` -,`,c,t,t,c,`,c,t,t,c,` -,`,c,t,t,c,`,c,t,t,c,` +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ + +#build label(services_build2) start(18; 18) hidden() message(Remember to enqueue manager orders for this blueprint.) expand each room + +,`,b,`,,`,b,`,,`,b,`,,`,`,`,,`,`,`,,t,l,b,,`,`,`,,`,`,` +,`,h,`,,`,h,`,,`,h,`,,`,`,`,,`,`,`,,c,v,`,,`,`,`,,`,`,` +,`,f,`,,`,f,`,,`,f,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,`,,,,`,,,,`,,,,`,,,,`,,,,d,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,A,A,A,~,~,~,A,A,A,A,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,c,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,t,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,~,`,`,`,`,`,`,`,`,`,`,`,c,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,h,b,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,~,`,`,`,`,`,`,`,h +,`,`,`,`,`,`,`,`,`,`,`,,~,`,`,`,`,`,`,`,b,,b,,b,,b,,~,,~ +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,d,,d,,d,,~,,~ +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,` +,`,`,`,`,`,F,`,`,`,`,`,,`,,`,`,`,`,`,,`,,~,`,`,`,`,~,`,`,`,~ +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,`,,~ +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,`,,~ +,`,t,c,c,t,`,~,~,~,~,` +,`,t,c,c,t,`,~,~,~,~,` +,`,t,c,c,t,`,~,~,~,~,` +,`,t,c,c,t,`,~,~,~,~,` ,`,`,`,`,`,`,`,`,`,`,` ,h,`,`,`,`,~,`,`,`,`,h -,,,,d,d,,d,d -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,,`,`,`,`,` - -#> - -,,,,,,,,,,,,,`,`,`,,`,,`,`,` -,,,,,,,,,,,,,`,`,`,d,`,d,`,`,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,`,`,`,,`,,`,`,` -,,,,,,,,,,,,,`,`,`,d,`,d,`,`,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,` -,,,,,,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,` -,,,,,,,,,,,,,,,,,`,,,,,,,,,` -,,,,,,,,,,,,,,,,,d,,,,,,,,,` -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,,d -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,`,`,` -,,,,,,,,,,,,,,,`,`,`,`,`,,,,,,`,`,` -,,,,,,,,,,,,,,,`,`,`,`,` -,,,,,,,,,,,,,,,`,`,`,`,` - -#dig label(services_traffic) start(18; 18) hidden() promote the tavern as the place to eat - -,ol,ol,ol,,ol,ol,ol,,ol,ol,ol,,or,or,or,,or,,or,or,or -,ol,ol,ol,,ol,ol,ol,,ol,ol,ol,,or,or,or,or,or,or,or,or,or -,ol,ol,ol,,ol,ol,ol,,ol,ol,ol,,or,or,or,,or,,or,or,or -,,ol,,,,ol,,,,ol,,,,,,,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,,or,,or,or,or,,or,or,or,or,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,or,or,or,or,or,or,,or,or,or,or,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,,or,,or,or,or,,or,or,or,or,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,,,,,or,,,,,,or,or,or,or,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,or,or,or,or,or,or,,or,or,or,or,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,or,or,or,or,or,or,,,,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,or,or,or,or,or,or,or,or,or,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,or,or,or,or,or,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,or,or,or,or,or,or,or,or,or,,or,,or,,or,,or -,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,ol,,,,,or,,or,,,,,or,,or,,or,,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,,,,oh,oh,oh,oh,oh,,,,or,or,or,or,or,or,or,or,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,`,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,or,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,,`,,oh,`,`,`,oh,,`,,oh,oh,oh,`,oh,or,or,or,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,`,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,or,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,,,,oh,oh,oh,oh,oh,,,,or,or,or,or,or,or,or,or,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,,,,,,`,,,,,,or,,or,,or,,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,,,,,,,,,,,,or,,or,,or,,or -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh -,,,,oh,oh,,oh,oh -,oh,oh,oh,oh,oh,,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,,oh,oh,oh,oh,oh -,oh,oh,oh,oh,oh,,oh,oh,oh,oh,oh - -"#build label(services_build3) start(18; 18) hidden() jail, statues" - -,~,~,~,,~,~,~,,~,~,~,,t,l,b,,`,,t,l,b -,`,`,`,,`,`,`,,`,`,`,,c,~,`,~,`,~,c,~,` -,~,`,~,,~,`,~,,~,`,~,,`,`,`,,`,,`,`,` -,,~,,,,~,,,,~,,,,,,,` -,`,`,`,s,`,`,`,s,`,`,`,,t,l,b,,`,,t,l,b,,j,`,`,`,j -,`,`,`,`,`,`,`,`,`,`,`,,c,~,`,~,`,~,c,~,`,,`,`,~,`,` -,s,`,`,`,`,`,`,`,`,`,s,,`,`,`,,`,,`,`,`,,v,`,t,`,v -,`,`,`,`,`,`,`,`,`,`,`,,,,,,~,,,,,,`,`,c,`,` -,s,`,`,`,`,`,`,`,`,`,s,,~,~,~,~,`,~,~,~,~,,j,`,`,`,j -,`,`,`,`,`,`,`,`,`,`,`,,~,`,`,`,~,`,`,`,`,,,,d -,s,`,`,`,`,`,`,`,`,`,s,,~,`,`,`,`,`,`,`,`,~,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,~,`,`,`,`,`,`,`,` -,s,`,`,`,`,`,`,`,`,`,s,,~,`,`,`,`,`,`,`,~,,~,,~,,~,,~ -,`,`,`,`,`,`,`,`,`,`,`,,,,,~,,~,,,,,~,,~,,~,,~ -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,s,`,~,`,`,`,~,~ -,`,~,~,~,~,`,~,~,~,~,`,~,`,~,`,`,`,`,`,~,`,~,`,`,`,`,`,`,~ -,`,~,~,~,~,`,~,~,~,~,`,,s,,`,`,`,`,`,,s,,`,`,`,~,`,`,`,~,~ -,`,~,~,~,~,`,~,~,~,~,`,~,`,~,`,`,`,`,`,~,`,~,`,`,`,`,`,`,~ -,`,~,~,~,~,`,~,~,~,~,`,,,,`,`,`,`,`,,,,`,s,`,~,`,`,`,~,~ -,`,~,~,~,~,`,~,~,~,~,`,,,,,,`,,,,,,~,,~,,~,,~ -,`,~,~,~,~,`,~,~,~,~,`,,,,,,,,,,,,~,,~,,~,,~ -,`,~,~,~,~,`,~,~,~,~,` -,`,~,~,~,~,`,~,~,~,~,` -,`,~,~,~,~,`,~,~,~,~,` -,`,~,~,~,~,`,~,~,~,~,` -,`,`,`,`,`,`,`,`,`,`,` -,~,`,s,`,`,~,`,`,s,`,~ -,,,,~,~,,~,~ +,,,,`,`,,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` -#place label(services_place_jail) start(18; 18) hidden() - -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,`,f(1x2),`,`,`,`,`,f(1x2) -,`,`,`,,`,`,`,,`,`,`,,f(2x1),`,`,,`,,f(2x1),`,` -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,f(1x2),`,`,`,`,`,f(1x2),,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,f(2x1),`,`,,`,,f(2x1),`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +#dig label(services_smooth2) start(18; 18) hidden() smooth the floor where the statues will go + +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` +,`,`,`,s1,`,`,`,s1,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,s1,`,`,`,`,`,`,`,`,`,s1,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,s1,`,`,`,`,`,`,`,`,`,s1,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,s1,`,`,`,`,`,`,`,`,`,s1,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,` +,s1,`,`,`,`,`,`,`,`,`,s1,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,`,,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` +,`,`,s1,`,`,`,`,`,s1,`,` ,,,,`,`,,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` @@ -2683,29 +2430,29 @@ query_jail/services_query_jail ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` -#query label(services_query_jail) start(18; 18) hidden() message(Assign the office to the right of the barracks to your Sheriff/Captain of the Guard to use it as your interrogation room) set up barracks and jail - -,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,,`,`,` -,`,`,`,,`,`,`,,`,`,`,,`,"r--&j{givename name=""jail3""}","{booze}{givename name=""booze""}",`,`,`,`,"r--&j{givename name=""jail4""}","{booze}{givename name=""booze""}" -,`,`,`,,`,`,`,,`,`,`,,"{preparedfood}{givename name=""prepared food""}",t{Down 4}&,t{Down 4}&,,`,,"{preparedfood}{givename name=""prepared food""}",t{Down 4}&,t{Down 4}& -,,`,,,,`,,,,`,,,,,,,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,,`,,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,"r--&j{givename name=""jail1""}","{booze}{givename name=""booze""}",`,`,`,`,"r--&j{givename name=""jail2""}","{booze}{givename name=""booze""}",,`,`,"r+&{givename name=""sheriff's office""}",`,` -,`,`,`,`,`,`,`,`,`,`,`,,"{preparedfood}{givename name=""prepared food""}",t{Down 22}{Left 10}&,t{Down 22}{Left 4}&,,`,,"{preparedfood}{givename name=""prepared food""}",t{Left 6}&,t{Left 6}&,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,,,"{givename name=""interrogation""}" -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +#place label(services_place3) start(18; 18) hidden() remaining jail food and booze + +,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,`,`,`,,`,`,`,,`,`,`,,`,`,"c{name=""Jail booze"" barrels=-1 take_from=""Booze""}:+booze(1x2)",,`,`,"c{name=""Jail booze"" barrels=-1 take_from=""Booze""}:+booze(1x2)",,`,`,~,,`,`,"c{name=""Jail booze"" barrels=-1 take_from=""Booze""}:+booze(1x2)",,`,`,"c{name=""Jail booze"" barrels=-1 take_from=""Booze""}:+booze(1x2)" +,`,`,`,,`,`,`,,`,`,`,,"c{name=""Jail food"" barrels=-1 take_from=""Prepared food""}:+preparedmeals(2x1)",,`,,"c{name=""Jail food"" barrels=-1 take_from=""Prepared food""}:+preparedmeals(2x1)",,`,,~,`,`,,"c{name=""Jail food"" barrels=-1 take_from=""Prepared food""}:+preparedmeals(2x1)",,`,,"c{name=""Jail food"" barrels=-1 take_from=""Prepared food""}:+preparedmeals(2x1)",,` +,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,~,`,`,`,`,`,`,,`,,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,`,,,,,,`,,`,,`,,` -,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,~,,,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,`,,`,,`,,`,,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` @@ -2713,48 +2460,86 @@ query_jail/services_query_jail ,`,`,`,`,`,`,`,`,`,`,` ,`,`,`,`,`,`,`,`,`,`,` ,,,,`,`,,`,` +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ +,~,~,~,~,~,,~,~,~,~,~ + +#build label(services_build3) start(18; 18) hidden() message(Remember to enqueue manager orders for this blueprint.) finalize furniture + +,b,~,b,,b,~,b,,b,~,b,,t,l,b,,t,l,b,,~,~,~,,t,l,b,,t,l,b +,h,~,h,,h,~,h,,h,~,h,,c,v,`,,c,v,`,,~,~,`,,c,v,`,,c,v,` +,f,~,f,,f,~,f,,f,~,f,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` +,,d,,,,d,,,,d,,,,d,,,,d,,,,~,,,,d,,,,d +,`,`,`,s,`,`,`,s,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,,,,,` +,s,`,`,`,`,`,`,`,`,`,s,,~,~,~,~,~,~,~,~,~,~,`,,`,,v,v,v,v,v +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,,`,,v,`,~,`,v +,s,`,`,`,`,`,`,`,`,`,s,,`,`,`,`,`,`,`,`,`,`,`,,`,,v,`,~,`,v +,`,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,~,`,`,`,`,`,`,d,`,d,v,`,~,`,v +,s,`,`,`,`,`,`,`,`,`,s,,`,`,`,`,`,`,`,`,`,~,~,,`,,v,v,v,v,v +,`,`,`,`,`,`,`,`,`,`,`,,~,h,h,h,h,h,h,h,~ +,s,`,`,`,`,`,`,`,`,`,s,,~,b,b,b,b,b,b,b,~,,~,,~,,~,,~,,~ +,`,`,`,`,`,`,`,`,`,`,`,,,,,d{name=Services},,d{name=Services},,,,,~,,~,,~,,~,,~ +,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,`,`,`,`,`,`,`,`,`,`,d,`,d{name=Services},`,`,`,`,`,d{name=Services},`,d,`,`,`,`,`,`,`,`,`,` +,`,t,c,`,`,~,`,`,c,t,`,,s,,`,`,`,`,`,,s,,~,`,`,t,`,~,`,`,`,~ +,`,t,c,`,`,`,`,`,c,t,`,d,`,d{name=Services},`,`,`,`,`,d{name=Services},`,d,`,`,`,`,`,`,`,`,`,` +,`,t,c,c,t,`,t,c,c,t,`,,,,`,`,`,`,`,,,,`,,`,,`,,`,,` +,`,t,c,c,t,`,t,c,c,t,`,,,,,,`,,,,,,d,,d,,d,,d,,` +,`,t,c,c,t,`,t,c,c,t,`,,,,,,,,,,,,b,,b,,b,,b,,` +,`,~,~,~,~,`,~,~,~,~,` +,`,~,~,~,~,`,~,~,~,~,` +,`,~,~,~,~,`,~,~,~,~,` +,`,~,~,~,~,`,~,~,~,~,` +,`,`,`,`,`,`,`,`,`,`,` +,~,`,s,`,`,~,`,`,s,`,~ +,,,,d,d,,d,d ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` ,`,`,`,`,`,,`,`,`,`,` -#notes label(guildhall_help) +#notes label(guildhall_help) guildhall level walkthrough "Eight 7x7 rooms for guildhalls, temples, libraries, etc." -Screenshot: https://drive.google.com/file/d/17jHiCKeZm6FSS-CI4V0r0GJZh09nzcO_ +Screenshot: https://drive.google.com/file/d/1mt66QOkfBqFLtw6AJKU6GNYmhB72XSJG "" Features: -"- Big rooms, optionally pre-furnished. Double-thick walls to ensure engravings add value to the ""correct"" side. Declare locations from the pre-created meeting zones as needed." +"- Big rooms, optionally pre-furnished. Double-thick walls to ensure engravings add maximum value. Pre-made meeting zones can be made into locations (e.g. guildhalls) as needed. Optional pre-configured library/temple combo." +"" +"Each 7x7 room will be worth about 3000 when fully engraved (with random quality of engravings). This will get you past the first ""tier"" threshold at standard difficulty settings. Add artifacts to the display cases or other fancy decorations if you need more value. You can also assign multiple 7x7 rooms to the same zone or location and gain more value that way." "" Guildhall Walkthrough: 1) Dig out the rooms with /guildhall1. "" -"2) Once the area is dug out, pre-create the zones and add doors and a few statues with /guildhall2. Run ""quickfort orders"" for /guildhall2." +"2) Once the area is dug out, choose a /guildhall2 variant based on your needs. For your first copy of this level, you probably want /guildhall2_default, which configures the temple and library zones as fully usable locations. For later copies you probably want to create all locations yourself, so you should choose /guildhall2_no_locations if you want the default furnishings or /guildhall2_custom for just the zones and doors, leaving the furnishings up to you. Generate manager orders for your chosen variant." "" -"3) Furnish individual rooms manually, or get default furnishings for a variety of room types by running /guildhall3. If you use the default furnishings, also run ""quickfort orders"" for /guildhall3. Declare appropriate locations from the pre-created zones as you need guildhalls, libraries, and temples. If you'd like a ""no specific diety"" temple declared for the top room and a library declared for the bottom room, run /guildhall4. Both locations will be ""Residents only"" by default, but you can change this in the (l)ocation menu if you want them to attract visitors. If you need more rooms, you can dig another /guildhall1 in an unused z-level." +"Note that the default temple and library are created ""Citizens and Long-Term Residents only"", but you can change this in the location configuration screen if you want them to attract visitors. If you need more rooms, you can dig another /guildhall1 in an unused z-level." "#dig label(guildhall1) start(15; 15; central stairs) message(Once the area is dug out, continue with /guildhall2.)" ,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,3,3,3,3,3,3,3,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,d,d,3,d,d,d,d,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,d,d,3,d,d,d,d,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,d,d,3,d,d,d,d,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,d,d,d,d,3,d,d,d,d,d,d,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,d,d,3,d,d,d,d,,,d,d,d,d,d,d,d -,,,,,,,d,,,,,,3,,d,,,,,,d -,,,,,,,d,,,,,,3,d,d,,,,,,d -,,d,d,d,d,d,d,d,,,,,3,,d,,,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,,3,3,3,3,3,,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,d,d,d,3,`,`,`,3,3,3,3,3,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,d,,3,`,`,`,3,,d,,3,3,3,3,3,d,d -,,d,d,d,d,d,d,d,d,d,d,3,`,`,`,3,d,d,d,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,,3,3,3,3,3,,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,,,,,d,,d,,,,,d,d,d,d,d,d,d -,,,,,,,d,,,,,,d,d,d,,,,,,d -,,,,,,,d,,,,,,d,,d,,,,,,d ,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d -,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,,,,,,,,,d,,,,d,,d,,,,d +,,,,,,,,,,d,d,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,d,,,d,,d,,,d,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,d,,d,d,d,d,d,,d,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,d,,d,`,`,`,d,,d,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,d,,d,d,d,d,d,,d,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,d,,,d,,d,,,d,,d,d,d,d,d,d,d +,,,,,,,,,,d,d,d,d,d,d,d,d,d +,,,,,,,,,d,,,,d,,d,,,,d +,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d ,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d ,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d ,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d @@ -2762,33 +2547,45 @@ Guildhall Walkthrough: ,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d -#meta label(guildhall2) +#meta label(guildhall2_default) furnished with default temple and library +locations/guildhall_locations doors/guildhall_doors +furnish/guildhall_furnish +smooth/guildhall_smooth +"" +#meta label(guildhall2_no_locations) fully furnished and zoned but no locations zones/guildhall_zones -"#build label(guildhall_doors) start(15; 15; central stairs) hidden() message(Remember to enqueue manager orders for this blueprint. -Smooth/engrave tiles, furnish rooms, and declare locations as required.) build doors" - +doors/guildhall_doors +furnish/guildhall_furnish +smooth/guildhall_smooth +"" +#meta label(guildhall2_custom) only zones and doors +zones/guildhall_zones +doors/guildhall_doors +"" +"#zone label(guildhall_locations) start(15; 15; central stairs) hidden() message(The library and temple are restricted to residents only by default. If you'd like them to attract vistors, please go to the location screen and change the restrictions.) declare a library and temple" +,m(9x9),,,,,,,,,"m{location=temple name=""All-inclusive temple"" allow=residents}(9x9)",,,,,,,,,m(9x9) +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,` +,,,,,,,,,~,,,,~,,~,,,,~ +,m(9x9),,,,,,,,,`,`,`,`,`,`,`,`,`,m(9x9) +,,`,`,`,`,`,`,`,,`,,,~,,~,,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,~,`,~,`,,,,`,~,`,~,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,,`,,`,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,~,`,~,`,,,,`,~,`,~,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,,~,,~,,,`,,`,`,`,`,`,`,` +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,m(9x9),,,,,,,,~,m{location=library name=Library allow=residents}(9x9),,,~,,~,,,,m(9x9) ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,,,,,,d,,,,,,d,,d,,,,,,d -,,,,,,,d,,,,,,`,s,`,,,,,,d -,,`,`,`,`,`,`,`,,,,,d,,d,,,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,d,`,d,`,,,,`,d,`,d,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,s,,`,,`,,`,,s,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,d,`,d,`,,,,`,d,`,d,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,,d,,d,,,,,`,`,`,`,`,`,` -,,,,,,,d,,,,,,`,s,`,,,,,,d -,,,,,,,d,,,,,,d,,d,,,,,,d ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,`,d,d,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` @@ -2796,7 +2593,7 @@ Smooth/engrave tiles, furnish rooms, and declare locations as required.) build d ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -#zone label(guildhall_zones) start(15; 15; central stairs) hidden() designate zones +"#zone label(guildhall_zones) start(15; 15; central stairs) hidden() designate zones, ready for custom locations to be assigned" ,m(9x9),,,,,,,,,m(9x9),,,,,,,,,m(9x9) ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` @@ -2804,21 +2601,21 @@ Smooth/engrave tiles, furnish rooms, and declare locations as required.) build d ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,,,,,,~,,,,,,~,,~,,,,,,~ -,m(9x9),,,,,,~,,,,,,`,~,`,,,,m(9x9),,~ -,,`,`,`,`,`,`,`,,,,,~,,~,,,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,,,,,,,,~,,,,~,,~,,,,~ +,m(9x9),,,,,,,,,`,`,`,`,`,`,`,`,`,m(9x9) +,,`,`,`,`,`,`,`,,`,,,~,,~,,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,~,`,~,`,,,,`,~,`,~,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,~,,`,,`,,`,,~,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,,`,,`,,`,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,~,`,~,`,,,,`,~,`,~,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,,~,,~,,,,,`,`,`,`,`,`,` -,,,,,,,~,,,,,,`,~,`,,,,,,~ -,m(9x9),,,,,,~,,,m(9x9),,,~,,~,,,,m(9x9),,~ +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,,~,,~,,,`,,`,`,`,`,`,`,` +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,m(9x9),,,,,,,,~,m(9x9),,,~,,~,,,,m(9x9) +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,`,~,~,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` @@ -2826,307 +2623,616 @@ Smooth/engrave tiles, furnish rooms, and declare locations as required.) build d ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -"#build label(guildhall3) start(15; 15; central stairs) message(Remember to enqueue manager orders for this blueprint.) furnish 4 guildhalls, 3 temples, and a library" +#build label(guildhall_doors) start(15; 15; central stairs) hidden() message(Remember to enqueue manager orders for this blueprint.) build doors -,,`,`,`,`,s,`,`,,,`,s,`,c,`,`,f,,,`,`,s,`,`,`,` -,,`,`,c,`,`,`,`,,,`,`,h,~a,`,`,f,,,`,`,`,`,c,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,,,,,,,,d,,,,d,,d,,,,d +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,,d{name=Guidhall},,d{name=Guidhall},,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,d,`,d{name=Guidhall},`,,,,`,d{name=Guidhall},`,d,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,,`,,`,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,d,`,d{name=Guidhall},`,,,,`,d{name=Guidhall},`,d,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,,d{name=Guidhall},,d{name=Guidhall},,,`,,`,`,`,`,`,`,` +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,,,,,,,,,d,,,,d,,d,,,,d +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` + + +"#build label(guildhall_furnish) start(15; 15; central stairs) hidden() furnish 4 guildhalls, 3 temples, and a library" + + +,,F,`,`,`,s,`,`,,,F,`,`,c,`,`,f,,,`,`,s,`,`,`,F +,,`,`,c,`,`,`,`,,,`,`,`,~a,h,`,s,,,`,`,`,`,c,`,` ,,`,c,t,c,`,`,s,,,`,`,`,`,`,`,`,,,s,`,`,c,t,c,` ,,`,`,c,`,c,`,`,,,`,`,`,`,`,`,`,,,`,`,c,`,c,`,` ,,s,`,`,c,t,c,`,,,`,`,c,c,c,`,`,,,`,c,t,c,`,`,s -,,`,`,`,`,c,`,`,~,~,`,`,c,c,c,`,`,~,~,`,`,c,`,`,`,` -,,`,`,s,`,`,`,t,,,t,`,`,`,`,`,t,,,t,`,`,`,s,`,` -,,,,,,,~,,,,,,~,,~,,,,,,~ -,,,,,,,~,,,,,,`,~,`,,,,,,~ -,,f,f,`,`,`,`,t,,,,,~,,~,,,,,t,`,`,`,`,f,f -,,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,` -,,`,`,`,`,c,c,`,~,`,~,`,,,,`,~,`,~,`,c,c,`,`,`,` -,,c,~a,`,`,c,c,`,,~,,`,,`,,`,,~,,`,c,c,`,`,~a,c +,,`,`,`,`,c,`,`,,,`,`,c,c,c,`,`,,,`,`,c,`,`,`,` +,,`,`,s,`,`,`,`,,,t,`,`,`,`,`,t,,,`,`,`,`,s,`,` +,,,,,,,,,~,,,,~,,~,,,,~ +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,,f,s,`,`,`,`,t,,`,,,~,,~,,,`,,t,`,`,`,`,s,f +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` ,,`,h,`,`,c,c,`,~,`,~,`,,,,`,~,`,~,`,c,c,`,`,h,` -,,s,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,s -,,`,`,`,`,`,`,t,,,,,~,,~,,,,,t,`,`,`,`,`,` -,,,,,,,~,,,,,,`,~,`,,,,,,~ -,,,,,,,~,,,,,,~,,~,,,,,,~ -,,`,`,s,`,`,`,t,,,t,`,`,`,`,`,t,,,t,`,`,`,s,`,` -,,`,`,`,`,c,`,`,~,~,`,`,`,`,`,`,`,~,~,`,`,c,`,`,`,` +,,c,~a,`,`,c,c,`,,`,,`,,`,,`,,`,,`,c,c,`,`,~a,c +,,`,`,`,`,c,c,`,~,`,~,`,,,,`,~,`,~,`,c,c,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` +,,F,`,`,`,`,`,t,,`,,,~,,~,,,`,,t,`,`,`,`,`,F +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,,,,,,,,,~,,,,~,,~,,,,~ +,,`,`,s,`,`,`,`,,,t,`,`,`,`,`,t,,,`,`,`,`,s,`,` +,,`,`,`,`,c,`,`,,,`,`,`,`,`,`,`,,,`,`,c,`,`,`,` ,,s,`,`,c,t,c,`,,,t,c,`,`,`,c,t,,,`,c,t,c,`,`,s ,,`,`,c,`,c,`,`,,,t,c,`,`,`,c,t,,,`,`,c,`,c,`,` ,,`,c,t,c,`,`,s,,,t,c,`,`,`,c,t,,,s,`,`,c,t,c,` ,,`,`,c,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,c,`,` -,,`,`,`,`,s,`,`,,,h,~c,~c,s,~c,~c,h,,,`,`,s,`,`,`,` +,,F,`,`,`,s,`,`,,,h,~c,~c,s,~c,~c,h,,,`,`,s,`,`,`,F -"#query label(guildhall4) start(15; 15; central stairs) message(The library and temple are restricted to residents only by default. If you'd like them to attract vistors, please go to the (l)ocation menu and change the restriction.) declare a library and temple" +#dig label(guildhall_smooth) start(15; 15; central stairs) hidden() smooth statue tiles +,,s,`,`,`,s,`,`,,,s,`,`,`,`,`,`,,,`,`,s,`,`,`,s +,,`,`,`,`,`,`,`,,,`,`,`,s,`,`,s,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,s,,,`,`,`,`,`,`,`,,,s,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,s,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,s ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,`,^ilat&^l{Up}r^q,,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,,,,,,`,,,,,,`,,`,,,,,,` -,,,,,,,`,,,,,,`,`,`,,,,,,` -,,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,` +,,`,`,s,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,s,`,` +,,,,,,,,,`,,,,`,,`,,,,` +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,,`,s,`,`,`,`,`,,`,,,`,,`,,,`,,`,`,`,`,`,s,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` ,,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,`,,`,,`,,`,,`,,`,`,`,`,`,`,` +,,`,s,`,`,`,`,`,,`,,`,,`,,`,,`,,`,`,`,`,`,s,` ,,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,`,`,`,`,`,,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,,,`,,`,,,,,`,`,`,`,`,`,` -,,,,,,,`,,,,,,`,`,`,,,,,,` -,,,,,,,`,,,,,,`,,`,,,,,,` -,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` -,,`,`,`,`,`,`,`,,,`,`,`,^ilal&^l{Up}r^q,,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,,`,,`,`,`,`,`,,`,,`,`,`,`,`,`,` +,,s,`,`,`,`,`,`,,`,,,`,,`,,,`,,`,`,`,`,`,`,s +,,,,,,,,,,`,`,`,`,`,`,`,`,` +,,,,,,,,,`,,,,`,,`,,,,` +,,`,`,s,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,s,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,s,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,s ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,`,`,`,`,`,`,s,,,`,`,`,`,`,`,`,,,s,`,`,`,`,`,` ,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,,s,`,`,`,s,`,`,,,`,s,s,s,s,s,`,,,`,`,s,`,`,`,s -#notes label(beds_help) +#notes label(beds_help) walkthrough for the suites and apartments levels Suites for nobles and apartments for the teeming masses -Suites screenshot: https://drive.google.com/file/d/1IBqCf6fF3lw7sHiBE_15Euubysl5AAiS -Apt. screenshot: https://drive.google.com/file/d/1mDQQXG8BnXqasRGFC9R5N6xNALiswEyr +Suites screenshot: https://drive.google.com/file/d/16XRb1w5zFoyVq2LBMx_aCwOyjFq7GULc +Apt. screenshot: https://drive.google.com/file/d/16-NXlodLIQjeZUMSmsWRafeytwU2dXQo "" Features: -- Well-appointed suites to satisfy nobles +- Well-appointed suites to satisfy nobles or citizens with a need for opulence +"- Suite rooms are multi-functional. Any suite can be zoned as a bedroom, office, dining hall, or tomb. If a noble requires more wealth than what a default room provides, you can smooth, engrave, add furniture, or include multiple rooms in the zone. A default suites level can fully satisfy a monarch if each zone covers four (engraved) rooms." - Apartments with beds and storage to keep dwarves happy and the fortress clean -- Apartments also serve as burial chambers since dwarves like looking at coffins -- Meta blueprint included for designating 5 levels of apartments for a full 200+ dwarves "" Suites Walkthrough: 1) Dig out the suites layer with /suites1. "" -"2) Once the area is dug out, furnish the suites with /suites2. The rooms are left unconfigured so you can assign them to specific nobles. Each room can serve as a bedroom, a dining hall, an office, and/or a tomb. Run ""quickfort orders"" for /suites2." +"2) Once the area is dug out, choose a /suites2 variant based on your needs. For your first copy of this level, you probably want /suites2_default, which defines zones and assigns them to the usual cohort of demanding nobles and administrators. For later copies where your needs are ad hoc, you can choose /suites2_no_zones. Generate manager orders for your chosen variant." "" Apartments Walkthrough: -"1) Dig out one layer of apartments with /apartments1, or 5 layers at once (enough for 200 dwarves) with by adding ""--repeat down,5"" to the quickfort command." -"" -"2) Once a layer is dug out, build beds with /apartments2. Run ""quickfort orders"" for /apartments2." -"" -"3) Once the beds are built, configure the rooms and build the remaining furniture with /apartments3. Run ""quickfort orders"" for /apartments3." +"1) Dig out one layer of apartments with /apartments1, or 3 layers at once (180 bedrooms total) by configuring gui/quickfort to repeat down 3 levels." "" -"4) Once the coffins are all in place, run ""burial -pets"" to set them all to accept burials." -"#dig label(suites1) start(18; 18; central ramp) message(Once the area is dug out, run /suites2) noble suites" +"2) Once a layer is dug out, build furniture with /apartments2. Generate manager orders for /apartments2." +"#dig label(suites1) start(18; 18; central stairs) message(Once the area is dug out, run /suites2) noble suites" ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d -,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d -,d,d,,,,d,,,,,,d,,,,d,,d,,,,d,,,,,,d,,,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,,,,,,,,,,,,,d,d,d,,,,,,,,,,,,,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,,,d,,,,,,d,,,,d,d,d,,,,d,,,,,,d,,,,d,d +,d,,,,d,,,,,,,d,,,,d,d,d,,,,d,,,,,,,d,,,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,,,,,,,,,,,,,,d,d,d,,,,,,,,,,,,,,,d +,d,,,,,,,,,,,,,,,d,d,d,,,,,,,,,,,,,,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,,,d,,,,,,,d,,,,d,d,d,,,,d,,,,,,,d,,,,d ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d ,d,d,,d,d,d,d,d,d,d,d,d,d,,d,`,~,`,d,,d,d,d,d,d,d,d,d,d,d,,d,d ,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d -,d,d,,,,d,,,,,,d,,,,d,d,d,,,,d,,,,,,d,,,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,,,,,,,,,,,,,d,d,d,,,,,,,,,,,,,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,d,d,d,d,d,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,d,d,d,d,d,,d,d -,d,d,,,,d,,,,,,d,,,,d,,d,,,,d,,,,,,d,,,,d,d -,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,d,,,,d,,,,,,,d,,,,d,d,d,,,,d,,,,,,,d,,,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,,,,,,,,,,,,,,d,d,d,,,,,,,,,,,,,,,d +,d,,,,,,,,,,,,,,,d,d,d,,,,,,,,,,,,,,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,,,d,d,d,d,d,d,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,d,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,d,d,d,d,d,,,d,d,d,d,d,,d,,d,,d,d,d,d,d,,,d,d,d,d,d,,d +,d,,,,d,,,,,,,d,,,,d,d,d,,,,d,,,,,,,d,,,,d ,d,d,d,d,d,d,d,d,d,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(suites2) start(18; 18; central ramp) message(Remember to enqueue manager orders for this blueprint. -bedrooms are left unconfigured so you can assign them to specific nobles)" +"#meta label(suites2_default) start(central stairs) message(Remember to enqueue manager orders for this blueprint.) build furniture, set traffic patterns, create zones, and assign them to nobles and administrators" +traffic_suites/suites_traffic +build_suites/suites_build +smooth_suites/suites_smooth +zone_suites/suites_zone +"" +"#meta label(suites2_no_zones) start(central stairs) message(Remember to enqueue manager orders for this blueprint. +rooms are left unzoned so you can configure them for specific nobles.) build furniture and set traffic patterns" +traffic_suites/suites_traffic +build_suites/suites_build +smooth_suites/suites_smooth +#dig label(suites_traffic) start(18; 18; central stairs) hidden() don't path through other dwarves' rooms ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,,,,or,,,,,,,or,,,,`,`,`,,,,or,,,,,,,or,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,or,`,`,`,`,`,,,`,`,`,`,`,or,oh,`,oh,or,`,`,`,`,`,,,`,`,`,`,`,or,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,,,,,,,,,,,,oh,`,oh,,,,,,,,,,,,,,,` +,`,,,,,,,,,,,,,,,oh,`,oh,,,,,,,,,,,,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,or,`,`,`,`,`,,,`,`,`,`,`,or,oh,`,oh,or,`,`,`,`,`,,,`,`,`,`,`,or,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,or,,,,,,,or,,,,oh,`,oh,,,,or,,,,,,,or,,,,` +,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,`,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,`,` +,`,`,,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,`,,`,` +,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,`,`,`,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,oh,`,` +,`,,,,or,,,,,,,or,,,,oh,`,oh,,,,or,,,,,,,or,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,or,`,`,`,`,`,,,`,`,`,`,`,or,oh,`,oh,or,`,`,`,`,`,,,`,`,`,`,`,or,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,,,,,,,,,,,,oh,`,oh,,,,,,,,,,,,,,,` +,`,,,,,,,,,,,,,,,oh,`,oh,,,,,,,,,,,,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,or,`,`,`,`,`,,,`,`,`,`,`,or,oh,`,oh,or,`,`,`,`,`,,,`,`,`,`,`,or,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,`,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,oh,,oh,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,or,,,,,,,or,,,,`,`,`,,,,or,,,,,,,or,,,,` ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,`,`,,,,d,,,,,,d,,,,d,,d,,,,d,,,,,,d,,,,`,` -,`,`,,a,r,`,`,h,,h,`,`,r,a,,`,s,`,,a,r,`,`,h,,h,`,`,r,a,,`,` -,`,`,,`,`,`,`,h,,h,`,`,`,`,,`,`,`,,`,`,`,`,h,,h,`,`,`,`,,`,` -,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,` -,`,`,,c,`,`,`,f,,f,`,`,`,c,,`,s,`,,c,`,`,`,f,,f,`,`,`,c,,`,` -,`,`,,t,`,s,`,n,,n,`,s,`,t,,`,`,`,,t,`,s,`,n,,n,`,s,`,t,,`,` -,`,`,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,`,` -,`,`,,t,`,s,`,n,,n,`,s,`,t,,`,s,`,,t,`,s,`,n,,n,`,s,`,t,,`,` -,`,`,,c,`,`,`,f,,f,`,`,`,c,,`,`,`,,c,`,`,`,f,,f,`,`,`,c,,`,` -,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,` -,`,`,,`,`,`,`,h,,h,`,`,`,`,,`,s,`,,`,`,`,`,h,,h,`,`,`,`,,`,` -,`,`,,a,r,`,`,h,,h,`,`,r,a,,d,,d,,a,r,`,`,h,,h,`,`,r,a,,`,` -,`,`,,,,d,,,,,,d,,,,`,`,`,,,,d,,,,,,d,,,,`,` -,`,`,d,`,`,`,`,`,`,`,`,`,`,d,`,`,`,`,`,d,`,`,`,`,`,`,`,`,`,`,d,`,` -,`,`,,s,`,`,s,`,`,s,`,`,s,,`,`,~,`,`,,s,`,`,s,`,`,s,`,`,s,,`,` -,`,`,d,`,`,`,`,`,`,`,`,`,`,d,`,`,`,`,`,d,`,`,`,`,`,`,`,`,`,`,d,`,` -,`,`,,,,d,,,,,,d,,,,`,`,`,,,,d,,,,,,d,,,,`,` -,`,`,,a,r,`,`,h,,h,`,`,r,a,,d,,d,,a,r,`,`,h,,h,`,`,r,a,,`,` -,`,`,,`,`,`,`,h,,h,`,`,`,`,,`,s,`,,`,`,`,`,h,,h,`,`,`,`,,`,` -,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,` -,`,`,,c,`,`,`,f,,f,`,`,`,c,,`,`,`,,c,`,`,`,f,,f,`,`,`,c,,`,` -,`,`,,t,`,s,`,n,,n,`,s,`,t,,`,s,`,,t,`,s,`,n,,n,`,s,`,t,,`,` -,`,`,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,`,` -,`,`,,t,`,s,`,n,,n,`,s,`,t,,`,`,`,,t,`,s,`,n,,n,`,s,`,t,,`,` -,`,`,,c,`,`,`,f,,f,`,`,`,c,,`,s,`,,c,`,`,`,f,,f,`,`,`,c,,`,` -,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,`,`,b,`,`,d,`,` -,`,`,,`,`,`,`,h,,h,`,`,`,`,,`,`,`,,`,`,`,`,h,,h,`,`,`,`,,`,` -,`,`,,a,r,`,`,h,,h,`,`,r,a,,`,s,`,,a,r,`,`,h,,h,`,`,r,a,,`,` -,`,`,,,,d,,,,,,d,,,,d,,d,,,,d,,,,,,d,,,,`,` + +#build label(suites_build) start(18; 18; central stairs) hidden() + ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,,,,d,,,,,,,d,,,,`,`,`,,,,d,,,,,,,d,,,,` +,`,,a,r,`,`,h,,,h,`,`,r,a,,d,,d,,a,r,`,`,h,,,h,`,`,r,a,,` +,`,,`,`,`,`,h,,,h,`,`,`,`,,`,`,`,,`,`,`,`,h,,,h,`,`,`,`,,` +,`,d,`,`,b,`,`,,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,,`,`,b,`,`,d,` +,`,,c,`,`,`,f,,,f,`,`,`,c,,`,`,`,,c,`,`,`,f,,,f,`,`,`,c,,` +,`,,t,`,s,`,n,,,n,`,s,`,t,,`,s,`,,t,`,s,`,n,,,n,`,s,`,t,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,t,`,s,`,n,,,n,`,s,`,t,,`,s,`,,t,`,s,`,n,,,n,`,s,`,t,,` +,`,,c,`,`,`,f,,,f,`,`,`,c,,`,`,`,,c,`,`,`,f,,,f,`,`,`,c,,` +,`,d,`,`,b,`,`,,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,,`,`,b,`,`,d,` +,`,,`,`,`,`,h,,,h,`,`,`,`,,`,`,`,,`,`,`,`,h,,,h,`,`,`,`,,` +,`,,a,r,`,`,h,,,h,`,`,r,a,,d{name=Suites},,d{name=Suites},,a,r,`,`,h,,,h,`,`,r,a,,` +,`,,,,d,,,,,,,d,,,,`,`,`,,,,d,,,,,,,d,,,,` +,`,`,d,`,`,`,`,`,`,`,`,`,`,d{name=Suites},`,`,`,`,`,d{name=Suites},`,`,`,`,`,`,`,`,`,`,d,`,` +,`,`,,`,`,`,s,`,`,s,`,`,`,,`,`,~,`,`,,`,`,`,s,`,`,s,`,`,`,,`,` +,`,`,d,`,`,`,`,`,`,`,`,`,`,d{name=Suites},`,`,`,`,`,d{name=Suites},`,`,`,`,`,`,`,`,`,`,d,`,` +,`,,,,d,,,,,,,d,,,,`,`,`,,,,d,,,,,,,d,,,,` +,`,,a,r,`,`,h,,,h,`,`,r,a,,d{name=Suites},,d{name=Suites},,a,r,`,`,h,,,h,`,`,r,a,,` +,`,,`,`,`,`,h,,,h,`,`,`,`,,`,`,`,,`,`,`,`,h,,,h,`,`,`,`,,` +,`,d,`,`,b,`,`,,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,,`,`,b,`,`,d,` +,`,,c,`,`,`,f,,,f,`,`,`,c,,`,`,`,,c,`,`,`,f,,,f,`,`,`,c,,` +,`,,t,`,s,`,n,,,n,`,s,`,t,,`,s,`,,t,`,s,`,n,,,n,`,s,`,t,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,t,`,s,`,n,,,n,`,s,`,t,,`,s,`,,t,`,s,`,n,,,n,`,s,`,t,,` +,`,,c,`,`,`,f,,,f,`,`,`,c,,`,`,`,,c,`,`,`,f,,,f,`,`,`,c,,` +,`,d,`,`,b,`,`,,,`,`,b,`,`,d,`,`,`,d,`,`,b,`,`,,,`,`,b,`,`,d,` +,`,,`,`,`,`,h,,,h,`,`,`,`,,`,`,`,,`,`,`,`,h,,,h,`,`,`,`,,` +,`,,a,r,`,`,h,,,h,`,`,r,a,,d,,d,,a,r,`,`,h,,,h,`,`,r,a,,` +,`,,,,d,,,,,,,d,,,,`,`,`,,,,d,,,,,,,d,,,,` ,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -"#dig label(apartments1) start(18; 18; central ramp) message(Once the area is dug out, continue with /apartments2.) apartment complex" - -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d -,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d -,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d -,,,,,d,,,,d,,,,d,,,d,d,d,,,d,,,,d,,,,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d +#dig label(suites_smooth) start(18; 18; central stairs) hidden() smooth statue tiles + +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,,,,`,,,,,,,`,,,,`,`,`,,,,`,,,,,,,`,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,s,`,`,,,`,`,s,`,`,,`,s,`,,`,`,s,`,`,,,`,`,s,`,`,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,`,`,s,`,`,,,`,`,s,`,`,,`,s,`,,`,`,s,`,`,,,`,`,s,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,`,,,,,,,`,,,,`,`,`,,,,`,,,,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,,`,`,`,s,`,`,s,`,`,`,,`,`,~,`,`,,`,`,`,s,`,`,s,`,`,`,,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,,,,`,,,,,,,`,,,,`,`,`,,,,`,,,,,,,`,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,s,`,`,,,`,`,s,`,`,,`,s,`,,`,`,s,`,`,,,`,`,s,`,`,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,,`,`,s,`,`,,,`,`,s,`,`,,`,s,`,,`,`,s,`,`,,,`,`,s,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,`,,,,,,,`,,,,`,`,`,,,,`,,,,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` + +#zone label(suites_zone) start(18; 18; central stairs) hidden() + +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,h{assigned_unit=sheriff},h,h,b{assigned_unit=sheriff},b,b,b,o{assigned_unit=mayor}(7x7),,,`,,,,`,`,`,o{assigned_unit=baron}(7x7),,,`,,,,T{assigned_unit=baron}(7x7),,,`,,,,` +,`,h,h,h,b,b,b,b,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,h,h,h,b,b,b,b,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,h,h,h,b,b,b,b,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,h,h,h,h,b,b,b,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,h,h,h,h,b,b,b,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,h,h,h,h,b,b,b,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,h{assigned_unit=mayor}(7x7),,,,,,,b{assigned_unit=mayor}(7x7),,,,,,,`,`,`,b{assigned_unit=baron}(7x7),,,,,,,h{assigned_unit=baron}(7x7),,,,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,`,,,,,,,`,,,,`,`,`,,,,`,,,,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,,`,`,`,`,`,`,`,`,`,`,,`,`,`,`,`,,`,`,`,`,`,`,`,`,`,`,,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,h{assigned_unit=outpost_liaison}(7x7),,,`,,,,b{assigned_unit=outpost_liaison}(7x7),,,`,,,,`,`,`,b{assigned_unit=monarch}(7x7),,,`,,,,h{assigned_unit=monarch}(7x7),,,`,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,,,,,,,,,,,,`,`,`,,,,,,,,,,,,,,,` +,`,T{assigned_unit=monarch}(7x7),,,,,,,o{assigned_unit=outpost_liaison}(7x7),,,,,,,`,`,`,o{assigned_unit=monarch}(14x7),,,,,,,,,,,,,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,`,`,`,`,`,`,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,,`,`,`,`,`,`,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,`,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,`,`,`,`,`,,,`,`,`,`,`,,`,,`,,`,`,`,`,`,,,`,`,`,`,`,,` +,`,,,,`,,,,,,,`,,,,`,`,`,,,,`,,,,,,,`,,,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` + +"#dig label(apartments1) start(18; 18; central stairs) message(Once the area is dug out, continue with /apartments2.) apartment complex" + +,,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,,,,d,,,d,,,d,,,d,,,d,,d,,,d,,,d,,,d,,,d +,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,,d,,,d,,,d,,,d,,d,d,d,,d,,,d,,,d,,,d,,,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d ,,,,,,,,,,,,,,,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,,d,,d,d,d,,d,d,d,,d,d,d -,,,,,d,,,,d,,,,d,,,d,d,d,,,d,,,,d,,,,d -,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,,d,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,,,d,,,d,,,d,,,d,,,d,d,d,,,d,,,d,,,d,,,d,,,d +,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d ,d,d,d,d,d,d,d,d,d,d,d,d,d,,d,`,~,`,d,,d,d,d,d,d,d,d,d,d,d,d,d,d -,d,d,d,,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,,d,d,d -,,,,,d,,,,d,,,,d,,,d,d,d,,,d,,,,d,,,,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d +,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,`,`,`,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,d,,,d,,,d,,,d,,,d,,,d,d,d,,,d,,,d,,,d,,,d,,,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d ,,,,,,,,,,,,,,,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,,d,,,,d,,,,d,,,d,d,d,,,d,,,,d,,,,d -,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d -,,,,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d -,,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d -,,,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,d,d,d,,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(apartments2) start(18; 18; central ramp) message(Remember to enqueue manager orders for this blueprint. -Once beds have been placed, continue with /apartments3.) build beds" - -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,b,`,,`,b,`,,`,b,`,,`,b,`,,`,b,`,,`,b,`,,`,b,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,b,`,,`,b,`,,`,b,`,,`,`,`,,`,b,`,,`,b,`,,`,b,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,,,,,,,,,,,,`,`,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,b,`,,`,b,`,,`,b,`,,`,`,`,,`,b,`,,`,b,`,,`,b,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,,`,,`,`,`,,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,` -,`,b,`,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,`,`,b,` -,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,b,`,,`,b,`,,`,b,`,,`,`,`,,`,b,`,,`,b,`,,`,b,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,,,,,,,,,,,,`,`,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,b,`,,`,b,`,,`,b,`,,`,`,`,,`,b,`,,`,b,`,,`,b,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,b,`,,`,b,`,,`,b,`,,`,b,`,,`,b,`,,`,b,`,,`,b,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` - -#meta label(apartments3) start(central ramp) message(Remember to enqueue manager orders for this blueprint.) configure rooms and build remaining furniture -query_apartments/apartments_rooms -build2_apartments/apartments_build2 -#query label(apartments_rooms) start(18; 18) hidden() configure rooms - -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,`,`,,`,r-&,`,,`,r-&,`,,`,r-&,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,,,,,,,,,,,,`,`,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,`,`,,`,r-&,`,,`,r-&,`,,`,r-&,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,,`,,`,`,`,,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,` -,`,r-&,`,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,`,`,r-&,` -,`,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,`,`,,`,r-&,`,,`,r-&,`,,`,r-&,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,,,,,,,,,,,,`,`,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,`,`,,`,r-&,`,,`,r-&,`,,`,r-&,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,,`,,,,`,,,,`,,,`,`,`,,,`,,,,`,,,,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,,,,`,,,,`,,,,`,,,,`,,,,`,,,,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` -,,,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,`,,`,r-&,` -,,,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,`,,`,`,` - -"#build label(apartments_build2) start(18; 18) hidden() message(Coffins should be configured with DFHack ""burial"" script) build remaining furniture" - -,,,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h -,,,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,` -,,,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f -,,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,s,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,d,,,,d,,,,d,,,`,`,`,,,d,,,,d,,,,d -,,,,n,`,h,,n,`,h,,n,`,h,,`,`,`,,n,`,h,,n,`,h,,n,`,h -,,,,`,~,`,,`,~,`,,`,~,`,,`,s,`,,`,~,`,,`,~,`,,`,~,` -,,,,n,`,f,,n,`,f,,n,`,f,,`,`,`,,n,`,f,,n,`,f,,n,`,f +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,,d,,,d,,,d,,,d,,,d,,d,d,d,,d,,,d,,,d,,,d,,,d +,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d +,,,,d,,,d,,,d,,,d,,,d,,d,,,d,,,d,,,d,,,d +,,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d +,,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d,,d,d + +#meta label(apartments2) start(central stairs) zone rooms and build furniture +zone_apartments/apartments_rooms +build_apartments/apartments_build +#zone label(apartments_rooms) start(18; 18; central stairs) hidden() zone rooms +,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5) +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,,,`,,,`,,,`,,,`,,,`,,`,,,`,,,`,,,`,,,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +b(4x5),,`,b(4x5),,`,b(4x5),,`,b(4x5),,`,b(4x5),,`,,`,`,`,b(4x5),`,,b(4x5),`,,b(4x5),`,,b(4x5),`,,b(4x5),` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,,`,`,`,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5) +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,,,`,,,`,,,`,,,`,,,`,`,`,,,`,,,`,,,`,,,`,,,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +b(4x5),`,,b(4x5),`,,b(4x5),`,,b(4x5),`,,b(4x5),`,,,`,`,`,b(4x5),,`,b(4x5),,`,b(4x5),,`,b(4x5),,`,b(4x5),,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,,`,`,`,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5),,,b(4x5) +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,`,,,`,,,`,,,`,,,`,,`,`,`,,`,,,`,,,`,,,`,,,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,b(4x5),,`,b(4x5),,`,b(4x5),,`,b(4x5),,`,b(4x5),,`,b(4x5),`,,b(4x5),`,,b(4x5),`,,b(4x5),`,,b(4x5),` +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` + +#build label(apartments_build) start(18; 18; central stairs) hidden() message(Remember to enqueue manager orders for this blueprint.) build furniture + +,,,f,h,,f,h,,f,h,,f,h,,f,h,,h,f,,h,f,,h,f,,h,f,,h,f +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,,b,`,,b,`,,b,`,,b,`,,b,`,,`,b,,`,b,,`,b,,`,b,,`,b +,,,,d,,,d,,,d,,,d,,,d,,d,,,d,,,d,,,d,,,d +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,d,,,d,,,d,,,d,,,d,,`,`,`,,d,,,d,,,d,,,d,,,d +,b,`,,b,`,,b,`,,b,`,,b,`,,`,`,`,,`,b,,`,b,,`,b,,`,b,,`,b +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,f,h,,f,h,,f,h,,f,h,,f,h,,`,`,`,,h,f,,h,f,,h,f,,h,f,,h,f ,,,,,,,,,,,,,,,,`,`,` -,,,,n,`,h,,n,`,h,,n,`,h,,`,s,`,,n,`,h,,n,`,h,,n,`,h -,,,,`,~,`,,`,~,`,,`,~,`,,`,`,`,,`,~,`,,`,~,`,,`,~,` -,,,,n,`,f,,n,`,f,,n,`,f,,d,,d,,n,`,f,,n,`,f,,n,`,f -,,,,,d,,,,d,,,,d,,,`,`,`,,,d,,,,d,,,,d -,n,`,h,,`,`,`,`,`,`,`,`,`,d,`,`,`,`,`,d,`,`,`,`,`,`,`,`,`,,n,`,h -,`,~,`,d,`,s,`,`,s,`,`,s,`,,`,`,~,`,`,,`,s,`,`,s,`,`,s,`,d,`,~,` -,n,`,f,,`,`,`,`,`,`,`,`,`,d,`,`,`,`,`,d,`,`,`,`,`,`,`,`,`,,n,`,f -,,,,,d,,,,d,,,,d,,,`,`,`,,,d,,,,d,,,,d -,,,,n,`,h,,n,`,h,,n,`,h,,d,,d,,n,`,h,,n,`,h,,n,`,h -,,,,`,~,`,,`,~,`,,`,~,`,,`,`,`,,`,~,`,,`,~,`,,`,~,` -,,,,n,`,f,,n,`,f,,n,`,f,,`,s,`,,n,`,f,,n,`,f,,n,`,f +,h,f,,h,f,,h,f,,h,f,,h,f,,`,`,`,,f,h,,f,h,,f,h,,f,h,,f,h +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,`,b,,`,b,,`,b,,`,b,,`,b,,d{name=Apartments},,d{name=Apartments},,b,`,,b,`,,b,`,,b,`,,b,` +,d,,,d,,,d,,,d,,,d,,,`,`,`,,,d,,,d,,,d,,,d,,,d +,`,`,`,`,`,`,`,`,`,`,`,`,`,d{name=Apartments},`,`,`,`,`,d{name=Apartments},`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,,`,`,~,`,`,,`,`,`,`,`,`,`,`,`,`,`,`,` +,`,`,`,`,`,`,`,`,`,`,`,`,`,d{name=Apartments},`,`,`,`,`,d{name=Apartments},`,`,`,`,`,`,`,`,`,`,`,`,` +,d,,,d,,,d,,,d,,,d,,,`,`,`,,,d,,,d,,,d,,,d,,,d +,`,b,,`,b,,`,b,,`,b,,`,b,,d{name=Apartments},,d{name=Apartments},,b,`,,b,`,,b,`,,b,`,,b,` +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,h,f,,h,f,,h,f,,h,f,,h,f,,`,`,`,,f,h,,f,h,,f,h,,f,h,,f,h ,,,,,,,,,,,,,,,,`,`,` -,,,,n,`,h,,n,`,h,,n,`,h,,`,`,`,,n,`,h,,n,`,h,,n,`,h -,,,,`,~,`,,`,~,`,,`,~,`,,`,s,`,,`,~,`,,`,~,`,,`,~,` -,,,,n,`,f,,n,`,f,,n,`,f,,`,`,`,,n,`,f,,n,`,f,,n,`,f -,,,,,d,,,,d,,,,d,,,`,`,`,,,d,,,,d,,,,d -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,s,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` -,,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d,,,,d -,,,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h,,n,`,h -,,,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,`,,`,~,` -,,,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f,,n,`,f +,f,h,,f,h,,f,h,,f,h,,f,h,,`,`,`,,h,f,,h,f,,h,f,,h,f,,h,f +,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,b,`,,b,`,,b,`,,b,`,,b,`,,`,`,`,,`,b,,`,b,,`,b,,`,b,,`,b +,,d,,,d,,,d,,,d,,,d,,`,`,`,,d,,,d,,,d,,,d,,,d +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,` +,,,,d,,,d,,,d,,,d,,,d,,d,,,d,,,d,,,d,,,d +,,,b,`,,b,`,,b,`,,b,`,,b,`,,`,b,,`,b,,`,b,,`,b,,`,b +,,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,`,,`,` +,,,f,h,,f,h,,f,h,,f,h,,f,h,,h,f,,h,f,,h,f,,h,f,,h,f + +#notes label(crypt_help) crypt level walkthrough +Places to rest your dead +Screenshot: https://drive.google.com/file/d/16iT_ho7BIRPD_eofuxdlVQ4FunR1Li23 +"" +Features: +"- Staged crypt expansion that grows with your, um, need" +- 20 tombs in stage 1 +- 192 additional tombs in stage 2 (212 tombs total) +"- Extendable in any direction by reapplying the blueprints to the North, South, East, or West, overlapping by one tile" +"" +Crypt Walkthrough: +1) Dig out the layer with /crypt1. +"" +"2) Once the area is dug out, add initial tombs with /crypt2." +"" +"3) If/when you need additional tombs, apply /crypt3." +"#dig label(crypt1) start(18; 18; central stairs) message(Once the area is dug out, continue with /crypt2.) crypt complex" + +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,d,d,,d,,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,d,d,d,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,d,d,d,,,,d,d,d,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,,~,,d,d,d,d +,,d,,d,,d,,d,,d,,d,d,d,d,,,,d,d,d,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,d,d,d,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,d,d,,d,,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,d,d,d,d,d,d,d,d,d,d,d,d,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d,d +,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d,,d +,,,,,,,,,,,,d,d,d,d,d,d,d,d,d,d,d + +#meta label(crypt2) start(central stairs) small crypt that can be extended later +zone/crypt_zone +build/crypt_build +"" +#meta label(crypt3) start(central stairs) crypt extension +zone_extended/crypt_extended_zone +build_extended/crypt_extended_build +#zone label(crypt_zone) start(18; 18; central stairs) hidden() zone tombs + + + + + + + + + +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,` +,,,,,,,,,,,`,`,,,,,,,,,,`,` +,,,,,,,,,,,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,` +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,`,,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),,` +,,,,,,,,,,,`,`,,,,`,`,`,,,,`,` +,,,,,,,,,,,,`,`,`,`,,,,`,`,`,` +,,,,,,,,,,,,`,`,`,`,,~,,`,`,`,` +,,,,,,,,,,,,`,`,`,`,,,,`,`,`,` +,,,,,,,,,,,`,`,,,,`,`,`,,,,`,` +,,,,,,,,,,,,`,,T{pets=true}(1x1),,`,`,`,,T{pets=true}(1x1),,` +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,` +,,,,,,,,,,,`,`,,,,,,,,,,`,` +,,,,,,,,,,,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,` +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` + + + + + + + + + +#build label(crypt_build) start(18; 18; central stairs) hidden() message(Remember to enqueue manager orders for this blueprint.) build urns + + + + + + + + + +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,`,,n,,n,,n,,n,,` +,,,,,,,,,,,`,`,,,,,,,,,,`,` +,,,,,,,,,,,,`,,n,,n,,n,,n,,` +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,`,,n,,`,s{name=Crypt},`,,n,,` +,,,,,,,,,,,`,`,,,,`,`,`,,,,`,` +,,,,,,,,,,,,`,`,`,`,,,,`,`,`,` +,,,,,,,,,,,,`,`,s{name=Crypt},`,,~,,`,s{name=Crypt},`,` +,,,,,,,,,,,,`,`,`,`,,,,`,`,`,` +,,,,,,,,,,,`,`,,,,`,`,`,,,,`,` +,,,,,,,,,,,,`,,n,,`,s{name=Crypt},`,,n,,` +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,,,,,,,,,,,`,,n,,n,,n,,n,,` +,,,,,,,,,,,`,`,,,,,,,,,,`,` +,,,,,,,,,,,,`,,n,,n,,n,,n,,` +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` + + + + + + + + + +#zone label(crypt_extended_zone) start(18; 18; central stairs) hidden() zone more tombs + +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,~,,~,,~,,~,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,~,,~,,~,,~,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,~,,`,`,`,,~,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,`,`,`,,,,`,`,`,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,,~,,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,`,`,`,,,,`,`,`,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,`,`,`,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,~,,`,`,`,,~,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,~,,~,,~,,~,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,~,,~,,~,,~,,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,`,`,`,`,`,`,`,`,`,`,`,`,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,`,` +,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,`,,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1),,T{pets=true}(1x1) +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` + +#build label(crypt_extended_build) start(18; 18; central stairs) hidden() message(Remember to enqueue manager orders for this blueprint.) build more 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 +,,,,,,,,,,,,`,`,`,`,`,`,`,`,`,`,` diff --git a/data/blueprints/pump_stack.csv b/data/blueprints/pump_stack.csv index 6bd1293087..14ac78a37c 100644 --- a/data/blueprints/pump_stack.csv +++ b/data/blueprints/pump_stack.csv @@ -1,43 +1,65 @@ #notes label(help) A pump stack is useful for moving water or magma up through the z-levels. "" -"These blueprints can be used from the quickfort commandline, but are much easier to use with the visual interface. That way you can check the vertical path interactively before you apply. Run gui/quickfort pump_stack" +"1) Select the ""/dig"" blueprint and position the blueprint preview on the bottom level of the future pump stack. It should be on the z-level just above the liquid you want to pump." "" -"1) Select the ""dig"" blueprint and position the blueprint preview on the bottom level of the future pump stack. It should be on the z-level just above the liquid you want to pump." +"2) Enable repetitions with the ""r"" hotkey (ensure you're repeating Up z-levels, not Down) and lock the blueprint in place with the ""L"" hotkey. Move up the z-levels to check that the pump stack has a clear path and doesn't intersect with any open areas (e.g. caverns). Increase the number of repetitions with the ""+"" or ""*"" hotkeys if you need the pump stack to extend further up. Unlock the blueprint and shift it around if you need to, then lock it again to recheck the vertical path." "" -"2) Enable repetitions with the ""R"" hotkey and lock the blueprint in place with the ""L"" hotkey. Move up the z-levels to check that the pump stack has a clear path and doesn't intersect with any open areas (e.g. caverns). Increase the number of repetitions with the ""+"" or ""*"" hotkeys if you need the pump stack to extend further up. Unlock the blueprint and shift it around if you need to, then lock it again to recheck the vertical path." -"" -"3) If you need to flip the pump stack around to make it fit through the rock layers, enable transformations with the ""t"" hotkey and rotate/flip the blueprint with Ctrl+arrow keys." +"3) If you need to flip the pump stack around to make it fit through the rock layers, enable transformations with the ""t"" hotkey and rotate/flip the blueprint as necessary." "" "4) Once you have everything lined up, hit Enter to apply. If the height ends up being one too many at the top, manually undesignate the top level." "" -"5) Since you do not need to transmit power down below the lowest level, replace the channel designation on the middle tile of the bottom-most pump stack level with a regular dig designation. Likewise, replace the Up/Down staircase designation on the lowest level with an Up staircase designation. Otherwise you might get magma critters climbing up through your access stairway!" +"5) Since the bottom up/down staircase is a liability, erase the Up/Down staircase designation on the lowest level and replace it with an Up staircase designation. Otherwise you might get water (or magma) critters climbing up through your access stairway!" +"" +"6) After the stack is dug out, haul away (or dump) any stones that are in the way of building the pumps." +"" +"7) Load up the ""/channel"" blueprint and apply it with the same repetition and transformation settings that you used for the ""/dig"" blueprint. Unless you have restarted DF, gui/quickfort will have saved your settings." "" -"6) After the stack is dug out, prepare for building by setting the buildingplan plugin material filters for screw pumps (b-M-s-M). If you are planning to move magma, be sure to select magma-safe materials (like green glass) for all three components of the screw pump." +"8) Since you do not need to transmit power down below the lowest level, erase the channel designation on the middle tile of the bottom-most pump stack level." "" -"7) Finally, position the cursor back on the access stairs on the lowest level and run the ""build"" blueprint with the same repetition and transformation settings that you used for the ""dig"" blueprint. As you manufacture the materials you need to construct the screw pumps, your dwarves will build the pump stack from the bottom up." +"9) After the channels are dug, prepare for building by setting the buildingplan plugin material filters for screw pumps. If you are planning to move magma, be sure to select magma-safe materials (like green glass) for all three components of the screw pump." "" -"Sometimes, a screw pump will spontaneously deconstruct while you are building the stack. This will reduce the efficiency of the stack a little, but it's nothing to worry about. Just re-run the ""build"" blueprint over the entire stack to ""fix up"" any broken pieces. The blueprint will harmlessly skip over any correctly-built screw pumps." +"10) Finally, generate orders for (the ""o"" hotkey) and run the ""/build"" blueprint with the same repetition and transformation settings that you used for the other blueprints. As you manufacture the materials you need to construct the screw pumps, your dwarves will build the pump stack from the bottom up, ensuring each new screw pump is properly supported by the one below." +"" +"If your dwarves end up building the pumps out of order, a section of the stack may spontaneously deconstruct. This will reduce the efficiency of the stack a little, but it's nothing to worry about. Just re-run the ""/build"" blueprint over the entire stack to ""fix up"" any broken pieces. The blueprint will harmlessly skip over any correctly-built screw pumps." "" See the wiki for more info on pump stacks: https://dwarffortresswiki.org/index.php/Screw_pump#Pump_stack #dig label(digSN) start(2;4;on access stairs) hidden() for a pump from south level -,,,d -,,,h -,i,d,d -,,,h +,,,mwmdd +,,,mwmdd +,mwmdi,mwmdd,mwmdd +,,,mwmdd #dig label(digNS) start(2;4;on access stairs) hidden() for a pump from north level -,,,h -,d,d,d -,i,,h -,,,d +,,,mwmdd +,mwmdd,mwmdd,mwmdd +,mwmdi,,mwmdd +,,,mwmdd #meta label(dig) start(at the bottom level on the access stairs) 2 levels of pump stack - bottom level pumps from the south /digSN #< /digNS +#dig label(channelSN) start(2;4;on access stairs) hidden() for a pump from south level + +,,,` +,,,h +,~,`,` +,,,h + +#dig label(channelNS) start(2;4;on access stairs) hidden() for a pump from north level + +,,,h +,`,`,` +,~,,h +,,,` + +#meta label(channel) start(at the bottom level on the access stairs) 2 levels of pump stack - bottom level pumps from the south +/channelSN +#< +/channelNS #build label(buildSN) start(2;4;on access stairs) hidden() for a pump from south level ,,,` diff --git a/data/blueprints/quickfortress.csv b/data/blueprints/quickfortress.csv deleted file mode 100644 index e66cc40226..0000000000 --- a/data/blueprints/quickfortress.csv +++ /dev/null @@ -1,768 +0,0 @@ -#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 -`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,# -`,forbidrawhides,,,,,~,,,,,,,rawhides,,,craftrefuse,,,,,,`,`,,,,,~,~,# -`,forbidcraftrefuse,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,,~,~,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,,`,,~,~,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,`,,`,`,`,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,,`,`,`,`,# -`,~,,,,,~,,,,,,,~,,,~,,,,,~,`,`,,`,`,,,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,`,,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,`,`,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,`,`,`,`,,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,,,,,`,# -`,,,,,,,,,,,,,,,,,,,,,,`,`,,`,`,`,`,`,# -`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,,,,,,`,# -`,,,,,,,,,,,,`,~,~,~,~,`,,,,,`,`,`,`,`,`,,`,# -`,,,,,,,,,,,,`,,,,,`,,,,,~,~,,,,,,`,# -`,,,,,,,,,,,,`,,,,,`,,,,,`,`,`,`,`,`,`,`,# -`,`,`,`,`,`,`,`,`,`,`,`,`,~,~,~,~,`,`,`,`,`,`,`,`,`,`,`,`,`,# -#>,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -forbidseeds,,,,,,,,,,,,,,`,`,,,,,,,`,`,`,`,`,`,`,`,# -,,,,,,,,,,,,,,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,i,d,d,d,d,d,d,d,d,d,i,i,d,d,d,d,d,d,d,d,d,i,,,,,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#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,g,g,g,~,g,l(7x8),,,,,,,,,,,d(7x5),,,,,,,p,~,p,p,p,p,# -g,g,g,g,g,g,,,,,,,,`,,,`,,,,,,,,p,p,p,p,p,p,# -g,g,g,g,g,g,,,,,,,,`,,,`,,,,,,,,p,p,p,p,p,p,# -g,g,g,g,g,g,,,,,,,,`,,,`,,,,,,,,p,p,p,p,p,p,# -g,g,g,g,g,g,,,,,,,,`,,,`,,,,,,,,p,p,p,p,p,p,# -g,g,g,g,g,g,,,,,,,,`,,,`,b(7x3),,,,,,,z(6x3),,,,,,# -g,g,g,g,g,g,,,,,,,,`,,,`,,,,,,,,,,,,,,# -g,g,g,g,g,g,,,,,,,,,,,,,,,,,,,,,,,,,# -`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,# -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# -`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,# -u,u,u,u,u,u,u,u,u,u,u,u,u,,,,,u(7x8),,,,,,,w,w,w,w,w,w,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,,,,,,,,w,w,w,w,w,w,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,,,,,,,,w,w,w,w,w,w,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,,,,,,,,w,w,`,`,`,`,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,,,,,,,,w,w,`,,,,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,,,,,,,,w,w,`,,,,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,,,,,,,,w,w,`,,,,# -u,u,u,u,~,u,u,u,u,u,u,u,u,,,,,,,,,,,,w,~,`,,,,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -"#place label(storeroom2b_place) hidden() start(15;10; top left corner of central stairs) Extra storage for wood, food and furniture" -w,w,w,w,~,w,w,w,w,w,w,w,w,,,,,f,f,f,f,f,f,f,f,~,f,f,f,f,# -w,w,w,w,w,w,w,w,w,w,w,w,w,`,,,`,f,f,f,f,f,f,f,f,f,f,f,f,f,# -w,w,w,w,w,w,w,w,w,w,w,w,w,`,,,`,f,f,f,f,f,f,f,f,f,f,f,f,f,# -w,w,w,w,w,w,w,w,w,w,w,w,w,`,,,`,f,f,f,f,f,f,f,f,f,f,f,f,f,# -w,w,w,w,w,w,w,w,w,w,w,w,w,`,,,`,f,f,f,f,f,f,f,f,f,f,f,f,f,# -w,w,w,w,w,w,w,w,w,w,w,w,w,`,,,`,f,f,f,f,f,f,f,f,f,f,f,f,f,# -w,w,w,w,w,w,w,w,w,w,w,w,w,`,,,`,f,f,f,f,f,f,f,f,f,f,f,f,f,# -w,w,w,w,w,w,w,w,w,w,w,w,w,,,,,f,f,f,f,f,f,f,f,f,f,f,f,f,# -`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,# -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# -`,`,`,`,,`,`,`,`,`,`,`,,`,,,`,,`,`,`,`,`,`,`,,`,`,`,`,# -u,u,u,u,u,u,u,u,u,u,u,u,u,,,,,u,u,u,u,u,u,u,u,u,u,u,u,u,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,u,u,u,u,u,u,u,u,u,u,u,u,u,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,u,u,u,u,u,u,u,u,u,u,u,u,u,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,u,u,u,u,u,u,u,u,u,`,`,`,`,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,u,u,u,u,u,u,u,u,u,`,,,,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,u,u,u,u,u,u,u,u,u,`,,,,# -u,u,u,u,u,u,u,u,u,u,u,u,u,`,,,`,u,u,u,u,u,u,u,u,u,`,,,,# -u,u,u,u,~,u,u,u,u,u,u,u,u,,,,,u,u,u,u,u,u,u,u,~,`,,,,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#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,# -,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# diff --git a/data/blueprints/test/ecosystem/golden/gui_quantum-2-build.csv b/data/blueprints/test/ecosystem/golden/gui_quantum-2-build.csv deleted file mode 100644 index 102c98f4a4..0000000000 --- a/data/blueprints/test/ecosystem/golden/gui_quantum-2-build.csv +++ /dev/null @@ -1,5 +0,0 @@ -#build label(build) - - - -,,CSdd diff --git a/data/blueprints/test/ecosystem/golden/gui_quantum-3-place.csv b/data/blueprints/test/ecosystem/golden/gui_quantum-3-place.csv deleted file mode 100644 index 0cb7a5b6b4..0000000000 --- a/data/blueprints/test/ecosystem/golden/gui_quantum-3-place.csv +++ /dev/null @@ -1,6 +0,0 @@ -#place label(place) -s(5x3) - - - -,,afunswebhlzSgpd diff --git a/data/blueprints/test/ecosystem/golden/gui_quantum-4-query.csv b/data/blueprints/test/ecosystem/golden/gui_quantum-4-query.csv deleted file mode 100644 index 811f7b3b03..0000000000 --- a/data/blueprints/test/ecosystem/golden/gui_quantum-4-query.csv +++ /dev/null @@ -1,6 +0,0 @@ -#query label(query) - - - -,,"{givename name=""foo dumper""}" -,,"{givename name=""foo""}" diff --git a/data/blueprints/test/ecosystem/in/gui_quantum-2-build.csv b/data/blueprints/test/ecosystem/in/gui_quantum-2-build.csv deleted file mode 100644 index ebbc0207d1..0000000000 --- a/data/blueprints/test/ecosystem/in/gui_quantum-2-build.csv +++ /dev/null @@ -1 +0,0 @@ -#build diff --git a/data/blueprints/test/ecosystem/in/gui_quantum-3-place.csv b/data/blueprints/test/ecosystem/in/gui_quantum-3-place.csv deleted file mode 100644 index ec9f6e42da..0000000000 --- a/data/blueprints/test/ecosystem/in/gui_quantum-3-place.csv +++ /dev/null @@ -1,2 +0,0 @@ -#place label(place) -s(5x3) diff --git a/data/blueprints/test/ecosystem/in/gui_quantum-4-query.csv b/data/blueprints/test/ecosystem/in/gui_quantum-4-query.csv deleted file mode 100644 index eb287fc8a6..0000000000 --- a/data/blueprints/test/ecosystem/in/gui_quantum-4-query.csv +++ /dev/null @@ -1 +0,0 @@ -#query diff --git a/data/blueprints/test/ecosystem/in/gui_quantum-spec.csv b/data/blueprints/test/ecosystem/in/gui_quantum-spec.csv deleted file mode 100644 index 7ba7b2ecb5..0000000000 --- a/data/blueprints/test/ecosystem/in/gui_quantum-spec.csv +++ /dev/null @@ -1,5 +0,0 @@ -#notes -description=integration test for the gui/quantum script -width=5 -height=5 -extra_fn=gui_quantum diff --git a/data/dfhack-config/autonick.txt b/data/dfhack-config/autonick.txt index e7de79f546..bdd40beed4 100644 --- a/data/dfhack-config/autonick.txt +++ b/data/dfhack-config/autonick.txt @@ -7,6 +7,332 @@ Toady One Threetoe +#Dwarven single names taken from Classic Fantasy works +Balin +Dwalin +Fili +Kili +Gloin +Oin +Bifur +Bofur +Bombur +Ori +Gimli +Thrain +Thror +Fundin +Frerin +Gror +Ibun +Khim +Fimbrethil +Floi +Nali +Thor +Vili +Regin +Fafnir +Brokkr +Sindri +Nordri +Sudri +Austri +Doriath +Thingol +Eol +Mim +Telchar +Narvi +Gundabad +Muhrak +Skorri +Draupnir +Alaric +Grimr +Eitri +Svidurr +Thorgar +Hrungnir +Galar +Skirni +Hreinn +Dori +Hreimr +Hreinir +Hroaldr +Groin +Vestri +Nori +Durin +Dvalin +Eikinskjaldi +Bafur +Snorri +Fimafeng +Vitr +Dvali +Dain +Nain +Nipingr +Hrodvitnir +Sveinn +Ivaldi +Svein +Sveinbjorn +Havardr +Haki +Hakon +Mouri +Motsognir +Eberk +Thromar +Kragar +Borgar +Throk +Orvald +Berric +Rogar +Urgen +Morgrim +Keldar +Ingvar +Frandar +Grimsi +Hrokur +Orik +Rundar +Bjornar +Throki +Dworin +Thranduil +Faldar +Galdor +Thorkel +Dorrin +Borkan +Gundrik +Throkir +Raldor +Helgrim +Throgar +Borin +Ragnir +Orvar +Skalf +Baldir +Fror +Thorgil +Ulfar +Grimbold +Faldur +Varrin +Dornir +Halgrim +Gundin +Ulfgar +Skalfar +Yngvarr +Kaldur +Thrandar +Keldin +Rundin +Skaldur +Borgin +Haldur +Bjornulf +Orkarn +Ragnor +Baldrick +Thorlin +Graldor +Ulfrik +Fornir +Egil +Grimnor +Roldor +Ulfgard +Borgrim +Faldrik +Rognir +Balfor +Volmar +Thormund +Brynhild + +#Dwarven composite names taken from Classic Fantasy works +Gorin Stonehammer +Brundar Ironfoot +Haldrek Battlebeard +Orin Stonefist +Frida Stormaxe +Torvald Rockjaw +Einar Blackforge +Thorgar Granitebeard +Ragnir Hammerhelm +Hilda Ironbrow +Grimnar Deepdelver +Ulfrik Ironmane +Freya Thunderstone +Ragnar Firebeard +Gunnar Ironpeak +Astrid Ironheart +Bjorn Steelbreaker +Hrolf Thunderhammer +Sigrun Stonebreaker +Eirik Rockbeard +Helga Frostbeard +Skaldur Stormguard +Agnar Stonehand +Ingrid Mountainmace +Hjalmar Blackstone +Solveig Steelhelm +Rurik Stonegrip +Freyja Silveraxe +Thordur Goldbeard +Gudrun Ironfoot +Vali Fireforge +Thora Frostbeard +Vargr Stoneborn +Astrid Ironbrow +Einar Blackstone +Hilda Hammerheart +Leif Ironshaper +Thrain Stormbrow +Sigrid Steelheart +Haldor Boulderbreaker +Ragnhild Strongarm +Brynjar Ironmantle +Sigrun Thunderbeard +Valgard Steelbeard +Gunnhild Stonefist +Ingrid Ironrock +Eirik Frostbane +Helga Deepforge +Skaldur Ironshield +Agnar Stonemace +Solveig Stormgrip +Hjalmar Mountainheart +Gudrun Firebeard +Thora Thunderstrike +Vargr Ironhand +Freyja Stoneguard +Thordur Blackstone +Rurik Hammerbeard +Solveig Ironbreaker +Astrid Goldhand +Einar Stormbrew +Hilda Steelbeard +Thrain Ironmane +Sigrid Fireheart +Haldor Thunderstone +Ragnhild Ironfoot +Brynjar Blackhelm +Sigrun Frostbeard +Valgard Stoneshield +Gunnhild Ironheart +Bjorn Deepdelver +Ingrid Ironpeak +Eirik Thunderhammer +Gormund Stoneforge +Eovar Broadshield +Thrunir Hammerstone +Brunhild Steelbraid +Garrik Frostbeard +Haldrek Ironhand +Astrid Rockrider +Dagmar Stonefury +Borgar Thunderhelm +Ingrid Ironstrike +Rurik Blackmane +Fjorn Stoneborn +Siv Ironbreaker +Gudrik Stormbeard +Ulfgar Emberforge +Eilif Silverstone +Hilda Stormwarden +Ormar Ironjaw +Vali Steelshaper +Eira Frostbeard +Torgar Graniteheart +Brunhild Firebrand +Haldrek Ironmantle +Solveig Rockbreaker +Thrain Thunderaxe +Brynjar Stoneclaw +Asa Ironhide +Grimnar Blackmane +Ragnvald Hammerfall +Gudbrand Ironhand +Astrid Flamebeard +Ormur Steelbender +Hjalmar Rockjaw +Inga Thunderheart +Valgard Ironbeard +Eirik Swiftstrike +Sylvi Stoneguard +Helge Hammerfist +Jorunn Fireforge +Solveig Ironroot +Thora Stormbeard +Baldur Stonemane +Freydis Ironshaper +Gunnvald Deepstone +Bjorn Blackstone +Ingrid Frostmane +Agnar Steelhammer +Thordur Ironbeard +Ylva Goldhand +Greta Firestone +Rurik Rockhelm +Gunnhild Ironsong +Vali Steelgrip +Brynhild Stormblade +Astrid Ironmantle +Einar Stoneshield +Hilda Frostbeard +Ormr Ironheart +Inga Steelbreaker +Ulfrik Thunderaxe +Freyja Stonebeard +Sigrun Frostfury +Sylvi Blackmane +Thorvald Ironhelm +Eirik Stormstone +Haldora Deepdelver +Sigrid Steelshaper +Gunnar Thunderheart +Bjorn Ironbrow +Ingrid Goldmantle +Agnar Stormforge +Solveig Ironclaw +Thora Rockguard +Grimur Emberstone +Ragnhild Hammerstrike +Vali Ironfist +Brynjar Blackbraid +Astrid Flameforge +Einar Stonestorm +Hilda Frostbane +Ormur Ironhelm +Inga Steelshaper +Gudbrand Thunderbeard +Freya Stonefist +Gunnvald Stormmane +Bjorn Ironhelm +Ingrid Frostforge +Agnar Steelgrip +Thordur Ironhand +Ylva Flameheart +Greta Stonemane +Rurik Ironroot +Gunnhild Steelbeard +Vali Thunderstrike +Thorin Oakenshield +Dain Ironfoot +Gamil Zirak + + # animals Mouse Otter @@ -24,6 +350,36 @@ Jay Crow Raven Sparrow +Platypus +House Mouse +Pangolin +Funnel Web +Weasel +Meerkats +Rat +Ant +Gopher +Fennec +Groundhog +Aardvark +Rabbit +Olm +Chipmunk +Bilbie +Vole +Nile Croc +Wombat +Worm +Gerbil +Armodillo +Thrinaxodon +Binky +Bandicoot +Bettongs +Potoroos +Antechinus +Jerboas +Numbat # colours Flash @@ -33,13 +389,394 @@ Blue Shadow Indigo Jade -Umber Silver +Bistre +Black +Black bean +Noir +Charcoal +Ebony +Eerie +Jet +Licorice +Midnight +Night +Onyx +Space +Raisin +Rich +Russ violet +Smoky +Aero +Alice +Argent Lue +Azure +Azul +Baby blue +Berkeley +Bice +Bleu +Bondi +Brandeis Byzant +Cambridge +Carolina +Celestial +Celtic +Cerulean +Chefchaouen +Chrysler +Cobalt +Columbia +Cornflower +Delft +Denim +Dodger +Duke +Federal +Electrindigo +Eclipse +Illini +Klein +Jordy +Lapis Lazuli +Majorelle +Marian +Maya +Slate +Munsell +Navy +Neon blue +Oxford +Palatinate +Penn +Periwinkle +Phthalo +Picton +Poly +Powder +Prussia +Royal +Ruddy +Honolulu +Savoy +Silver Lake +Space cadet +Steel +Tang +Tufts +Ultramarine +Uranian +Vista +Yale +Zaffre +Auburn +Almond +Beaver +Beige +Bole +Bone +Bronze +Sienna +Umber +Camel +Caput mortuum +Caramel +Chamoisee +Chestnut +Chocolate +Citron +Cocoa +Coffee +Copper +Coyote +Desert +Drab +Dun +Earth +Fallow +Fawn +Field +Fulvous +Goldenrod +Harvest +Khaki +Kobicha +Lion +Liver +Mahogany +Maroon +Ochre +Redwood +Rufous +Russet +Rust +Sand +Satin +Sheen +Seal +Sepia +Sinopia +Tan +Tawny +Van Dyke +Walnut +Wenge +Aqua +Aquamarine +Capri +Caribbean +Celeste +Cyprus +Fluorescent +Jungle +Keppel +Ice +Sea +Myrtle +Pacific +Robin +Skobeloff +Teal +Verdigris +Vivid +Zomp +Platinum +Timberwolf +Rose quartz +Cinereous +Cadet +Cool +Davys +Paynes +Glaucous +Gunmetal +Feldgrau +Asparagus +Avocado +Brunswick +Cal Poly +Castleton +Celadon +Chartreuse +Moss +Pastel +Dartmouth +Emerald +Fern +Forest +Harlequin +Honeydew +Hunter +Kelly green +Lawn +Malachite +Mantis +Neon +Olivine +Paris +Pear +Pigment +Pistachio +Reseda +Rifle +Sage +Screamin' +Shamrock +Bud +Amaranth +Baker-Miller +Cerise +Carmine +Magenta +Eggplant +Fandango +Finn +Fuchsia +Haze +Plum +Pizzazz +Quinacridone +Razzle dazzle +Rose +Shocking +Telemagenta +Aerospace +Alloy +Amber +Atomic +Tangerine +Burnt +Butterscotch +Carrot +Champagne +Coral +Flame +Gold +Hunyadi +Melon +Peel +Papaya +Peach +Persimmon +Princeton +Pumpkin +Safety orange +Saffron +Tangelo +Tigers Eye +Titian +Xanthous +Blush +Brilliant +Brink +Carnation +Cherry +Cyclamen +Dogwood +Hollywood +Hot +Lavender +Mimi +Misty +Mountbatten +Orchid +Phlox +Pompadour +Puce +Raspberry +Razzmatazz +Bonbon +Quartz +Taupe +Vale +Rosewood +Rosy +Salmon +Tea +Tickle +Thulian +Ultra +Burgundy +Byzantium +Eminence +Grape +Iris +Mardi Gras +Mauve +Mauveine +Mulberry +Murrey +Pale +Pomp +Power +Purpureus +Tekhelet +Thistle +Tropical +Tyrian +Wisteria +Barn +Bittersweet +Shimmer +Blood +Candy apple +Cantaloupe +Cardinal +Chili +Cosmos +Cinnabar +Claret +Coquelicot +Cordovan +Cornell +Crimson +Falu +Brick +Engine +Folly +Imperial +Jaspar +Poppy +Rojo +Rusty +Scarlet +Syracuse +Tomato +Turkey +Vermilion +Wine +Alabaster +Antique +Cornsilk +Latte +Cream +Eggshell +Flax +Floral +Ghost +Isabelline +Ivory +Lemon +chiffon +Linen +Navajo +Nyanza +Lace +Parchment +Pearl +Seasalt +Seashell +Vanilla +Smoke +Apricot +Arylide +Aureolin +Buff +Canary +Ecru +Gamboge +Icterine +Jonquil +Maize +Mikado +Mindaro +Mustard +Selective +Stil de grain +Straw +Sunglow +Sunset +Wheat # planets Mars Jupiter Saturn +Pluto +Neptune +Europa + +# charites +Damia +Auxesia +Cleta +Phaenna +Hegemone +Peitho +Paregoros +Pasithea +Charis +Kale +Antheia +Eudaimonia +Euthymia +Eutychia +Paidia +Pandaisia +Pannychis +Aglaea +Euphrosyne +Thalia # nature Blaze @@ -150,3 +887,397 @@ Wilder Wisdom Wyatt Zephyr + +# Gemstones +Actinolite +Nephrite +Adamite +Aegirine +Afghanite +Agrellite +Algodonite +Alunite +Amblygonite +Analcime +Anatase +Andalusite +Chiastolite +Anglesite +Anhydrite +Annabergite +Anorthite +Antigorite +Bowenite +Apatite +Apophyllite +Aragonite +Asbestos +Astrophyllite +Augelite +Austinite +Ferro +Magnes +Mangan +Tinzenite +Azurmalachite +Azurite +Baryte +Bast +Bayldonite +Benitoite +Beryl +Maxixe +Goshenite +Golden beryl +Heliodor +Morganite +Red beryl +Beryllonite +Beudantite +Bismutot +Biotit +Boracite +Bornite +Brazilianite +Brookite +Brucite +Bustam +Bytown +Calcite +Caledonite +Canasite +Cancrin +Vishnev +Carleton +Carnall +Cassiterite +Cataplei +Cavans +Celestite +Ceruleite +Cerussite +Chalcopyr +Chambers +Charlesite +Charoite +Childrenite +Chiolite +Chrysoberyl +Alexandrite +Cymophane +Chromite +Chrysocolla +Clinochlore +Clinohumite +Clintonite +Cobaltite +Coleman +Cordierite +Iolite +Cornwallite +Corundum +Ruby +Sapphire +Padparadscha +Covell +Creedite +Crocite +Cuprite +Danburite +Datolite +Descloiz +Diamond +Bort +Ballas +Diaspore +Dickinsonite +Diopside +Dioptase +Dolomite +Dumortier +Ekanite +Trapiche +Enstatite +Bronzite +Hypersthene +Eosphorite +Epidote +Piemont +Erythrite +Esperite +Ettring +Eudialyte +Faya +Feldspar +Andesine +Albite +Anorth +Anorthoc +Amazon +Celsian +Microcline +Moonstone +Adularia +Rainbow +Ortho +Kite +Plagioclase +Labradorite +Oligoclase +Sunstone +Oregon Sunstone +Rainbow Lattice +Fergusonite +Ferroaxin +Fluora +Fluorapophyl +Fluorite +Forster +Friedelite +Gadolin +Gahnite +Gahnospinel +Garnet +Pyralspite +Almandine +Spessartine +Ugrand +Demantoid +Melanite +Topazolita +Grossular +Hessonite +Hydrogrossular +Tsavorite +Pyrope +Rhodolite +Mali garnet +Malaia +Umbal +Gaspe +Gayluss +Gibbsite +Glaucophane +Goeth +Goosecreek +Grandidier +Gypsum +Gyro +Halite +Hambergite +Hanksite +Hardystonite +Helenite +Hematite +Herder +Hexagonite +Hibonite +Hidden +Hodgkinsonite +Holtite +Howlite +Huebnerite +Humite +Hurlbut +Ilmenite +Inderite +Jadeite +Jasper +Jeremejevite +Kainite +Kämmerer +Kaolin +Kornerup +Kurnakov +Kyanite +Langbein +Lawsonite +Lazulite +Lazurite +Legrandite +Lepidolite +Leucite +Leucophan +Linarite +Lizardite +Londonite +Ludlamite +Ludwigite +Maria-meionite +Werner +Marcasite +Meliphanite +Mellite +Mesolite +Milar +Millerite +Mime +Monazite +Mordenite +Mottram +Muscovite +Fuchsite +Nambul +Natrolite +Nepheline +Neptunite +Nickeline +Niccolite +Nosean +Nuumm +Opal +Fire opal +Moss opal +Painite +Papagoite +Pargas +Parisite +Pectol +Larimar +Pentland +Periclase +Perthite +Petal +Castor +Pezzottaite +Phena +Phosgen +Phospho +Piemontite +Realgar +Rhodizite +Rhodochros +Rhodon +Richter +Riebeck +Crocidolite +Rosasite +Rutile +Samarskite +Sanidine +Sapphirine +Sarcol +Scapol +Marialite +Meionite +Scheel +Schizol +Scorod +Selenite +Sella +Senarmon +Sepio +Meerschaum +Sérandite +Seraph +Serendibite +Serpentine +Bowen +Stich +Shattuck +Shiga +Shortite +Shung +Siderite +Silliman +Simpsonite +Sinhal +Smalt +Smithsonite +Sodalite +Hackman +Sogdian +Sperry +Spessar +Sphaler +Spinel +Ceylon +Spodumene +Triphane +Spurrite +Stauro +Strontian +Titanate +Sulfur +Bustamite +Sylvite +Taaffeita +Talc +Tantalite +Tektites +Tephroite +Thomsonite +Thaumasite +Topaz +Tourmaline +Achroite +Chrome +Dravite +Elbaite +Indicol +Olenite +Paraiba +Rossman +Rubellite +Tremol +Triphyl +Triplite +Tugtup +Turquoise +Ulex +Ussing +Vanadinite +Variscite +Vesuvianite +Californite +Villiaum +Vivianite +Vlasov +Wardite +Wavell +Welogan +Whewell +Wilkeite +Willemite +Wither +Wollastone +Wulfenite +Wurtzite +Xonot +Yugawara +Zektzer +Zeolites +Chabaz +Steller +Stilbite +Zinc +Zinnwald +Zircon +Jacinth +Zoisite +Tanzan +Thulite +Zultan +Zany +Lapis lazuli +Desert glass +Llanite +Maw sit-sit +Obsidian +Tears +Pallas +Peridot +Soapstone +Tact +Unakite +Bauxite +Concretions +Bloodstone +Heliotrope +Eilat stone +Epidos +Glimmer +Goldstone +Hawks eye +Iddings +Lampro diff --git a/data/dfhack-config/buildingplan.json b/data/dfhack-config/buildingplan.json new file mode 100644 index 0000000000..9bb3052b71 --- /dev/null +++ b/data/dfhack-config/buildingplan.json @@ -0,0 +1,5 @@ +{ + "planner": { + "minimized": true + } +} \ No newline at end of file diff --git a/data/dfhack-config/init/examples/README.md b/data/dfhack-config/init/examples/README.md deleted file mode 100644 index 99060b0a35..0000000000 --- a/data/dfhack-config/init/examples/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Example DFHack init scripts - -This folder contains ready-to-use examples of DFHack init scripts. -You can use them by copying them to the dfhack-config/init folder. -You can use them unmodified, or you can customize them to better -suit your preferences. - -For information on each of the files in this library, see the -[DFHack Example Configuration File Guide](https://docs.dfhack.org/en/stable/docs/guides/examples-guide.html). diff --git a/data/dfhack-config/init/examples/onMapLoad_dreamfort.init b/data/dfhack-config/init/examples/onMapLoad_dreamfort.init deleted file mode 100644 index 13d4ea8fc2..0000000000 --- a/data/dfhack-config/init/examples/onMapLoad_dreamfort.init +++ /dev/null @@ -1,76 +0,0 @@ -# This dfhack config file automates common tasks for your forts. -# It was written for the Dreamfort set of quickfort blueprints, but the -# configuration here is useful for any fort! Copy this file to your -# dfhack-config/init directory to use. Feed free to edit or override -# to your liking. - -# Uncomment this next line if you want buildingplan (and quickfort) to use only -# blocks (not bars or logs) for constructions and workshops. If you do -# uncomment, be sure to bring some blocks with you for starting workshops! -#on-new-fortress buildingplan set boulders false; buildingplan set logs false - -# Disable cooking of useful item types when you start a new fortress. -on-new-fortress ban-cooking all - -# Show a warning dialog when units are starving -repeat -name warn-starving -time 10 -timeUnits days -command [ warn-starving ] - -# Force dwarves to drop tattered clothing instead of clinging to the scraps -repeat -name cleanowned -time 1 -timeUnits months -command [ cleanowned X ] - -# Automatically enqueue orders to shear and milk animals -repeat -name autoShearCreature -time 14 -timeUnits days -command [ workorder ShearCreature ] -repeat -name autoMilkCreature -time 14 -timeUnits days -command [ workorder "{\"job\":\"MilkCreature\",\"item_conditions\":[{\"condition\":\"AtLeast\",\"value\":2,\"flags\":[\"empty\"],\"item_type\":\"BUCKET\"}]}" ] - -# Fulfill high-volume orders before slower once-daily orders -repeat -name orders-sort -time 1 -timeUnits days -command [ orders sort ] - -# Manages crop assignment for farm plots -enable autofarm -autofarm default 30 -autofarm threshold 150 GRASS_TAIL_PIG - -# allows you to configure a stockpile to automatically mark items for melting -enable automelt - -# creates manager orders to produce replacements for worn clothing -enable tailor - -# auto-assigns nesting birds to nestbox zones and protects fertile eggs from -# being gathered and eaten -enable autonestbox nestboxes - -# manages seed stocks -enable seedwatch -seedwatch all 30 - -# ensures important tasks get assigned to workers. -# otherwise many job types can get ignored in busy forts. -on-new-fortress prioritize -aq defaults - -# autobutcher settings are saved in the savegame, so we only need to set them once. -# this way, any custom settings you set during gameplay are not overwritten -# -# feel free to change this to "target 0 0 0 0" if you don't expect to want to raise -# any animals not listed here -- you can always change it anytime during the game -# later if you change your mind. -on-new-fortress enable autobutcher -on-new-fortress autobutcher target 2 2 2 2 new -# dogs and cats. You should raise the limits for dogs if you will be training them -# for hunting or war. -on-new-fortress autobutcher target 2 2 2 2 DOG -on-new-fortress autobutcher target 1 1 2 2 CAT -# geese are our primary source of bones and leather. let the younglings grow up -# before we butcher so we get adult-scale products from them. BIRD_PEAFOWL_BLUE, -# BIRD_CHICKEN, and BIRD_TURKEY are also viable. feel free to change this to -# your bird of choice. -on-new-fortress autobutcher target 50 50 14 2 BIRD_GOOSE -# alpaca, sheep, and llamas give wool. we need to keep these numbers low, though, or -# else risk running out of grass for grazing. -on-new-fortress autobutcher target 2 2 4 2 ALPACA SHEEP LLAMA -# pigs give milk and meat and are zero-maintenance. -on-new-fortress autobutcher target 5 5 6 2 PIG -# immediately butcher all unprofitable animals -on-new-fortress autobutcher target 0 0 0 0 HORSE YAK DONKEY WATER_BUFFALO GOAT CAVY BIRD_DUCK BIRD_GUINEAFOWL -# watch for new animals -on-new-fortress autobutcher autowatch diff --git a/data/dfhack-config/stockpiles/README.md b/data/dfhack-config/stockpiles/README.md new file mode 100644 index 0000000000..593d45fb67 --- /dev/null +++ b/data/dfhack-config/stockpiles/README.md @@ -0,0 +1,5 @@ +This folder contains stockpile settings that can be applied by `stockpiles` and +`quickfort` tools. For more information, see: + +* [stockpiles documentation](https://docs.dfhack.org/en/latest/docs/tools/stockpiles.html) +* [quickfort documentation](https://docs.dfhack.org/en/latest/docs/guides/quickfort-user-guide.html) diff --git a/data/init/dfhack.keybindings.init b/data/init/dfhack.keybindings.init index 8ce0c36969..018c66ccde 100644 --- a/data/init/dfhack.keybindings.init +++ b/data/init/dfhack.keybindings.init @@ -8,7 +8,7 @@ # global bindings # ################### -# the GUI command launcher (two bindings since some keyboards don't have `) +# the GUI command launcher (two bindings since some keyboards don't have "`") keybinding add ` gui/launcher keybinding add Ctrl-Shift-D gui/launcher keybinding add Ctrl-Shift-P "gui/launcher --minimal" @@ -26,6 +26,31 @@ keybinding add Ctrl-Shift-K gui/cp437-table keybinding add Ctrl-Shift-A gui/quickcmd +################### +# embark bindings # +################### + +keybinding add Ctrl-A@choose_start_site gui/embark-anywhere + + +################################## +# dwarfmode+dungeonmode bindings # +################################## + +# save the description of a selected unit or item to the `markdown_{YourWorldName}.md` file +# in the game root directory +keybinding add Ctrl-T@dwarfmode/ViewSheets/UNIT|dwarfmode/ViewSheets/ITEM|dungeonmode/ViewSheets/UNIT|dungeonmode/ViewSheets/ITEM markdown + +# gui/sitemap +keybinding add Ctrl-G@dwarfmode/Default|dungeonmode/Default gui/sitemap + +# toggle keyboard cursor +keybinding add Alt-K@dwarfmode|dungeonmode/Default|dungeonmode/Look toggle-kbd-cursor + +# gui/journal +keybinding add Ctrl-J@dwarfmode|dungeonmode gui/journal + + ###################### # dwarfmode bindings # ###################### @@ -33,41 +58,34 @@ keybinding add Ctrl-Shift-A gui/quickcmd # quicksave keybinding add Ctrl-Alt-S@dwarfmode quicksave +# toggle spectate +keybinding add Ctrl-Shift-S@dwarfmode/Default "spectate toggle" + # designate the whole vein for digging keybinding add Ctrl-V@dwarfmode digv keybinding add Ctrl-Shift-V@dwarfmode "digv x" # clean the selected tile of blood etc -keybinding add Ctrl-C spotclean +keybinding add Ctrl-C@dwarfmode spotclean # destroy the selected item keybinding add Ctrl-K@dwarfmode autodump-destroy-item -# destroy items designated for dump in the selected tile -keybinding add Ctrl-H@dwarfmode autodump-destroy-here +# bring up the autodump UI +keybinding add Ctrl-H@dwarfmode gui/autodump + +# bring up the teleport UI +keybinding add Ctrl-Shift-T@dwarfmode gui/teleport # apply blueprints to the map keybinding add Ctrl-Shift-Q@dwarfmode gui/quickfort -# show information collected by dwarfmonitor -#keybinding add Alt-M@dwarfmode/Default "dwarfmonitor prefs" -#keybinding add Ctrl-F@dwarfmode/Default "dwarfmonitor stats" - -# set the zone or cage under the cursor as the default -#keybinding add Alt-Shift-I@dwarfmode/Zones "zone set" - # Stocks plugin #keybinding add Ctrl-Shift-Z@dwarfmode/Default "stocks show" # open an overview window summarising some stocks (dfstatus) #keybinding add Ctrl-Shift-I@dwarfmode/Default|dfhack/lua/dfstatus gui/dfstatus -# change quantity of manager orders -#keybinding add Alt-Q@jobmanagement/Main gui/manager-quantity - -# re-check manager orders -#keybinding add Alt-R@jobmanagement/Main workorder-recheck - # set workorder item details (on workorder details screen press D again) #keybinding add D@workquota_details gui/workorder-details @@ -80,9 +98,6 @@ keybinding add Ctrl-Shift-Q@dwarfmode gui/quickfort # boost priority of jobs related to the selected entity #keybinding add Alt-N@dwarfmode|job|joblist|unit|unitlist|joblist|dungeon_monsterstatus|layer_unit_relationship|item|layer_noblelist|locations|pets|layer_overall_health|textviewer|reportlist|announcelist|layer_military|layer_unit_health|customize_unit|buildinglist|textviewer|item|layer_assigntrade|tradegoods|store|assign_display_item|treasurelist do-job-now -# export a Dwarf's preferences screen in BBCode to post to a forum -#keybinding add Ctrl-Shift-F@textviewer forum-dwarves - # q->stockpile - copy & paste stockpiles #keybinding add Alt-P@dwarfmode/QueryBuilding/Some/Stockpile copystock @@ -104,21 +119,9 @@ keybinding add Ctrl-Shift-Q@dwarfmode gui/quickfort #keybinding add Shift-T "job-material ORTHOCLASE" #keybinding add Shift-G "job-material GLASS_GREEN" -# sort units and items in the on-screen list -#keybinding add Alt-Shift-N "sort-units name" "sort-items description" -#keybinding add Alt-Shift-R "sort-units arrival" -#keybinding add Alt-Shift-T "sort-units profession" "sort-items type material" -#keybinding add Alt-Shift-Q "sort-units squad_position" "sort-items quality" - -# browse linked mechanisms -#keybinding add Ctrl-M@dwarfmode/QueryBuilding/Some gui/mechanisms - # browse rooms of same owner #keybinding add Alt-R@dwarfmode/QueryBuilding/Some gui/room-list -# interface for the liquids plugin - spawn water/magma/obsidian -#keybinding add Alt-L@dwarfmode/LookAround gui/liquids - # machine power sensitive pressure plate construction #keybinding add Ctrl-Shift-M@dwarfmode/Build/Position/Trap gui/power-meter @@ -143,35 +146,23 @@ keybinding add Ctrl-Shift-Q@dwarfmode gui/quickfort # equivalent to the one above when gui/extended-status is enabled #keybinding add Alt-W@dfhack/lua/status_overlay "gui/workflow status" -# autobutcher front-end -#keybinding add Shift-B@pet/List/Unit gui/autobutcher - -# view pathable tiles from active cursor -#keybinding add Alt-Shift-P@dwarfmode/LookAround gui/pathable - # gui/rename script - rename units and buildings #keybinding add Ctrl-Shift-N@dwarfmode|unit|unitlist|joblist|dungeon_monsterstatus|layer_unit_relationship|item|workshop_profile|layer_noblelist|locations|pets|layer_overall_health|textviewer|reportlist|announcelist|layer_military|layer_unit_health|customize_unit|buildinglist gui/rename #keybinding add Ctrl-Shift-T@dwarfmode|unit|unitlist|joblist|dungeon_monsterstatus|layer_unit_relationship|item|workshop_profile|layer_noblelist|locations|pets|layer_overall_health|textviewer|reportlist|announcelist|layer_military|layer_unit_health|customize_unit "gui/rename unit-profession" # gui/design -keybinding add Ctrl-D@dwarfmode gui/design +keybinding add Ctrl-D@dwarfmode/Default gui/design +keybinding add Ctrl-M@dwarfmode/Default gui/mass-remove +######################## +# dungeonmode bindings # +######################## -##################### -# adv mode bindings # -##################### +keybinding add Ctrl-A@setupadventure unretire-anyone -#keybinding add Ctrl-A@dungeonmode/ConversationSpeak adv-rumors #keybinding add Ctrl-B@dungeonmode adv-bodyswap #keybinding add Ctrl-Shift-B@dungeonmode "adv-bodyswap force" #keybinding add Shift-O@dungeonmode gui/companion-order #keybinding add Ctrl-T@dungeonmode gui/advfort - - -######################### -# legends mode bindings # -######################### - -# export all information, or just the detailed maps (doesn't handle site maps) -#keybinding add Ctrl-A@legends "exportlegends all" +keybinding add Ctrl-T@dungeonmode/Default flashstep diff --git a/data/init/dfhack.tools.init b/data/init/dfhack.tools.init index 0ca764e8ee..baa26d3ee4 100644 --- a/data/init/dfhack.tools.init +++ b/data/init/dfhack.tools.init @@ -4,142 +4,16 @@ # defaults when you update DFHack. Instead, add your configuration to # dfhack-config/init/dfhack.init -############################ -# UI and game logic tweaks # -############################ - -# stabilize the cursor of dwarfmode when switching menus -#tweak stable-cursor - -# stop stacked liquid/bar/thread/cloth items from lasting forever -# if used in reactions that use only a fraction of the dimension. -# might be fixed by DF -# tweak fix-dimensions - -# make reactions requiring containers usable in advmode - the issue is -# that the screen asks for those reagents to be selected directly -#tweak advmode-contained - -# support Shift-Enter in Trade and Move Goods to Depot screens for faster -# selection; it selects the current item or stack and scrolls down one line -#tweak fast-trade - -# stop the right list in military->positions from resetting to top all the time -#tweak military-stable-assign -# in same list, color units already assigned to squads in brown & green -#tweak military-color-assigned - -# make crafted cloth items wear out with time like in old versions (bug 6003) -#tweak craft-age-wear - -# stop adamantine clothing from wearing out (bug 6481) -#tweak adamantine-cloth-wear - -# Add "Select all" and "Deselect all" options to farm plot menus -#tweak farm-plot-select - -# Add Shift-Left/Right controls to import agreement screen -#tweak import-priority-category - -# Fixes a crash in the work order contition material list (bug 9905). -#tweak condition-material - -# Adds an option to clear currently-bound hotkeys -#tweak hotkey-clear - -# Allows lowercase letters in embark profile names, and allows exiting the name prompt without saving -#tweak embark-profile-name - -# Reduce performance impact of temperature changes -#tweak fast-heat 100 - -# Misc. UI tweaks -#tweak block-labors # Prevents labors that can't be used from being toggled -#tweak burrow-name-cancel -#tweak cage-butcher -#tweak civ-view-agreement -#tweak do-job-now -#tweak eggs-fertile -#tweak fps-min -#tweak hide-priority -#tweak kitchen-prefs-all -#tweak kitchen-prefs-empty -#tweak max-wheelbarrow -#tweak partial-items -#tweak shift-8-scroll -#tweak stone-status-all -#tweak title-start-rename -#tweak tradereq-pet-gender - -########################### -# Globally acting plugins # -########################### - -# Display DFHack version on title screen -#enable title-version - -# Allow DFHack tools to overlay functionality and information on the DF screen -enable overlay - -# Allow buildings to be placed now and built later when materials are available +# Enable system services enable buildingplan +enable burrow +enable logistics +enable overlay +enable preserve-rooms -#Allow designated stockpiles to automatically mark items for melting -enable automelt - -# Dwarf Manipulator (simple in-game Dwarf Therapist replacement) -#enable manipulator - -# Search tool in various screens (by falconne) -#enable search - -# Improved build material selection interface (by falconne) -#enable automaterial - -# Other interface improvement tools -enable \ - confirm -# dwarfmonitor \ -# mousequery \ -# autogems \ -# autodump \ -# automelt \ -# autotrade \ -# buildingplan \ -# trackstop \ -# zone \ -# stocks \ -# autochop \ -# stockpiles -#end a line with a backslash to make it continue to the next line. The \ is deleted for the final command. -# Multiline commands are ONLY supported for scripts like dfhack.init. You cannot do multiline command manually on the DFHack console. -# You cannot extend a commented line. -# You can comment out the extension of a line. - -# enable mouse controls and sand indicator in embark screen -#embark-tools enable sticky sand mouse - -# enable option to enter embark assistant -#enable embark-assistant - -########### -# Scripts # -########### - -# write extra information to the gamelog -#modtools/extra-gamelog enable - -# extended status screen (bedrooms page) -#enable gui/extended-status - -# add information to item viewscreens -#view-item-info enable - -# a replacement for the "load game" screen -#gui/load-screen enable - -################### -# Default Aliases # -################### - +# aliases +alias add autounsuspend suspendmanager +alias add drain-aquifer aquifer drain --all alias add gui/dig gui/design +alias add version help +alias add gui/pregnancy gui/family-affairs --pregnancy diff --git a/data/init/onLoad.default.init b/data/init/onLoad.default.init index c131903573..e797f88ee7 100644 --- a/data/init/onLoad.default.init +++ b/data/init/onLoad.default.init @@ -3,3 +3,5 @@ # Please do not edit this file directly. It will be overwritten with new # defaults when you update DFHack. Instead, add your configuration to # dfhack-config/init/onLoad.init + +lua require('quickfix').set_entity_race_references() diff --git a/data/orders/basic.json b/data/orders/basic.json index 16b05e0bae..e1cd5ac8ff 100644 --- a/data/orders/basic.json +++ b/data/orders/basic.json @@ -1,31 +1,9 @@ [ - { - "amount_left" : 150, - "amount_total" : 150, - "frequency" : "Monthly", - "id" : 0, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "LessThan", - "flags" : - [ - "unrotten" - ], - "item_type" : "FOOD", - "value" : 400 - } - ], - "job" : "PrepareMeal", - "meal_ingredients" : 2 - }, { "amount_left" : 10, "amount_total" : 10, "frequency" : "Daily", - "id" : 1, + "id" : 0, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -47,7 +25,7 @@ "unrotten", "cookable" ], - "value" : 500 + "value" : 80 }, { "condition" : "AtMost", @@ -56,16 +34,7 @@ "unrotten" ], "item_type" : "FOOD", - "value" : 3500 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "unrotten" - ], - "item_type" : "FOOD", - "value" : 400 + "value" : 2000 } ], "job" : "PrepareMeal", @@ -75,7 +44,7 @@ "amount_left" : 2, "amount_total" : 2, "frequency" : "Daily", - "id" : 2, + "id" : 1, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -102,7 +71,7 @@ { "condition" : "AtMost", "item_type" : "DRINK", - "value" : 800 + "value" : 3000 } ], "job" : "CustomReaction", @@ -112,7 +81,7 @@ "amount_left" : 2, "amount_total" : 2, "frequency" : "Daily", - "id" : 3, + "id" : 2, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -139,7 +108,7 @@ { "condition" : "AtMost", "item_type" : "DRINK", - "value" : 800 + "value" : 3000 } ], "job" : "CustomReaction", @@ -153,27 +122,6 @@ "is_active" : false, "is_validated" : false, "item_conditions" : - [ - { - "condition" : "AtLeast", - "flags" : - [ - "unrotten", - "milk" - ], - "value" : 2 - } - ], - "job" : "MakeCheese" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 5, - "is_active" : false, - "is_validated" : false, - "item_conditions" : [ { "condition" : "AtLeast", @@ -205,7 +153,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 6, + "id" : 5, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -237,7 +185,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 7, + "id" : 6, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -268,7 +216,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 8, + "id" : 7, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -290,7 +238,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 9, + "id" : 8, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -322,7 +270,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 10, + "id" : 9, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -353,7 +301,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 11, + "id" : 10, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -386,7 +334,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 12, + "id" : 11, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -426,7 +374,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 13, + "id" : 12, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -452,7 +400,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 14, + "id" : 13, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -487,7 +435,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 15, + "id" : 14, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -522,7 +470,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 16, + "id" : 15, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -557,7 +505,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 17, + "id" : 16, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -587,7 +535,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 18, + "id" : 17, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -618,6 +566,36 @@ "job" : "MakeTool", "material" : "INORGANIC" }, + { + "amount_left" : 1, + "amount_total" : 1, + "frequency" : "Daily", + "id" : 18, + "is_active" : false, + "is_validated" : false, + "item_conditions" : + [ + { + "condition" : "AtLeast", + "item_type" : "WOOD", + "value" : 50 + }, + { + "condition" : "AtMost", + "flags" : + [ + "empty" + ], + "item_type" : "BIN", + "value" : 5 + } + ], + "job" : "ConstructBin", + "material_category" : + [ + "wood" + ] + }, { "amount_left" : 1, "amount_total" : 1, diff --git a/data/orders/military.json b/data/orders/military.json index 0e53747b60..e461f0d3d7 100644 --- a/data/orders/military.json +++ b/data/orders/military.json @@ -92,15 +92,16 @@ [ { "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", + "flags" : + [ + "silk" + ], + "item_type" : "CLOTH", + "min_dimension" : 10000, "value" : 10 }, { "condition" : "AtMost", - "flags" : - [ - "leather" - ], "item_subtype" : "ITEM_ARMOR_CLOAK", "item_type" : "ARMOR", "value" : 10 @@ -110,7 +111,7 @@ "job" : "MakeArmor", "material_category" : [ - "leather" + "silk" ] }, { @@ -152,25 +153,21 @@ [ { "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 25 + "item_type" : "WOOD", + "value" : 50 }, { "condition" : "AtMost", - "flags" : - [ - "leather" - ], "item_subtype" : "ITEM_SHIELD_SHIELD", "item_type" : "SHIELD", - "value" : 1 + "value" : 10 } ], "item_subtype" : "ITEM_SHIELD_SHIELD", "job" : "MakeShield", "material_category" : [ - "leather" + "wood" ] }, { @@ -191,7 +188,7 @@ "condition" : "AtMost", "item_subtype" : "ITEM_ARMOR_LEATHER", "item_type" : "ARMOR", - "value" : 1 + "value" : 10 } ], "item_subtype" : "ITEM_ARMOR_LEATHER", @@ -223,7 +220,7 @@ ], "item_subtype" : "ITEM_HELM_HELM", "item_type" : "HELM", - "value" : 1 + "value" : 10 } ], "item_subtype" : "ITEM_HELM_HELM", @@ -255,7 +252,7 @@ ], "item_subtype" : "ITEM_SHOES_BOOTS", "item_type" : "SHOES", - "value" : 2 + "value" : 20 } ], "item_subtype" : "ITEM_SHOES_BOOTS", @@ -287,7 +284,7 @@ ], "item_subtype" : "ITEM_PANTS_LEGGINGS", "item_type" : "PANTS", - "value" : 1 + "value" : 10 } ], "item_subtype" : "ITEM_PANTS_LEGGINGS", @@ -319,7 +316,7 @@ ], "item_subtype" : "ITEM_GLOVES_GLOVES", "item_type" : "GLOVES", - "value" : 2 + "value" : 20 } ], "item_subtype" : "ITEM_GLOVES_GLOVES", @@ -421,7 +418,7 @@ "condition" : "AtLeast", "item_type" : "BOULDER", "material" : "INORGANIC:CASSITERITE", - "value" : 5 + "value" : 25 }, { "condition" : "AtLeast", @@ -571,37 +568,6 @@ "is_active" : false, "is_validated" : false, "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:NATIVE_PLATINUM", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 10 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:NATIVE_PLATINUM" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 19, - "is_active" : false, - "is_validated" : false, - "item_conditions" : [ { "condition" : "AtLeast", @@ -629,7 +595,7 @@ "amount_left" : 4, "amount_total" : 4, "frequency" : "Daily", - "id" : 20, + "id" : 19, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -660,7 +626,7 @@ "amount_left" : 4, "amount_total" : 4, "frequency" : "Daily", - "id" : 21, + "id" : 20, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -691,7 +657,7 @@ "amount_left" : 4, "amount_total" : 4, "frequency" : "Daily", - "id" : 22, + "id" : 21, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -722,7 +688,7 @@ "amount_left" : 4, "amount_total" : 4, "frequency" : "Daily", - "id" : 23, + "id" : 22, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -731,7 +697,7 @@ "bearing" : "TIN", "condition" : "AtLeast", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "bearing" : "COPPER", @@ -759,7 +725,7 @@ "amount_left" : 4, "amount_total" : 4, "frequency" : "Daily", - "id" : 24, + "id" : 23, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -792,7 +758,7 @@ "bearing" : "TIN", "condition" : "AtMost", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "bearing" : "COPPER", @@ -808,7 +774,7 @@ "amount_left" : 4, "amount_total" : 4, "frequency" : "Daily", - "id" : 25, + "id" : 24, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -845,7 +811,7 @@ "amount_left" : 4, "amount_total" : 4, "frequency" : "Daily", - "id" : 26, + "id" : 25, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -888,7 +854,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 27, + "id" : 26, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -924,7 +890,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 28, + "id" : 27, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -967,7 +933,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 29, + "id" : 28, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1015,7 +981,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 30, + "id" : 29, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1070,79 +1036,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 35, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:SILVER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 35, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:SILVER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 37, + "id" : 30, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1175,7 +1069,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 38, + "id" : 31, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1208,7 +1102,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 39, + "id" : 32, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1241,7 +1135,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 40, + "id" : 33, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1274,7 +1168,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 41, + "id" : 34, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1307,7 +1201,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 42, + "id" : 35, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1347,7 +1241,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 43, + "id" : 36, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1387,7 +1281,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 44, + "id" : 37, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1404,12 +1298,6 @@ "material" : "COAL", "value" : 100 }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, { "condition" : "AtMost", "item_subtype" : "ITEM_WEAPON_MACE", @@ -1426,7 +1314,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 45, + "id" : 38, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1443,12 +1331,6 @@ "material" : "COAL", "value" : 100 }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, { "condition" : "AtMost", "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", @@ -1465,7 +1347,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 46, + "id" : 39, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1498,7 +1380,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 47, + "id" : 40, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1531,7 +1413,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 48, + "id" : 41, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1564,7 +1446,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 49, + "id" : 42, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1597,7 +1479,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 50, + "id" : 43, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1630,7 +1512,103 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 51, + "id" : 44, + "is_active" : false, + "is_validated" : false, + "item_conditions" : + [ + { + "condition" : "AtLeast", + "item_type" : "BAR", + "material" : "INORGANIC:SILVER", + "value" : 5 + }, + { + "condition" : "AtLeast", + "item_type" : "BAR", + "material" : "COAL", + "value" : 100 + }, + { + "condition" : "LessThan", + "item_type" : "BOULDER", + "reaction_class" : "FLUX", + "value" : 5 + }, + { + "condition" : "AtMost", + "flags" : + [ + "metal" + ], + "item_subtype" : "ITEM_WEAPON_MACE", + "item_type" : "WEAPON", + "value" : 10 + }, + { + "condition" : "LessThan", + "item_type" : "BAR", + "material" : "INORGANIC:STEEL", + "value" : 10 + } + ], + "item_subtype" : "ITEM_WEAPON_MACE", + "job" : "MakeWeapon", + "material" : "INORGANIC:SILVER" + }, + { + "amount_left" : 1, + "amount_total" : 1, + "frequency" : "Daily", + "id" : 45, + "is_active" : false, + "is_validated" : false, + "item_conditions" : + [ + { + "condition" : "AtLeast", + "item_type" : "BAR", + "material" : "INORGANIC:SILVER", + "value" : 5 + }, + { + "condition" : "AtLeast", + "item_type" : "BAR", + "material" : "COAL", + "value" : 100 + }, + { + "condition" : "LessThan", + "item_type" : "BOULDER", + "reaction_class" : "FLUX", + "value" : 5 + }, + { + "condition" : "AtMost", + "flags" : + [ + "metal" + ], + "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", + "item_type" : "WEAPON", + "value" : 10 + }, + { + "condition" : "LessThan", + "item_type" : "BAR", + "material" : "INORGANIC:STEEL", + "value" : 10 + } + ], + "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", + "job" : "MakeWeapon", + "material" : "INORGANIC:SILVER" + }, + { + "amount_left" : 1, + "amount_total" : 1, + "frequency" : "Daily", + "id" : 46, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1678,7 +1656,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 52, + "id" : 47, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1726,7 +1704,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 53, + "id" : 48, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1774,7 +1752,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 54, + "id" : 49, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1822,7 +1800,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 55, + "id" : 50, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1870,7 +1848,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 56, + "id" : 51, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1928,7 +1906,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 57, + "id" : 52, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -1986,7 +1964,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 58, + "id" : 53, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2040,7 +2018,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 59, + "id" : 54, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2094,7 +2072,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 60, + "id" : 55, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2142,7 +2120,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 61, + "id" : 56, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2190,7 +2168,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 62, + "id" : 57, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2238,7 +2216,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 63, + "id" : 58, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2286,7 +2264,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 64, + "id" : 59, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2334,7 +2312,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 79, + "id" : 74, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2382,7 +2360,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 80, + "id" : 75, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2430,7 +2408,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 81, + "id" : 76, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2478,7 +2456,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 82, + "id" : 77, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2526,7 +2504,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 83, + "id" : 78, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2574,7 +2552,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 84, + "id" : 79, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2632,7 +2610,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 85, + "id" : 80, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2690,7 +2668,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 72, + "id" : 67, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2735,7 +2713,7 @@ "item_type" : "BAR", "material" : "INORGANIC:SILVER", "value" : 5 - }, + } ], "item_subtype" : "ITEM_WEAPON_MACE", "job" : "MakeWeapon", @@ -2745,7 +2723,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 87, + "id" : 82, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2799,7 +2777,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 88, + "id" : 83, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2847,7 +2825,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 89, + "id" : 84, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2895,7 +2873,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 90, + "id" : 85, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2943,7 +2921,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 91, + "id" : 86, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -2991,7 +2969,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 92, + "id" : 87, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3039,7 +3017,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 79, + "id" : 74, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3093,7 +3071,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 80, + "id" : 75, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3147,7 +3125,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 81, + "id" : 76, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3201,7 +3179,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 82, + "id" : 77, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3255,7 +3233,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 83, + "id" : 78, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3309,7 +3287,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 84, + "id" : 79, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3373,7 +3351,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 85, + "id" : 80, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3437,7 +3415,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 86, + "id" : 81, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3497,7 +3475,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 87, + "id" : 82, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3557,7 +3535,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 88, + "id" : 83, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3611,7 +3589,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 89, + "id" : 84, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3665,7 +3643,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 90, + "id" : 85, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3719,7 +3697,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 91, + "id" : 86, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3773,7 +3751,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 92, + "id" : 87, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3827,7 +3805,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 93, + "id" : 88, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3887,7 +3865,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 94, + "id" : 89, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -3947,7 +3925,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 95, + "id" : 90, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4007,7 +3985,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 96, + "id" : 91, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4067,7 +4045,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 97, + "id" : 92, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4127,7 +4105,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 98, + "id" : 93, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4197,7 +4175,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 99, + "id" : 94, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4267,7 +4245,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 100, + "id" : 95, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4333,7 +4311,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 101, + "id" : 96, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4399,7 +4377,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 102, + "id" : 97, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4459,7 +4437,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 103, + "id" : 98, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4519,7 +4497,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 104, + "id" : 99, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4579,7 +4557,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 105, + "id" : 100, "is_active" : false, "is_validated" : false, "item_conditions" : @@ -4639,7 +4617,7 @@ "amount_left" : 1, "amount_total" : 1, "frequency" : "Daily", - "id" : 106, + "id" : 101, "is_active" : false, "is_validated" : false, "item_conditions" : diff --git a/data/orders/military_include_artifact_materials.json b/data/orders/military_include_artifact_materials.json deleted file mode 100644 index 536b2cd7a8..0000000000 --- a/data/orders/military_include_artifact_materials.json +++ /dev/null @@ -1,4971 +0,0 @@ -[ - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 0, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 10 - }, - { - "condition" : "AtMost", - "item_type" : "BACKPACK", - "value" : 10 - } - ], - "job" : "MakeBackpack", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 1, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 10 - }, - { - "condition" : "AtMost", - "flags" : - [ - "leather" - ], - "item_type" : "FLASK", - "value" : 10 - } - ], - "job" : "MakeFlask", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 2, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 10 - }, - { - "condition" : "AtMost", - "item_type" : "QUIVER", - "value" : 10 - } - ], - "job" : "MakeQuiver", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 3, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 10 - }, - { - "condition" : "AtMost", - "flags" : - [ - "leather" - ], - "item_subtype" : "ITEM_ARMOR_CLOAK", - "item_type" : "ARMOR", - "value" : 10 - } - ], - "item_subtype" : "ITEM_ARMOR_CLOAK", - "job" : "MakeArmor", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 4, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "WOOD", - "value" : 50 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material_category" : - [ - "wood" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 5, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 25 - }, - { - "condition" : "AtMost", - "flags" : - [ - "leather" - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "item_type" : "SHIELD", - "value" : 1 - } - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "job" : "MakeShield", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 6, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 25 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_ARMOR_LEATHER", - "item_type" : "ARMOR", - "value" : 1 - } - ], - "item_subtype" : "ITEM_ARMOR_LEATHER", - "job" : "MakeArmor", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 7, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 25 - }, - { - "condition" : "AtMost", - "flags" : - [ - "leather" - ], - "item_subtype" : "ITEM_HELM_HELM", - "item_type" : "HELM", - "value" : 1 - } - ], - "item_subtype" : "ITEM_HELM_HELM", - "job" : "MakeHelm", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 8, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 25 - }, - { - "condition" : "AtMost", - "flags" : - [ - "leather" - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "item_type" : "SHOES", - "value" : 2 - } - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "job" : "MakeShoes", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 9, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 25 - }, - { - "condition" : "AtMost", - "flags" : - [ - "leather" - ], - "item_subtype" : "ITEM_PANTS_LEGGINGS", - "item_type" : "PANTS", - "value" : 1 - } - ], - "item_subtype" : "ITEM_PANTS_LEGGINGS", - "job" : "MakePants", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 10, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "SKIN_TANNED", - "value" : 25 - }, - { - "condition" : "AtMost", - "flags" : - [ - "leather" - ], - "item_subtype" : "ITEM_GLOVES_GLOVES", - "item_type" : "GLOVES", - "value" : 2 - } - ], - "item_subtype" : "ITEM_GLOVES_GLOVES", - "job" : "MakeGloves", - "material_category" : - [ - "leather" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 11, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "flags" : - [ - "unrotten", - "bone", - "body_part" - ], - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "bone" - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "item_type" : "AMMO", - "value" : 1000 - } - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "job" : "MakeAmmo", - "material_category" : - [ - "bone" - ] - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 12, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "WOOD", - "value" : 150 - }, - { - "condition" : "AtMost", - "flags" : - [ - "bone" - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "item_type" : "AMMO", - "value" : 200 - }, - { - "condition" : "AtMost", - "flags" : - [ - "plant" - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "item_type" : "AMMO", - "value" : 1000 - } - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "job" : "MakeAmmo", - "material_category" : - [ - "wood" - ] - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 13, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:CASSITERITE", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:TIN", - "value" : 20 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:CASSITERITE" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 14, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:HEMATITE", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 40 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:HEMATITE" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 15, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:HORN_SILVER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 10 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:HORN_SILVER" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 16, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:LIMONITE", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 40 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:LIMONITE" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 17, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:NATIVE_COPPER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 40 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:NATIVE_COPPER" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 18, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:NATIVE_PLATINUM", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 10 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:NATIVE_PLATINUM" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 19, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:NATIVE_SILVER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 10 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:NATIVE_SILVER" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 20, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:MAGNETITE", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 40 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:MAGNETITE" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 21, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:MALACHITE", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 40 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:MALACHITE" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 22, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "material" : "INORGANIC:TETRAHEDRITE", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 40 - } - ], - "job" : "SmeltOre", - "material" : "INORGANIC:TETRAHEDRITE" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 23, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "bearing" : "TIN", - "condition" : "AtLeast", - "item_type" : "BOULDER", - "value" : 5 - }, - { - "bearing" : "COPPER", - "condition" : "AtLeast", - "item_type" : "BOULDER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 40 - } - ], - "job" : "CustomReaction", - "reaction" : "BRONZE_MAKING" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 24, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:TIN", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 40 - }, - { - "bearing" : "TIN", - "condition" : "AtMost", - "item_type" : "BOULDER", - "value" : 5 - }, - { - "bearing" : "COPPER", - "condition" : "AtMost", - "item_type" : "BOULDER", - "value" : 5 - } - ], - "job" : "CustomReaction", - "reaction" : "BRONZE_MAKING2" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 25, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:PIG_IRON", - "value" : 10 - } - ], - "job" : "CustomReaction", - "reaction" : "PIG_IRON_MAKING" - }, - { - "amount_left" : 4, - "amount_total" : 4, - "frequency" : "Daily", - "id" : 26, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:PIG_IRON", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 40 - } - ], - "job" : "CustomReaction", - "reaction" : "STEEL_MAKING" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 27, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "item_type" : "AMMO", - "value" : 1000 - } - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "job" : "MakeAmmo", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 28, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "min_dimension" : 150, - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "item_type" : "AMMO", - "value" : 1000 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "job" : "MakeAmmo", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 29, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "item_type" : "AMMO", - "value" : 1000 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "job" : "MakeAmmo", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 30, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "min_dimension" : 150, - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "item_type" : "AMMO", - "value" : 1000 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - } - ], - "item_subtype" : "ITEM_AMMO_BOLTS", - "job" : "MakeAmmo", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 31, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "material" : "INORGANIC:PLATINUM", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:PLATINUM" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 32, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "material" : "INORGANIC:PLATINUM", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:PLATINUM" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 64, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "material" : "INORGANIC:PLATINUM", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material" : "INORGANIC:PLATINUM" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 35, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:SILVER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 35, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:SILVER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 64, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material" : "INORGANIC:SILVER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 37, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_SHIELD_SHIELD", - "item_type" : "SHIELD", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "job" : "MakeShield", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 38, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "job" : "MakeArmor", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 39, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_HELM_HELM", - "item_type" : "HELM", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_HELM_HELM", - "job" : "MakeHelm", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 40, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_SHOES_BOOTS", - "item_type" : "SHOES", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "job" : "MakeShoes", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 41, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "item_type" : "GLOVES", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "job" : "MakeGloves", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 42, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_PANTS_GREAVES", - "item_type" : "PANTS", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "material" : "INORGANIC:STEEL", - "value" : 5 - } - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "job" : "MakePants", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 43, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "item_type" : "ARMOR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "material" : "INORGANIC:STEEL", - "value" : 5 - } - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "job" : "MakeArmor", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 44, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 45, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 46, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_SPEAR", - "item_type" : "WEAPON", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 47, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "item_type" : "WEAPON", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "job" : "MakeWeapon", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 48, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "item_type" : "WEAPON", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "job" : "MakeWeapon", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 49, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_PICK", - "item_type" : "WEAPON", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "job" : "MakeWeapon", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 50, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material" : "INORGANIC:STEEL" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 51, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "item_type" : "SHIELD", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "job" : "MakeShield", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 52, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "job" : "MakeArmor", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 53, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_HELM_HELM", - "item_type" : "HELM", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_HELM_HELM", - "job" : "MakeHelm", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 54, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "item_type" : "SHOES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "job" : "MakeShoes", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 55, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "item_type" : "GLOVES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "job" : "MakeGloves", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 56, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "item_type" : "PANTS", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - } - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "job" : "MakePants", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 57, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - } - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "job" : "MakeArmor", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 58, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 59, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 60, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 61, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "job" : "MakeWeapon", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 62, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "job" : "MakeWeapon", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 63, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - } - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "job" : "MakeWeapon", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 64, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BOULDER", - "reaction_class" : "FLUX", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material" : "INORGANIC:IRON" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 79, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "item_type" : "SHIELD", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "job" : "MakeShield", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 80, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "job" : "MakeArmor", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 81, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_HELM_HELM", - "item_type" : "HELM", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_HELM_HELM", - "job" : "MakeHelm", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 82, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "item_type" : "SHOES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "job" : "MakeShoes", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 83, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "item_type" : "GLOVES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - } - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "job" : "MakeGloves", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 84, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "item_type" : "PANTS", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - } - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "job" : "MakePants", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 85, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - } - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "job" : "MakeArmor", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 72, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "min_dimension" : 150, - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 87, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 88, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 89, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "job" : "MakeWeapon", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 90, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "job" : "MakeWeapon", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 91, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - } - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "job" : "MakeWeapon", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 92, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material" : "INORGANIC:BISMUTH_BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 79, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "item_type" : "SHIELD", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "job" : "MakeShield", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 80, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "job" : "MakeArmor", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 81, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_HELM_HELM", - "item_type" : "HELM", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_HELM_HELM", - "job" : "MakeHelm", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 82, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "item_type" : "SHOES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "job" : "MakeShoes", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 83, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "item_type" : "GLOVES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "job" : "MakeGloves", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 84, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "item_type" : "PANTS", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "job" : "MakePants", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 85, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "job" : "MakeArmor", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 86, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 87, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 88, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 89, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "job" : "MakeWeapon", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 90, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "job" : "MakeWeapon", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 91, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 30 - } - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "job" : "MakeWeapon", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 92, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 30 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material" : "INORGANIC:BRONZE" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 93, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "item_type" : "SHIELD", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHIELD_SHIELD", - "job" : "MakeShield", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 94, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "job" : "MakeArmor", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 95, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_HELM_HELM", - "item_type" : "HELM", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_HELM_HELM", - "job" : "MakeHelm", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 96, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "item_type" : "SHOES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_SHOES_BOOTS", - "job" : "MakeShoes", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 97, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "item_type" : "GLOVES", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - } - ], - "item_subtype" : "ITEM_GLOVES_GAUNTLETS", - "job" : "MakeGloves", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 98, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "item_type" : "PANTS", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - } - ], - "item_subtype" : "ITEM_PANTS_GREAVES", - "job" : "MakePants", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 99, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 20 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "item_type" : "ARMOR", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 20 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 20 - }, - { - "condition" : "AtLeast", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_ARMOR_MAIL_SHIRT", - "item_type" : "ARMOR", - "value" : 5 - } - ], - "item_subtype" : "ITEM_ARMOR_BREASTPLATE", - "job" : "MakeArmor", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 100, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_MACE", - "job" : "MakeWeapon", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 101, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "item_type" : "WEAPON", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_HAMMER_WAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 102, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SPEAR", - "job" : "MakeWeapon", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 103, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_SWORD_SHORT", - "job" : "MakeWeapon", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 104, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 10 - } - ], - "item_subtype" : "ITEM_WEAPON_AXE_BATTLE", - "job" : "MakeWeapon", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 105, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 10 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 30 - } - ], - "item_subtype" : "ITEM_WEAPON_PICK", - "job" : "MakeWeapon", - "material" : "INORGANIC:COPPER" - }, - { - "amount_left" : 1, - "amount_total" : 1, - "frequency" : "Daily", - "id" : 106, - "is_active" : false, - "is_validated" : false, - "item_conditions" : - [ - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "INORGANIC:COPPER", - "value" : 30 - }, - { - "condition" : "AtLeast", - "item_type" : "BAR", - "material" : "COAL", - "value" : 100 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BRONZE", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:IRON", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:STEEL", - "value" : 30 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:SILVER", - "value" : 5 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:PLATINUM", - "value" : 5 - }, - { - "condition" : "AtMost", - "flags" : - [ - "metal" - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "item_type" : "WEAPON", - "value" : 10 - }, - { - "condition" : "LessThan", - "item_type" : "BAR", - "material" : "INORGANIC:BISMUTH_BRONZE", - "value" : 30 - } - ], - "item_subtype" : "ITEM_WEAPON_CROSSBOW", - "job" : "MakeWeapon", - "material" : "INORGANIC:COPPER" - } -] diff --git a/data/orders/smelting.json b/data/orders/smelting.json index fec6693243..781a52100d 100644 --- a/data/orders/smelting.json +++ b/data/orders/smelting.json @@ -43,7 +43,7 @@ "condition" : "AtLeast", "item_type" : "BOULDER", "material" : "INORGANIC:CASSITERITE", - "value" : 5 + "value" : 25 }, { "condition" : "AtLeast", @@ -668,7 +668,7 @@ "bearing" : "TIN", "condition" : "AtLeast", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "bearing" : "COPPER", @@ -729,7 +729,7 @@ "bearing" : "TIN", "condition" : "AtMost", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "bearing" : "COPPER", @@ -791,13 +791,13 @@ "bearing" : "TIN", "condition" : "AtLeast", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "bearing" : "COPPER", "condition" : "AtLeast", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "condition" : "AtLeast", @@ -828,13 +828,13 @@ "condition" : "AtLeast", "item_type" : "BAR", "material" : "INORGANIC:TIN", - "value" : 5 + "value" : 25 }, { "condition" : "AtLeast", "item_type" : "BAR", "material" : "INORGANIC:COPPER", - "value" : 5 + "value" : 25 }, { "condition" : "AtLeast", @@ -1068,13 +1068,13 @@ "bearing" : "TIN", "condition" : "AtLeast", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "bearing" : "COPPER", "condition" : "AtLeast", "item_type" : "BOULDER", - "value" : 5 + "value" : 25 }, { "condition" : "AtLeast", diff --git a/data/patches/README.md b/data/patches/README.md new file mode 100644 index 0000000000..599bbf47fb --- /dev/null +++ b/data/patches/README.md @@ -0,0 +1,13 @@ +Place IDA-exported `.dif` files for use by `binpatch` in subdirectories of this +directory. Each `.dif` file must be in a subdirectory named after the full +symbol table version string. For example, for DF version 51.05, you would use +these subdirectories: + +- "v0.51.05 linux64 CLASSIC" +- "v0.51.05 linux64 ITCH" +- "v0.51.05 linux64 STEAM" +- "v0.51.05 win64 CLASSIC" +- "v0.51.05 win64 ITCH" +- "v0.51.05 win64 STEAM" + +See https://docs.dfhack.org/en/stable/docs/dev/Binpatches.html for more details. diff --git a/data/professions/Chef b/data/professions/Chef index 218e083019..2dd8d8508f 100644 --- a/data/professions/Chef +++ b/data/professions/Chef @@ -17,4 +17,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Craftsdwarf b/data/professions/Craftsdwarf index 8c9707f17d..5b9d03ca84 100644 --- a/data/professions/Craftsdwarf +++ b/data/professions/Craftsdwarf @@ -24,4 +24,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Doctor b/data/professions/Doctor index 14959f599e..b15ff96b22 100644 --- a/data/professions/Doctor +++ b/data/professions/Doctor @@ -21,4 +21,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Fisherdwarf b/data/professions/Fisherdwarf index 1b5d7a1a84..6c2106e6a2 100644 --- a/data/professions/Fisherdwarf +++ b/data/professions/Fisherdwarf @@ -17,4 +17,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Hauler b/data/professions/Hauler index 4fd8b89f84..36e7f400ab 100644 --- a/data/professions/Hauler +++ b/data/professions/Hauler @@ -19,4 +19,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Laborer b/data/professions/Laborer index ccd6884282..d9b9e7f498 100644 --- a/data/professions/Laborer +++ b/data/professions/Laborer @@ -19,4 +19,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Marksdwarf b/data/professions/Marksdwarf index f34d67cd29..1c9153f02f 100644 --- a/data/professions/Marksdwarf +++ b/data/professions/Marksdwarf @@ -15,4 +15,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Mason b/data/professions/Mason index 1977d2df51..cd01d9a443 100644 --- a/data/professions/Mason +++ b/data/professions/Mason @@ -17,4 +17,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Meleedwarf b/data/professions/Meleedwarf index 6a8338fea9..75b2196dfb 100644 --- a/data/professions/Meleedwarf +++ b/data/professions/Meleedwarf @@ -16,4 +16,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Migrant b/data/professions/Migrant index 23a3eeddb7..bc59555b96 100644 --- a/data/professions/Migrant +++ b/data/professions/Migrant @@ -19,4 +19,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Outdoorsdwarf b/data/professions/Outdoorsdwarf index 31dbd2ad88..2b3006fdef 100644 --- a/data/professions/Outdoorsdwarf +++ b/data/professions/Outdoorsdwarf @@ -25,4 +25,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Smith b/data/professions/Smith index 7809d80e11..26574f80bf 100644 --- a/data/professions/Smith +++ b/data/professions/Smith @@ -18,4 +18,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/StartManager b/data/professions/StartManager index a70c705bf7..36519bce56 100644 --- a/data/professions/StartManager +++ b/data/professions/StartManager @@ -55,4 +55,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/professions/Tailor b/data/professions/Tailor index f7986553a2..fc1b04bd4c 100644 --- a/data/professions/Tailor +++ b/data/professions/Tailor @@ -18,4 +18,3 @@ CLEAN PULL_LEVER BUILD_ROAD BUILD_CONSTRUCTION -REMOVE_CONSTRUCTION diff --git a/data/stockpiles/adamantinecloth.dfstock b/data/stockpiles/adamantinecloth.dfstock index e63bd31d02..38781d3130 100644 Binary files a/data/stockpiles/adamantinecloth.dfstock and b/data/stockpiles/adamantinecloth.dfstock differ diff --git a/data/stockpiles/adamantinethread.dfstock b/data/stockpiles/adamantinethread.dfstock index 0b50c6c393..2231b389f5 100644 Binary files a/data/stockpiles/adamantinethread.dfstock and b/data/stockpiles/adamantinethread.dfstock differ diff --git a/data/stockpiles/adamantineweapons.dfstock b/data/stockpiles/adamantineweapons.dfstock new file mode 100644 index 0000000000..6236196f0e Binary files /dev/null and b/data/stockpiles/adamantineweapons.dfstock differ diff --git a/data/stockpiles/all.dfstock b/data/stockpiles/all.dfstock new file mode 100644 index 0000000000..eace9c53dd Binary files /dev/null and b/data/stockpiles/all.dfstock differ diff --git a/data/stockpiles/ammo.dfstock b/data/stockpiles/ammo.dfstock deleted file mode 100644 index 744b76cb4a..0000000000 Binary files a/data/stockpiles/ammo.dfstock and /dev/null differ diff --git a/data/stockpiles/animalsprefix.dfstock b/data/stockpiles/animalsprefix.dfstock deleted file mode 100644 index e09193a2f2..0000000000 --- a/data/stockpiles/animalsprefix.dfstock +++ /dev/null @@ -1,71 +0,0 @@ - -™÷TOADTOAD_MAN -GIANT_TOADWORMWORM_MAN BIRD_BLUEJAY BLUEJAY_MAN GIANT_BLUEJAY BIRD_CARDINAL CARDINAL_MANGIANT_CARDINAL BIRD_GRACKLE GRACKLE_MAN GIANT_GRACKLE BIRD_ORIOLE -ORIOLE_MAN GIANT_ORIOLEBIRD_RW_BLACKBIRDRW_BLACKBIRD_MANGIANT_RW_BLACKBIRD BIRD_PENGUINBIRD_PENGUIN_LITTLEBIRD_PENGUIN_EMPEROR PENGUIN MANBIRD_PENGUIN_GIANTBIRD_FALCON_PEREGRINEPEREGRINE FALCON MANGIANT PEREGRINE FALCON BIRD_KIWIKIWI MANBIRD_KIWI_GIANT BIRD_OSTRICH OSTRICH MANBIRD_OSTRICH_GIANT BIRD_CROWCROW_MAN -GIANT_CROW -BIRD_RAVEN RAVEN_MAN GIANT_RAVENBIRD_CASSOWARY CASSOWARY_MANGIANT_CASSOWARYBIRD_KEAKEA_MAN GIANT_KEABIRD_OWL_SNOWY SNOWY_OWL_MANGIANT_SNOWY_OWLSPARROW SPARROW_MAN GIANT_SPARROWBIRD_STORK_WHITEWHITE_STORK_MANGIANT_WHITE_STORK BIRD_LOONLOON_MAN -GIANT_LOON BIRD_OWL_BARN BARN_OWL_MANGIANT_BARN_OWL BIRD_PARAKEET PARAKEET_MANGIANT_PARAKEET BIRD_KAKAPO -KAKAPO_MAN GIANT_KAKAPOBIRD_PARROT_GREYGREY_PARROT_MANGIANT_GREY_PARROT BIRD_PUFFIN -PUFFIN_MAN GIANT_PUFFIN BIRD_SWANSWAN_MAN -GIANT_SWAN BIRD_LORIKEET LORIKEET_MANGIANT_LORIKEET BIRD_WRENWREN_MAN -GIANT_WREN BIRD_OSPREY -OSPREY_MAN GIANT_OSPREYBIRD_EMUEMU_MAN GIANT_EMUBIRD_COCKATIEL COCKATIEL_MANGIANT_COCKATIELBIRD_LOVEBIRD_PEACH-FACEDPEACH-FACED_LOVEBIRD_MANGIANT_PEACH-FACED_LOVEBIRD BIRD_MAGPIE -MAGPIE_MAN GIANT_MAGPIE BIRD_KESTREL KESTREL_MAN GIANT_KESTRELBIRD_ALBATROSS ALBATROSS_MANGIANT_ALBATROSSBIRD_OWL_GREAT_HORNEDGREAT_HORNED_OWL_MANGIANT_GREAT_HORNED_OWL -BIRD_EAGLE EAGLE_MAN GIANT_EAGLE BIRD_HORNBILL HORNBILL_MANGIANT_HORNBILLBIRD_LOVEBIRD_MASKEDMASKED_LOVEBIRD_MANGIANT_MASKED_LOVEBIRD BIRD_BUSHTIT BUSHTIT_MAN GIANT_BUSHTIT DAMSELFLY DAMSELFLY_MANGIANT_DAMSELFLYMOTHMOTH_MAN -GIANT_MOTH GRASSHOPPERGRASSHOPPER_MANGIANT_GRASSHOPPER BARK_SCORPIONBARK_SCORPION_MANGIANT_BARK_SCORPIONMANTIS -MANTIS_MAN GIANT_MANTISTICKTICK_MAN -GIANT_TICKLOUSE LOUSE_MAN GIANT_LOUSETHRIPS -THRIPS_MAN GIANT_THRIPSSLUGSLUG_MAN -GIANT_SLUGMOSQUITO MOSQUITO_MANGIANT_MOSQUITOSPIDER_JUMPINGJUMPING_SPIDER_MANGIANT_JUMPING_SPIDERTERMITE -MOON_SNAILMOON_SNAIL_MANGIANT_MOON_SNAILSPIDER_BROWN_RECLUSEBROWN_RECLUSE_SPIDER_MANGIANT_BROWN_RECLUSE_SPIDERSNAIL SNAIL_MAN GIANT_SNAIL GECKO_LEOPARDLEOPARD_GECKO_MANGIANT_LEOPARD_GECKODESERT TORTOISEDESERT_TORTOISE_MANGIANT_DESERT_TORTOISE GILA_MONSTERGILA_MONSTER_MANGIANT_GILA_MONSTERDOGCATMULEDONKEYHORSECOWSHEEPPIGGOAT BIRD_CHICKENCAVY BIRD_DUCK WATER_BUFFALOREINDEER -BIRD_GOOSEYAKLLAMAALPACABIRD_GUINEAFOWLBIRD_PEAFOWL_BLUE BIRD_TURKEYRABBITEQUIPMENT_WAGONCHIMERACENTAURGRIFFONFLYFLY_MAN GIANT_FLY ROACH_LARGE ROACH_MAN GIANT_ROACHBEETLE -BEETLE_MAN GIANT_BEETLEANTBUTTERFLY_MONARCHBUTTERFLY_MONARCH_MANGIANT_BUTTERFLY_MONARCHFIREFLY FIREFLY_MAN GIANT_FIREFLY DRAGONFLY DRAGONFLY_MANGIANT_DRAGONFLY HONEY_BEE BUMBLEBEE GOAT_MOUNTAINGOAT_MOUNTAIN_MANGIANT_GOAT_MOUNTAIN MARMOT_HOARYMARMOT_HOARY_MANGIANT_MARMOT_HOARYGNOME_MOUNTAIN -GNOME_DARKWALRUS -WALRUS_MAN GIANT_WALRUSFISH_LAMPREY_SEASHARK_GREAT_WHITE SHARK_FRILLSHARK_SPINY_DOGFISHSHARK_WOBBEGONG_SPOTTED SHARK_WHALE SHARK_BASKING SHARK_NURSESHARK_MAKO_SHORTFINSHARK_MAKO_LONGFIN SHARK_TIGER -SHARK_BULLSHARK_REEF_BLACKTIPSHARK_REEF_WHITETIP -SHARK_BLUESHARK_HAMMERHEAD SHARK_ANGELFISH_SKATE_COMMONFISH_RAY_MANTA FISH_STINGRAYFISH_COELACANTH FISH_STURGEONFISH_CONGER_EEL FISH_MILKFISHFISH_COD FISH_OPAHFISH_GROUPER_GIANT FISH_BLUEFISHFISH_SUNFISH_OCEANFISH_SWORDFISH FISH_MARLIN FISH_HALIBUTFISH_BARRACUDA_GREATFISH_TUNA_BLUEFINNARWHAL NARWHAL MANNARWHAL, GIANTHIPPO HIPPO_MAN GIANT_HIPPOFISH_GAR_LONGNOSE FISH_CARPFISH_TIGERFISH FISH_PIKEPLATYPUS PLATYPUS MANPLATYPUS, GIANT BEAR_GRIZZLYBEAR_GRIZZLY_MANGIANT_BEAR_GRIZZLY -BEAR_BLACKBEAR_BLACK_MANGIANT_BEAR_BLACKDEERDEER_MAN -GIANT_DEERFOXFOX_MAN GIANT_FOXRACCOON RACCOON_MAN GIANT_RACCOONMACAQUE_RHESUSMACAQUE_RHESUS_MANGIANT_MACAQUE_RHESUSCOUGAR -COUGAR_MAN GIANT_COUGARWOLFWOLF_MAN -GIANT_WOLF GROUNDHOG GROUNDHOG_MANGIANT_GROUNDHOG ALLIGATOR ALLIGATOR_MANGIANT_ALLIGATOR BIRD_BUZZARD BUZZARD_MAN GIANT_BUZZARDPANDAPANDA, GIGANTIC PANDA MANCAPYBARACAPYBARA, GIANT CAPYBARA MANBADGER -BADGER MAN BADGER, GIANTMOOSE MOOSE MAN MOOSE, GIANT RED PANDA RED PANDA MANRED PANDA, GIANTELEPHANT ELEPHANT_MANGIANT_ELEPHANTWARTHOG WARTHOG_MAN GIANT_WARTHOGLIONLION_MAN -GIANT_LIONLEOPARD LEOPARD_MAN GIANT_LEOPARDJAGUAR -JAGUAR_MAN GIANT_JAGUARTIGER TIGER_MAN GIANT_TIGERCHEETAH CHEETAH_MAN GIANT_CHEETAHGAZELLE GAZELLE_MAN GIANT_GAZELLEMANDRILL MANDRILL_MANGIANT_MANDRILL -CHIMPANZEEBONOBOGORILLA ORANGUTANGIBBON_SIAMANGGIBBON_WHITE_HANDEDGIBBON_BLACK_HANDED GIBBON_GRAYGIBBON_SILVERYGIBBON_PILEATED GIBBON_BILOUGIBBON_WHITE_BROWEDGIBBON_BLACK_CRESTED CAMEL_1_HUMPCAMEL_1_HUMP_MANGIANT_CAMEL_1_HUMP CAMEL_2_HUMPCAMEL_2_HUMP_MANGIANT_CAMEL_2_HUMPCROCODILE_SALTWATERCROCODILE_SALTWATER_MANGIANT_CROCODILE_SALTWATER BIRD_VULTURE VULTURE_MAN GIANT_VULTURE -RHINOCEROSRHINOCEROS_MANGIANT_RHINOCEROSGIRAFFE GIRAFFE_MAN GIANT_GIRAFFE HONEY BADGERHONEY BADGER MANHONEY BADGER, GIANTGIANT TORTOISEGIANT TORTOISE MANGIGANTIC TORTOISE ARMADILLO ARMADILLO MANARMADILLO, GIANTMUSKOX -MUSKOX_MAN GIANT_MUSKOXELKELK_MAN GIANT_ELK -BEAR_POLARBEAR_POLAR_MANGIANT_BEAR_POLAR WOLVERINE WOLVERINE_MANGIANT_WOLVERINE -CHINCHILLACHINCHILLA_MANGIANT_CHINCHILLA FLOATING_GUTSDRUNIAN CREEPING_EYEVORACIOUS_CAVE_CRAWLERBLIND_CAVE_OGRE -CAP_HOPPER -MAGMA_CRABCRUNDLE HUNGRY_HEAD -FLESH_BALLELK_BIRD HELMET_SNAKEGREEN_DEVOURERRUTHERERCREEPY_CRAWLERDRALTHAGIANT_EARTHWORM BLOOD_MANBUGBATMANERA -MOLEMARIANJABBERER POND_GRABBERBLIND_CAVE_BEAR CAVE_DRAGONREACHERELEMENTMAN_GABBROGORLAK CAVE_FLOATERPLUMP_HELMET_MAN CAVE_BLOBELEMENTMAN_AMETHYSTOCTOPUS OCTOPUS_MAN GIANT_OCTOPUSCRABCRAB_MAN -GIANT_CRAB LEOPARD_SEALLEOPARD_SEAL_MANGIANT_LEOPARD_SEAL -CUTTLEFISHCUTTLEFISH_MANGIANT_CUTTLEFISHORCAORCA_MAN -GIANT_ORCASPONGE -SPONGE_MAN GIANT_SPONGEHORSESHOE_CRABHORSESHOE_CRAB_MANGIANT_HORSESHOE_CRAB SPERM_WHALESPERM_WHALE_MANGIANT_SPERM_WHALE ELEPHANT_SEALELEPHANT_SEAL_MANGIANT_ELEPHANT_SEAL HARP_SEAL HARP_SEAL_MANGIANT_HARP_SEALNAUTILUS NAUTILUS_MANGIANT_NAUTILUS FOXSQUIRREL MOGHOPPER RAT_DEMONWAMBLER_FLUFFYLIZARD_RHINO_TWO_LEGGED WORM_KNUCKLESPIDER_PHANTOM FLY_ACORN -GNAT_BLOODLIZARD -LIZARD_MAN GIANT_LIZARDSKINK SKINK_MAN GIANT_SKINK CHAMELEON CHAMELEON_MANGIANT_CHAMELEONANOLE ANOLE_MAN GIANT_ANOLEIGUANA -IGUANA_MAN GIANT_IGUANA RIVER OTTER SEA OTTER OTTER_MAN GIANT_OTTERSNAPPING TURTLEALLIGATOR SNAPPING TURTLESNAPPING_TURTLE_MANGIANT_SNAPPING_TURTLEBEAVER -BEAVER_MAN GIANT_BEAVERLEECH LEECH_MAN GIANT_LEECHAXOLOTL AXOLOTL_MAN GIANT_AXOLOTLMINKMINK_MAN -GIANT_MINK POND_TURTLEPOND_TURTLE_MANGIANT_POND_TURTLERATRAT_MAN SQUIRREL_GRAYSQUIRREL_GRAY_MANGIANT_SQUIRREL_GRAY SQUIRREL_REDSQUIRREL_RED_MANGIANT_SQUIRREL_REDCHIPMUNK CHIPMUNK_MANGIANT_CHIPMUNKHAMSTER HAMSTER_MAN GIANT_HAMSTERHEDGEHOG HEDGEHOG_MANGIANT_HEDGEHOGSQUIRREL_FLYINGFLYING_SQUIRREL_MANGIANT_FLYING_SQUIRRELMUSSELOYSTER FISH_SALMONFISH_CLOWNFISH FISH_HAGFISHFISH_LAMPREY_BROOK FISH_RAY_BATFISH_RAY_THORNBACKFISH_RATFISH_SPOTTED FISH_HERRING FISH_SHAD FISH_ANCHOVYFISH_TROUT_STEELHEAD FISH_HAKE FISH_SEAHORSE FISH_GLASSEYEFISH_PUFFER_WHITE_SPOTTED FISH_SOLE FISH_FLOUNDER FISH_MACKERELJELLYFISH_SEA_NETTLESQUID SQUID MANGIGANTIC SQUID FISH_LUNGFISHFISH_LOACH_CLOWNFISH_BULLHEAD_BROWNFISH_BULLHEAD_YELLOWFISH_BULLHEAD_BLACKFISH_KNIFEFISH_BANDED FISH_CHARFISH_TROUT_RAINBOWFISH_MOLLY_SAILFIN -FISH_GUPPY -FISH_PERCHDWARFHUMANELFGOBLINKOBOLDGREMLINTROLLOGREUNICORNDRAGONSATYRCOLOSSUS_BRONZEGIANTCYCLOPSETTINMINOTAURYETI SASQUATCH BLIZZARD_MANWOLF_ICEFAIRYPIXIEBEAK_DOG GRIMELING BLENDEC_FOUL STRANGLER NIGHTWINGHARPYHYDRA MERPERSON SEA_SERPENT SEA_MONSTERBIRD_ROCCROCODILE_CAVETOAD_GIANT_CAVE OLM_GIANT BAT_GIANT RAT_GIANT RAT_LARGEMOLE_DOG_NAKED -TROGLODYTE -MOLE_GIANTIMP_FIRESPIDER_CAVE_GIANT SPIDER_CAVE FISH_CAVE CAVE_FISH_MAN LOBSTER_CAVE -SNAKE_FIREOLMOLM_MANBATBAT_MANMAGGOT_PURRINGELEMENTMAN_FIREELEMENTMAN_MAGMAELEMENTMAN_IRONELEMENTMAN_MUDBIRD_SWALLOW_CAVECAVE_SWALLOW_MANBIRD_SWALLOW_CAVE_GIANT AMPHIBIAN_MAN REPTILE_MAN SERPENT_MANANT_MAN -RODENT MAN WILD_BOAR WILD_BOAR_MANGIANT_WILD_BOARCOYOTE -COYOTE_MAN GIANT_COYOTEKANGAROO KANGAROO_MANGIANT_KANGAROOKOALA KOALA_MAN GIANT_KOALAADDER ADDER_MAN GIANT_ADDERECHIDNA ECHIDNA_MAN GIANT_ECHIDNA PORCUPINE PORCUPINE_MANGIANT_PORCUPINE KINGSNAKE KINGSNAKE_MANGIANT_KINGSNAKE GRAY_LANGURGRAY_LANGUR_MANGIANT_GRAY_LANGURBOBCAT -BOBCAT_MAN GIANT_BOBCATSKUNK SKUNK_MAN GIANT_SKUNKGREEN_TREE_FROGGREEN_TREE_FROG_MANGIANT_GREEN_TREE_FROGHAREHARE_MAN -GIANT_HARE RATTLESNAKERATTLESNAKE_MANGIANT_RATTLESNAKEWEASEL -WEASEL_MAN GIANT_WEASELCOPPERHEAD_SNAKECOPPERHEAD_SNAKE_MANGIANT_COPPERHEAD_SNAKEIBEXIBEX_MAN -GIANT_IBEXWOMBAT -WOMBAT_MAN GIANT_WOMBATDINGO DINGO_MAN GIANT_DINGOCOATI COATI_MAN GIANT_COATIOPOSSUM OPOSSUM_MAN GIANT_OPOSSUMMONGOOSE MONGOOSE_MANGIANT_MONGOOSEHYENA HYENA_MAN GIANT_HYENAANACONDA ANACONDA_MANGIANT_ANACONDAMONITOR_LIZARDMONITOR_LIZARD_MANGIANT_MONITOR_LIZARD -KING_COBRAKING_COBRA_MANGIANT_KING_COBRAOCELOT -OCELOT_MAN GIANT_OCELOTJACKAL -JACKAL_MAN GIANT_JACKALCAPUCHIN CAPUCHIN_MANGIANT_CAPUCHINSLOTH SLOTH_MAN GIANT_SLOTH SPIDER_MONKEYSPIDER_MONKEY_MANGIANT_SPIDER_MONKEYPANGOLIN PANGOLIN_MANGIANT_PANGOLIN BLACK_MAMBABLACK_MAMBA_MANGIANT_BLACK_MAMBA -BEAR_SLOTHSLOTH_BEAR_MANGIANT_SLOTH_BEARAYE-AYE AYE-AYE_MAN GIANT_AYE-AYE -BUSHMASTERBUSHMASTER_MANGIANT_BUSHMASTERPYTHON -PYTHON_MAN GIANT_PYTHONTAPIR TAPIR_MAN GIANT_TAPIRIMPALA -IMPALA_MAN GIANT_IMPALAAARDVARK AARDVARK_MANGIANT_AARDVARK LION_TAMARINLION_TAMARIN_MANGIANT_LION_TAMARINSTOAT STOAT_MAN GIANT_STOATLYNXLYNX_MAN -GIANT_LYNXGNOLLNAGAFORGOTTEN_BEAST_1FORGOTTEN_BEAST_2FORGOTTEN_BEAST_3FORGOTTEN_BEAST_4FORGOTTEN_BEAST_5FORGOTTEN_BEAST_6FORGOTTEN_BEAST_7FORGOTTEN_BEAST_8FORGOTTEN_BEAST_9FORGOTTEN_BEAST_10FORGOTTEN_BEAST_11FORGOTTEN_BEAST_12FORGOTTEN_BEAST_13FORGOTTEN_BEAST_14FORGOTTEN_BEAST_15FORGOTTEN_BEAST_16FORGOTTEN_BEAST_17FORGOTTEN_BEAST_18FORGOTTEN_BEAST_19FORGOTTEN_BEAST_20FORGOTTEN_BEAST_21FORGOTTEN_BEAST_22FORGOTTEN_BEAST_23FORGOTTEN_BEAST_24FORGOTTEN_BEAST_25FORGOTTEN_BEAST_26FORGOTTEN_BEAST_27FORGOTTEN_BEAST_28FORGOTTEN_BEAST_29FORGOTTEN_BEAST_30FORGOTTEN_BEAST_31FORGOTTEN_BEAST_32FORGOTTEN_BEAST_33FORGOTTEN_BEAST_34FORGOTTEN_BEAST_35FORGOTTEN_BEAST_36FORGOTTEN_BEAST_37FORGOTTEN_BEAST_38FORGOTTEN_BEAST_39FORGOTTEN_BEAST_40FORGOTTEN_BEAST_41FORGOTTEN_BEAST_42FORGOTTEN_BEAST_43FORGOTTEN_BEAST_44FORGOTTEN_BEAST_45FORGOTTEN_BEAST_46FORGOTTEN_BEAST_47FORGOTTEN_BEAST_48FORGOTTEN_BEAST_49FORGOTTEN_BEAST_50FORGOTTEN_BEAST_51FORGOTTEN_BEAST_52FORGOTTEN_BEAST_53FORGOTTEN_BEAST_54FORGOTTEN_BEAST_55FORGOTTEN_BEAST_56FORGOTTEN_BEAST_57FORGOTTEN_BEAST_58FORGOTTEN_BEAST_59FORGOTTEN_BEAST_60FORGOTTEN_BEAST_61FORGOTTEN_BEAST_62FORGOTTEN_BEAST_63FORGOTTEN_BEAST_64FORGOTTEN_BEAST_65FORGOTTEN_BEAST_66FORGOTTEN_BEAST_67FORGOTTEN_BEAST_68FORGOTTEN_BEAST_69FORGOTTEN_BEAST_70FORGOTTEN_BEAST_71FORGOTTEN_BEAST_72FORGOTTEN_BEAST_73FORGOTTEN_BEAST_74FORGOTTEN_BEAST_75FORGOTTEN_BEAST_76FORGOTTEN_BEAST_77FORGOTTEN_BEAST_78FORGOTTEN_BEAST_79FORGOTTEN_BEAST_80FORGOTTEN_BEAST_81FORGOTTEN_BEAST_82FORGOTTEN_BEAST_83FORGOTTEN_BEAST_84FORGOTTEN_BEAST_85FORGOTTEN_BEAST_86FORGOTTEN_BEAST_87FORGOTTEN_BEAST_88FORGOTTEN_BEAST_89FORGOTTEN_BEAST_90FORGOTTEN_BEAST_91FORGOTTEN_BEAST_92FORGOTTEN_BEAST_93FORGOTTEN_BEAST_94FORGOTTEN_BEAST_95FORGOTTEN_BEAST_96FORGOTTEN_BEAST_97FORGOTTEN_BEAST_98FORGOTTEN_BEAST_99FORGOTTEN_BEAST_100FORGOTTEN_BEAST_101FORGOTTEN_BEAST_102FORGOTTEN_BEAST_103FORGOTTEN_BEAST_104FORGOTTEN_BEAST_105FORGOTTEN_BEAST_106FORGOTTEN_BEAST_107FORGOTTEN_BEAST_108FORGOTTEN_BEAST_109FORGOTTEN_BEAST_110FORGOTTEN_BEAST_111FORGOTTEN_BEAST_112FORGOTTEN_BEAST_113FORGOTTEN_BEAST_114FORGOTTEN_BEAST_115FORGOTTEN_BEAST_116FORGOTTEN_BEAST_117FORGOTTEN_BEAST_118FORGOTTEN_BEAST_119FORGOTTEN_BEAST_120FORGOTTEN_BEAST_121FORGOTTEN_BEAST_122FORGOTTEN_BEAST_123FORGOTTEN_BEAST_124FORGOTTEN_BEAST_125FORGOTTEN_BEAST_126FORGOTTEN_BEAST_127FORGOTTEN_BEAST_128FORGOTTEN_BEAST_129FORGOTTEN_BEAST_130FORGOTTEN_BEAST_131FORGOTTEN_BEAST_132FORGOTTEN_BEAST_133FORGOTTEN_BEAST_134FORGOTTEN_BEAST_135FORGOTTEN_BEAST_136FORGOTTEN_BEAST_137FORGOTTEN_BEAST_138FORGOTTEN_BEAST_139FORGOTTEN_BEAST_140FORGOTTEN_BEAST_141FORGOTTEN_BEAST_142FORGOTTEN_BEAST_143FORGOTTEN_BEAST_144FORGOTTEN_BEAST_145FORGOTTEN_BEAST_146FORGOTTEN_BEAST_147FORGOTTEN_BEAST_148FORGOTTEN_BEAST_149FORGOTTEN_BEAST_150FORGOTTEN_BEAST_151FORGOTTEN_BEAST_152FORGOTTEN_BEAST_153FORGOTTEN_BEAST_154FORGOTTEN_BEAST_155FORGOTTEN_BEAST_156FORGOTTEN_BEAST_157FORGOTTEN_BEAST_158FORGOTTEN_BEAST_159FORGOTTEN_BEAST_160FORGOTTEN_BEAST_161FORGOTTEN_BEAST_162FORGOTTEN_BEAST_163FORGOTTEN_BEAST_164FORGOTTEN_BEAST_165FORGOTTEN_BEAST_166FORGOTTEN_BEAST_167FORGOTTEN_BEAST_168FORGOTTEN_BEAST_169FORGOTTEN_BEAST_170FORGOTTEN_BEAST_171FORGOTTEN_BEAST_172FORGOTTEN_BEAST_173FORGOTTEN_BEAST_174FORGOTTEN_BEAST_175FORGOTTEN_BEAST_176FORGOTTEN_BEAST_177FORGOTTEN_BEAST_178FORGOTTEN_BEAST_179FORGOTTEN_BEAST_180FORGOTTEN_BEAST_181FORGOTTEN_BEAST_182FORGOTTEN_BEAST_183FORGOTTEN_BEAST_184FORGOTTEN_BEAST_185FORGOTTEN_BEAST_186FORGOTTEN_BEAST_187FORGOTTEN_BEAST_188FORGOTTEN_BEAST_189FORGOTTEN_BEAST_190FORGOTTEN_BEAST_191FORGOTTEN_BEAST_192FORGOTTEN_BEAST_193FORGOTTEN_BEAST_194FORGOTTEN_BEAST_195FORGOTTEN_BEAST_196FORGOTTEN_BEAST_197FORGOTTEN_BEAST_198FORGOTTEN_BEAST_199FORGOTTEN_BEAST_200FORGOTTEN_BEAST_201FORGOTTEN_BEAST_202FORGOTTEN_BEAST_203FORGOTTEN_BEAST_204FORGOTTEN_BEAST_205FORGOTTEN_BEAST_206FORGOTTEN_BEAST_207FORGOTTEN_BEAST_208FORGOTTEN_BEAST_209FORGOTTEN_BEAST_210FORGOTTEN_BEAST_211FORGOTTEN_BEAST_212FORGOTTEN_BEAST_213FORGOTTEN_BEAST_214FORGOTTEN_BEAST_215FORGOTTEN_BEAST_216FORGOTTEN_BEAST_217FORGOTTEN_BEAST_218FORGOTTEN_BEAST_219FORGOTTEN_BEAST_220FORGOTTEN_BEAST_221FORGOTTEN_BEAST_222FORGOTTEN_BEAST_223FORGOTTEN_BEAST_224FORGOTTEN_BEAST_225FORGOTTEN_BEAST_226FORGOTTEN_BEAST_227FORGOTTEN_BEAST_228FORGOTTEN_BEAST_229FORGOTTEN_BEAST_230FORGOTTEN_BEAST_231FORGOTTEN_BEAST_232FORGOTTEN_BEAST_233FORGOTTEN_BEAST_234FORGOTTEN_BEAST_235FORGOTTEN_BEAST_236FORGOTTEN_BEAST_237FORGOTTEN_BEAST_238FORGOTTEN_BEAST_239FORGOTTEN_BEAST_240FORGOTTEN_BEAST_241FORGOTTEN_BEAST_242FORGOTTEN_BEAST_243FORGOTTEN_BEAST_244FORGOTTEN_BEAST_245FORGOTTEN_BEAST_246FORGOTTEN_BEAST_247FORGOTTEN_BEAST_248FORGOTTEN_BEAST_249FORGOTTEN_BEAST_250FORGOTTEN_BEAST_251FORGOTTEN_BEAST_252FORGOTTEN_BEAST_253FORGOTTEN_BEAST_254FORGOTTEN_BEAST_255FORGOTTEN_BEAST_256FORGOTTEN_BEAST_257FORGOTTEN_BEAST_258FORGOTTEN_BEAST_259FORGOTTEN_BEAST_260FORGOTTEN_BEAST_261FORGOTTEN_BEAST_262FORGOTTEN_BEAST_263FORGOTTEN_BEAST_264FORGOTTEN_BEAST_265FORGOTTEN_BEAST_266FORGOTTEN_BEAST_267FORGOTTEN_BEAST_268FORGOTTEN_BEAST_269FORGOTTEN_BEAST_270FORGOTTEN_BEAST_271FORGOTTEN_BEAST_272FORGOTTEN_BEAST_273FORGOTTEN_BEAST_274FORGOTTEN_BEAST_275FORGOTTEN_BEAST_276FORGOTTEN_BEAST_277FORGOTTEN_BEAST_278FORGOTTEN_BEAST_279FORGOTTEN_BEAST_280FORGOTTEN_BEAST_281FORGOTTEN_BEAST_282FORGOTTEN_BEAST_283FORGOTTEN_BEAST_284FORGOTTEN_BEAST_285FORGOTTEN_BEAST_286FORGOTTEN_BEAST_287FORGOTTEN_BEAST_288FORGOTTEN_BEAST_289FORGOTTEN_BEAST_290FORGOTTEN_BEAST_291FORGOTTEN_BEAST_292FORGOTTEN_BEAST_293FORGOTTEN_BEAST_294FORGOTTEN_BEAST_295FORGOTTEN_BEAST_296FORGOTTEN_BEAST_297FORGOTTEN_BEAST_298FORGOTTEN_BEAST_299FORGOTTEN_BEAST_300FORGOTTEN_BEAST_301FORGOTTEN_BEAST_302FORGOTTEN_BEAST_303FORGOTTEN_BEAST_304FORGOTTEN_BEAST_305FORGOTTEN_BEAST_306FORGOTTEN_BEAST_307FORGOTTEN_BEAST_308FORGOTTEN_BEAST_309FORGOTTEN_BEAST_310FORGOTTEN_BEAST_311FORGOTTEN_BEAST_312FORGOTTEN_BEAST_313FORGOTTEN_BEAST_314FORGOTTEN_BEAST_315FORGOTTEN_BEAST_316FORGOTTEN_BEAST_317FORGOTTEN_BEAST_318FORGOTTEN_BEAST_319FORGOTTEN_BEAST_320FORGOTTEN_BEAST_321FORGOTTEN_BEAST_322FORGOTTEN_BEAST_323FORGOTTEN_BEAST_324FORGOTTEN_BEAST_325FORGOTTEN_BEAST_326FORGOTTEN_BEAST_327FORGOTTEN_BEAST_328FORGOTTEN_BEAST_329FORGOTTEN_BEAST_330FORGOTTEN_BEAST_331FORGOTTEN_BEAST_332FORGOTTEN_BEAST_333FORGOTTEN_BEAST_334FORGOTTEN_BEAST_335FORGOTTEN_BEAST_336FORGOTTEN_BEAST_337FORGOTTEN_BEAST_338FORGOTTEN_BEAST_339FORGOTTEN_BEAST_340FORGOTTEN_BEAST_341FORGOTTEN_BEAST_342FORGOTTEN_BEAST_343FORGOTTEN_BEAST_344FORGOTTEN_BEAST_345FORGOTTEN_BEAST_346FORGOTTEN_BEAST_347FORGOTTEN_BEAST_348FORGOTTEN_BEAST_349FORGOTTEN_BEAST_350FORGOTTEN_BEAST_351FORGOTTEN_BEAST_352FORGOTTEN_BEAST_353FORGOTTEN_BEAST_354FORGOTTEN_BEAST_355FORGOTTEN_BEAST_356FORGOTTEN_BEAST_357FORGOTTEN_BEAST_358FORGOTTEN_BEAST_359FORGOTTEN_BEAST_360FORGOTTEN_BEAST_361FORGOTTEN_BEAST_362FORGOTTEN_BEAST_363FORGOTTEN_BEAST_364FORGOTTEN_BEAST_365FORGOTTEN_BEAST_366FORGOTTEN_BEAST_367FORGOTTEN_BEAST_368FORGOTTEN_BEAST_369FORGOTTEN_BEAST_370FORGOTTEN_BEAST_371FORGOTTEN_BEAST_372FORGOTTEN_BEAST_373FORGOTTEN_BEAST_374FORGOTTEN_BEAST_375FORGOTTEN_BEAST_376FORGOTTEN_BEAST_377FORGOTTEN_BEAST_378FORGOTTEN_BEAST_379FORGOTTEN_BEAST_380FORGOTTEN_BEAST_381FORGOTTEN_BEAST_382FORGOTTEN_BEAST_383FORGOTTEN_BEAST_384FORGOTTEN_BEAST_385FORGOTTEN_BEAST_386FORGOTTEN_BEAST_387FORGOTTEN_BEAST_388FORGOTTEN_BEAST_389FORGOTTEN_BEAST_390FORGOTTEN_BEAST_391FORGOTTEN_BEAST_392FORGOTTEN_BEAST_393FORGOTTEN_BEAST_394FORGOTTEN_BEAST_395FORGOTTEN_BEAST_396FORGOTTEN_BEAST_397FORGOTTEN_BEAST_398FORGOTTEN_BEAST_399FORGOTTEN_BEAST_400FORGOTTEN_BEAST_401FORGOTTEN_BEAST_402FORGOTTEN_BEAST_403FORGOTTEN_BEAST_404FORGOTTEN_BEAST_405FORGOTTEN_BEAST_406FORGOTTEN_BEAST_407FORGOTTEN_BEAST_408FORGOTTEN_BEAST_409FORGOTTEN_BEAST_410FORGOTTEN_BEAST_411FORGOTTEN_BEAST_412FORGOTTEN_BEAST_413FORGOTTEN_BEAST_414FORGOTTEN_BEAST_415FORGOTTEN_BEAST_416FORGOTTEN_BEAST_417FORGOTTEN_BEAST_418FORGOTTEN_BEAST_419FORGOTTEN_BEAST_420FORGOTTEN_BEAST_421FORGOTTEN_BEAST_422FORGOTTEN_BEAST_423FORGOTTEN_BEAST_424FORGOTTEN_BEAST_425FORGOTTEN_BEAST_426FORGOTTEN_BEAST_427FORGOTTEN_BEAST_428FORGOTTEN_BEAST_429FORGOTTEN_BEAST_430FORGOTTEN_BEAST_431FORGOTTEN_BEAST_432FORGOTTEN_BEAST_433FORGOTTEN_BEAST_434FORGOTTEN_BEAST_435FORGOTTEN_BEAST_436FORGOTTEN_BEAST_437FORGOTTEN_BEAST_438FORGOTTEN_BEAST_439FORGOTTEN_BEAST_440FORGOTTEN_BEAST_441FORGOTTEN_BEAST_442FORGOTTEN_BEAST_443FORGOTTEN_BEAST_444FORGOTTEN_BEAST_445FORGOTTEN_BEAST_446FORGOTTEN_BEAST_447FORGOTTEN_BEAST_448FORGOTTEN_BEAST_449FORGOTTEN_BEAST_450FORGOTTEN_BEAST_451FORGOTTEN_BEAST_452FORGOTTEN_BEAST_453FORGOTTEN_BEAST_454FORGOTTEN_BEAST_455FORGOTTEN_BEAST_456FORGOTTEN_BEAST_457FORGOTTEN_BEAST_458FORGOTTEN_BEAST_459FORGOTTEN_BEAST_460FORGOTTEN_BEAST_461FORGOTTEN_BEAST_462FORGOTTEN_BEAST_463FORGOTTEN_BEAST_464FORGOTTEN_BEAST_465FORGOTTEN_BEAST_466FORGOTTEN_BEAST_467FORGOTTEN_BEAST_468FORGOTTEN_BEAST_469FORGOTTEN_BEAST_470FORGOTTEN_BEAST_471FORGOTTEN_BEAST_472FORGOTTEN_BEAST_473FORGOTTEN_BEAST_474FORGOTTEN_BEAST_475FORGOTTEN_BEAST_476FORGOTTEN_BEAST_477FORGOTTEN_BEAST_478FORGOTTEN_BEAST_479FORGOTTEN_BEAST_480FORGOTTEN_BEAST_481FORGOTTEN_BEAST_482FORGOTTEN_BEAST_483FORGOTTEN_BEAST_484FORGOTTEN_BEAST_485FORGOTTEN_BEAST_486FORGOTTEN_BEAST_487FORGOTTEN_BEAST_488FORGOTTEN_BEAST_489FORGOTTEN_BEAST_490FORGOTTEN_BEAST_491FORGOTTEN_BEAST_492FORGOTTEN_BEAST_493FORGOTTEN_BEAST_494FORGOTTEN_BEAST_495FORGOTTEN_BEAST_496FORGOTTEN_BEAST_497FORGOTTEN_BEAST_498FORGOTTEN_BEAST_499FORGOTTEN_BEAST_500FORGOTTEN_BEAST_501FORGOTTEN_BEAST_502FORGOTTEN_BEAST_503FORGOTTEN_BEAST_504FORGOTTEN_BEAST_505FORGOTTEN_BEAST_506FORGOTTEN_BEAST_507FORGOTTEN_BEAST_508FORGOTTEN_BEAST_509FORGOTTEN_BEAST_510FORGOTTEN_BEAST_511FORGOTTEN_BEAST_512FORGOTTEN_BEAST_513FORGOTTEN_BEAST_514FORGOTTEN_BEAST_515FORGOTTEN_BEAST_516FORGOTTEN_BEAST_517FORGOTTEN_BEAST_518FORGOTTEN_BEAST_519FORGOTTEN_BEAST_520FORGOTTEN_BEAST_521FORGOTTEN_BEAST_522FORGOTTEN_BEAST_523FORGOTTEN_BEAST_524FORGOTTEN_BEAST_525FORGOTTEN_BEAST_526FORGOTTEN_BEAST_527FORGOTTEN_BEAST_528FORGOTTEN_BEAST_529FORGOTTEN_BEAST_530FORGOTTEN_BEAST_531FORGOTTEN_BEAST_532FORGOTTEN_BEAST_533FORGOTTEN_BEAST_534FORGOTTEN_BEAST_535FORGOTTEN_BEAST_536FORGOTTEN_BEAST_537FORGOTTEN_BEAST_538FORGOTTEN_BEAST_539FORGOTTEN_BEAST_540FORGOTTEN_BEAST_541FORGOTTEN_BEAST_542FORGOTTEN_BEAST_543FORGOTTEN_BEAST_544FORGOTTEN_BEAST_545FORGOTTEN_BEAST_546FORGOTTEN_BEAST_547FORGOTTEN_BEAST_548FORGOTTEN_BEAST_549FORGOTTEN_BEAST_550FORGOTTEN_BEAST_551FORGOTTEN_BEAST_552FORGOTTEN_BEAST_553FORGOTTEN_BEAST_554FORGOTTEN_BEAST_555FORGOTTEN_BEAST_556FORGOTTEN_BEAST_557FORGOTTEN_BEAST_558FORGOTTEN_BEAST_559FORGOTTEN_BEAST_560FORGOTTEN_BEAST_561FORGOTTEN_BEAST_562FORGOTTEN_BEAST_563FORGOTTEN_BEAST_564FORGOTTEN_BEAST_565FORGOTTEN_BEAST_566FORGOTTEN_BEAST_567FORGOTTEN_BEAST_568FORGOTTEN_BEAST_569FORGOTTEN_BEAST_570FORGOTTEN_BEAST_571FORGOTTEN_BEAST_572FORGOTTEN_BEAST_573FORGOTTEN_BEAST_574FORGOTTEN_BEAST_575FORGOTTEN_BEAST_576FORGOTTEN_BEAST_577FORGOTTEN_BEAST_578FORGOTTEN_BEAST_579FORGOTTEN_BEAST_580FORGOTTEN_BEAST_581FORGOTTEN_BEAST_582FORGOTTEN_BEAST_583FORGOTTEN_BEAST_584FORGOTTEN_BEAST_585FORGOTTEN_BEAST_586FORGOTTEN_BEAST_587FORGOTTEN_BEAST_588FORGOTTEN_BEAST_589FORGOTTEN_BEAST_590FORGOTTEN_BEAST_591FORGOTTEN_BEAST_592FORGOTTEN_BEAST_593FORGOTTEN_BEAST_594FORGOTTEN_BEAST_595FORGOTTEN_BEAST_596FORGOTTEN_BEAST_597FORGOTTEN_BEAST_598FORGOTTEN_BEAST_599FORGOTTEN_BEAST_600FORGOTTEN_BEAST_601FORGOTTEN_BEAST_602FORGOTTEN_BEAST_603FORGOTTEN_BEAST_604FORGOTTEN_BEAST_605FORGOTTEN_BEAST_606FORGOTTEN_BEAST_607FORGOTTEN_BEAST_608FORGOTTEN_BEAST_609FORGOTTEN_BEAST_610FORGOTTEN_BEAST_611FORGOTTEN_BEAST_612FORGOTTEN_BEAST_613FORGOTTEN_BEAST_614FORGOTTEN_BEAST_615FORGOTTEN_BEAST_616FORGOTTEN_BEAST_617FORGOTTEN_BEAST_618FORGOTTEN_BEAST_619FORGOTTEN_BEAST_620FORGOTTEN_BEAST_621FORGOTTEN_BEAST_622FORGOTTEN_BEAST_623FORGOTTEN_BEAST_624FORGOTTEN_BEAST_625FORGOTTEN_BEAST_626FORGOTTEN_BEAST_627FORGOTTEN_BEAST_628FORGOTTEN_BEAST_629FORGOTTEN_BEAST_630FORGOTTEN_BEAST_631FORGOTTEN_BEAST_632FORGOTTEN_BEAST_633FORGOTTEN_BEAST_634FORGOTTEN_BEAST_635FORGOTTEN_BEAST_636FORGOTTEN_BEAST_637FORGOTTEN_BEAST_638FORGOTTEN_BEAST_639FORGOTTEN_BEAST_640FORGOTTEN_BEAST_641FORGOTTEN_BEAST_642FORGOTTEN_BEAST_643FORGOTTEN_BEAST_644FORGOTTEN_BEAST_645FORGOTTEN_BEAST_646FORGOTTEN_BEAST_647FORGOTTEN_BEAST_648FORGOTTEN_BEAST_649FORGOTTEN_BEAST_650FORGOTTEN_BEAST_651FORGOTTEN_BEAST_652FORGOTTEN_BEAST_653FORGOTTEN_BEAST_654FORGOTTEN_BEAST_655FORGOTTEN_BEAST_656FORGOTTEN_BEAST_657FORGOTTEN_BEAST_658FORGOTTEN_BEAST_659FORGOTTEN_BEAST_660FORGOTTEN_BEAST_661FORGOTTEN_BEAST_662FORGOTTEN_BEAST_663FORGOTTEN_BEAST_664FORGOTTEN_BEAST_665FORGOTTEN_BEAST_666FORGOTTEN_BEAST_667FORGOTTEN_BEAST_668FORGOTTEN_BEAST_669FORGOTTEN_BEAST_670FORGOTTEN_BEAST_671FORGOTTEN_BEAST_672FORGOTTEN_BEAST_673FORGOTTEN_BEAST_674FORGOTTEN_BEAST_675FORGOTTEN_BEAST_676FORGOTTEN_BEAST_677FORGOTTEN_BEAST_678FORGOTTEN_BEAST_679FORGOTTEN_BEAST_680FORGOTTEN_BEAST_681FORGOTTEN_BEAST_682FORGOTTEN_BEAST_683FORGOTTEN_BEAST_684FORGOTTEN_BEAST_685FORGOTTEN_BEAST_686FORGOTTEN_BEAST_687FORGOTTEN_BEAST_688FORGOTTEN_BEAST_689FORGOTTEN_BEAST_690FORGOTTEN_BEAST_691FORGOTTEN_BEAST_692FORGOTTEN_BEAST_693FORGOTTEN_BEAST_694FORGOTTEN_BEAST_695FORGOTTEN_BEAST_696FORGOTTEN_BEAST_697FORGOTTEN_BEAST_698FORGOTTEN_BEAST_699FORGOTTEN_BEAST_700FORGOTTEN_BEAST_701FORGOTTEN_BEAST_702FORGOTTEN_BEAST_703FORGOTTEN_BEAST_704FORGOTTEN_BEAST_705FORGOTTEN_BEAST_706FORGOTTEN_BEAST_707FORGOTTEN_BEAST_708FORGOTTEN_BEAST_709FORGOTTEN_BEAST_710FORGOTTEN_BEAST_711FORGOTTEN_BEAST_712FORGOTTEN_BEAST_713FORGOTTEN_BEAST_714FORGOTTEN_BEAST_715FORGOTTEN_BEAST_716FORGOTTEN_BEAST_717FORGOTTEN_BEAST_718FORGOTTEN_BEAST_719FORGOTTEN_BEAST_720FORGOTTEN_BEAST_721FORGOTTEN_BEAST_722FORGOTTEN_BEAST_723FORGOTTEN_BEAST_724FORGOTTEN_BEAST_725FORGOTTEN_BEAST_726FORGOTTEN_BEAST_727FORGOTTEN_BEAST_728FORGOTTEN_BEAST_729FORGOTTEN_BEAST_730FORGOTTEN_BEAST_731FORGOTTEN_BEAST_732FORGOTTEN_BEAST_733FORGOTTEN_BEAST_734FORGOTTEN_BEAST_735FORGOTTEN_BEAST_736FORGOTTEN_BEAST_737FORGOTTEN_BEAST_738FORGOTTEN_BEAST_739FORGOTTEN_BEAST_740FORGOTTEN_BEAST_741FORGOTTEN_BEAST_742FORGOTTEN_BEAST_743FORGOTTEN_BEAST_744FORGOTTEN_BEAST_745FORGOTTEN_BEAST_746FORGOTTEN_BEAST_747FORGOTTEN_BEAST_748FORGOTTEN_BEAST_749FORGOTTEN_BEAST_750FORGOTTEN_BEAST_751FORGOTTEN_BEAST_752FORGOTTEN_BEAST_753FORGOTTEN_BEAST_754FORGOTTEN_BEAST_755FORGOTTEN_BEAST_756FORGOTTEN_BEAST_757FORGOTTEN_BEAST_758FORGOTTEN_BEAST_759FORGOTTEN_BEAST_760FORGOTTEN_BEAST_761FORGOTTEN_BEAST_762FORGOTTEN_BEAST_763FORGOTTEN_BEAST_764FORGOTTEN_BEAST_765FORGOTTEN_BEAST_766FORGOTTEN_BEAST_767FORGOTTEN_BEAST_768FORGOTTEN_BEAST_769FORGOTTEN_BEAST_770FORGOTTEN_BEAST_771FORGOTTEN_BEAST_772FORGOTTEN_BEAST_773FORGOTTEN_BEAST_774FORGOTTEN_BEAST_775FORGOTTEN_BEAST_776FORGOTTEN_BEAST_777FORGOTTEN_BEAST_778FORGOTTEN_BEAST_779FORGOTTEN_BEAST_780FORGOTTEN_BEAST_781FORGOTTEN_BEAST_782FORGOTTEN_BEAST_783FORGOTTEN_BEAST_784FORGOTTEN_BEAST_785FORGOTTEN_BEAST_786FORGOTTEN_BEAST_787FORGOTTEN_BEAST_788FORGOTTEN_BEAST_789FORGOTTEN_BEAST_790FORGOTTEN_BEAST_791FORGOTTEN_BEAST_792FORGOTTEN_BEAST_793FORGOTTEN_BEAST_794FORGOTTEN_BEAST_795FORGOTTEN_BEAST_796FORGOTTEN_BEAST_797FORGOTTEN_BEAST_798FORGOTTEN_BEAST_799FORGOTTEN_BEAST_800FORGOTTEN_BEAST_801FORGOTTEN_BEAST_802FORGOTTEN_BEAST_803FORGOTTEN_BEAST_804FORGOTTEN_BEAST_805FORGOTTEN_BEAST_806FORGOTTEN_BEAST_807FORGOTTEN_BEAST_808FORGOTTEN_BEAST_809FORGOTTEN_BEAST_810FORGOTTEN_BEAST_811FORGOTTEN_BEAST_812FORGOTTEN_BEAST_813FORGOTTEN_BEAST_814FORGOTTEN_BEAST_815FORGOTTEN_BEAST_816FORGOTTEN_BEAST_817FORGOTTEN_BEAST_818FORGOTTEN_BEAST_819FORGOTTEN_BEAST_820FORGOTTEN_BEAST_821FORGOTTEN_BEAST_822FORGOTTEN_BEAST_823FORGOTTEN_BEAST_824FORGOTTEN_BEAST_825FORGOTTEN_BEAST_826FORGOTTEN_BEAST_827FORGOTTEN_BEAST_828FORGOTTEN_BEAST_829FORGOTTEN_BEAST_830FORGOTTEN_BEAST_831FORGOTTEN_BEAST_832FORGOTTEN_BEAST_833FORGOTTEN_BEAST_834FORGOTTEN_BEAST_835FORGOTTEN_BEAST_836FORGOTTEN_BEAST_837FORGOTTEN_BEAST_838FORGOTTEN_BEAST_839FORGOTTEN_BEAST_840FORGOTTEN_BEAST_841FORGOTTEN_BEAST_842FORGOTTEN_BEAST_843FORGOTTEN_BEAST_844FORGOTTEN_BEAST_845FORGOTTEN_BEAST_846FORGOTTEN_BEAST_847FORGOTTEN_BEAST_848FORGOTTEN_BEAST_849FORGOTTEN_BEAST_850FORGOTTEN_BEAST_851FORGOTTEN_BEAST_852FORGOTTEN_BEAST_853FORGOTTEN_BEAST_854FORGOTTEN_BEAST_855FORGOTTEN_BEAST_856FORGOTTEN_BEAST_857FORGOTTEN_BEAST_858FORGOTTEN_BEAST_859FORGOTTEN_BEAST_860FORGOTTEN_BEAST_861FORGOTTEN_BEAST_862FORGOTTEN_BEAST_863FORGOTTEN_BEAST_864FORGOTTEN_BEAST_865FORGOTTEN_BEAST_866FORGOTTEN_BEAST_867TITAN_1TITAN_2TITAN_3TITAN_4TITAN_5TITAN_6TITAN_7TITAN_8TITAN_9TITAN_10TITAN_11TITAN_12TITAN_13TITAN_14TITAN_15TITAN_16TITAN_17TITAN_18TITAN_19TITAN_20TITAN_21TITAN_22TITAN_23TITAN_24TITAN_25TITAN_26TITAN_27TITAN_28TITAN_29TITAN_30TITAN_31TITAN_32TITAN_33DEMON_1DEMON_2DEMON_3DEMON_4DEMON_5DEMON_6DEMON_7DEMON_8DEMON_9DEMON_10DEMON_11DEMON_12DEMON_13DEMON_14DEMON_15DEMON_16DEMON_17DEMON_18DEMON_19DEMON_20DEMON_21DEMON_22DEMON_23DEMON_24DEMON_25DEMON_26DEMON_27DEMON_28DEMON_29DEMON_30DEMON_31DEMON_32DEMON_33DEMON_34DEMON_35DEMON_36DEMON_37DEMON_38DEMON_39DEMON_40DEMON_41DEMON_42DEMON_43DEMON_44DEMON_45DEMON_46DEMON_47DEMON_48DEMON_49DEMON_50DEMON_51DEMON_52NIGHT_CREATURE_1NIGHT_CREATURE_2NIGHT_CREATURE_3NIGHT_CREATURE_4NIGHT_CREATURE_5NIGHT_CREATURE_6NIGHT_CREATURE_7NIGHT_CREATURE_8NIGHT_CREATURE_9NIGHT_CREATURE_10NIGHT_CREATURE_11NIGHT_CREATURE_12NIGHT_CREATURE_13NIGHT_CREATURE_14NIGHT_CREATURE_15NIGHT_CREATURE_16NIGHT_CREATURE_17NIGHT_CREATURE_18NIGHT_CREATURE_19NIGHT_CREATURE_20NIGHT_CREATURE_21NIGHT_CREATURE_22NIGHT_CREATURE_23NIGHT_CREATURE_24NIGHT_CREATURE_25NIGHT_CREATURE_26NIGHT_CREATURE_27NIGHT_CREATURE_28NIGHT_CREATURE_29NIGHT_CREATURE_30NIGHT_CREATURE_31NIGHT_CREATURE_32NIGHT_CREATURE_33NIGHT_CREATURE_34NIGHT_CREATURE_35NIGHT_CREATURE_36NIGHT_CREATURE_37NIGHT_CREATURE_38NIGHT_CREATURE_39NIGHT_CREATURE_40NIGHT_CREATURE_41NIGHT_CREATURE_42NIGHT_CREATURE_43NIGHT_CREATURE_44NIGHT_CREATURE_45NIGHT_CREATURE_46NIGHT_CREATURE_47NIGHT_CREATURE_48NIGHT_CREATURE_49NIGHT_CREATURE_50NIGHT_CREATURE_51NIGHT_CREATURE_52NIGHT_CREATURE_53NIGHT_CREATURE_54NIGHT_CREATURE_55NIGHT_CREATURE_56NIGHT_CREATURE_57NIGHT_CREATURE_58NIGHT_CREATURE_59NIGHT_CREATURE_60NIGHT_CREATURE_61NIGHT_CREATURE_62NIGHT_CREATURE_63NIGHT_CREATURE_64NIGHT_CREATURE_65NIGHT_CREATURE_66NIGHT_CREATURE_67NIGHT_CREATURE_68NIGHT_CREATURE_69NIGHT_CREATURE_70NIGHT_CREATURE_71NIGHT_CREATURE_72NIGHT_CREATURE_73NIGHT_CREATURE_74NIGHT_CREATURE_75NIGHT_CREATURE_76NIGHT_CREATURE_77NIGHT_CREATURE_78NIGHT_CREATURE_79NIGHT_CREATURE_80NIGHT_CREATURE_81NIGHT_CREATURE_82NIGHT_CREATURE_83NIGHT_CREATURE_84NIGHT_CREATURE_85NIGHT_CREATURE_86NIGHT_CREATURE_87NIGHT_CREATURE_88NIGHT_CREATURE_89NIGHT_CREATURE_90NIGHT_CREATURE_91NIGHT_CREATURE_92NIGHT_CREATURE_93NIGHT_CREATURE_94NIGHT_CREATURE_95NIGHT_CREATURE_96NIGHT_CREATURE_97NIGHT_CREATURE_98NIGHT_CREATURE_99NIGHT_CREATURE_100NIGHT_CREATURE_101NIGHT_CREATURE_102NIGHT_CREATURE_103NIGHT_CREATURE_104HF1248 DIVINE_1HF1248 DIVINE_2HF1248 DIVINE_3HF1108 DIVINE_1HF1108 DIVINE_2HF1108 DIVINE_3HF1249 DIVINE_1HF1249 DIVINE_2HF1249 DIVINE_3HF1345 DIVINE_1HF1345 DIVINE_2HF1345 DIVINE_3˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/armorprefix.dfstock b/data/stockpiles/armorprefix.dfstock deleted file mode 100644 index 8d69cec678..0000000000 Binary files a/data/stockpiles/armorprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/artifactammo.dfstock b/data/stockpiles/artifactammo.dfstock deleted file mode 100644 index 874ec21064..0000000000 Binary files a/data/stockpiles/artifactammo.dfstock and /dev/null differ diff --git a/data/stockpiles/artifactarmor.dfstock b/data/stockpiles/artifactarmor.dfstock deleted file mode 100644 index 8d81ee3558..0000000000 Binary files a/data/stockpiles/artifactarmor.dfstock and /dev/null differ diff --git a/data/stockpiles/artifactfinishedgoods.dfstock b/data/stockpiles/artifactfinishedgoods.dfstock deleted file mode 100644 index 760b0867d6..0000000000 Binary files a/data/stockpiles/artifactfinishedgoods.dfstock and /dev/null differ diff --git a/data/stockpiles/artifactfurniture.dfstock b/data/stockpiles/artifactfurniture.dfstock deleted file mode 100644 index 13c32a66ac..0000000000 Binary files a/data/stockpiles/artifactfurniture.dfstock and /dev/null differ diff --git a/data/stockpiles/artifacts.dfstock b/data/stockpiles/artifacts.dfstock new file mode 100644 index 0000000000..1c7315dfe8 Binary files /dev/null and b/data/stockpiles/artifacts.dfstock differ diff --git a/data/stockpiles/artifactweapons.dfstock b/data/stockpiles/artifactweapons.dfstock deleted file mode 100644 index ba91931e0e..0000000000 Binary files a/data/stockpiles/artifactweapons.dfstock and /dev/null differ diff --git a/data/stockpiles/ash.dfstock b/data/stockpiles/ash.dfstock index 70948081e2..d313e0096d 100644 Binary files a/data/stockpiles/ash.dfstock and b/data/stockpiles/ash.dfstock differ diff --git a/data/stockpiles/bags.dfstock b/data/stockpiles/bags.dfstock index 0e1cc2902e..3bfa1a1a17 100644 Binary files a/data/stockpiles/bags.dfstock and b/data/stockpiles/bags.dfstock differ diff --git a/data/stockpiles/barrels.dfstock b/data/stockpiles/barrels.dfstock new file mode 100644 index 0000000000..70a7239035 --- /dev/null +++ b/data/stockpiles/barrels.dfstock @@ -0,0 +1,2 @@ + +BARREL \ No newline at end of file diff --git a/data/stockpiles/bars.dfstock b/data/stockpiles/bars.dfstock index df75e96970..c292dcf562 100644 Binary files a/data/stockpiles/bars.dfstock and b/data/stockpiles/bars.dfstock differ diff --git a/data/stockpiles/barsprefix.dfstock b/data/stockpiles/barsprefix.dfstock deleted file mode 100644 index fdc5bb346f..0000000000 Binary files a/data/stockpiles/barsprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/bauxite.dfstock b/data/stockpiles/bauxite.dfstock index 25524dcb90..83a49cb5b4 100644 Binary files a/data/stockpiles/bauxite.dfstock and b/data/stockpiles/bauxite.dfstock differ diff --git a/data/stockpiles/blocks.dfstock b/data/stockpiles/blocks.dfstock index 293dc52510..cd08d93338 100644 Binary files a/data/stockpiles/blocks.dfstock and b/data/stockpiles/blocks.dfstock differ diff --git a/data/stockpiles/bolts.dfstock b/data/stockpiles/bolts.dfstock index 8f525cf2b4..2e5bd4b4b8 100644 Binary files a/data/stockpiles/bolts.dfstock and b/data/stockpiles/bolts.dfstock differ diff --git a/data/stockpiles/boneammo.dfstock b/data/stockpiles/boneammo.dfstock index 7f0c79c753..909c67d1df 100644 Binary files a/data/stockpiles/boneammo.dfstock and b/data/stockpiles/boneammo.dfstock differ diff --git a/data/stockpiles/bones.dfstock b/data/stockpiles/bones.dfstock deleted file mode 100644 index aeb2cdcf8c..0000000000 --- a/data/stockpiles/bones.dfstock +++ /dev/null @@ -1,157 +0,0 @@ -*ÆW -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCH2TOAD2TOAD_MAN2 -GIANT_TOAD2WORM2WORM_MAN2 BIRD_BLUEJAY2 BLUEJAY_MAN2 GIANT_BLUEJAY2 BIRD_CARDINAL2 CARDINAL_MAN2GIANT_CARDINAL2 BIRD_GRACKLE2 GRACKLE_MAN2 GIANT_GRACKLE2 BIRD_ORIOLE2 -ORIOLE_MAN2 GIANT_ORIOLE2BIRD_RW_BLACKBIRD2RW_BLACKBIRD_MAN2GIANT_RW_BLACKBIRD2 BIRD_PENGUIN2BIRD_PENGUIN_LITTLE2BIRD_PENGUIN_EMPEROR2 PENGUIN MAN2BIRD_PENGUIN_GIANT2BIRD_FALCON_PEREGRINE2PEREGRINE FALCON MAN2GIANT PEREGRINE FALCON2 BIRD_KIWI2KIWI MAN2BIRD_KIWI_GIANT2 BIRD_OSTRICH2 OSTRICH MAN2BIRD_OSTRICH_GIANT2 BIRD_CROW2CROW_MAN2 -GIANT_CROW2 -BIRD_RAVEN2 RAVEN_MAN2 GIANT_RAVEN2BIRD_CASSOWARY2 CASSOWARY_MAN2GIANT_CASSOWARY2BIRD_KEA2KEA_MAN2 GIANT_KEA2BIRD_OWL_SNOWY2 SNOWY_OWL_MAN2GIANT_SNOWY_OWL2SPARROW2 SPARROW_MAN2 GIANT_SPARROW2BIRD_STORK_WHITE2WHITE_STORK_MAN2GIANT_WHITE_STORK2 BIRD_LOON2LOON_MAN2 -GIANT_LOON2 BIRD_OWL_BARN2 BARN_OWL_MAN2GIANT_BARN_OWL2 BIRD_PARAKEET2 PARAKEET_MAN2GIANT_PARAKEET2 BIRD_KAKAPO2 -KAKAPO_MAN2 GIANT_KAKAPO2BIRD_PARROT_GREY2GREY_PARROT_MAN2GIANT_GREY_PARROT2 BIRD_PUFFIN2 -PUFFIN_MAN2 GIANT_PUFFIN2 BIRD_SWAN2SWAN_MAN2 -GIANT_SWAN2 BIRD_LORIKEET2 LORIKEET_MAN2GIANT_LORIKEET2 BIRD_WREN2WREN_MAN2 -GIANT_WREN2 BIRD_OSPREY2 -OSPREY_MAN2 GIANT_OSPREY2BIRD_EMU2EMU_MAN2 GIANT_EMU2BIRD_COCKATIEL2 COCKATIEL_MAN2GIANT_COCKATIEL2BIRD_LOVEBIRD_PEACH-FACED2PEACH-FACED_LOVEBIRD_MAN2GIANT_PEACH-FACED_LOVEBIRD2 BIRD_MAGPIE2 -MAGPIE_MAN2 GIANT_MAGPIE2 BIRD_KESTREL2 KESTREL_MAN2 GIANT_KESTREL2BIRD_ALBATROSS2 ALBATROSS_MAN2GIANT_ALBATROSS2BIRD_OWL_GREAT_HORNED2GREAT_HORNED_OWL_MAN2GIANT_GREAT_HORNED_OWL2 -BIRD_EAGLE2 EAGLE_MAN2 GIANT_EAGLE2 BIRD_HORNBILL2 HORNBILL_MAN2GIANT_HORNBILL2BIRD_LOVEBIRD_MASKED2MASKED_LOVEBIRD_MAN2GIANT_MASKED_LOVEBIRD2 BIRD_BUSHTIT2 BUSHTIT_MAN2 GIANT_BUSHTIT2 DAMSELFLY2 DAMSELFLY_MAN2GIANT_DAMSELFLY2MOTH2MOTH_MAN2 -GIANT_MOTH2 GRASSHOPPER2GRASSHOPPER_MAN2GIANT_GRASSHOPPER2 BARK_SCORPION2BARK_SCORPION_MAN2GIANT_BARK_SCORPION2MANTIS2 -MANTIS_MAN2 GIANT_MANTIS2TICK2TICK_MAN2 -GIANT_TICK2LOUSE2 LOUSE_MAN2 GIANT_LOUSE2THRIPS2 -THRIPS_MAN2 GIANT_THRIPS2SLUG2SLUG_MAN2 -GIANT_SLUG2MOSQUITO2 MOSQUITO_MAN2GIANT_MOSQUITO2SPIDER_JUMPING2JUMPING_SPIDER_MAN2GIANT_JUMPING_SPIDER2TERMITE2 -MOON_SNAIL2MOON_SNAIL_MAN2GIANT_MOON_SNAIL2SPIDER_BROWN_RECLUSE2BROWN_RECLUSE_SPIDER_MAN2GIANT_BROWN_RECLUSE_SPIDER2SNAIL2 SNAIL_MAN2 GIANT_SNAIL2 GECKO_LEOPARD2LEOPARD_GECKO_MAN2GIANT_LEOPARD_GECKO2DESERT TORTOISE2DESERT_TORTOISE_MAN2GIANT_DESERT_TORTOISE2 GILA_MONSTER2GILA_MONSTER_MAN2GIANT_GILA_MONSTER2DOG2CAT2MULE2DONKEY2HORSE2COW2SHEEP2PIG2GOAT2 BIRD_CHICKEN2CAVY2 BIRD_DUCK2 WATER_BUFFALO2REINDEER2 -BIRD_GOOSE2YAK2LLAMA2ALPACA2BIRD_GUINEAFOWL2BIRD_PEAFOWL_BLUE2 BIRD_TURKEY2RABBIT2CHIMERA2CENTAUR2GRIFFON2FLY2FLY_MAN2 GIANT_FLY2 ROACH_LARGE2 ROACH_MAN2 GIANT_ROACH2BEETLE2 -BEETLE_MAN2 GIANT_BEETLE2ANT2BUTTERFLY_MONARCH2BUTTERFLY_MONARCH_MAN2GIANT_BUTTERFLY_MONARCH2FIREFLY2 FIREFLY_MAN2 GIANT_FIREFLY2 DRAGONFLY2 DRAGONFLY_MAN2GIANT_DRAGONFLY2 HONEY_BEE2 BUMBLEBEE2 GOAT_MOUNTAIN2GOAT_MOUNTAIN_MAN2GIANT_GOAT_MOUNTAIN2 MARMOT_HOARY2MARMOT_HOARY_MAN2GIANT_MARMOT_HOARY2GNOME_MOUNTAIN2 -GNOME_DARK2WALRUS2 -WALRUS_MAN2 GIANT_WALRUS2FISH_LAMPREY_SEA2SHARK_GREAT_WHITE2 SHARK_FRILL2SHARK_SPINY_DOGFISH2SHARK_WOBBEGONG_SPOTTED2 SHARK_WHALE2 SHARK_BASKING2 SHARK_NURSE2SHARK_MAKO_SHORTFIN2SHARK_MAKO_LONGFIN2 SHARK_TIGER2 -SHARK_BULL2SHARK_REEF_BLACKTIP2SHARK_REEF_WHITETIP2 -SHARK_BLUE2SHARK_HAMMERHEAD2 SHARK_ANGEL2FISH_SKATE_COMMON2FISH_RAY_MANTA2 FISH_STINGRAY2FISH_COELACANTH2 FISH_STURGEON2FISH_CONGER_EEL2 FISH_MILKFISH2FISH_COD2 FISH_OPAH2FISH_GROUPER_GIANT2 FISH_BLUEFISH2FISH_SUNFISH_OCEAN2FISH_SWORDFISH2 FISH_MARLIN2 FISH_HALIBUT2FISH_BARRACUDA_GREAT2FISH_TUNA_BLUEFIN2NARWHAL2 NARWHAL MAN2NARWHAL, GIANT2HIPPO2 HIPPO_MAN2 GIANT_HIPPO2FISH_GAR_LONGNOSE2 FISH_CARP2FISH_TIGERFISH2 FISH_PIKE2PLATYPUS2 PLATYPUS MAN2PLATYPUS, GIANT2 BEAR_GRIZZLY2BEAR_GRIZZLY_MAN2GIANT_BEAR_GRIZZLY2 -BEAR_BLACK2BEAR_BLACK_MAN2GIANT_BEAR_BLACK2DEER2DEER_MAN2 -GIANT_DEER2FOX2FOX_MAN2 GIANT_FOX2RACCOON2 RACCOON_MAN2 GIANT_RACCOON2MACAQUE_RHESUS2MACAQUE_RHESUS_MAN2GIANT_MACAQUE_RHESUS2COUGAR2 -COUGAR_MAN2 GIANT_COUGAR2WOLF2WOLF_MAN2 -GIANT_WOLF2 GROUNDHOG2 GROUNDHOG_MAN2GIANT_GROUNDHOG2 ALLIGATOR2 ALLIGATOR_MAN2GIANT_ALLIGATOR2 BIRD_BUZZARD2 BUZZARD_MAN2 GIANT_BUZZARD2PANDA2PANDA, GIGANTIC2 PANDA MAN2CAPYBARA2CAPYBARA, GIANT2 CAPYBARA MAN2BADGER2 -BADGER MAN2 BADGER, GIANT2MOOSE2 MOOSE MAN2 MOOSE, GIANT2 RED PANDA2 RED PANDA MAN2RED PANDA, GIANT2ELEPHANT2 ELEPHANT_MAN2GIANT_ELEPHANT2WARTHOG2 WARTHOG_MAN2 GIANT_WARTHOG2LION2LION_MAN2 -GIANT_LION2LEOPARD2 LEOPARD_MAN2 GIANT_LEOPARD2JAGUAR2 -JAGUAR_MAN2 GIANT_JAGUAR2TIGER2 TIGER_MAN2 GIANT_TIGER2CHEETAH2 CHEETAH_MAN2 GIANT_CHEETAH2GAZELLE2 GAZELLE_MAN2 GIANT_GAZELLE2MANDRILL2 MANDRILL_MAN2GIANT_MANDRILL2 -CHIMPANZEE2BONOBO2GORILLA2 ORANGUTAN2GIBBON_SIAMANG2GIBBON_WHITE_HANDED2GIBBON_BLACK_HANDED2 GIBBON_GRAY2GIBBON_SILVERY2GIBBON_PILEATED2 GIBBON_BILOU2GIBBON_WHITE_BROWED2GIBBON_BLACK_CRESTED2 CAMEL_1_HUMP2CAMEL_1_HUMP_MAN2GIANT_CAMEL_1_HUMP2 CAMEL_2_HUMP2CAMEL_2_HUMP_MAN2GIANT_CAMEL_2_HUMP2CROCODILE_SALTWATER2CROCODILE_SALTWATER_MAN2GIANT_CROCODILE_SALTWATER2 BIRD_VULTURE2 VULTURE_MAN2 GIANT_VULTURE2 -RHINOCEROS2RHINOCEROS_MAN2GIANT_RHINOCEROS2GIRAFFE2 GIRAFFE_MAN2 GIANT_GIRAFFE2 HONEY BADGER2HONEY BADGER MAN2HONEY BADGER, GIANT2GIANT TORTOISE2GIANT TORTOISE MAN2GIGANTIC TORTOISE2 ARMADILLO2 ARMADILLO MAN2ARMADILLO, GIANT2MUSKOX2 -MUSKOX_MAN2 GIANT_MUSKOX2ELK2ELK_MAN2 GIANT_ELK2 -BEAR_POLAR2BEAR_POLAR_MAN2GIANT_BEAR_POLAR2 WOLVERINE2 WOLVERINE_MAN2GIANT_WOLVERINE2 -CHINCHILLA2CHINCHILLA_MAN2GIANT_CHINCHILLA2 FLOATING_GUTS2DRUNIAN2 CREEPING_EYE2VORACIOUS_CAVE_CRAWLER2BLIND_CAVE_OGRE2 -CAP_HOPPER2 -MAGMA_CRAB2CRUNDLE2 HUNGRY_HEAD2 -FLESH_BALL2ELK_BIRD2 HELMET_SNAKE2GREEN_DEVOURER2RUTHERER2CREEPY_CRAWLER2DRALTHA2GIANT_EARTHWORM2 BLOOD_MAN2BUGBAT2MANERA2 -MOLEMARIAN2JABBERER2 POND_GRABBER2BLIND_CAVE_BEAR2 CAVE_DRAGON2REACHER2ELEMENTMAN_GABBRO2GORLAK2 CAVE_FLOATER2PLUMP_HELMET_MAN2 CAVE_BLOB2ELEMENTMAN_AMETHYST2OCTOPUS2 OCTOPUS_MAN2 GIANT_OCTOPUS2CRAB2CRAB_MAN2 -GIANT_CRAB2 LEOPARD_SEAL2LEOPARD_SEAL_MAN2GIANT_LEOPARD_SEAL2 -CUTTLEFISH2CUTTLEFISH_MAN2GIANT_CUTTLEFISH2ORCA2ORCA_MAN2 -GIANT_ORCA2SPONGE2 -SPONGE_MAN2 GIANT_SPONGE2HORSESHOE_CRAB2HORSESHOE_CRAB_MAN2GIANT_HORSESHOE_CRAB2 SPERM_WHALE2SPERM_WHALE_MAN2GIANT_SPERM_WHALE2 ELEPHANT_SEAL2ELEPHANT_SEAL_MAN2GIANT_ELEPHANT_SEAL2 HARP_SEAL2 HARP_SEAL_MAN2GIANT_HARP_SEAL2NAUTILUS2 NAUTILUS_MAN2GIANT_NAUTILUS2 FOXSQUIRREL2 MOGHOPPER2 RAT_DEMON2WAMBLER_FLUFFY2LIZARD_RHINO_TWO_LEGGED2 WORM_KNUCKLE2SPIDER_PHANTOM2 FLY_ACORN2 -GNAT_BLOOD2LIZARD2 -LIZARD_MAN2 GIANT_LIZARD2SKINK2 SKINK_MAN2 GIANT_SKINK2 CHAMELEON2 CHAMELEON_MAN2GIANT_CHAMELEON2ANOLE2 ANOLE_MAN2 GIANT_ANOLE2IGUANA2 -IGUANA_MAN2 GIANT_IGUANA2 RIVER OTTER2 SEA OTTER2 OTTER_MAN2 GIANT_OTTER2SNAPPING TURTLE2ALLIGATOR SNAPPING TURTLE2SNAPPING_TURTLE_MAN2GIANT_SNAPPING_TURTLE2BEAVER2 -BEAVER_MAN2 GIANT_BEAVER2LEECH2 LEECH_MAN2 GIANT_LEECH2AXOLOTL2 AXOLOTL_MAN2 GIANT_AXOLOTL2MINK2MINK_MAN2 -GIANT_MINK2 POND_TURTLE2POND_TURTLE_MAN2GIANT_POND_TURTLE2RAT2RAT_MAN2 SQUIRREL_GRAY2SQUIRREL_GRAY_MAN2GIANT_SQUIRREL_GRAY2 SQUIRREL_RED2SQUIRREL_RED_MAN2GIANT_SQUIRREL_RED2CHIPMUNK2 CHIPMUNK_MAN2GIANT_CHIPMUNK2HAMSTER2 HAMSTER_MAN2 GIANT_HAMSTER2HEDGEHOG2 HEDGEHOG_MAN2GIANT_HEDGEHOG2SQUIRREL_FLYING2FLYING_SQUIRREL_MAN2GIANT_FLYING_SQUIRREL2MUSSEL2OYSTER2 FISH_SALMON2FISH_CLOWNFISH2 FISH_HAGFISH2FISH_LAMPREY_BROOK2 FISH_RAY_BAT2FISH_RAY_THORNBACK2FISH_RATFISH_SPOTTED2 FISH_HERRING2 FISH_SHAD2 FISH_ANCHOVY2FISH_TROUT_STEELHEAD2 FISH_HAKE2 FISH_SEAHORSE2 FISH_GLASSEYE2FISH_PUFFER_WHITE_SPOTTED2 FISH_SOLE2 FISH_FLOUNDER2 FISH_MACKEREL2JELLYFISH_SEA_NETTLE2SQUID2 SQUID MAN2GIGANTIC SQUID2 FISH_LUNGFISH2FISH_LOACH_CLOWN2FISH_BULLHEAD_BROWN2FISH_BULLHEAD_YELLOW2FISH_BULLHEAD_BLACK2FISH_KNIFEFISH_BANDED2 FISH_CHAR2FISH_TROUT_RAINBOW2FISH_MOLLY_SAILFIN2 -FISH_GUPPY2 -FISH_PERCH2DWARF2HUMAN2ELF2GOBLIN2KOBOLD2GREMLIN2TROLL2OGRE2UNICORN2DRAGON2SATYR2COLOSSUS_BRONZE2GIANT2CYCLOPS2ETTIN2MINOTAUR2YETI2 SASQUATCH2 BLIZZARD_MAN2WOLF_ICE2FAIRY2PIXIE2BEAK_DOG2 GRIMELING2 BLENDEC_FOUL2 STRANGLER2 NIGHTWING2HARPY2HYDRA2 MERPERSON2 SEA_SERPENT2 SEA_MONSTER2BIRD_ROC2CROCODILE_CAVE2TOAD_GIANT_CAVE2 OLM_GIANT2 BAT_GIANT2 RAT_GIANT2 RAT_LARGE2MOLE_DOG_NAKED2 -TROGLODYTE2 -MOLE_GIANT2IMP_FIRE2SPIDER_CAVE_GIANT2 SPIDER_CAVE2 FISH_CAVE2 CAVE_FISH_MAN2 LOBSTER_CAVE2 -SNAKE_FIRE2OLM2OLM_MAN2BAT2BAT_MAN2MAGGOT_PURRING2ELEMENTMAN_FIRE2ELEMENTMAN_MAGMA2ELEMENTMAN_IRON2ELEMENTMAN_MUD2BIRD_SWALLOW_CAVE2CAVE_SWALLOW_MAN2BIRD_SWALLOW_CAVE_GIANT2 AMPHIBIAN_MAN2 REPTILE_MAN2 SERPENT_MAN2ANT_MAN2 -RODENT MAN2 WILD_BOAR2 WILD_BOAR_MAN2GIANT_WILD_BOAR2COYOTE2 -COYOTE_MAN2 GIANT_COYOTE2KANGAROO2 KANGAROO_MAN2GIANT_KANGAROO2KOALA2 KOALA_MAN2 GIANT_KOALA2ADDER2 ADDER_MAN2 GIANT_ADDER2ECHIDNA2 ECHIDNA_MAN2 GIANT_ECHIDNA2 PORCUPINE2 PORCUPINE_MAN2GIANT_PORCUPINE2 KINGSNAKE2 KINGSNAKE_MAN2GIANT_KINGSNAKE2 GRAY_LANGUR2GRAY_LANGUR_MAN2GIANT_GRAY_LANGUR2BOBCAT2 -BOBCAT_MAN2 GIANT_BOBCAT2SKUNK2 SKUNK_MAN2 GIANT_SKUNK2GREEN_TREE_FROG2GREEN_TREE_FROG_MAN2GIANT_GREEN_TREE_FROG2HARE2HARE_MAN2 -GIANT_HARE2 RATTLESNAKE2RATTLESNAKE_MAN2GIANT_RATTLESNAKE2WEASEL2 -WEASEL_MAN2 GIANT_WEASEL2COPPERHEAD_SNAKE2COPPERHEAD_SNAKE_MAN2GIANT_COPPERHEAD_SNAKE2IBEX2IBEX_MAN2 -GIANT_IBEX2WOMBAT2 -WOMBAT_MAN2 GIANT_WOMBAT2DINGO2 DINGO_MAN2 GIANT_DINGO2COATI2 COATI_MAN2 GIANT_COATI2OPOSSUM2 OPOSSUM_MAN2 GIANT_OPOSSUM2MONGOOSE2 MONGOOSE_MAN2GIANT_MONGOOSE2HYENA2 HYENA_MAN2 GIANT_HYENA2ANACONDA2 ANACONDA_MAN2GIANT_ANACONDA2MONITOR_LIZARD2MONITOR_LIZARD_MAN2GIANT_MONITOR_LIZARD2 -KING_COBRA2KING_COBRA_MAN2GIANT_KING_COBRA2OCELOT2 -OCELOT_MAN2 GIANT_OCELOT2JACKAL2 -JACKAL_MAN2 GIANT_JACKAL2CAPUCHIN2 CAPUCHIN_MAN2GIANT_CAPUCHIN2SLOTH2 SLOTH_MAN2 GIANT_SLOTH2 SPIDER_MONKEY2SPIDER_MONKEY_MAN2GIANT_SPIDER_MONKEY2PANGOLIN2 PANGOLIN_MAN2GIANT_PANGOLIN2 BLACK_MAMBA2BLACK_MAMBA_MAN2GIANT_BLACK_MAMBA2 -BEAR_SLOTH2SLOTH_BEAR_MAN2GIANT_SLOTH_BEAR2AYE-AYE2 AYE-AYE_MAN2 GIANT_AYE-AYE2 -BUSHMASTER2BUSHMASTER_MAN2GIANT_BUSHMASTER2PYTHON2 -PYTHON_MAN2 GIANT_PYTHON2TAPIR2 TAPIR_MAN2 GIANT_TAPIR2IMPALA2 -IMPALA_MAN2 GIANT_IMPALA2AARDVARK2 AARDVARK_MAN2GIANT_AARDVARK2 LION_TAMARIN2LION_TAMARIN_MAN2GIANT_LION_TAMARIN2STOAT2 STOAT_MAN2 GIANT_STOAT2LYNX2LYNX_MAN2 -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/drinkplant.dfstock b/data/stockpiles/booze.dfstock similarity index 91% rename from data/stockpiles/drinkplant.dfstock rename to data/stockpiles/booze.dfstock index c03acc8bcb..736560f988 100644 Binary files a/data/stockpiles/drinkplant.dfstock and b/data/stockpiles/booze.dfstock differ diff --git a/data/stockpiles/bronzearmor.dfstock b/data/stockpiles/bronzearmor.dfstock index 4e59d1a65c..22dda4155e 100644 Binary files a/data/stockpiles/bronzearmor.dfstock and b/data/stockpiles/bronzearmor.dfstock differ diff --git a/data/stockpiles/bronzeweapons.dfstock b/data/stockpiles/bronzeweapons.dfstock index 1295304e8f..54cd87d110 100644 Binary files a/data/stockpiles/bronzeweapons.dfstock and b/data/stockpiles/bronzeweapons.dfstock differ diff --git a/data/stockpiles/buckets.dfstock b/data/stockpiles/buckets.dfstock index aab60f90ad..cb6b8c4bb5 100644 Binary files a/data/stockpiles/buckets.dfstock and b/data/stockpiles/buckets.dfstock differ diff --git a/data/stockpiles/cages.dfstock b/data/stockpiles/cages.dfstock new file mode 100644 index 0000000000..0ca677985c Binary files /dev/null and b/data/stockpiles/cages.dfstock differ diff --git a/data/stockpiles/cat_ammo.dfstock b/data/stockpiles/cat_ammo.dfstock new file mode 100644 index 0000000000..55a20e7e65 --- /dev/null +++ b/data/stockpiles/cat_ammo.dfstock @@ -0,0 +1 @@ +B0 \ No newline at end of file diff --git a/data/stockpiles/cat_animals.dfstock b/data/stockpiles/cat_animals.dfstock new file mode 100644 index 0000000000..9796e4535c --- /dev/null +++ b/data/stockpiles/cat_animals.dfstock @@ -0,0 +1,2 @@ + +  \ No newline at end of file diff --git a/data/stockpiles/cat_armor.dfstock b/data/stockpiles/cat_armor.dfstock new file mode 100644 index 0000000000..54a2d54eee --- /dev/null +++ b/data/stockpiles/cat_armor.dfstock @@ -0,0 +1 @@ +Šh \ No newline at end of file diff --git a/data/stockpiles/cat_bars_blocks.dfstock b/data/stockpiles/cat_bars_blocks.dfstock new file mode 100644 index 0000000000..b7ae54bb1f --- /dev/null +++ b/data/stockpiles/cat_bars_blocks.dfstock @@ -0,0 +1 @@ +R( \ No newline at end of file diff --git a/data/stockpiles/cat_cloth.dfstock b/data/stockpiles/cat_cloth.dfstock new file mode 100644 index 0000000000..d88106c6b8 --- /dev/null +++ b/data/stockpiles/cat_cloth.dfstock @@ -0,0 +1 @@ +rH \ No newline at end of file diff --git a/data/stockpiles/cat_coins.dfstock b/data/stockpiles/cat_coins.dfstock new file mode 100644 index 0000000000..a48133ac40 --- /dev/null +++ b/data/stockpiles/cat_coins.dfstock @@ -0,0 +1 @@ +J \ No newline at end of file diff --git a/data/stockpiles/cat_corpses.dfstock b/data/stockpiles/cat_corpses.dfstock new file mode 100644 index 0000000000..f4edc7ff85 --- /dev/null +++ b/data/stockpiles/cat_corpses.dfstock @@ -0,0 +1 @@ +Ê \ No newline at end of file diff --git a/data/stockpiles/cat_finished_goods.dfstock b/data/stockpiles/cat_finished_goods.dfstock new file mode 100644 index 0000000000..68a2d90531 --- /dev/null +++ b/data/stockpiles/cat_finished_goods.dfstock @@ -0,0 +1 @@ +b0 \ No newline at end of file diff --git a/data/stockpiles/cat_food.dfstock b/data/stockpiles/cat_food.dfstock new file mode 100644 index 0000000000..32829f6776 --- /dev/null +++ b/data/stockpiles/cat_food.dfstock @@ -0,0 +1 @@ +¨ \ No newline at end of file diff --git a/data/stockpiles/cat_furniture.dfstock b/data/stockpiles/cat_furniture.dfstock new file mode 100644 index 0000000000..fdec022edf --- /dev/null +++ b/data/stockpiles/cat_furniture.dfstock @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/data/stockpiles/cat_gems.dfstock b/data/stockpiles/cat_gems.dfstock new file mode 100644 index 0000000000..8a6483e26e --- /dev/null +++ b/data/stockpiles/cat_gems.dfstock @@ -0,0 +1 @@ +Z( \ No newline at end of file diff --git a/data/stockpiles/cat_leather.dfstock b/data/stockpiles/cat_leather.dfstock new file mode 100644 index 0000000000..357287897c --- /dev/null +++ b/data/stockpiles/cat_leather.dfstock @@ -0,0 +1 @@ +j \ No newline at end of file diff --git a/data/stockpiles/cat_refuse.dfstock b/data/stockpiles/cat_refuse.dfstock new file mode 100644 index 0000000000..a6219a81af --- /dev/null +++ b/data/stockpiles/cat_refuse.dfstock @@ -0,0 +1 @@ +*` \ No newline at end of file diff --git a/data/stockpiles/cat_sheets.dfstock b/data/stockpiles/cat_sheets.dfstock new file mode 100644 index 0000000000..0230086d80 --- /dev/null +++ b/data/stockpiles/cat_sheets.dfstock @@ -0,0 +1 @@ +Ò \ No newline at end of file diff --git a/data/stockpiles/cat_stone.dfstock b/data/stockpiles/cat_stone.dfstock new file mode 100644 index 0000000000..29bcd227e4 --- /dev/null +++ b/data/stockpiles/cat_stone.dfstock @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/data/stockpiles/cat_weapons.dfstock b/data/stockpiles/cat_weapons.dfstock new file mode 100644 index 0000000000..8f46ee6199 --- /dev/null +++ b/data/stockpiles/cat_weapons.dfstock @@ -0,0 +1 @@ +‚H \ No newline at end of file diff --git a/data/stockpiles/cat_wood.dfstock b/data/stockpiles/cat_wood.dfstock new file mode 100644 index 0000000000..5613a0f077 --- /dev/null +++ b/data/stockpiles/cat_wood.dfstock @@ -0,0 +1 @@ +z \ No newline at end of file diff --git a/data/stockpiles/clay.dfstock b/data/stockpiles/clay.dfstock index 7e661688d7..e01c7abaf7 100644 Binary files a/data/stockpiles/clay.dfstock and b/data/stockpiles/clay.dfstock differ diff --git a/data/stockpiles/cloth.dfstock b/data/stockpiles/cloth.dfstock index fbe98f3728..26c4c52f30 100644 Binary files a/data/stockpiles/cloth.dfstock and b/data/stockpiles/cloth.dfstock differ diff --git a/data/stockpiles/clothprefix.dfstock b/data/stockpiles/clothprefix.dfstock deleted file mode 100644 index 62d84c402f..0000000000 --- a/data/stockpiles/clothprefix.dfstock +++ /dev/null @@ -1,141 +0,0 @@ -rêL -"CREATURE:SPIDER_BROWN_RECLUSE:SILK -&CREATURE:BROWN_RECLUSE_SPIDER_MAN:SILK -(CREATURE:GIANT_BROWN_RECLUSE_SPIDER:SILK -CREATURE:SPIDER_PHANTOM:SILK -CREATURE:SPIDER_CAVE_GIANT:SILK -CREATURE:SPIDER_CAVE:SILK -INORGANIC:DIVINE_2 -INORGANIC:DIVINE_4 -INORGANIC:DIVINE_6 -INORGANIC:DIVINE_8 -INORGANIC:DIVINE_10 -INORGANIC:DIVINE_12 -INORGANIC:DIVINE_14 -INORGANIC:DIVINE_16 -INORGANIC:DIVINE_18 -INORGANIC:DIVINE_20 - CREATURE:FORGOTTEN_BEAST_10:SILK - CREATURE:FORGOTTEN_BEAST_12:SILK - CREATURE:FORGOTTEN_BEAST_17:SILK - CREATURE:FORGOTTEN_BEAST_20:SILK - CREATURE:FORGOTTEN_BEAST_29:SILK - CREATURE:FORGOTTEN_BEAST_31:SILK - CREATURE:FORGOTTEN_BEAST_42:SILK - CREATURE:FORGOTTEN_BEAST_55:SILK - CREATURE:FORGOTTEN_BEAST_65:SILK - CREATURE:FORGOTTEN_BEAST_68:SILK - CREATURE:FORGOTTEN_BEAST_71:SILK - CREATURE:FORGOTTEN_BEAST_74:SILK - CREATURE:FORGOTTEN_BEAST_91:SILK -!CREATURE:FORGOTTEN_BEAST_101:SILK -!CREATURE:FORGOTTEN_BEAST_109:SILK -!CREATURE:FORGOTTEN_BEAST_119:SILK -!CREATURE:FORGOTTEN_BEAST_121:SILK -!CREATURE:FORGOTTEN_BEAST_125:SILK -!CREATURE:FORGOTTEN_BEAST_128:SILK -!CREATURE:FORGOTTEN_BEAST_132:SILK -!CREATURE:FORGOTTEN_BEAST_142:SILK -!CREATURE:FORGOTTEN_BEAST_146:SILK -!CREATURE:FORGOTTEN_BEAST_168:SILK -!CREATURE:FORGOTTEN_BEAST_173:SILK -!CREATURE:FORGOTTEN_BEAST_186:SILK -!CREATURE:FORGOTTEN_BEAST_204:SILK -!CREATURE:FORGOTTEN_BEAST_213:SILK -!CREATURE:FORGOTTEN_BEAST_224:SILK -!CREATURE:FORGOTTEN_BEAST_235:SILK -!CREATURE:FORGOTTEN_BEAST_236:SILK -!CREATURE:FORGOTTEN_BEAST_239:SILK -!CREATURE:FORGOTTEN_BEAST_248:SILK -!CREATURE:FORGOTTEN_BEAST_275:SILK -!CREATURE:FORGOTTEN_BEAST_277:SILK -!CREATURE:FORGOTTEN_BEAST_281:SILK -!CREATURE:FORGOTTEN_BEAST_289:SILK -!CREATURE:FORGOTTEN_BEAST_290:SILK -!CREATURE:FORGOTTEN_BEAST_293:SILK -!CREATURE:FORGOTTEN_BEAST_297:SILK -!CREATURE:FORGOTTEN_BEAST_309:SILK -!CREATURE:FORGOTTEN_BEAST_311:SILK -!CREATURE:FORGOTTEN_BEAST_313:SILK -!CREATURE:FORGOTTEN_BEAST_326:SILK -!CREATURE:FORGOTTEN_BEAST_330:SILK -!CREATURE:FORGOTTEN_BEAST_341:SILK -!CREATURE:FORGOTTEN_BEAST_343:SILK -!CREATURE:FORGOTTEN_BEAST_357:SILK -!CREATURE:FORGOTTEN_BEAST_362:SILK -!CREATURE:FORGOTTEN_BEAST_371:SILK -!CREATURE:FORGOTTEN_BEAST_376:SILK -!CREATURE:FORGOTTEN_BEAST_379:SILK -!CREATURE:FORGOTTEN_BEAST_384:SILK -!CREATURE:FORGOTTEN_BEAST_397:SILK -!CREATURE:FORGOTTEN_BEAST_398:SILK -!CREATURE:FORGOTTEN_BEAST_403:SILK -!CREATURE:FORGOTTEN_BEAST_412:SILK -!CREATURE:FORGOTTEN_BEAST_426:SILK -!CREATURE:FORGOTTEN_BEAST_427:SILK -!CREATURE:FORGOTTEN_BEAST_432:SILK -!CREATURE:FORGOTTEN_BEAST_435:SILK -!CREATURE:FORGOTTEN_BEAST_438:SILK -!CREATURE:FORGOTTEN_BEAST_442:SILK -!CREATURE:FORGOTTEN_BEAST_456:SILK -!CREATURE:FORGOTTEN_BEAST_460:SILK -!CREATURE:FORGOTTEN_BEAST_465:SILK -!CREATURE:FORGOTTEN_BEAST_467:SILK -!CREATURE:FORGOTTEN_BEAST_472:SILK -!CREATURE:FORGOTTEN_BEAST_476:SILK -!CREATURE:FORGOTTEN_BEAST_486:SILK -!CREATURE:FORGOTTEN_BEAST_508:SILK -!CREATURE:FORGOTTEN_BEAST_549:SILK -!CREATURE:FORGOTTEN_BEAST_567:SILK -!CREATURE:FORGOTTEN_BEAST_568:SILK -!CREATURE:FORGOTTEN_BEAST_575:SILK -!CREATURE:FORGOTTEN_BEAST_580:SILK -!CREATURE:FORGOTTEN_BEAST_583:SILK -!CREATURE:FORGOTTEN_BEAST_588:SILK -!CREATURE:FORGOTTEN_BEAST_589:SILK -!CREATURE:FORGOTTEN_BEAST_600:SILK -!CREATURE:FORGOTTEN_BEAST_605:SILK -!CREATURE:FORGOTTEN_BEAST_606:SILK -!CREATURE:FORGOTTEN_BEAST_612:SILK -!CREATURE:FORGOTTEN_BEAST_613:SILK -!CREATURE:FORGOTTEN_BEAST_614:SILK -!CREATURE:FORGOTTEN_BEAST_630:SILK -!CREATURE:FORGOTTEN_BEAST_632:SILK -!CREATURE:FORGOTTEN_BEAST_639:SILK -!CREATURE:FORGOTTEN_BEAST_643:SILK -!CREATURE:FORGOTTEN_BEAST_650:SILK -!CREATURE:FORGOTTEN_BEAST_653:SILK -!CREATURE:FORGOTTEN_BEAST_661:SILK -!CREATURE:FORGOTTEN_BEAST_662:SILK -!CREATURE:FORGOTTEN_BEAST_676:SILK -!CREATURE:FORGOTTEN_BEAST_680:SILK -!CREATURE:FORGOTTEN_BEAST_697:SILK -!CREATURE:FORGOTTEN_BEAST_706:SILK -!CREATURE:FORGOTTEN_BEAST_720:SILK -!CREATURE:FORGOTTEN_BEAST_723:SILK -!CREATURE:FORGOTTEN_BEAST_730:SILK -!CREATURE:FORGOTTEN_BEAST_757:SILK -!CREATURE:FORGOTTEN_BEAST_764:SILK -!CREATURE:FORGOTTEN_BEAST_765:SILK -!CREATURE:FORGOTTEN_BEAST_768:SILK -!CREATURE:FORGOTTEN_BEAST_774:SILK -!CREATURE:FORGOTTEN_BEAST_791:SILK -!CREATURE:FORGOTTEN_BEAST_809:SILK -!CREATURE:FORGOTTEN_BEAST_814:SILK -!CREATURE:FORGOTTEN_BEAST_821:SILK -!CREATURE:FORGOTTEN_BEAST_827:SILK -!CREATURE:FORGOTTEN_BEAST_829:SILK -!CREATURE:FORGOTTEN_BEAST_843:SILK -!CREATURE:FORGOTTEN_BEAST_855:SILK -!CREATURE:FORGOTTEN_BEAST_863:SILK -CREATURE:TITAN_4:SILK -CREATURE:TITAN_9:SILK -CREATURE:TITAN_14:SILK -CREATURE:TITAN_15:SILK -CREATURE:TITAN_16:SILK -CREATURE:TITAN_21:SILK -CREATURE:TITAN_22:SILK -CREATURE:TITAN_23:SILK -CREATURE:DEMON_39:SILK -CREATURE:DEMON_42:SILK -CREATURE:DEMON_51:SILKPLANT:FLAX:THREADPLANT:JUTE:THREADPLANT:HEMP:THREADPLANT:COTTON:THREADPLANT:RAMIE:THREADPLANT:KENAF:THREADPLANT:GRASS_TAIL_PIG:THREADPLANT:REED_ROPE:THREADCREATURE:SHEEP:HAIRCREATURE:LLAMA:HAIRCREATURE:ALPACA:HAIRCREATURE:TROLL:HAIRCREATURE:GNOLL:HAIR"INORGANIC:ADAMANTINE*"CREATURE:SPIDER_BROWN_RECLUSE:SILK*&CREATURE:BROWN_RECLUSE_SPIDER_MAN:SILK*(CREATURE:GIANT_BROWN_RECLUSE_SPIDER:SILK*CREATURE:SPIDER_PHANTOM:SILK*CREATURE:SPIDER_CAVE_GIANT:SILK*CREATURE:SPIDER_CAVE:SILK*INORGANIC:DIVINE_2*INORGANIC:DIVINE_4*INORGANIC:DIVINE_6*INORGANIC:DIVINE_8*INORGANIC:DIVINE_10*INORGANIC:DIVINE_12*INORGANIC:DIVINE_14*INORGANIC:DIVINE_16*INORGANIC:DIVINE_18*INORGANIC:DIVINE_20* CREATURE:FORGOTTEN_BEAST_10:SILK* CREATURE:FORGOTTEN_BEAST_12:SILK* CREATURE:FORGOTTEN_BEAST_17:SILK* CREATURE:FORGOTTEN_BEAST_20:SILK* CREATURE:FORGOTTEN_BEAST_29:SILK* CREATURE:FORGOTTEN_BEAST_31:SILK* CREATURE:FORGOTTEN_BEAST_42:SILK* CREATURE:FORGOTTEN_BEAST_55:SILK* CREATURE:FORGOTTEN_BEAST_65:SILK* CREATURE:FORGOTTEN_BEAST_68:SILK* CREATURE:FORGOTTEN_BEAST_71:SILK* CREATURE:FORGOTTEN_BEAST_74:SILK* CREATURE:FORGOTTEN_BEAST_91:SILK*!CREATURE:FORGOTTEN_BEAST_101:SILK*!CREATURE:FORGOTTEN_BEAST_109:SILK*!CREATURE:FORGOTTEN_BEAST_119:SILK*!CREATURE:FORGOTTEN_BEAST_121:SILK*!CREATURE:FORGOTTEN_BEAST_125:SILK*!CREATURE:FORGOTTEN_BEAST_128:SILK*!CREATURE:FORGOTTEN_BEAST_132:SILK*!CREATURE:FORGOTTEN_BEAST_142:SILK*!CREATURE:FORGOTTEN_BEAST_146:SILK*!CREATURE:FORGOTTEN_BEAST_168:SILK*!CREATURE:FORGOTTEN_BEAST_173:SILK*!CREATURE:FORGOTTEN_BEAST_186:SILK*!CREATURE:FORGOTTEN_BEAST_204:SILK*!CREATURE:FORGOTTEN_BEAST_213:SILK*!CREATURE:FORGOTTEN_BEAST_224:SILK*!CREATURE:FORGOTTEN_BEAST_235:SILK*!CREATURE:FORGOTTEN_BEAST_236:SILK*!CREATURE:FORGOTTEN_BEAST_239:SILK*!CREATURE:FORGOTTEN_BEAST_248:SILK*!CREATURE:FORGOTTEN_BEAST_275:SILK*!CREATURE:FORGOTTEN_BEAST_277:SILK*!CREATURE:FORGOTTEN_BEAST_281:SILK*!CREATURE:FORGOTTEN_BEAST_289:SILK*!CREATURE:FORGOTTEN_BEAST_290:SILK*!CREATURE:FORGOTTEN_BEAST_293:SILK*!CREATURE:FORGOTTEN_BEAST_297:SILK*!CREATURE:FORGOTTEN_BEAST_309:SILK*!CREATURE:FORGOTTEN_BEAST_311:SILK*!CREATURE:FORGOTTEN_BEAST_313:SILK*!CREATURE:FORGOTTEN_BEAST_326:SILK*!CREATURE:FORGOTTEN_BEAST_330:SILK*!CREATURE:FORGOTTEN_BEAST_341:SILK*!CREATURE:FORGOTTEN_BEAST_343:SILK*!CREATURE:FORGOTTEN_BEAST_357:SILK*!CREATURE:FORGOTTEN_BEAST_362:SILK*!CREATURE:FORGOTTEN_BEAST_371:SILK*!CREATURE:FORGOTTEN_BEAST_376:SILK*!CREATURE:FORGOTTEN_BEAST_379:SILK*!CREATURE:FORGOTTEN_BEAST_384:SILK*!CREATURE:FORGOTTEN_BEAST_397:SILK*!CREATURE:FORGOTTEN_BEAST_398:SILK*!CREATURE:FORGOTTEN_BEAST_403:SILK*!CREATURE:FORGOTTEN_BEAST_412:SILK*!CREATURE:FORGOTTEN_BEAST_426:SILK*!CREATURE:FORGOTTEN_BEAST_427:SILK*!CREATURE:FORGOTTEN_BEAST_432:SILK*!CREATURE:FORGOTTEN_BEAST_435:SILK*!CREATURE:FORGOTTEN_BEAST_438:SILK*!CREATURE:FORGOTTEN_BEAST_442:SILK*!CREATURE:FORGOTTEN_BEAST_456:SILK*!CREATURE:FORGOTTEN_BEAST_460:SILK*!CREATURE:FORGOTTEN_BEAST_465:SILK*!CREATURE:FORGOTTEN_BEAST_467:SILK*!CREATURE:FORGOTTEN_BEAST_472:SILK*!CREATURE:FORGOTTEN_BEAST_476:SILK*!CREATURE:FORGOTTEN_BEAST_486:SILK*!CREATURE:FORGOTTEN_BEAST_508:SILK*!CREATURE:FORGOTTEN_BEAST_549:SILK*!CREATURE:FORGOTTEN_BEAST_567:SILK*!CREATURE:FORGOTTEN_BEAST_568:SILK*!CREATURE:FORGOTTEN_BEAST_575:SILK*!CREATURE:FORGOTTEN_BEAST_580:SILK*!CREATURE:FORGOTTEN_BEAST_583:SILK*!CREATURE:FORGOTTEN_BEAST_588:SILK*!CREATURE:FORGOTTEN_BEAST_589:SILK*!CREATURE:FORGOTTEN_BEAST_600:SILK*!CREATURE:FORGOTTEN_BEAST_605:SILK*!CREATURE:FORGOTTEN_BEAST_606:SILK*!CREATURE:FORGOTTEN_BEAST_612:SILK*!CREATURE:FORGOTTEN_BEAST_613:SILK*!CREATURE:FORGOTTEN_BEAST_614:SILK*!CREATURE:FORGOTTEN_BEAST_630:SILK*!CREATURE:FORGOTTEN_BEAST_632:SILK*!CREATURE:FORGOTTEN_BEAST_639:SILK*!CREATURE:FORGOTTEN_BEAST_643:SILK*!CREATURE:FORGOTTEN_BEAST_650:SILK*!CREATURE:FORGOTTEN_BEAST_653:SILK*!CREATURE:FORGOTTEN_BEAST_661:SILK*!CREATURE:FORGOTTEN_BEAST_662:SILK*!CREATURE:FORGOTTEN_BEAST_676:SILK*!CREATURE:FORGOTTEN_BEAST_680:SILK*!CREATURE:FORGOTTEN_BEAST_697:SILK*!CREATURE:FORGOTTEN_BEAST_706:SILK*!CREATURE:FORGOTTEN_BEAST_720:SILK*!CREATURE:FORGOTTEN_BEAST_723:SILK*!CREATURE:FORGOTTEN_BEAST_730:SILK*!CREATURE:FORGOTTEN_BEAST_757:SILK*!CREATURE:FORGOTTEN_BEAST_764:SILK*!CREATURE:FORGOTTEN_BEAST_765:SILK*!CREATURE:FORGOTTEN_BEAST_768:SILK*!CREATURE:FORGOTTEN_BEAST_774:SILK*!CREATURE:FORGOTTEN_BEAST_791:SILK*!CREATURE:FORGOTTEN_BEAST_809:SILK*!CREATURE:FORGOTTEN_BEAST_814:SILK*!CREATURE:FORGOTTEN_BEAST_821:SILK*!CREATURE:FORGOTTEN_BEAST_827:SILK*!CREATURE:FORGOTTEN_BEAST_829:SILK*!CREATURE:FORGOTTEN_BEAST_843:SILK*!CREATURE:FORGOTTEN_BEAST_855:SILK*!CREATURE:FORGOTTEN_BEAST_863:SILK*CREATURE:TITAN_4:SILK*CREATURE:TITAN_9:SILK*CREATURE:TITAN_14:SILK*CREATURE:TITAN_15:SILK*CREATURE:TITAN_16:SILK*CREATURE:TITAN_21:SILK*CREATURE:TITAN_22:SILK*CREATURE:TITAN_23:SILK*CREATURE:DEMON_39:SILK*CREATURE:DEMON_42:SILK*CREATURE:DEMON_51:SILK2PLANT:FLAX:THREAD2PLANT:JUTE:THREAD2PLANT:HEMP:THREAD2PLANT:COTTON:THREAD2PLANT:RAMIE:THREAD2PLANT:KENAF:THREAD2PLANT:GRASS_TAIL_PIG:THREAD2PLANT:REED_ROPE:THREAD:CREATURE:SHEEP:HAIR:CREATURE:LLAMA:HAIR:CREATURE:ALPACA:HAIR:CREATURE:TROLL:HAIR:CREATURE:GNOLL:HAIRBINORGANIC:ADAMANTINE˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/coal.dfstock b/data/stockpiles/coal.dfstock index 0db45dd7f0..8e9ec16e04 100644 Binary files a/data/stockpiles/coal.dfstock and b/data/stockpiles/coal.dfstock differ diff --git a/data/stockpiles/coalproducing.dfstock b/data/stockpiles/coalproducing.dfstock index ef5c4e73b4..30d6f7adf1 100644 Binary files a/data/stockpiles/coalproducing.dfstock and b/data/stockpiles/coalproducing.dfstock differ diff --git a/data/stockpiles/coinsprefix.dfstock b/data/stockpiles/coinsprefix.dfstock deleted file mode 100644 index 4f17935dae..0000000000 Binary files a/data/stockpiles/coinsprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/copperarmor.dfstock b/data/stockpiles/copperarmor.dfstock index 695eeb321a..bc7b8ec58e 100644 Binary files a/data/stockpiles/copperarmor.dfstock and b/data/stockpiles/copperarmor.dfstock differ diff --git a/data/stockpiles/copperweapons.dfstock b/data/stockpiles/copperweapons.dfstock index d3a2aac2fc..a30c53107a 100644 Binary files a/data/stockpiles/copperweapons.dfstock and b/data/stockpiles/copperweapons.dfstock differ diff --git a/data/stockpiles/corpses.dfstock b/data/stockpiles/corpses.dfstock deleted file mode 100644 index dbaa101c15..0000000000 --- a/data/stockpiles/corpses.dfstock +++ /dev/null @@ -1,157 +0,0 @@ -*ÆW -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCHTOADTOAD_MAN -GIANT_TOADWORMWORM_MAN BIRD_BLUEJAY BLUEJAY_MAN GIANT_BLUEJAY BIRD_CARDINAL CARDINAL_MANGIANT_CARDINAL BIRD_GRACKLE GRACKLE_MAN GIANT_GRACKLE BIRD_ORIOLE -ORIOLE_MAN GIANT_ORIOLEBIRD_RW_BLACKBIRDRW_BLACKBIRD_MANGIANT_RW_BLACKBIRD BIRD_PENGUINBIRD_PENGUIN_LITTLEBIRD_PENGUIN_EMPEROR PENGUIN MANBIRD_PENGUIN_GIANTBIRD_FALCON_PEREGRINEPEREGRINE FALCON MANGIANT PEREGRINE FALCON BIRD_KIWIKIWI MANBIRD_KIWI_GIANT BIRD_OSTRICH OSTRICH MANBIRD_OSTRICH_GIANT BIRD_CROWCROW_MAN -GIANT_CROW -BIRD_RAVEN RAVEN_MAN GIANT_RAVENBIRD_CASSOWARY CASSOWARY_MANGIANT_CASSOWARYBIRD_KEAKEA_MAN GIANT_KEABIRD_OWL_SNOWY SNOWY_OWL_MANGIANT_SNOWY_OWLSPARROW SPARROW_MAN GIANT_SPARROWBIRD_STORK_WHITEWHITE_STORK_MANGIANT_WHITE_STORK BIRD_LOONLOON_MAN -GIANT_LOON BIRD_OWL_BARN BARN_OWL_MANGIANT_BARN_OWL BIRD_PARAKEET PARAKEET_MANGIANT_PARAKEET BIRD_KAKAPO -KAKAPO_MAN GIANT_KAKAPOBIRD_PARROT_GREYGREY_PARROT_MANGIANT_GREY_PARROT BIRD_PUFFIN -PUFFIN_MAN GIANT_PUFFIN BIRD_SWANSWAN_MAN -GIANT_SWAN BIRD_LORIKEET LORIKEET_MANGIANT_LORIKEET BIRD_WRENWREN_MAN -GIANT_WREN BIRD_OSPREY -OSPREY_MAN GIANT_OSPREYBIRD_EMUEMU_MAN GIANT_EMUBIRD_COCKATIEL COCKATIEL_MANGIANT_COCKATIELBIRD_LOVEBIRD_PEACH-FACEDPEACH-FACED_LOVEBIRD_MANGIANT_PEACH-FACED_LOVEBIRD BIRD_MAGPIE -MAGPIE_MAN GIANT_MAGPIE BIRD_KESTREL KESTREL_MAN GIANT_KESTRELBIRD_ALBATROSS ALBATROSS_MANGIANT_ALBATROSSBIRD_OWL_GREAT_HORNEDGREAT_HORNED_OWL_MANGIANT_GREAT_HORNED_OWL -BIRD_EAGLE EAGLE_MAN GIANT_EAGLE BIRD_HORNBILL HORNBILL_MANGIANT_HORNBILLBIRD_LOVEBIRD_MASKEDMASKED_LOVEBIRD_MANGIANT_MASKED_LOVEBIRD BIRD_BUSHTIT BUSHTIT_MAN GIANT_BUSHTIT DAMSELFLY DAMSELFLY_MANGIANT_DAMSELFLYMOTHMOTH_MAN -GIANT_MOTH GRASSHOPPERGRASSHOPPER_MANGIANT_GRASSHOPPER BARK_SCORPIONBARK_SCORPION_MANGIANT_BARK_SCORPIONMANTIS -MANTIS_MAN GIANT_MANTISTICKTICK_MAN -GIANT_TICKLOUSE LOUSE_MAN GIANT_LOUSETHRIPS -THRIPS_MAN GIANT_THRIPSSLUGSLUG_MAN -GIANT_SLUGMOSQUITO MOSQUITO_MANGIANT_MOSQUITOSPIDER_JUMPINGJUMPING_SPIDER_MANGIANT_JUMPING_SPIDERTERMITE -MOON_SNAILMOON_SNAIL_MANGIANT_MOON_SNAILSPIDER_BROWN_RECLUSEBROWN_RECLUSE_SPIDER_MANGIANT_BROWN_RECLUSE_SPIDERSNAIL SNAIL_MAN GIANT_SNAIL GECKO_LEOPARDLEOPARD_GECKO_MANGIANT_LEOPARD_GECKODESERT TORTOISEDESERT_TORTOISE_MANGIANT_DESERT_TORTOISE GILA_MONSTERGILA_MONSTER_MANGIANT_GILA_MONSTERDOGCATMULEDONKEYHORSECOWSHEEPPIGGOAT BIRD_CHICKENCAVY BIRD_DUCK WATER_BUFFALOREINDEER -BIRD_GOOSEYAKLLAMAALPACABIRD_GUINEAFOWLBIRD_PEAFOWL_BLUE BIRD_TURKEYRABBITCHIMERACENTAURGRIFFONFLYFLY_MAN GIANT_FLY ROACH_LARGE ROACH_MAN GIANT_ROACHBEETLE -BEETLE_MAN GIANT_BEETLEANTBUTTERFLY_MONARCHBUTTERFLY_MONARCH_MANGIANT_BUTTERFLY_MONARCHFIREFLY FIREFLY_MAN GIANT_FIREFLY DRAGONFLY DRAGONFLY_MANGIANT_DRAGONFLY HONEY_BEE BUMBLEBEE GOAT_MOUNTAINGOAT_MOUNTAIN_MANGIANT_GOAT_MOUNTAIN MARMOT_HOARYMARMOT_HOARY_MANGIANT_MARMOT_HOARYGNOME_MOUNTAIN -GNOME_DARKWALRUS -WALRUS_MAN GIANT_WALRUSFISH_LAMPREY_SEASHARK_GREAT_WHITE SHARK_FRILLSHARK_SPINY_DOGFISHSHARK_WOBBEGONG_SPOTTED SHARK_WHALE SHARK_BASKING SHARK_NURSESHARK_MAKO_SHORTFINSHARK_MAKO_LONGFIN SHARK_TIGER -SHARK_BULLSHARK_REEF_BLACKTIPSHARK_REEF_WHITETIP -SHARK_BLUESHARK_HAMMERHEAD SHARK_ANGELFISH_SKATE_COMMONFISH_RAY_MANTA FISH_STINGRAYFISH_COELACANTH FISH_STURGEONFISH_CONGER_EEL FISH_MILKFISHFISH_COD FISH_OPAHFISH_GROUPER_GIANT FISH_BLUEFISHFISH_SUNFISH_OCEANFISH_SWORDFISH FISH_MARLIN FISH_HALIBUTFISH_BARRACUDA_GREATFISH_TUNA_BLUEFINNARWHAL NARWHAL MANNARWHAL, GIANTHIPPO HIPPO_MAN GIANT_HIPPOFISH_GAR_LONGNOSE FISH_CARPFISH_TIGERFISH FISH_PIKEPLATYPUS PLATYPUS MANPLATYPUS, GIANT BEAR_GRIZZLYBEAR_GRIZZLY_MANGIANT_BEAR_GRIZZLY -BEAR_BLACKBEAR_BLACK_MANGIANT_BEAR_BLACKDEERDEER_MAN -GIANT_DEERFOXFOX_MAN GIANT_FOXRACCOON RACCOON_MAN GIANT_RACCOONMACAQUE_RHESUSMACAQUE_RHESUS_MANGIANT_MACAQUE_RHESUSCOUGAR -COUGAR_MAN GIANT_COUGARWOLFWOLF_MAN -GIANT_WOLF GROUNDHOG GROUNDHOG_MANGIANT_GROUNDHOG ALLIGATOR ALLIGATOR_MANGIANT_ALLIGATOR BIRD_BUZZARD BUZZARD_MAN GIANT_BUZZARDPANDAPANDA, GIGANTIC PANDA MANCAPYBARACAPYBARA, GIANT CAPYBARA MANBADGER -BADGER MAN BADGER, GIANTMOOSE MOOSE MAN MOOSE, GIANT RED PANDA RED PANDA MANRED PANDA, GIANTELEPHANT ELEPHANT_MANGIANT_ELEPHANTWARTHOG WARTHOG_MAN GIANT_WARTHOGLIONLION_MAN -GIANT_LIONLEOPARD LEOPARD_MAN GIANT_LEOPARDJAGUAR -JAGUAR_MAN GIANT_JAGUARTIGER TIGER_MAN GIANT_TIGERCHEETAH CHEETAH_MAN GIANT_CHEETAHGAZELLE GAZELLE_MAN GIANT_GAZELLEMANDRILL MANDRILL_MANGIANT_MANDRILL -CHIMPANZEEBONOBOGORILLA ORANGUTANGIBBON_SIAMANGGIBBON_WHITE_HANDEDGIBBON_BLACK_HANDED GIBBON_GRAYGIBBON_SILVERYGIBBON_PILEATED GIBBON_BILOUGIBBON_WHITE_BROWEDGIBBON_BLACK_CRESTED CAMEL_1_HUMPCAMEL_1_HUMP_MANGIANT_CAMEL_1_HUMP CAMEL_2_HUMPCAMEL_2_HUMP_MANGIANT_CAMEL_2_HUMPCROCODILE_SALTWATERCROCODILE_SALTWATER_MANGIANT_CROCODILE_SALTWATER BIRD_VULTURE VULTURE_MAN GIANT_VULTURE -RHINOCEROSRHINOCEROS_MANGIANT_RHINOCEROSGIRAFFE GIRAFFE_MAN GIANT_GIRAFFE HONEY BADGERHONEY BADGER MANHONEY BADGER, GIANTGIANT TORTOISEGIANT TORTOISE MANGIGANTIC TORTOISE ARMADILLO ARMADILLO MANARMADILLO, GIANTMUSKOX -MUSKOX_MAN GIANT_MUSKOXELKELK_MAN GIANT_ELK -BEAR_POLARBEAR_POLAR_MANGIANT_BEAR_POLAR WOLVERINE WOLVERINE_MANGIANT_WOLVERINE -CHINCHILLACHINCHILLA_MANGIANT_CHINCHILLA FLOATING_GUTSDRUNIAN CREEPING_EYEVORACIOUS_CAVE_CRAWLERBLIND_CAVE_OGRE -CAP_HOPPER -MAGMA_CRABCRUNDLE HUNGRY_HEAD -FLESH_BALLELK_BIRD HELMET_SNAKEGREEN_DEVOURERRUTHERERCREEPY_CRAWLERDRALTHAGIANT_EARTHWORM BLOOD_MANBUGBATMANERA -MOLEMARIANJABBERER POND_GRABBERBLIND_CAVE_BEAR CAVE_DRAGONREACHERELEMENTMAN_GABBROGORLAK CAVE_FLOATERPLUMP_HELMET_MAN CAVE_BLOBELEMENTMAN_AMETHYSTOCTOPUS OCTOPUS_MAN GIANT_OCTOPUSCRABCRAB_MAN -GIANT_CRAB LEOPARD_SEALLEOPARD_SEAL_MANGIANT_LEOPARD_SEAL -CUTTLEFISHCUTTLEFISH_MANGIANT_CUTTLEFISHORCAORCA_MAN -GIANT_ORCASPONGE -SPONGE_MAN GIANT_SPONGEHORSESHOE_CRABHORSESHOE_CRAB_MANGIANT_HORSESHOE_CRAB SPERM_WHALESPERM_WHALE_MANGIANT_SPERM_WHALE ELEPHANT_SEALELEPHANT_SEAL_MANGIANT_ELEPHANT_SEAL HARP_SEAL HARP_SEAL_MANGIANT_HARP_SEALNAUTILUS NAUTILUS_MANGIANT_NAUTILUS FOXSQUIRREL MOGHOPPER RAT_DEMONWAMBLER_FLUFFYLIZARD_RHINO_TWO_LEGGED WORM_KNUCKLESPIDER_PHANTOM FLY_ACORN -GNAT_BLOODLIZARD -LIZARD_MAN GIANT_LIZARDSKINK SKINK_MAN GIANT_SKINK CHAMELEON CHAMELEON_MANGIANT_CHAMELEONANOLE ANOLE_MAN GIANT_ANOLEIGUANA -IGUANA_MAN GIANT_IGUANA RIVER OTTER SEA OTTER OTTER_MAN GIANT_OTTERSNAPPING TURTLEALLIGATOR SNAPPING TURTLESNAPPING_TURTLE_MANGIANT_SNAPPING_TURTLEBEAVER -BEAVER_MAN GIANT_BEAVERLEECH LEECH_MAN GIANT_LEECHAXOLOTL AXOLOTL_MAN GIANT_AXOLOTLMINKMINK_MAN -GIANT_MINK POND_TURTLEPOND_TURTLE_MANGIANT_POND_TURTLERATRAT_MAN SQUIRREL_GRAYSQUIRREL_GRAY_MANGIANT_SQUIRREL_GRAY SQUIRREL_REDSQUIRREL_RED_MANGIANT_SQUIRREL_REDCHIPMUNK CHIPMUNK_MANGIANT_CHIPMUNKHAMSTER HAMSTER_MAN GIANT_HAMSTERHEDGEHOG HEDGEHOG_MANGIANT_HEDGEHOGSQUIRREL_FLYINGFLYING_SQUIRREL_MANGIANT_FLYING_SQUIRRELMUSSELOYSTER FISH_SALMONFISH_CLOWNFISH FISH_HAGFISHFISH_LAMPREY_BROOK FISH_RAY_BATFISH_RAY_THORNBACKFISH_RATFISH_SPOTTED FISH_HERRING FISH_SHAD FISH_ANCHOVYFISH_TROUT_STEELHEAD FISH_HAKE FISH_SEAHORSE FISH_GLASSEYEFISH_PUFFER_WHITE_SPOTTED FISH_SOLE FISH_FLOUNDER FISH_MACKERELJELLYFISH_SEA_NETTLESQUID SQUID MANGIGANTIC SQUID FISH_LUNGFISHFISH_LOACH_CLOWNFISH_BULLHEAD_BROWNFISH_BULLHEAD_YELLOWFISH_BULLHEAD_BLACKFISH_KNIFEFISH_BANDED FISH_CHARFISH_TROUT_RAINBOWFISH_MOLLY_SAILFIN -FISH_GUPPY -FISH_PERCHDWARFHUMANELFGOBLINKOBOLDGREMLINTROLLOGREUNICORNDRAGONSATYRCOLOSSUS_BRONZEGIANTCYCLOPSETTINMINOTAURYETI SASQUATCH BLIZZARD_MANWOLF_ICEFAIRYPIXIEBEAK_DOG GRIMELING BLENDEC_FOUL STRANGLER NIGHTWINGHARPYHYDRA MERPERSON SEA_SERPENT SEA_MONSTERBIRD_ROCCROCODILE_CAVETOAD_GIANT_CAVE OLM_GIANT BAT_GIANT RAT_GIANT RAT_LARGEMOLE_DOG_NAKED -TROGLODYTE -MOLE_GIANTIMP_FIRESPIDER_CAVE_GIANT SPIDER_CAVE FISH_CAVE CAVE_FISH_MAN LOBSTER_CAVE -SNAKE_FIREOLMOLM_MANBATBAT_MANMAGGOT_PURRINGELEMENTMAN_FIREELEMENTMAN_MAGMAELEMENTMAN_IRONELEMENTMAN_MUDBIRD_SWALLOW_CAVECAVE_SWALLOW_MANBIRD_SWALLOW_CAVE_GIANT AMPHIBIAN_MAN REPTILE_MAN SERPENT_MANANT_MAN -RODENT MAN WILD_BOAR WILD_BOAR_MANGIANT_WILD_BOARCOYOTE -COYOTE_MAN GIANT_COYOTEKANGAROO KANGAROO_MANGIANT_KANGAROOKOALA KOALA_MAN GIANT_KOALAADDER ADDER_MAN GIANT_ADDERECHIDNA ECHIDNA_MAN GIANT_ECHIDNA PORCUPINE PORCUPINE_MANGIANT_PORCUPINE KINGSNAKE KINGSNAKE_MANGIANT_KINGSNAKE GRAY_LANGURGRAY_LANGUR_MANGIANT_GRAY_LANGURBOBCAT -BOBCAT_MAN GIANT_BOBCATSKUNK SKUNK_MAN GIANT_SKUNKGREEN_TREE_FROGGREEN_TREE_FROG_MANGIANT_GREEN_TREE_FROGHAREHARE_MAN -GIANT_HARE RATTLESNAKERATTLESNAKE_MANGIANT_RATTLESNAKEWEASEL -WEASEL_MAN GIANT_WEASELCOPPERHEAD_SNAKECOPPERHEAD_SNAKE_MANGIANT_COPPERHEAD_SNAKEIBEXIBEX_MAN -GIANT_IBEXWOMBAT -WOMBAT_MAN GIANT_WOMBATDINGO DINGO_MAN GIANT_DINGOCOATI COATI_MAN GIANT_COATIOPOSSUM OPOSSUM_MAN GIANT_OPOSSUMMONGOOSE MONGOOSE_MANGIANT_MONGOOSEHYENA HYENA_MAN GIANT_HYENAANACONDA ANACONDA_MANGIANT_ANACONDAMONITOR_LIZARDMONITOR_LIZARD_MANGIANT_MONITOR_LIZARD -KING_COBRAKING_COBRA_MANGIANT_KING_COBRAOCELOT -OCELOT_MAN GIANT_OCELOTJACKAL -JACKAL_MAN GIANT_JACKALCAPUCHIN CAPUCHIN_MANGIANT_CAPUCHINSLOTH SLOTH_MAN GIANT_SLOTH SPIDER_MONKEYSPIDER_MONKEY_MANGIANT_SPIDER_MONKEYPANGOLIN PANGOLIN_MANGIANT_PANGOLIN BLACK_MAMBABLACK_MAMBA_MANGIANT_BLACK_MAMBA -BEAR_SLOTHSLOTH_BEAR_MANGIANT_SLOTH_BEARAYE-AYE AYE-AYE_MAN GIANT_AYE-AYE -BUSHMASTERBUSHMASTER_MANGIANT_BUSHMASTERPYTHON -PYTHON_MAN GIANT_PYTHONTAPIR TAPIR_MAN GIANT_TAPIRIMPALA -IMPALA_MAN GIANT_IMPALAAARDVARK AARDVARK_MANGIANT_AARDVARK LION_TAMARINLION_TAMARIN_MANGIANT_LION_TAMARINSTOAT STOAT_MAN GIANT_STOATLYNXLYNX_MAN -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/corpsesprefix.dfstock b/data/stockpiles/corpsesprefix.dfstock deleted file mode 100644 index e71f210246..0000000000 Binary files a/data/stockpiles/corpsesprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/craftrefuse.dfstock b/data/stockpiles/craftrefuse.dfstock deleted file mode 100644 index f834658d43..0000000000 --- a/data/stockpiles/craftrefuse.dfstock +++ /dev/null @@ -1,364 +0,0 @@ -*ïÍ -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCH*TOAD*TOAD_MAN* -GIANT_TOAD*WORM*WORM_MAN* BIRD_BLUEJAY* BLUEJAY_MAN* GIANT_BLUEJAY* BIRD_CARDINAL* CARDINAL_MAN*GIANT_CARDINAL* BIRD_GRACKLE* GRACKLE_MAN* GIANT_GRACKLE* BIRD_ORIOLE* -ORIOLE_MAN* GIANT_ORIOLE*BIRD_RW_BLACKBIRD*RW_BLACKBIRD_MAN*GIANT_RW_BLACKBIRD* BIRD_PENGUIN*BIRD_PENGUIN_LITTLE*BIRD_PENGUIN_EMPEROR* PENGUIN MAN*BIRD_PENGUIN_GIANT*BIRD_FALCON_PEREGRINE*PEREGRINE FALCON MAN*GIANT PEREGRINE FALCON* BIRD_KIWI*KIWI MAN*BIRD_KIWI_GIANT* BIRD_OSTRICH* OSTRICH MAN*BIRD_OSTRICH_GIANT* BIRD_CROW*CROW_MAN* -GIANT_CROW* -BIRD_RAVEN* RAVEN_MAN* GIANT_RAVEN*BIRD_CASSOWARY* CASSOWARY_MAN*GIANT_CASSOWARY*BIRD_KEA*KEA_MAN* GIANT_KEA*BIRD_OWL_SNOWY* SNOWY_OWL_MAN*GIANT_SNOWY_OWL*SPARROW* SPARROW_MAN* GIANT_SPARROW*BIRD_STORK_WHITE*WHITE_STORK_MAN*GIANT_WHITE_STORK* BIRD_LOON*LOON_MAN* -GIANT_LOON* BIRD_OWL_BARN* BARN_OWL_MAN*GIANT_BARN_OWL* BIRD_PARAKEET* PARAKEET_MAN*GIANT_PARAKEET* BIRD_KAKAPO* -KAKAPO_MAN* GIANT_KAKAPO*BIRD_PARROT_GREY*GREY_PARROT_MAN*GIANT_GREY_PARROT* BIRD_PUFFIN* -PUFFIN_MAN* GIANT_PUFFIN* BIRD_SWAN*SWAN_MAN* -GIANT_SWAN* BIRD_LORIKEET* LORIKEET_MAN*GIANT_LORIKEET* BIRD_WREN*WREN_MAN* -GIANT_WREN* BIRD_OSPREY* -OSPREY_MAN* GIANT_OSPREY*BIRD_EMU*EMU_MAN* GIANT_EMU*BIRD_COCKATIEL* COCKATIEL_MAN*GIANT_COCKATIEL*BIRD_LOVEBIRD_PEACH-FACED*PEACH-FACED_LOVEBIRD_MAN*GIANT_PEACH-FACED_LOVEBIRD* BIRD_MAGPIE* -MAGPIE_MAN* GIANT_MAGPIE* BIRD_KESTREL* KESTREL_MAN* GIANT_KESTREL*BIRD_ALBATROSS* ALBATROSS_MAN*GIANT_ALBATROSS*BIRD_OWL_GREAT_HORNED*GREAT_HORNED_OWL_MAN*GIANT_GREAT_HORNED_OWL* -BIRD_EAGLE* EAGLE_MAN* GIANT_EAGLE* BIRD_HORNBILL* HORNBILL_MAN*GIANT_HORNBILL*BIRD_LOVEBIRD_MASKED*MASKED_LOVEBIRD_MAN*GIANT_MASKED_LOVEBIRD* BIRD_BUSHTIT* BUSHTIT_MAN* GIANT_BUSHTIT* DAMSELFLY* DAMSELFLY_MAN*GIANT_DAMSELFLY*MOTH*MOTH_MAN* -GIANT_MOTH* GRASSHOPPER*GRASSHOPPER_MAN*GIANT_GRASSHOPPER* BARK_SCORPION*BARK_SCORPION_MAN*GIANT_BARK_SCORPION*MANTIS* -MANTIS_MAN* GIANT_MANTIS*TICK*TICK_MAN* -GIANT_TICK*LOUSE* LOUSE_MAN* GIANT_LOUSE*THRIPS* -THRIPS_MAN* GIANT_THRIPS*SLUG*SLUG_MAN* -GIANT_SLUG*MOSQUITO* MOSQUITO_MAN*GIANT_MOSQUITO*SPIDER_JUMPING*JUMPING_SPIDER_MAN*GIANT_JUMPING_SPIDER*TERMITE* -MOON_SNAIL*MOON_SNAIL_MAN*GIANT_MOON_SNAIL*SPIDER_BROWN_RECLUSE*BROWN_RECLUSE_SPIDER_MAN*GIANT_BROWN_RECLUSE_SPIDER*SNAIL* SNAIL_MAN* GIANT_SNAIL* GECKO_LEOPARD*LEOPARD_GECKO_MAN*GIANT_LEOPARD_GECKO*DESERT TORTOISE*DESERT_TORTOISE_MAN*GIANT_DESERT_TORTOISE* GILA_MONSTER*GILA_MONSTER_MAN*GIANT_GILA_MONSTER*DOG*CAT*MULE*DONKEY*HORSE*COW*SHEEP*PIG*GOAT* BIRD_CHICKEN*CAVY* BIRD_DUCK* WATER_BUFFALO*REINDEER* -BIRD_GOOSE*YAK*LLAMA*ALPACA*BIRD_GUINEAFOWL*BIRD_PEAFOWL_BLUE* BIRD_TURKEY*RABBIT*CHIMERA*CENTAUR*GRIFFON*FLY*FLY_MAN* GIANT_FLY* ROACH_LARGE* ROACH_MAN* GIANT_ROACH*BEETLE* -BEETLE_MAN* GIANT_BEETLE*ANT*BUTTERFLY_MONARCH*BUTTERFLY_MONARCH_MAN*GIANT_BUTTERFLY_MONARCH*FIREFLY* FIREFLY_MAN* GIANT_FIREFLY* DRAGONFLY* DRAGONFLY_MAN*GIANT_DRAGONFLY* HONEY_BEE* BUMBLEBEE* GOAT_MOUNTAIN*GOAT_MOUNTAIN_MAN*GIANT_GOAT_MOUNTAIN* MARMOT_HOARY*MARMOT_HOARY_MAN*GIANT_MARMOT_HOARY*GNOME_MOUNTAIN* -GNOME_DARK*WALRUS* -WALRUS_MAN* GIANT_WALRUS*FISH_LAMPREY_SEA*SHARK_GREAT_WHITE* SHARK_FRILL*SHARK_SPINY_DOGFISH*SHARK_WOBBEGONG_SPOTTED* SHARK_WHALE* SHARK_BASKING* SHARK_NURSE*SHARK_MAKO_SHORTFIN*SHARK_MAKO_LONGFIN* SHARK_TIGER* -SHARK_BULL*SHARK_REEF_BLACKTIP*SHARK_REEF_WHITETIP* -SHARK_BLUE*SHARK_HAMMERHEAD* SHARK_ANGEL*FISH_SKATE_COMMON*FISH_RAY_MANTA* FISH_STINGRAY*FISH_COELACANTH* FISH_STURGEON*FISH_CONGER_EEL* FISH_MILKFISH*FISH_COD* FISH_OPAH*FISH_GROUPER_GIANT* FISH_BLUEFISH*FISH_SUNFISH_OCEAN*FISH_SWORDFISH* FISH_MARLIN* FISH_HALIBUT*FISH_BARRACUDA_GREAT*FISH_TUNA_BLUEFIN*NARWHAL* NARWHAL MAN*NARWHAL, GIANT*HIPPO* HIPPO_MAN* GIANT_HIPPO*FISH_GAR_LONGNOSE* FISH_CARP*FISH_TIGERFISH* FISH_PIKE*PLATYPUS* PLATYPUS MAN*PLATYPUS, GIANT* BEAR_GRIZZLY*BEAR_GRIZZLY_MAN*GIANT_BEAR_GRIZZLY* -BEAR_BLACK*BEAR_BLACK_MAN*GIANT_BEAR_BLACK*DEER*DEER_MAN* -GIANT_DEER*FOX*FOX_MAN* GIANT_FOX*RACCOON* RACCOON_MAN* GIANT_RACCOON*MACAQUE_RHESUS*MACAQUE_RHESUS_MAN*GIANT_MACAQUE_RHESUS*COUGAR* -COUGAR_MAN* GIANT_COUGAR*WOLF*WOLF_MAN* -GIANT_WOLF* GROUNDHOG* GROUNDHOG_MAN*GIANT_GROUNDHOG* ALLIGATOR* ALLIGATOR_MAN*GIANT_ALLIGATOR* BIRD_BUZZARD* BUZZARD_MAN* GIANT_BUZZARD*PANDA*PANDA, GIGANTIC* PANDA MAN*CAPYBARA*CAPYBARA, GIANT* CAPYBARA MAN*BADGER* -BADGER MAN* BADGER, GIANT*MOOSE* MOOSE MAN* MOOSE, GIANT* RED PANDA* RED PANDA MAN*RED PANDA, GIANT*ELEPHANT* ELEPHANT_MAN*GIANT_ELEPHANT*WARTHOG* WARTHOG_MAN* GIANT_WARTHOG*LION*LION_MAN* -GIANT_LION*LEOPARD* LEOPARD_MAN* GIANT_LEOPARD*JAGUAR* -JAGUAR_MAN* GIANT_JAGUAR*TIGER* TIGER_MAN* GIANT_TIGER*CHEETAH* CHEETAH_MAN* GIANT_CHEETAH*GAZELLE* GAZELLE_MAN* GIANT_GAZELLE*MANDRILL* MANDRILL_MAN*GIANT_MANDRILL* -CHIMPANZEE*BONOBO*GORILLA* ORANGUTAN*GIBBON_SIAMANG*GIBBON_WHITE_HANDED*GIBBON_BLACK_HANDED* GIBBON_GRAY*GIBBON_SILVERY*GIBBON_PILEATED* GIBBON_BILOU*GIBBON_WHITE_BROWED*GIBBON_BLACK_CRESTED* CAMEL_1_HUMP*CAMEL_1_HUMP_MAN*GIANT_CAMEL_1_HUMP* CAMEL_2_HUMP*CAMEL_2_HUMP_MAN*GIANT_CAMEL_2_HUMP*CROCODILE_SALTWATER*CROCODILE_SALTWATER_MAN*GIANT_CROCODILE_SALTWATER* BIRD_VULTURE* VULTURE_MAN* GIANT_VULTURE* -RHINOCEROS*RHINOCEROS_MAN*GIANT_RHINOCEROS*GIRAFFE* GIRAFFE_MAN* GIANT_GIRAFFE* HONEY BADGER*HONEY BADGER MAN*HONEY BADGER, GIANT*GIANT TORTOISE*GIANT TORTOISE MAN*GIGANTIC TORTOISE* ARMADILLO* ARMADILLO MAN*ARMADILLO, GIANT*MUSKOX* -MUSKOX_MAN* GIANT_MUSKOX*ELK*ELK_MAN* GIANT_ELK* -BEAR_POLAR*BEAR_POLAR_MAN*GIANT_BEAR_POLAR* WOLVERINE* WOLVERINE_MAN*GIANT_WOLVERINE* -CHINCHILLA*CHINCHILLA_MAN*GIANT_CHINCHILLA* FLOATING_GUTS*DRUNIAN* CREEPING_EYE*VORACIOUS_CAVE_CRAWLER*BLIND_CAVE_OGRE* -CAP_HOPPER* -MAGMA_CRAB*CRUNDLE* HUNGRY_HEAD* -FLESH_BALL*ELK_BIRD* HELMET_SNAKE*GREEN_DEVOURER*RUTHERER*CREEPY_CRAWLER*DRALTHA*GIANT_EARTHWORM* BLOOD_MAN*BUGBAT*MANERA* -MOLEMARIAN*JABBERER* POND_GRABBER*BLIND_CAVE_BEAR* CAVE_DRAGON*REACHER*ELEMENTMAN_GABBRO*GORLAK* CAVE_FLOATER*PLUMP_HELMET_MAN* CAVE_BLOB*ELEMENTMAN_AMETHYST*OCTOPUS* OCTOPUS_MAN* GIANT_OCTOPUS*CRAB*CRAB_MAN* -GIANT_CRAB* LEOPARD_SEAL*LEOPARD_SEAL_MAN*GIANT_LEOPARD_SEAL* -CUTTLEFISH*CUTTLEFISH_MAN*GIANT_CUTTLEFISH*ORCA*ORCA_MAN* -GIANT_ORCA*SPONGE* -SPONGE_MAN* GIANT_SPONGE*HORSESHOE_CRAB*HORSESHOE_CRAB_MAN*GIANT_HORSESHOE_CRAB* SPERM_WHALE*SPERM_WHALE_MAN*GIANT_SPERM_WHALE* ELEPHANT_SEAL*ELEPHANT_SEAL_MAN*GIANT_ELEPHANT_SEAL* HARP_SEAL* HARP_SEAL_MAN*GIANT_HARP_SEAL*NAUTILUS* NAUTILUS_MAN*GIANT_NAUTILUS* FOXSQUIRREL* MOGHOPPER* RAT_DEMON*WAMBLER_FLUFFY*LIZARD_RHINO_TWO_LEGGED* WORM_KNUCKLE*SPIDER_PHANTOM* FLY_ACORN* -GNAT_BLOOD*LIZARD* -LIZARD_MAN* GIANT_LIZARD*SKINK* SKINK_MAN* GIANT_SKINK* CHAMELEON* CHAMELEON_MAN*GIANT_CHAMELEON*ANOLE* ANOLE_MAN* GIANT_ANOLE*IGUANA* -IGUANA_MAN* GIANT_IGUANA* RIVER OTTER* SEA OTTER* OTTER_MAN* GIANT_OTTER*SNAPPING TURTLE*ALLIGATOR SNAPPING TURTLE*SNAPPING_TURTLE_MAN*GIANT_SNAPPING_TURTLE*BEAVER* -BEAVER_MAN* GIANT_BEAVER*LEECH* LEECH_MAN* GIANT_LEECH*AXOLOTL* AXOLOTL_MAN* GIANT_AXOLOTL*MINK*MINK_MAN* -GIANT_MINK* POND_TURTLE*POND_TURTLE_MAN*GIANT_POND_TURTLE*RAT*RAT_MAN* SQUIRREL_GRAY*SQUIRREL_GRAY_MAN*GIANT_SQUIRREL_GRAY* SQUIRREL_RED*SQUIRREL_RED_MAN*GIANT_SQUIRREL_RED*CHIPMUNK* CHIPMUNK_MAN*GIANT_CHIPMUNK*HAMSTER* HAMSTER_MAN* GIANT_HAMSTER*HEDGEHOG* HEDGEHOG_MAN*GIANT_HEDGEHOG*SQUIRREL_FLYING*FLYING_SQUIRREL_MAN*GIANT_FLYING_SQUIRREL*MUSSEL*OYSTER* FISH_SALMON*FISH_CLOWNFISH* FISH_HAGFISH*FISH_LAMPREY_BROOK* FISH_RAY_BAT*FISH_RAY_THORNBACK*FISH_RATFISH_SPOTTED* FISH_HERRING* FISH_SHAD* FISH_ANCHOVY*FISH_TROUT_STEELHEAD* FISH_HAKE* FISH_SEAHORSE* FISH_GLASSEYE*FISH_PUFFER_WHITE_SPOTTED* FISH_SOLE* FISH_FLOUNDER* FISH_MACKEREL*JELLYFISH_SEA_NETTLE*SQUID* SQUID MAN*GIGANTIC SQUID* FISH_LUNGFISH*FISH_LOACH_CLOWN*FISH_BULLHEAD_BROWN*FISH_BULLHEAD_YELLOW*FISH_BULLHEAD_BLACK*FISH_KNIFEFISH_BANDED* FISH_CHAR*FISH_TROUT_RAINBOW*FISH_MOLLY_SAILFIN* -FISH_GUPPY* -FISH_PERCH*DWARF*HUMAN*ELF*GOBLIN*KOBOLD*GREMLIN*TROLL*OGRE*UNICORN*DRAGON*SATYR*COLOSSUS_BRONZE*GIANT*CYCLOPS*ETTIN*MINOTAUR*YETI* SASQUATCH* BLIZZARD_MAN*WOLF_ICE*FAIRY*PIXIE*BEAK_DOG* GRIMELING* BLENDEC_FOUL* STRANGLER* NIGHTWING*HARPY*HYDRA* MERPERSON* SEA_SERPENT* SEA_MONSTER*BIRD_ROC*CROCODILE_CAVE*TOAD_GIANT_CAVE* OLM_GIANT* BAT_GIANT* RAT_GIANT* RAT_LARGE*MOLE_DOG_NAKED* -TROGLODYTE* -MOLE_GIANT*IMP_FIRE*SPIDER_CAVE_GIANT* SPIDER_CAVE* FISH_CAVE* CAVE_FISH_MAN* LOBSTER_CAVE* -SNAKE_FIRE*OLM*OLM_MAN*BAT*BAT_MAN*MAGGOT_PURRING*ELEMENTMAN_FIRE*ELEMENTMAN_MAGMA*ELEMENTMAN_IRON*ELEMENTMAN_MUD*BIRD_SWALLOW_CAVE*CAVE_SWALLOW_MAN*BIRD_SWALLOW_CAVE_GIANT* AMPHIBIAN_MAN* REPTILE_MAN* SERPENT_MAN*ANT_MAN* -RODENT MAN* WILD_BOAR* WILD_BOAR_MAN*GIANT_WILD_BOAR*COYOTE* -COYOTE_MAN* GIANT_COYOTE*KANGAROO* KANGAROO_MAN*GIANT_KANGAROO*KOALA* KOALA_MAN* GIANT_KOALA*ADDER* ADDER_MAN* GIANT_ADDER*ECHIDNA* ECHIDNA_MAN* GIANT_ECHIDNA* PORCUPINE* PORCUPINE_MAN*GIANT_PORCUPINE* KINGSNAKE* KINGSNAKE_MAN*GIANT_KINGSNAKE* GRAY_LANGUR*GRAY_LANGUR_MAN*GIANT_GRAY_LANGUR*BOBCAT* -BOBCAT_MAN* GIANT_BOBCAT*SKUNK* SKUNK_MAN* GIANT_SKUNK*GREEN_TREE_FROG*GREEN_TREE_FROG_MAN*GIANT_GREEN_TREE_FROG*HARE*HARE_MAN* -GIANT_HARE* RATTLESNAKE*RATTLESNAKE_MAN*GIANT_RATTLESNAKE*WEASEL* -WEASEL_MAN* GIANT_WEASEL*COPPERHEAD_SNAKE*COPPERHEAD_SNAKE_MAN*GIANT_COPPERHEAD_SNAKE*IBEX*IBEX_MAN* -GIANT_IBEX*WOMBAT* -WOMBAT_MAN* GIANT_WOMBAT*DINGO* DINGO_MAN* GIANT_DINGO*COATI* COATI_MAN* GIANT_COATI*OPOSSUM* OPOSSUM_MAN* GIANT_OPOSSUM*MONGOOSE* MONGOOSE_MAN*GIANT_MONGOOSE*HYENA* HYENA_MAN* GIANT_HYENA*ANACONDA* ANACONDA_MAN*GIANT_ANACONDA*MONITOR_LIZARD*MONITOR_LIZARD_MAN*GIANT_MONITOR_LIZARD* -KING_COBRA*KING_COBRA_MAN*GIANT_KING_COBRA*OCELOT* -OCELOT_MAN* GIANT_OCELOT*JACKAL* -JACKAL_MAN* GIANT_JACKAL*CAPUCHIN* CAPUCHIN_MAN*GIANT_CAPUCHIN*SLOTH* SLOTH_MAN* GIANT_SLOTH* SPIDER_MONKEY*SPIDER_MONKEY_MAN*GIANT_SPIDER_MONKEY*PANGOLIN* PANGOLIN_MAN*GIANT_PANGOLIN* BLACK_MAMBA*BLACK_MAMBA_MAN*GIANT_BLACK_MAMBA* -BEAR_SLOTH*SLOTH_BEAR_MAN*GIANT_SLOTH_BEAR*AYE-AYE* AYE-AYE_MAN* GIANT_AYE-AYE* -BUSHMASTER*BUSHMASTER_MAN*GIANT_BUSHMASTER*PYTHON* -PYTHON_MAN* GIANT_PYTHON*TAPIR* TAPIR_MAN* GIANT_TAPIR*IMPALA* -IMPALA_MAN* GIANT_IMPALA*AARDVARK* AARDVARK_MAN*GIANT_AARDVARK* LION_TAMARIN*LION_TAMARIN_MAN*GIANT_LION_TAMARIN*STOAT* STOAT_MAN* GIANT_STOAT*LYNX*LYNX_MAN* -GIANT_LYNX2TOAD2TOAD_MAN2 -GIANT_TOAD2WORM2WORM_MAN2 BIRD_BLUEJAY2 BLUEJAY_MAN2 GIANT_BLUEJAY2 BIRD_CARDINAL2 CARDINAL_MAN2GIANT_CARDINAL2 BIRD_GRACKLE2 GRACKLE_MAN2 GIANT_GRACKLE2 BIRD_ORIOLE2 -ORIOLE_MAN2 GIANT_ORIOLE2BIRD_RW_BLACKBIRD2RW_BLACKBIRD_MAN2GIANT_RW_BLACKBIRD2 BIRD_PENGUIN2BIRD_PENGUIN_LITTLE2BIRD_PENGUIN_EMPEROR2 PENGUIN MAN2BIRD_PENGUIN_GIANT2BIRD_FALCON_PEREGRINE2PEREGRINE FALCON MAN2GIANT PEREGRINE FALCON2 BIRD_KIWI2KIWI MAN2BIRD_KIWI_GIANT2 BIRD_OSTRICH2 OSTRICH MAN2BIRD_OSTRICH_GIANT2 BIRD_CROW2CROW_MAN2 -GIANT_CROW2 -BIRD_RAVEN2 RAVEN_MAN2 GIANT_RAVEN2BIRD_CASSOWARY2 CASSOWARY_MAN2GIANT_CASSOWARY2BIRD_KEA2KEA_MAN2 GIANT_KEA2BIRD_OWL_SNOWY2 SNOWY_OWL_MAN2GIANT_SNOWY_OWL2SPARROW2 SPARROW_MAN2 GIANT_SPARROW2BIRD_STORK_WHITE2WHITE_STORK_MAN2GIANT_WHITE_STORK2 BIRD_LOON2LOON_MAN2 -GIANT_LOON2 BIRD_OWL_BARN2 BARN_OWL_MAN2GIANT_BARN_OWL2 BIRD_PARAKEET2 PARAKEET_MAN2GIANT_PARAKEET2 BIRD_KAKAPO2 -KAKAPO_MAN2 GIANT_KAKAPO2BIRD_PARROT_GREY2GREY_PARROT_MAN2GIANT_GREY_PARROT2 BIRD_PUFFIN2 -PUFFIN_MAN2 GIANT_PUFFIN2 BIRD_SWAN2SWAN_MAN2 -GIANT_SWAN2 BIRD_LORIKEET2 LORIKEET_MAN2GIANT_LORIKEET2 BIRD_WREN2WREN_MAN2 -GIANT_WREN2 BIRD_OSPREY2 -OSPREY_MAN2 GIANT_OSPREY2BIRD_EMU2EMU_MAN2 GIANT_EMU2BIRD_COCKATIEL2 COCKATIEL_MAN2GIANT_COCKATIEL2BIRD_LOVEBIRD_PEACH-FACED2PEACH-FACED_LOVEBIRD_MAN2GIANT_PEACH-FACED_LOVEBIRD2 BIRD_MAGPIE2 -MAGPIE_MAN2 GIANT_MAGPIE2 BIRD_KESTREL2 KESTREL_MAN2 GIANT_KESTREL2BIRD_ALBATROSS2 ALBATROSS_MAN2GIANT_ALBATROSS2BIRD_OWL_GREAT_HORNED2GREAT_HORNED_OWL_MAN2GIANT_GREAT_HORNED_OWL2 -BIRD_EAGLE2 EAGLE_MAN2 GIANT_EAGLE2 BIRD_HORNBILL2 HORNBILL_MAN2GIANT_HORNBILL2BIRD_LOVEBIRD_MASKED2MASKED_LOVEBIRD_MAN2GIANT_MASKED_LOVEBIRD2 BIRD_BUSHTIT2 BUSHTIT_MAN2 GIANT_BUSHTIT2 DAMSELFLY2 DAMSELFLY_MAN2GIANT_DAMSELFLY2MOTH2MOTH_MAN2 -GIANT_MOTH2 GRASSHOPPER2GRASSHOPPER_MAN2GIANT_GRASSHOPPER2 BARK_SCORPION2BARK_SCORPION_MAN2GIANT_BARK_SCORPION2MANTIS2 -MANTIS_MAN2 GIANT_MANTIS2TICK2TICK_MAN2 -GIANT_TICK2LOUSE2 LOUSE_MAN2 GIANT_LOUSE2THRIPS2 -THRIPS_MAN2 GIANT_THRIPS2SLUG2SLUG_MAN2 -GIANT_SLUG2MOSQUITO2 MOSQUITO_MAN2GIANT_MOSQUITO2SPIDER_JUMPING2JUMPING_SPIDER_MAN2GIANT_JUMPING_SPIDER2TERMITE2 -MOON_SNAIL2MOON_SNAIL_MAN2GIANT_MOON_SNAIL2SPIDER_BROWN_RECLUSE2BROWN_RECLUSE_SPIDER_MAN2GIANT_BROWN_RECLUSE_SPIDER2SNAIL2 SNAIL_MAN2 GIANT_SNAIL2 GECKO_LEOPARD2LEOPARD_GECKO_MAN2GIANT_LEOPARD_GECKO2DESERT TORTOISE2DESERT_TORTOISE_MAN2GIANT_DESERT_TORTOISE2 GILA_MONSTER2GILA_MONSTER_MAN2GIANT_GILA_MONSTER2DOG2CAT2MULE2DONKEY2HORSE2COW2SHEEP2PIG2GOAT2 BIRD_CHICKEN2CAVY2 BIRD_DUCK2 WATER_BUFFALO2REINDEER2 -BIRD_GOOSE2YAK2LLAMA2ALPACA2BIRD_GUINEAFOWL2BIRD_PEAFOWL_BLUE2 BIRD_TURKEY2RABBIT2CHIMERA2CENTAUR2GRIFFON2FLY2FLY_MAN2 GIANT_FLY2 ROACH_LARGE2 ROACH_MAN2 GIANT_ROACH2BEETLE2 -BEETLE_MAN2 GIANT_BEETLE2ANT2BUTTERFLY_MONARCH2BUTTERFLY_MONARCH_MAN2GIANT_BUTTERFLY_MONARCH2FIREFLY2 FIREFLY_MAN2 GIANT_FIREFLY2 DRAGONFLY2 DRAGONFLY_MAN2GIANT_DRAGONFLY2 HONEY_BEE2 BUMBLEBEE2 GOAT_MOUNTAIN2GOAT_MOUNTAIN_MAN2GIANT_GOAT_MOUNTAIN2 MARMOT_HOARY2MARMOT_HOARY_MAN2GIANT_MARMOT_HOARY2GNOME_MOUNTAIN2 -GNOME_DARK2WALRUS2 -WALRUS_MAN2 GIANT_WALRUS2FISH_LAMPREY_SEA2SHARK_GREAT_WHITE2 SHARK_FRILL2SHARK_SPINY_DOGFISH2SHARK_WOBBEGONG_SPOTTED2 SHARK_WHALE2 SHARK_BASKING2 SHARK_NURSE2SHARK_MAKO_SHORTFIN2SHARK_MAKO_LONGFIN2 SHARK_TIGER2 -SHARK_BULL2SHARK_REEF_BLACKTIP2SHARK_REEF_WHITETIP2 -SHARK_BLUE2SHARK_HAMMERHEAD2 SHARK_ANGEL2FISH_SKATE_COMMON2FISH_RAY_MANTA2 FISH_STINGRAY2FISH_COELACANTH2 FISH_STURGEON2FISH_CONGER_EEL2 FISH_MILKFISH2FISH_COD2 FISH_OPAH2FISH_GROUPER_GIANT2 FISH_BLUEFISH2FISH_SUNFISH_OCEAN2FISH_SWORDFISH2 FISH_MARLIN2 FISH_HALIBUT2FISH_BARRACUDA_GREAT2FISH_TUNA_BLUEFIN2NARWHAL2 NARWHAL MAN2NARWHAL, GIANT2HIPPO2 HIPPO_MAN2 GIANT_HIPPO2FISH_GAR_LONGNOSE2 FISH_CARP2FISH_TIGERFISH2 FISH_PIKE2PLATYPUS2 PLATYPUS MAN2PLATYPUS, GIANT2 BEAR_GRIZZLY2BEAR_GRIZZLY_MAN2GIANT_BEAR_GRIZZLY2 -BEAR_BLACK2BEAR_BLACK_MAN2GIANT_BEAR_BLACK2DEER2DEER_MAN2 -GIANT_DEER2FOX2FOX_MAN2 GIANT_FOX2RACCOON2 RACCOON_MAN2 GIANT_RACCOON2MACAQUE_RHESUS2MACAQUE_RHESUS_MAN2GIANT_MACAQUE_RHESUS2COUGAR2 -COUGAR_MAN2 GIANT_COUGAR2WOLF2WOLF_MAN2 -GIANT_WOLF2 GROUNDHOG2 GROUNDHOG_MAN2GIANT_GROUNDHOG2 ALLIGATOR2 ALLIGATOR_MAN2GIANT_ALLIGATOR2 BIRD_BUZZARD2 BUZZARD_MAN2 GIANT_BUZZARD2PANDA2PANDA, GIGANTIC2 PANDA MAN2CAPYBARA2CAPYBARA, GIANT2 CAPYBARA MAN2BADGER2 -BADGER MAN2 BADGER, GIANT2MOOSE2 MOOSE MAN2 MOOSE, GIANT2 RED PANDA2 RED PANDA MAN2RED PANDA, GIANT2ELEPHANT2 ELEPHANT_MAN2GIANT_ELEPHANT2WARTHOG2 WARTHOG_MAN2 GIANT_WARTHOG2LION2LION_MAN2 -GIANT_LION2LEOPARD2 LEOPARD_MAN2 GIANT_LEOPARD2JAGUAR2 -JAGUAR_MAN2 GIANT_JAGUAR2TIGER2 TIGER_MAN2 GIANT_TIGER2CHEETAH2 CHEETAH_MAN2 GIANT_CHEETAH2GAZELLE2 GAZELLE_MAN2 GIANT_GAZELLE2MANDRILL2 MANDRILL_MAN2GIANT_MANDRILL2 -CHIMPANZEE2BONOBO2GORILLA2 ORANGUTAN2GIBBON_SIAMANG2GIBBON_WHITE_HANDED2GIBBON_BLACK_HANDED2 GIBBON_GRAY2GIBBON_SILVERY2GIBBON_PILEATED2 GIBBON_BILOU2GIBBON_WHITE_BROWED2GIBBON_BLACK_CRESTED2 CAMEL_1_HUMP2CAMEL_1_HUMP_MAN2GIANT_CAMEL_1_HUMP2 CAMEL_2_HUMP2CAMEL_2_HUMP_MAN2GIANT_CAMEL_2_HUMP2CROCODILE_SALTWATER2CROCODILE_SALTWATER_MAN2GIANT_CROCODILE_SALTWATER2 BIRD_VULTURE2 VULTURE_MAN2 GIANT_VULTURE2 -RHINOCEROS2RHINOCEROS_MAN2GIANT_RHINOCEROS2GIRAFFE2 GIRAFFE_MAN2 GIANT_GIRAFFE2 HONEY BADGER2HONEY BADGER MAN2HONEY BADGER, GIANT2GIANT TORTOISE2GIANT TORTOISE MAN2GIGANTIC TORTOISE2 ARMADILLO2 ARMADILLO MAN2ARMADILLO, GIANT2MUSKOX2 -MUSKOX_MAN2 GIANT_MUSKOX2ELK2ELK_MAN2 GIANT_ELK2 -BEAR_POLAR2BEAR_POLAR_MAN2GIANT_BEAR_POLAR2 WOLVERINE2 WOLVERINE_MAN2GIANT_WOLVERINE2 -CHINCHILLA2CHINCHILLA_MAN2GIANT_CHINCHILLA2 FLOATING_GUTS2DRUNIAN2 CREEPING_EYE2VORACIOUS_CAVE_CRAWLER2BLIND_CAVE_OGRE2 -CAP_HOPPER2 -MAGMA_CRAB2CRUNDLE2 HUNGRY_HEAD2 -FLESH_BALL2ELK_BIRD2 HELMET_SNAKE2GREEN_DEVOURER2RUTHERER2CREEPY_CRAWLER2DRALTHA2GIANT_EARTHWORM2 BLOOD_MAN2BUGBAT2MANERA2 -MOLEMARIAN2JABBERER2 POND_GRABBER2BLIND_CAVE_BEAR2 CAVE_DRAGON2REACHER2ELEMENTMAN_GABBRO2GORLAK2 CAVE_FLOATER2PLUMP_HELMET_MAN2 CAVE_BLOB2ELEMENTMAN_AMETHYST2OCTOPUS2 OCTOPUS_MAN2 GIANT_OCTOPUS2CRAB2CRAB_MAN2 -GIANT_CRAB2 LEOPARD_SEAL2LEOPARD_SEAL_MAN2GIANT_LEOPARD_SEAL2 -CUTTLEFISH2CUTTLEFISH_MAN2GIANT_CUTTLEFISH2ORCA2ORCA_MAN2 -GIANT_ORCA2SPONGE2 -SPONGE_MAN2 GIANT_SPONGE2HORSESHOE_CRAB2HORSESHOE_CRAB_MAN2GIANT_HORSESHOE_CRAB2 SPERM_WHALE2SPERM_WHALE_MAN2GIANT_SPERM_WHALE2 ELEPHANT_SEAL2ELEPHANT_SEAL_MAN2GIANT_ELEPHANT_SEAL2 HARP_SEAL2 HARP_SEAL_MAN2GIANT_HARP_SEAL2NAUTILUS2 NAUTILUS_MAN2GIANT_NAUTILUS2 FOXSQUIRREL2 MOGHOPPER2 RAT_DEMON2WAMBLER_FLUFFY2LIZARD_RHINO_TWO_LEGGED2 WORM_KNUCKLE2SPIDER_PHANTOM2 FLY_ACORN2 -GNAT_BLOOD2LIZARD2 -LIZARD_MAN2 GIANT_LIZARD2SKINK2 SKINK_MAN2 GIANT_SKINK2 CHAMELEON2 CHAMELEON_MAN2GIANT_CHAMELEON2ANOLE2 ANOLE_MAN2 GIANT_ANOLE2IGUANA2 -IGUANA_MAN2 GIANT_IGUANA2 RIVER OTTER2 SEA OTTER2 OTTER_MAN2 GIANT_OTTER2SNAPPING TURTLE2ALLIGATOR SNAPPING TURTLE2SNAPPING_TURTLE_MAN2GIANT_SNAPPING_TURTLE2BEAVER2 -BEAVER_MAN2 GIANT_BEAVER2LEECH2 LEECH_MAN2 GIANT_LEECH2AXOLOTL2 AXOLOTL_MAN2 GIANT_AXOLOTL2MINK2MINK_MAN2 -GIANT_MINK2 POND_TURTLE2POND_TURTLE_MAN2GIANT_POND_TURTLE2RAT2RAT_MAN2 SQUIRREL_GRAY2SQUIRREL_GRAY_MAN2GIANT_SQUIRREL_GRAY2 SQUIRREL_RED2SQUIRREL_RED_MAN2GIANT_SQUIRREL_RED2CHIPMUNK2 CHIPMUNK_MAN2GIANT_CHIPMUNK2HAMSTER2 HAMSTER_MAN2 GIANT_HAMSTER2HEDGEHOG2 HEDGEHOG_MAN2GIANT_HEDGEHOG2SQUIRREL_FLYING2FLYING_SQUIRREL_MAN2GIANT_FLYING_SQUIRREL2MUSSEL2OYSTER2 FISH_SALMON2FISH_CLOWNFISH2 FISH_HAGFISH2FISH_LAMPREY_BROOK2 FISH_RAY_BAT2FISH_RAY_THORNBACK2FISH_RATFISH_SPOTTED2 FISH_HERRING2 FISH_SHAD2 FISH_ANCHOVY2FISH_TROUT_STEELHEAD2 FISH_HAKE2 FISH_SEAHORSE2 FISH_GLASSEYE2FISH_PUFFER_WHITE_SPOTTED2 FISH_SOLE2 FISH_FLOUNDER2 FISH_MACKEREL2JELLYFISH_SEA_NETTLE2SQUID2 SQUID MAN2GIGANTIC SQUID2 FISH_LUNGFISH2FISH_LOACH_CLOWN2FISH_BULLHEAD_BROWN2FISH_BULLHEAD_YELLOW2FISH_BULLHEAD_BLACK2FISH_KNIFEFISH_BANDED2 FISH_CHAR2FISH_TROUT_RAINBOW2FISH_MOLLY_SAILFIN2 -FISH_GUPPY2 -FISH_PERCH2DWARF2HUMAN2ELF2GOBLIN2KOBOLD2GREMLIN2TROLL2OGRE2UNICORN2DRAGON2SATYR2COLOSSUS_BRONZE2GIANT2CYCLOPS2ETTIN2MINOTAUR2YETI2 SASQUATCH2 BLIZZARD_MAN2WOLF_ICE2FAIRY2PIXIE2BEAK_DOG2 GRIMELING2 BLENDEC_FOUL2 STRANGLER2 NIGHTWING2HARPY2HYDRA2 MERPERSON2 SEA_SERPENT2 SEA_MONSTER2BIRD_ROC2CROCODILE_CAVE2TOAD_GIANT_CAVE2 OLM_GIANT2 BAT_GIANT2 RAT_GIANT2 RAT_LARGE2MOLE_DOG_NAKED2 -TROGLODYTE2 -MOLE_GIANT2IMP_FIRE2SPIDER_CAVE_GIANT2 SPIDER_CAVE2 FISH_CAVE2 CAVE_FISH_MAN2 LOBSTER_CAVE2 -SNAKE_FIRE2OLM2OLM_MAN2BAT2BAT_MAN2MAGGOT_PURRING2ELEMENTMAN_FIRE2ELEMENTMAN_MAGMA2ELEMENTMAN_IRON2ELEMENTMAN_MUD2BIRD_SWALLOW_CAVE2CAVE_SWALLOW_MAN2BIRD_SWALLOW_CAVE_GIANT2 AMPHIBIAN_MAN2 REPTILE_MAN2 SERPENT_MAN2ANT_MAN2 -RODENT MAN2 WILD_BOAR2 WILD_BOAR_MAN2GIANT_WILD_BOAR2COYOTE2 -COYOTE_MAN2 GIANT_COYOTE2KANGAROO2 KANGAROO_MAN2GIANT_KANGAROO2KOALA2 KOALA_MAN2 GIANT_KOALA2ADDER2 ADDER_MAN2 GIANT_ADDER2ECHIDNA2 ECHIDNA_MAN2 GIANT_ECHIDNA2 PORCUPINE2 PORCUPINE_MAN2GIANT_PORCUPINE2 KINGSNAKE2 KINGSNAKE_MAN2GIANT_KINGSNAKE2 GRAY_LANGUR2GRAY_LANGUR_MAN2GIANT_GRAY_LANGUR2BOBCAT2 -BOBCAT_MAN2 GIANT_BOBCAT2SKUNK2 SKUNK_MAN2 GIANT_SKUNK2GREEN_TREE_FROG2GREEN_TREE_FROG_MAN2GIANT_GREEN_TREE_FROG2HARE2HARE_MAN2 -GIANT_HARE2 RATTLESNAKE2RATTLESNAKE_MAN2GIANT_RATTLESNAKE2WEASEL2 -WEASEL_MAN2 GIANT_WEASEL2COPPERHEAD_SNAKE2COPPERHEAD_SNAKE_MAN2GIANT_COPPERHEAD_SNAKE2IBEX2IBEX_MAN2 -GIANT_IBEX2WOMBAT2 -WOMBAT_MAN2 GIANT_WOMBAT2DINGO2 DINGO_MAN2 GIANT_DINGO2COATI2 COATI_MAN2 GIANT_COATI2OPOSSUM2 OPOSSUM_MAN2 GIANT_OPOSSUM2MONGOOSE2 MONGOOSE_MAN2GIANT_MONGOOSE2HYENA2 HYENA_MAN2 GIANT_HYENA2ANACONDA2 ANACONDA_MAN2GIANT_ANACONDA2MONITOR_LIZARD2MONITOR_LIZARD_MAN2GIANT_MONITOR_LIZARD2 -KING_COBRA2KING_COBRA_MAN2GIANT_KING_COBRA2OCELOT2 -OCELOT_MAN2 GIANT_OCELOT2JACKAL2 -JACKAL_MAN2 GIANT_JACKAL2CAPUCHIN2 CAPUCHIN_MAN2GIANT_CAPUCHIN2SLOTH2 SLOTH_MAN2 GIANT_SLOTH2 SPIDER_MONKEY2SPIDER_MONKEY_MAN2GIANT_SPIDER_MONKEY2PANGOLIN2 PANGOLIN_MAN2GIANT_PANGOLIN2 BLACK_MAMBA2BLACK_MAMBA_MAN2GIANT_BLACK_MAMBA2 -BEAR_SLOTH2SLOTH_BEAR_MAN2GIANT_SLOTH_BEAR2AYE-AYE2 AYE-AYE_MAN2 GIANT_AYE-AYE2 -BUSHMASTER2BUSHMASTER_MAN2GIANT_BUSHMASTER2PYTHON2 -PYTHON_MAN2 GIANT_PYTHON2TAPIR2 TAPIR_MAN2 GIANT_TAPIR2IMPALA2 -IMPALA_MAN2 GIANT_IMPALA2AARDVARK2 AARDVARK_MAN2GIANT_AARDVARK2 LION_TAMARIN2LION_TAMARIN_MAN2GIANT_LION_TAMARIN2STOAT2 STOAT_MAN2 GIANT_STOAT2LYNX2LYNX_MAN2 -GIANT_LYNX:SHEEP:LLAMA:ALPACA:TROLLBTOADBTOAD_MANB -GIANT_TOADBWORMBWORM_MANB BIRD_BLUEJAYB BLUEJAY_MANB GIANT_BLUEJAYB BIRD_CARDINALB CARDINAL_MANBGIANT_CARDINALB BIRD_GRACKLEB GRACKLE_MANB GIANT_GRACKLEB BIRD_ORIOLEB -ORIOLE_MANB GIANT_ORIOLEBBIRD_RW_BLACKBIRDBRW_BLACKBIRD_MANBGIANT_RW_BLACKBIRDB BIRD_PENGUINBBIRD_PENGUIN_LITTLEBBIRD_PENGUIN_EMPERORB PENGUIN MANBBIRD_PENGUIN_GIANTBBIRD_FALCON_PEREGRINEBPEREGRINE FALCON MANBGIANT PEREGRINE FALCONB BIRD_KIWIBKIWI MANBBIRD_KIWI_GIANTB BIRD_OSTRICHB OSTRICH MANBBIRD_OSTRICH_GIANTB BIRD_CROWBCROW_MANB -GIANT_CROWB -BIRD_RAVENB RAVEN_MANB GIANT_RAVENBBIRD_CASSOWARYB CASSOWARY_MANBGIANT_CASSOWARYBBIRD_KEABKEA_MANB GIANT_KEABBIRD_OWL_SNOWYB SNOWY_OWL_MANBGIANT_SNOWY_OWLBSPARROWB SPARROW_MANB GIANT_SPARROWBBIRD_STORK_WHITEBWHITE_STORK_MANBGIANT_WHITE_STORKB BIRD_LOONBLOON_MANB -GIANT_LOONB BIRD_OWL_BARNB BARN_OWL_MANBGIANT_BARN_OWLB BIRD_PARAKEETB PARAKEET_MANBGIANT_PARAKEETB BIRD_KAKAPOB -KAKAPO_MANB GIANT_KAKAPOBBIRD_PARROT_GREYBGREY_PARROT_MANBGIANT_GREY_PARROTB BIRD_PUFFINB -PUFFIN_MANB GIANT_PUFFINB BIRD_SWANBSWAN_MANB -GIANT_SWANB BIRD_LORIKEETB LORIKEET_MANBGIANT_LORIKEETB BIRD_WRENBWREN_MANB -GIANT_WRENB BIRD_OSPREYB -OSPREY_MANB GIANT_OSPREYBBIRD_EMUBEMU_MANB GIANT_EMUBBIRD_COCKATIELB COCKATIEL_MANBGIANT_COCKATIELBBIRD_LOVEBIRD_PEACH-FACEDBPEACH-FACED_LOVEBIRD_MANBGIANT_PEACH-FACED_LOVEBIRDB BIRD_MAGPIEB -MAGPIE_MANB GIANT_MAGPIEB BIRD_KESTRELB KESTREL_MANB GIANT_KESTRELBBIRD_ALBATROSSB ALBATROSS_MANBGIANT_ALBATROSSBBIRD_OWL_GREAT_HORNEDBGREAT_HORNED_OWL_MANBGIANT_GREAT_HORNED_OWLB -BIRD_EAGLEB EAGLE_MANB GIANT_EAGLEB BIRD_HORNBILLB HORNBILL_MANBGIANT_HORNBILLBBIRD_LOVEBIRD_MASKEDBMASKED_LOVEBIRD_MANBGIANT_MASKED_LOVEBIRDB BIRD_BUSHTITB BUSHTIT_MANB GIANT_BUSHTITB DAMSELFLYB DAMSELFLY_MANBGIANT_DAMSELFLYBMOTHBMOTH_MANB -GIANT_MOTHB GRASSHOPPERBGRASSHOPPER_MANBGIANT_GRASSHOPPERB BARK_SCORPIONBBARK_SCORPION_MANBGIANT_BARK_SCORPIONBMANTISB -MANTIS_MANB GIANT_MANTISBTICKBTICK_MANB -GIANT_TICKBLOUSEB LOUSE_MANB GIANT_LOUSEBTHRIPSB -THRIPS_MANB GIANT_THRIPSBSLUGBSLUG_MANB -GIANT_SLUGBMOSQUITOB MOSQUITO_MANBGIANT_MOSQUITOBSPIDER_JUMPINGBJUMPING_SPIDER_MANBGIANT_JUMPING_SPIDERBTERMITEB -MOON_SNAILBMOON_SNAIL_MANBGIANT_MOON_SNAILBSPIDER_BROWN_RECLUSEBBROWN_RECLUSE_SPIDER_MANBGIANT_BROWN_RECLUSE_SPIDERBSNAILB SNAIL_MANB GIANT_SNAILB GECKO_LEOPARDBLEOPARD_GECKO_MANBGIANT_LEOPARD_GECKOBDESERT TORTOISEBDESERT_TORTOISE_MANBGIANT_DESERT_TORTOISEB GILA_MONSTERBGILA_MONSTER_MANBGIANT_GILA_MONSTERBDOGBCATBMULEBDONKEYBHORSEBCOWBSHEEPBPIGBGOATB BIRD_CHICKENBCAVYB BIRD_DUCKB WATER_BUFFALOBREINDEERB -BIRD_GOOSEBYAKBLLAMABALPACABBIRD_GUINEAFOWLBBIRD_PEAFOWL_BLUEB BIRD_TURKEYBRABBITBCHIMERABCENTAURBGRIFFONBFLYBFLY_MANB GIANT_FLYB ROACH_LARGEB ROACH_MANB GIANT_ROACHBBEETLEB -BEETLE_MANB GIANT_BEETLEBANTBBUTTERFLY_MONARCHBBUTTERFLY_MONARCH_MANBGIANT_BUTTERFLY_MONARCHBFIREFLYB FIREFLY_MANB GIANT_FIREFLYB DRAGONFLYB DRAGONFLY_MANBGIANT_DRAGONFLYB HONEY_BEEB BUMBLEBEEB GOAT_MOUNTAINBGOAT_MOUNTAIN_MANBGIANT_GOAT_MOUNTAINB MARMOT_HOARYBMARMOT_HOARY_MANBGIANT_MARMOT_HOARYBGNOME_MOUNTAINB -GNOME_DARKBWALRUSB -WALRUS_MANB GIANT_WALRUSBFISH_LAMPREY_SEABSHARK_GREAT_WHITEB SHARK_FRILLBSHARK_SPINY_DOGFISHBSHARK_WOBBEGONG_SPOTTEDB SHARK_WHALEB SHARK_BASKINGB SHARK_NURSEBSHARK_MAKO_SHORTFINBSHARK_MAKO_LONGFINB SHARK_TIGERB -SHARK_BULLBSHARK_REEF_BLACKTIPBSHARK_REEF_WHITETIPB -SHARK_BLUEBSHARK_HAMMERHEADB SHARK_ANGELBFISH_SKATE_COMMONBFISH_RAY_MANTAB FISH_STINGRAYBFISH_COELACANTHB FISH_STURGEONBFISH_CONGER_EELB FISH_MILKFISHBFISH_CODB FISH_OPAHBFISH_GROUPER_GIANTB FISH_BLUEFISHBFISH_SUNFISH_OCEANBFISH_SWORDFISHB FISH_MARLINB FISH_HALIBUTBFISH_BARRACUDA_GREATBFISH_TUNA_BLUEFINBNARWHALB NARWHAL MANBNARWHAL, GIANTBHIPPOB HIPPO_MANB GIANT_HIPPOBFISH_GAR_LONGNOSEB FISH_CARPBFISH_TIGERFISHB FISH_PIKEBPLATYPUSB PLATYPUS MANBPLATYPUS, GIANTB BEAR_GRIZZLYBBEAR_GRIZZLY_MANBGIANT_BEAR_GRIZZLYB -BEAR_BLACKBBEAR_BLACK_MANBGIANT_BEAR_BLACKBDEERBDEER_MANB -GIANT_DEERBFOXBFOX_MANB GIANT_FOXBRACCOONB RACCOON_MANB GIANT_RACCOONBMACAQUE_RHESUSBMACAQUE_RHESUS_MANBGIANT_MACAQUE_RHESUSBCOUGARB -COUGAR_MANB GIANT_COUGARBWOLFBWOLF_MANB -GIANT_WOLFB GROUNDHOGB GROUNDHOG_MANBGIANT_GROUNDHOGB ALLIGATORB ALLIGATOR_MANBGIANT_ALLIGATORB BIRD_BUZZARDB BUZZARD_MANB GIANT_BUZZARDBPANDABPANDA, GIGANTICB PANDA MANBCAPYBARABCAPYBARA, GIANTB CAPYBARA MANBBADGERB -BADGER MANB BADGER, GIANTBMOOSEB MOOSE MANB MOOSE, GIANTB RED PANDAB RED PANDA MANBRED PANDA, GIANTBELEPHANTB ELEPHANT_MANBGIANT_ELEPHANTBWARTHOGB WARTHOG_MANB GIANT_WARTHOGBLIONBLION_MANB -GIANT_LIONBLEOPARDB LEOPARD_MANB GIANT_LEOPARDBJAGUARB -JAGUAR_MANB GIANT_JAGUARBTIGERB TIGER_MANB GIANT_TIGERBCHEETAHB CHEETAH_MANB GIANT_CHEETAHBGAZELLEB GAZELLE_MANB GIANT_GAZELLEBMANDRILLB MANDRILL_MANBGIANT_MANDRILLB -CHIMPANZEEBBONOBOBGORILLAB ORANGUTANBGIBBON_SIAMANGBGIBBON_WHITE_HANDEDBGIBBON_BLACK_HANDEDB GIBBON_GRAYBGIBBON_SILVERYBGIBBON_PILEATEDB GIBBON_BILOUBGIBBON_WHITE_BROWEDBGIBBON_BLACK_CRESTEDB CAMEL_1_HUMPBCAMEL_1_HUMP_MANBGIANT_CAMEL_1_HUMPB CAMEL_2_HUMPBCAMEL_2_HUMP_MANBGIANT_CAMEL_2_HUMPBCROCODILE_SALTWATERBCROCODILE_SALTWATER_MANBGIANT_CROCODILE_SALTWATERB BIRD_VULTUREB VULTURE_MANB GIANT_VULTUREB -RHINOCEROSBRHINOCEROS_MANBGIANT_RHINOCEROSBGIRAFFEB GIRAFFE_MANB GIANT_GIRAFFEB HONEY BADGERBHONEY BADGER MANBHONEY BADGER, GIANTBGIANT TORTOISEBGIANT TORTOISE MANBGIGANTIC TORTOISEB ARMADILLOB ARMADILLO MANBARMADILLO, GIANTBMUSKOXB -MUSKOX_MANB GIANT_MUSKOXBELKBELK_MANB GIANT_ELKB -BEAR_POLARBBEAR_POLAR_MANBGIANT_BEAR_POLARB WOLVERINEB WOLVERINE_MANBGIANT_WOLVERINEB -CHINCHILLABCHINCHILLA_MANBGIANT_CHINCHILLAB FLOATING_GUTSBDRUNIANB CREEPING_EYEBVORACIOUS_CAVE_CRAWLERBBLIND_CAVE_OGREB -CAP_HOPPERB -MAGMA_CRABBCRUNDLEB HUNGRY_HEADB -FLESH_BALLBELK_BIRDB HELMET_SNAKEBGREEN_DEVOURERBRUTHERERBCREEPY_CRAWLERBDRALTHABGIANT_EARTHWORMB BLOOD_MANBBUGBATBMANERAB -MOLEMARIANBJABBERERB POND_GRABBERBBLIND_CAVE_BEARB CAVE_DRAGONBREACHERBELEMENTMAN_GABBROBGORLAKB CAVE_FLOATERBPLUMP_HELMET_MANB CAVE_BLOBBELEMENTMAN_AMETHYSTBOCTOPUSB OCTOPUS_MANB GIANT_OCTOPUSBCRABBCRAB_MANB -GIANT_CRABB LEOPARD_SEALBLEOPARD_SEAL_MANBGIANT_LEOPARD_SEALB -CUTTLEFISHBCUTTLEFISH_MANBGIANT_CUTTLEFISHBORCABORCA_MANB -GIANT_ORCABSPONGEB -SPONGE_MANB GIANT_SPONGEBHORSESHOE_CRABBHORSESHOE_CRAB_MANBGIANT_HORSESHOE_CRABB SPERM_WHALEBSPERM_WHALE_MANBGIANT_SPERM_WHALEB ELEPHANT_SEALBELEPHANT_SEAL_MANBGIANT_ELEPHANT_SEALB HARP_SEALB HARP_SEAL_MANBGIANT_HARP_SEALBNAUTILUSB NAUTILUS_MANBGIANT_NAUTILUSB FOXSQUIRRELB MOGHOPPERB RAT_DEMONBWAMBLER_FLUFFYBLIZARD_RHINO_TWO_LEGGEDB WORM_KNUCKLEBSPIDER_PHANTOMB FLY_ACORNB -GNAT_BLOODBLIZARDB -LIZARD_MANB GIANT_LIZARDBSKINKB SKINK_MANB GIANT_SKINKB CHAMELEONB CHAMELEON_MANBGIANT_CHAMELEONBANOLEB ANOLE_MANB GIANT_ANOLEBIGUANAB -IGUANA_MANB GIANT_IGUANAB RIVER OTTERB SEA OTTERB OTTER_MANB GIANT_OTTERBSNAPPING TURTLEBALLIGATOR SNAPPING TURTLEBSNAPPING_TURTLE_MANBGIANT_SNAPPING_TURTLEBBEAVERB -BEAVER_MANB GIANT_BEAVERBLEECHB LEECH_MANB GIANT_LEECHBAXOLOTLB AXOLOTL_MANB GIANT_AXOLOTLBMINKBMINK_MANB -GIANT_MINKB POND_TURTLEBPOND_TURTLE_MANBGIANT_POND_TURTLEBRATBRAT_MANB SQUIRREL_GRAYBSQUIRREL_GRAY_MANBGIANT_SQUIRREL_GRAYB SQUIRREL_REDBSQUIRREL_RED_MANBGIANT_SQUIRREL_REDBCHIPMUNKB CHIPMUNK_MANBGIANT_CHIPMUNKBHAMSTERB HAMSTER_MANB GIANT_HAMSTERBHEDGEHOGB HEDGEHOG_MANBGIANT_HEDGEHOGBSQUIRREL_FLYINGBFLYING_SQUIRREL_MANBGIANT_FLYING_SQUIRRELBMUSSELBOYSTERB FISH_SALMONBFISH_CLOWNFISHB FISH_HAGFISHBFISH_LAMPREY_BROOKB FISH_RAY_BATBFISH_RAY_THORNBACKBFISH_RATFISH_SPOTTEDB FISH_HERRINGB FISH_SHADB FISH_ANCHOVYBFISH_TROUT_STEELHEADB FISH_HAKEB FISH_SEAHORSEB FISH_GLASSEYEBFISH_PUFFER_WHITE_SPOTTEDB FISH_SOLEB FISH_FLOUNDERB FISH_MACKERELBJELLYFISH_SEA_NETTLEBSQUIDB SQUID MANBGIGANTIC SQUIDB FISH_LUNGFISHBFISH_LOACH_CLOWNBFISH_BULLHEAD_BROWNBFISH_BULLHEAD_YELLOWBFISH_BULLHEAD_BLACKBFISH_KNIFEFISH_BANDEDB FISH_CHARBFISH_TROUT_RAINBOWBFISH_MOLLY_SAILFINB -FISH_GUPPYB -FISH_PERCHBDWARFBHUMANBELFBGOBLINBKOBOLDBGREMLINBTROLLBOGREBUNICORNBDRAGONBSATYRBCOLOSSUS_BRONZEBGIANTBCYCLOPSBETTINBMINOTAURBYETIB SASQUATCHB BLIZZARD_MANBWOLF_ICEBFAIRYBPIXIEBBEAK_DOGB GRIMELINGB BLENDEC_FOULB STRANGLERB NIGHTWINGBHARPYBHYDRAB MERPERSONB SEA_SERPENTB SEA_MONSTERBBIRD_ROCBCROCODILE_CAVEBTOAD_GIANT_CAVEB OLM_GIANTB BAT_GIANTB RAT_GIANTB RAT_LARGEBMOLE_DOG_NAKEDB -TROGLODYTEB -MOLE_GIANTBIMP_FIREBSPIDER_CAVE_GIANTB SPIDER_CAVEB FISH_CAVEB CAVE_FISH_MANB LOBSTER_CAVEB -SNAKE_FIREBOLMBOLM_MANBBATBBAT_MANBMAGGOT_PURRINGBELEMENTMAN_FIREBELEMENTMAN_MAGMABELEMENTMAN_IRONBELEMENTMAN_MUDBBIRD_SWALLOW_CAVEBCAVE_SWALLOW_MANBBIRD_SWALLOW_CAVE_GIANTB AMPHIBIAN_MANB REPTILE_MANB SERPENT_MANBANT_MANB -RODENT MANB WILD_BOARB WILD_BOAR_MANBGIANT_WILD_BOARBCOYOTEB -COYOTE_MANB GIANT_COYOTEBKANGAROOB KANGAROO_MANBGIANT_KANGAROOBKOALAB KOALA_MANB GIANT_KOALABADDERB ADDER_MANB GIANT_ADDERBECHIDNAB ECHIDNA_MANB GIANT_ECHIDNAB PORCUPINEB PORCUPINE_MANBGIANT_PORCUPINEB KINGSNAKEB KINGSNAKE_MANBGIANT_KINGSNAKEB GRAY_LANGURBGRAY_LANGUR_MANBGIANT_GRAY_LANGURBBOBCATB -BOBCAT_MANB GIANT_BOBCATBSKUNKB SKUNK_MANB GIANT_SKUNKBGREEN_TREE_FROGBGREEN_TREE_FROG_MANBGIANT_GREEN_TREE_FROGBHAREBHARE_MANB -GIANT_HAREB RATTLESNAKEBRATTLESNAKE_MANBGIANT_RATTLESNAKEBWEASELB -WEASEL_MANB GIANT_WEASELBCOPPERHEAD_SNAKEBCOPPERHEAD_SNAKE_MANBGIANT_COPPERHEAD_SNAKEBIBEXBIBEX_MANB -GIANT_IBEXBWOMBATB -WOMBAT_MANB GIANT_WOMBATBDINGOB DINGO_MANB GIANT_DINGOBCOATIB COATI_MANB GIANT_COATIBOPOSSUMB OPOSSUM_MANB GIANT_OPOSSUMBMONGOOSEB MONGOOSE_MANBGIANT_MONGOOSEBHYENAB HYENA_MANB GIANT_HYENABANACONDAB ANACONDA_MANBGIANT_ANACONDABMONITOR_LIZARDBMONITOR_LIZARD_MANBGIANT_MONITOR_LIZARDB -KING_COBRABKING_COBRA_MANBGIANT_KING_COBRABOCELOTB -OCELOT_MANB GIANT_OCELOTBJACKALB -JACKAL_MANB GIANT_JACKALBCAPUCHINB CAPUCHIN_MANBGIANT_CAPUCHINBSLOTHB SLOTH_MANB GIANT_SLOTHB SPIDER_MONKEYBSPIDER_MONKEY_MANBGIANT_SPIDER_MONKEYBPANGOLINB PANGOLIN_MANBGIANT_PANGOLINB BLACK_MAMBABBLACK_MAMBA_MANBGIANT_BLACK_MAMBAB -BEAR_SLOTHBSLOTH_BEAR_MANBGIANT_SLOTH_BEARBAYE-AYEB AYE-AYE_MANB GIANT_AYE-AYEB -BUSHMASTERBBUSHMASTER_MANBGIANT_BUSHMASTERBPYTHONB -PYTHON_MANB GIANT_PYTHONBTAPIRB TAPIR_MANB GIANT_TAPIRBIMPALAB -IMPALA_MANB GIANT_IMPALABAARDVARKB AARDVARK_MANBGIANT_AARDVARKB LION_TAMARINBLION_TAMARIN_MANBGIANT_LION_TAMARINBSTOATB STOAT_MANB GIANT_STOATBLYNXBLYNX_MANB -GIANT_LYNXJTOADJTOAD_MANJ -GIANT_TOADJWORMJWORM_MANJ BIRD_BLUEJAYJ BLUEJAY_MANJ GIANT_BLUEJAYJ BIRD_CARDINALJ CARDINAL_MANJGIANT_CARDINALJ BIRD_GRACKLEJ GRACKLE_MANJ GIANT_GRACKLEJ BIRD_ORIOLEJ -ORIOLE_MANJ GIANT_ORIOLEJBIRD_RW_BLACKBIRDJRW_BLACKBIRD_MANJGIANT_RW_BLACKBIRDJ BIRD_PENGUINJBIRD_PENGUIN_LITTLEJBIRD_PENGUIN_EMPERORJ PENGUIN MANJBIRD_PENGUIN_GIANTJBIRD_FALCON_PEREGRINEJPEREGRINE FALCON MANJGIANT PEREGRINE FALCONJ BIRD_KIWIJKIWI MANJBIRD_KIWI_GIANTJ BIRD_OSTRICHJ OSTRICH MANJBIRD_OSTRICH_GIANTJ BIRD_CROWJCROW_MANJ -GIANT_CROWJ -BIRD_RAVENJ RAVEN_MANJ GIANT_RAVENJBIRD_CASSOWARYJ CASSOWARY_MANJGIANT_CASSOWARYJBIRD_KEAJKEA_MANJ GIANT_KEAJBIRD_OWL_SNOWYJ SNOWY_OWL_MANJGIANT_SNOWY_OWLJSPARROWJ SPARROW_MANJ GIANT_SPARROWJBIRD_STORK_WHITEJWHITE_STORK_MANJGIANT_WHITE_STORKJ BIRD_LOONJLOON_MANJ -GIANT_LOONJ BIRD_OWL_BARNJ BARN_OWL_MANJGIANT_BARN_OWLJ BIRD_PARAKEETJ PARAKEET_MANJGIANT_PARAKEETJ BIRD_KAKAPOJ -KAKAPO_MANJ GIANT_KAKAPOJBIRD_PARROT_GREYJGREY_PARROT_MANJGIANT_GREY_PARROTJ BIRD_PUFFINJ -PUFFIN_MANJ GIANT_PUFFINJ BIRD_SWANJSWAN_MANJ -GIANT_SWANJ BIRD_LORIKEETJ LORIKEET_MANJGIANT_LORIKEETJ BIRD_WRENJWREN_MANJ -GIANT_WRENJ BIRD_OSPREYJ -OSPREY_MANJ GIANT_OSPREYJBIRD_EMUJEMU_MANJ GIANT_EMUJBIRD_COCKATIELJ COCKATIEL_MANJGIANT_COCKATIELJBIRD_LOVEBIRD_PEACH-FACEDJPEACH-FACED_LOVEBIRD_MANJGIANT_PEACH-FACED_LOVEBIRDJ BIRD_MAGPIEJ -MAGPIE_MANJ GIANT_MAGPIEJ BIRD_KESTRELJ KESTREL_MANJ GIANT_KESTRELJBIRD_ALBATROSSJ ALBATROSS_MANJGIANT_ALBATROSSJBIRD_OWL_GREAT_HORNEDJGREAT_HORNED_OWL_MANJGIANT_GREAT_HORNED_OWLJ -BIRD_EAGLEJ EAGLE_MANJ GIANT_EAGLEJ BIRD_HORNBILLJ HORNBILL_MANJGIANT_HORNBILLJBIRD_LOVEBIRD_MASKEDJMASKED_LOVEBIRD_MANJGIANT_MASKED_LOVEBIRDJ BIRD_BUSHTITJ BUSHTIT_MANJ GIANT_BUSHTITJ DAMSELFLYJ DAMSELFLY_MANJGIANT_DAMSELFLYJMOTHJMOTH_MANJ -GIANT_MOTHJ GRASSHOPPERJGRASSHOPPER_MANJGIANT_GRASSHOPPERJ BARK_SCORPIONJBARK_SCORPION_MANJGIANT_BARK_SCORPIONJMANTISJ -MANTIS_MANJ GIANT_MANTISJTICKJTICK_MANJ -GIANT_TICKJLOUSEJ LOUSE_MANJ GIANT_LOUSEJTHRIPSJ -THRIPS_MANJ GIANT_THRIPSJSLUGJSLUG_MANJ -GIANT_SLUGJMOSQUITOJ MOSQUITO_MANJGIANT_MOSQUITOJSPIDER_JUMPINGJJUMPING_SPIDER_MANJGIANT_JUMPING_SPIDERJTERMITEJ -MOON_SNAILJMOON_SNAIL_MANJGIANT_MOON_SNAILJSPIDER_BROWN_RECLUSEJBROWN_RECLUSE_SPIDER_MANJGIANT_BROWN_RECLUSE_SPIDERJSNAILJ SNAIL_MANJ GIANT_SNAILJ GECKO_LEOPARDJLEOPARD_GECKO_MANJGIANT_LEOPARD_GECKOJDESERT TORTOISEJDESERT_TORTOISE_MANJGIANT_DESERT_TORTOISEJ GILA_MONSTERJGILA_MONSTER_MANJGIANT_GILA_MONSTERJDOGJCATJMULEJDONKEYJHORSEJCOWJSHEEPJPIGJGOATJ BIRD_CHICKENJCAVYJ BIRD_DUCKJ WATER_BUFFALOJREINDEERJ -BIRD_GOOSEJYAKJLLAMAJALPACAJBIRD_GUINEAFOWLJBIRD_PEAFOWL_BLUEJ BIRD_TURKEYJRABBITJCHIMERAJCENTAURJGRIFFONJFLYJFLY_MANJ GIANT_FLYJ ROACH_LARGEJ ROACH_MANJ GIANT_ROACHJBEETLEJ -BEETLE_MANJ GIANT_BEETLEJANTJBUTTERFLY_MONARCHJBUTTERFLY_MONARCH_MANJGIANT_BUTTERFLY_MONARCHJFIREFLYJ FIREFLY_MANJ GIANT_FIREFLYJ DRAGONFLYJ DRAGONFLY_MANJGIANT_DRAGONFLYJ HONEY_BEEJ BUMBLEBEEJ GOAT_MOUNTAINJGOAT_MOUNTAIN_MANJGIANT_GOAT_MOUNTAINJ MARMOT_HOARYJMARMOT_HOARY_MANJGIANT_MARMOT_HOARYJGNOME_MOUNTAINJ -GNOME_DARKJWALRUSJ -WALRUS_MANJ GIANT_WALRUSJFISH_LAMPREY_SEAJSHARK_GREAT_WHITEJ SHARK_FRILLJSHARK_SPINY_DOGFISHJSHARK_WOBBEGONG_SPOTTEDJ SHARK_WHALEJ SHARK_BASKINGJ SHARK_NURSEJSHARK_MAKO_SHORTFINJSHARK_MAKO_LONGFINJ SHARK_TIGERJ -SHARK_BULLJSHARK_REEF_BLACKTIPJSHARK_REEF_WHITETIPJ -SHARK_BLUEJSHARK_HAMMERHEADJ SHARK_ANGELJFISH_SKATE_COMMONJFISH_RAY_MANTAJ FISH_STINGRAYJFISH_COELACANTHJ FISH_STURGEONJFISH_CONGER_EELJ FISH_MILKFISHJFISH_CODJ FISH_OPAHJFISH_GROUPER_GIANTJ FISH_BLUEFISHJFISH_SUNFISH_OCEANJFISH_SWORDFISHJ FISH_MARLINJ FISH_HALIBUTJFISH_BARRACUDA_GREATJFISH_TUNA_BLUEFINJNARWHALJ NARWHAL MANJNARWHAL, GIANTJHIPPOJ HIPPO_MANJ GIANT_HIPPOJFISH_GAR_LONGNOSEJ FISH_CARPJFISH_TIGERFISHJ FISH_PIKEJPLATYPUSJ PLATYPUS MANJPLATYPUS, GIANTJ BEAR_GRIZZLYJBEAR_GRIZZLY_MANJGIANT_BEAR_GRIZZLYJ -BEAR_BLACKJBEAR_BLACK_MANJGIANT_BEAR_BLACKJDEERJDEER_MANJ -GIANT_DEERJFOXJFOX_MANJ GIANT_FOXJRACCOONJ RACCOON_MANJ GIANT_RACCOONJMACAQUE_RHESUSJMACAQUE_RHESUS_MANJGIANT_MACAQUE_RHESUSJCOUGARJ -COUGAR_MANJ GIANT_COUGARJWOLFJWOLF_MANJ -GIANT_WOLFJ GROUNDHOGJ GROUNDHOG_MANJGIANT_GROUNDHOGJ ALLIGATORJ ALLIGATOR_MANJGIANT_ALLIGATORJ BIRD_BUZZARDJ BUZZARD_MANJ GIANT_BUZZARDJPANDAJPANDA, GIGANTICJ PANDA MANJCAPYBARAJCAPYBARA, GIANTJ CAPYBARA MANJBADGERJ -BADGER MANJ BADGER, GIANTJMOOSEJ MOOSE MANJ MOOSE, GIANTJ RED PANDAJ RED PANDA MANJRED PANDA, GIANTJELEPHANTJ ELEPHANT_MANJGIANT_ELEPHANTJWARTHOGJ WARTHOG_MANJ GIANT_WARTHOGJLIONJLION_MANJ -GIANT_LIONJLEOPARDJ LEOPARD_MANJ GIANT_LEOPARDJJAGUARJ -JAGUAR_MANJ GIANT_JAGUARJTIGERJ TIGER_MANJ GIANT_TIGERJCHEETAHJ CHEETAH_MANJ GIANT_CHEETAHJGAZELLEJ GAZELLE_MANJ GIANT_GAZELLEJMANDRILLJ MANDRILL_MANJGIANT_MANDRILLJ -CHIMPANZEEJBONOBOJGORILLAJ ORANGUTANJGIBBON_SIAMANGJGIBBON_WHITE_HANDEDJGIBBON_BLACK_HANDEDJ GIBBON_GRAYJGIBBON_SILVERYJGIBBON_PILEATEDJ GIBBON_BILOUJGIBBON_WHITE_BROWEDJGIBBON_BLACK_CRESTEDJ CAMEL_1_HUMPJCAMEL_1_HUMP_MANJGIANT_CAMEL_1_HUMPJ CAMEL_2_HUMPJCAMEL_2_HUMP_MANJGIANT_CAMEL_2_HUMPJCROCODILE_SALTWATERJCROCODILE_SALTWATER_MANJGIANT_CROCODILE_SALTWATERJ BIRD_VULTUREJ VULTURE_MANJ GIANT_VULTUREJ -RHINOCEROSJRHINOCEROS_MANJGIANT_RHINOCEROSJGIRAFFEJ GIRAFFE_MANJ GIANT_GIRAFFEJ HONEY BADGERJHONEY BADGER MANJHONEY BADGER, GIANTJGIANT TORTOISEJGIANT TORTOISE MANJGIGANTIC TORTOISEJ ARMADILLOJ ARMADILLO MANJARMADILLO, GIANTJMUSKOXJ -MUSKOX_MANJ GIANT_MUSKOXJELKJELK_MANJ GIANT_ELKJ -BEAR_POLARJBEAR_POLAR_MANJGIANT_BEAR_POLARJ WOLVERINEJ WOLVERINE_MANJGIANT_WOLVERINEJ -CHINCHILLAJCHINCHILLA_MANJGIANT_CHINCHILLAJ FLOATING_GUTSJDRUNIANJ CREEPING_EYEJVORACIOUS_CAVE_CRAWLERJBLIND_CAVE_OGREJ -CAP_HOPPERJ -MAGMA_CRABJCRUNDLEJ HUNGRY_HEADJ -FLESH_BALLJELK_BIRDJ HELMET_SNAKEJGREEN_DEVOURERJRUTHERERJCREEPY_CRAWLERJDRALTHAJGIANT_EARTHWORMJ BLOOD_MANJBUGBATJMANERAJ -MOLEMARIANJJABBERERJ POND_GRABBERJBLIND_CAVE_BEARJ CAVE_DRAGONJREACHERJELEMENTMAN_GABBROJGORLAKJ CAVE_FLOATERJPLUMP_HELMET_MANJ CAVE_BLOBJELEMENTMAN_AMETHYSTJOCTOPUSJ OCTOPUS_MANJ GIANT_OCTOPUSJCRABJCRAB_MANJ -GIANT_CRABJ LEOPARD_SEALJLEOPARD_SEAL_MANJGIANT_LEOPARD_SEALJ -CUTTLEFISHJCUTTLEFISH_MANJGIANT_CUTTLEFISHJORCAJORCA_MANJ -GIANT_ORCAJSPONGEJ -SPONGE_MANJ GIANT_SPONGEJHORSESHOE_CRABJHORSESHOE_CRAB_MANJGIANT_HORSESHOE_CRABJ SPERM_WHALEJSPERM_WHALE_MANJGIANT_SPERM_WHALEJ ELEPHANT_SEALJELEPHANT_SEAL_MANJGIANT_ELEPHANT_SEALJ HARP_SEALJ HARP_SEAL_MANJGIANT_HARP_SEALJNAUTILUSJ NAUTILUS_MANJGIANT_NAUTILUSJ FOXSQUIRRELJ MOGHOPPERJ RAT_DEMONJWAMBLER_FLUFFYJLIZARD_RHINO_TWO_LEGGEDJ WORM_KNUCKLEJSPIDER_PHANTOMJ FLY_ACORNJ -GNAT_BLOODJLIZARDJ -LIZARD_MANJ GIANT_LIZARDJSKINKJ SKINK_MANJ GIANT_SKINKJ CHAMELEONJ CHAMELEON_MANJGIANT_CHAMELEONJANOLEJ ANOLE_MANJ GIANT_ANOLEJIGUANAJ -IGUANA_MANJ GIANT_IGUANAJ RIVER OTTERJ SEA OTTERJ OTTER_MANJ GIANT_OTTERJSNAPPING TURTLEJALLIGATOR SNAPPING TURTLEJSNAPPING_TURTLE_MANJGIANT_SNAPPING_TURTLEJBEAVERJ -BEAVER_MANJ GIANT_BEAVERJLEECHJ LEECH_MANJ GIANT_LEECHJAXOLOTLJ AXOLOTL_MANJ GIANT_AXOLOTLJMINKJMINK_MANJ -GIANT_MINKJ POND_TURTLEJPOND_TURTLE_MANJGIANT_POND_TURTLEJRATJRAT_MANJ SQUIRREL_GRAYJSQUIRREL_GRAY_MANJGIANT_SQUIRREL_GRAYJ SQUIRREL_REDJSQUIRREL_RED_MANJGIANT_SQUIRREL_REDJCHIPMUNKJ CHIPMUNK_MANJGIANT_CHIPMUNKJHAMSTERJ HAMSTER_MANJ GIANT_HAMSTERJHEDGEHOGJ HEDGEHOG_MANJGIANT_HEDGEHOGJSQUIRREL_FLYINGJFLYING_SQUIRREL_MANJGIANT_FLYING_SQUIRRELJMUSSELJOYSTERJ FISH_SALMONJFISH_CLOWNFISHJ FISH_HAGFISHJFISH_LAMPREY_BROOKJ FISH_RAY_BATJFISH_RAY_THORNBACKJFISH_RATFISH_SPOTTEDJ FISH_HERRINGJ FISH_SHADJ FISH_ANCHOVYJFISH_TROUT_STEELHEADJ FISH_HAKEJ FISH_SEAHORSEJ FISH_GLASSEYEJFISH_PUFFER_WHITE_SPOTTEDJ FISH_SOLEJ FISH_FLOUNDERJ FISH_MACKERELJJELLYFISH_SEA_NETTLEJSQUIDJ SQUID MANJGIGANTIC SQUIDJ FISH_LUNGFISHJFISH_LOACH_CLOWNJFISH_BULLHEAD_BROWNJFISH_BULLHEAD_YELLOWJFISH_BULLHEAD_BLACKJFISH_KNIFEFISH_BANDEDJ FISH_CHARJFISH_TROUT_RAINBOWJFISH_MOLLY_SAILFINJ -FISH_GUPPYJ -FISH_PERCHJDWARFJHUMANJELFJGOBLINJKOBOLDJGREMLINJTROLLJOGREJUNICORNJDRAGONJSATYRJCOLOSSUS_BRONZEJGIANTJCYCLOPSJETTINJMINOTAURJYETIJ SASQUATCHJ BLIZZARD_MANJWOLF_ICEJFAIRYJPIXIEJBEAK_DOGJ GRIMELINGJ BLENDEC_FOULJ STRANGLERJ NIGHTWINGJHARPYJHYDRAJ MERPERSONJ SEA_SERPENTJ SEA_MONSTERJBIRD_ROCJCROCODILE_CAVEJTOAD_GIANT_CAVEJ OLM_GIANTJ BAT_GIANTJ RAT_GIANTJ RAT_LARGEJMOLE_DOG_NAKEDJ -TROGLODYTEJ -MOLE_GIANTJIMP_FIREJSPIDER_CAVE_GIANTJ SPIDER_CAVEJ FISH_CAVEJ CAVE_FISH_MANJ LOBSTER_CAVEJ -SNAKE_FIREJOLMJOLM_MANJBATJBAT_MANJMAGGOT_PURRINGJELEMENTMAN_FIREJELEMENTMAN_MAGMAJELEMENTMAN_IRONJELEMENTMAN_MUDJBIRD_SWALLOW_CAVEJCAVE_SWALLOW_MANJBIRD_SWALLOW_CAVE_GIANTJ AMPHIBIAN_MANJ REPTILE_MANJ SERPENT_MANJANT_MANJ -RODENT MANJ WILD_BOARJ WILD_BOAR_MANJGIANT_WILD_BOARJCOYOTEJ -COYOTE_MANJ GIANT_COYOTEJKANGAROOJ KANGAROO_MANJGIANT_KANGAROOJKOALAJ KOALA_MANJ GIANT_KOALAJADDERJ ADDER_MANJ GIANT_ADDERJECHIDNAJ ECHIDNA_MANJ GIANT_ECHIDNAJ PORCUPINEJ PORCUPINE_MANJGIANT_PORCUPINEJ KINGSNAKEJ KINGSNAKE_MANJGIANT_KINGSNAKEJ GRAY_LANGURJGRAY_LANGUR_MANJGIANT_GRAY_LANGURJBOBCATJ -BOBCAT_MANJ GIANT_BOBCATJSKUNKJ SKUNK_MANJ GIANT_SKUNKJGREEN_TREE_FROGJGREEN_TREE_FROG_MANJGIANT_GREEN_TREE_FROGJHAREJHARE_MANJ -GIANT_HAREJ RATTLESNAKEJRATTLESNAKE_MANJGIANT_RATTLESNAKEJWEASELJ -WEASEL_MANJ GIANT_WEASELJCOPPERHEAD_SNAKEJCOPPERHEAD_SNAKE_MANJGIANT_COPPERHEAD_SNAKEJIBEXJIBEX_MANJ -GIANT_IBEXJWOMBATJ -WOMBAT_MANJ GIANT_WOMBATJDINGOJ DINGO_MANJ GIANT_DINGOJCOATIJ COATI_MANJ GIANT_COATIJOPOSSUMJ OPOSSUM_MANJ GIANT_OPOSSUMJMONGOOSEJ MONGOOSE_MANJGIANT_MONGOOSEJHYENAJ HYENA_MANJ GIANT_HYENAJANACONDAJ ANACONDA_MANJGIANT_ANACONDAJMONITOR_LIZARDJMONITOR_LIZARD_MANJGIANT_MONITOR_LIZARDJ -KING_COBRAJKING_COBRA_MANJGIANT_KING_COBRAJOCELOTJ -OCELOT_MANJ GIANT_OCELOTJJACKALJ -JACKAL_MANJ GIANT_JACKALJCAPUCHINJ CAPUCHIN_MANJGIANT_CAPUCHINJSLOTHJ SLOTH_MANJ GIANT_SLOTHJ SPIDER_MONKEYJSPIDER_MONKEY_MANJGIANT_SPIDER_MONKEYJPANGOLINJ PANGOLIN_MANJGIANT_PANGOLINJ BLACK_MAMBAJBLACK_MAMBA_MANJGIANT_BLACK_MAMBAJ -BEAR_SLOTHJSLOTH_BEAR_MANJGIANT_SLOTH_BEARJAYE-AYEJ AYE-AYE_MANJ GIANT_AYE-AYEJ -BUSHMASTERJBUSHMASTER_MANJGIANT_BUSHMASTERJPYTHONJ -PYTHON_MANJ GIANT_PYTHONJTAPIRJ TAPIR_MANJ GIANT_TAPIRJIMPALAJ -IMPALA_MANJ GIANT_IMPALAJAARDVARKJ AARDVARK_MANJGIANT_AARDVARKJ LION_TAMARINJLION_TAMARIN_MANJGIANT_LION_TAMARINJSTOATJ STOAT_MANJ GIANT_STOATJLYNXJLYNX_MANJ -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/crafts.dfstock b/data/stockpiles/crafts.dfstock index 40124bd3d6..633dd9f1f2 100644 Binary files a/data/stockpiles/crafts.dfstock and b/data/stockpiles/crafts.dfstock differ diff --git a/data/stockpiles/cutgems.dfstock b/data/stockpiles/cutgems.dfstock index 42949b8dcc..1049acd673 100644 Binary files a/data/stockpiles/cutgems.dfstock and b/data/stockpiles/cutgems.dfstock differ diff --git a/data/stockpiles/cutglass.dfstock b/data/stockpiles/cutglass.dfstock index 7523381b41..6997d42acd 100644 Binary files a/data/stockpiles/cutglass.dfstock and b/data/stockpiles/cutglass.dfstock differ diff --git a/data/stockpiles/cutstone.dfstock b/data/stockpiles/cutstone.dfstock index ccbcaf42e9..5e0f3f881b 100644 Binary files a/data/stockpiles/cutstone.dfstock and b/data/stockpiles/cutstone.dfstock differ diff --git a/data/stockpiles/drinkanimal.dfstock b/data/stockpiles/drinkanimal.dfstock deleted file mode 100644 index f3cfabebf1..0000000000 Binary files a/data/stockpiles/drinkanimal.dfstock and /dev/null differ diff --git a/data/stockpiles/dye.dfstock b/data/stockpiles/dye.dfstock index e8ef137d85..67b785d203 100644 Binary files a/data/stockpiles/dye.dfstock and b/data/stockpiles/dye.dfstock differ diff --git a/data/stockpiles/economic.dfstock b/data/stockpiles/economic.dfstock index b69a8034c0..976f4cc11f 100644 Binary files a/data/stockpiles/economic.dfstock and b/data/stockpiles/economic.dfstock differ diff --git a/data/stockpiles/emptyanimaltraps.dfstock b/data/stockpiles/emptyanimaltraps.dfstock deleted file mode 100644 index d9121dc8aa..0000000000 Binary files a/data/stockpiles/emptyanimaltraps.dfstock and /dev/null differ diff --git a/data/stockpiles/emptycages.dfstock b/data/stockpiles/emptycages.dfstock deleted file mode 100644 index 3a66abbd68..0000000000 Binary files a/data/stockpiles/emptycages.dfstock and /dev/null differ diff --git a/data/stockpiles/everything.dfstock b/data/stockpiles/everything.dfstock new file mode 100644 index 0000000000..c0fcb60519 Binary files /dev/null and b/data/stockpiles/everything.dfstock differ diff --git a/data/stockpiles/finishedgoodsprefix.dfstock b/data/stockpiles/finishedgoodsprefix.dfstock deleted file mode 100644 index 556f7d3059..0000000000 Binary files a/data/stockpiles/finishedgoodsprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/flux.dfstock b/data/stockpiles/flux.dfstock index 0b074cca48..ec86187db1 100644 Binary files a/data/stockpiles/flux.dfstock and b/data/stockpiles/flux.dfstock differ diff --git a/data/stockpiles/foodprefix.dfstock b/data/stockpiles/foodprefix.dfstock deleted file mode 100644 index 9333d0c61c..0000000000 --- a/data/stockpiles/foodprefix.dfstock +++ /dev/null @@ -1,18619 +0,0 @@ -©À- -PLANT:WORMY TENDRILS:STRUCTURAL -PLANT:EYEBALL:STRUCTURAL -CREATURE:TOAD:MUSCLE -CREATURE:TOAD:EYE -CREATURE:TOAD:BRAIN -CREATURE:TOAD:LUNG -CREATURE:TOAD:HEART -CREATURE:TOAD:LIVER -CREATURE:TOAD:GUT -CREATURE:TOAD:STOMACH -CREATURE:TOAD:GIZZARD -CREATURE:TOAD:PANCREAS -CREATURE:TOAD:SPLEEN -CREATURE:TOAD:KIDNEY -CREATURE:TOAD_MAN:MUSCLE -CREATURE:TOAD_MAN:EYE -CREATURE:TOAD_MAN:BRAIN -CREATURE:TOAD_MAN:LUNG -CREATURE:TOAD_MAN:HEART -CREATURE:TOAD_MAN:LIVER -CREATURE:TOAD_MAN:GUT -CREATURE:TOAD_MAN:STOMACH -CREATURE:TOAD_MAN:GIZZARD -CREATURE:TOAD_MAN:PANCREAS -CREATURE:TOAD_MAN:SPLEEN -CREATURE:TOAD_MAN:KIDNEY -CREATURE:GIANT_TOAD:MUSCLE -CREATURE:GIANT_TOAD:EYE -CREATURE:GIANT_TOAD:BRAIN -CREATURE:GIANT_TOAD:LUNG -CREATURE:GIANT_TOAD:HEART -CREATURE:GIANT_TOAD:LIVER -CREATURE:GIANT_TOAD:GUT -CREATURE:GIANT_TOAD:STOMACH -CREATURE:GIANT_TOAD:GIZZARD -CREATURE:GIANT_TOAD:PANCREAS -CREATURE:GIANT_TOAD:SPLEEN -CREATURE:GIANT_TOAD:KIDNEY -CREATURE:WORM:MUSCLE -CREATURE:WORM:EYE -CREATURE:WORM:BRAIN -CREATURE:WORM:LUNG -CREATURE:WORM:HEART -CREATURE:WORM:LIVER -CREATURE:WORM:GUT -CREATURE:WORM:STOMACH -CREATURE:WORM:GIZZARD -CREATURE:WORM:PANCREAS -CREATURE:WORM:SPLEEN -CREATURE:WORM:KIDNEY -CREATURE:WORM_MAN:MUSCLE -CREATURE:WORM_MAN:EYE -CREATURE:WORM_MAN:BRAIN -CREATURE:WORM_MAN:LUNG -CREATURE:WORM_MAN:HEART -CREATURE:WORM_MAN:LIVER -CREATURE:WORM_MAN:GUT -CREATURE:WORM_MAN:STOMACH -CREATURE:WORM_MAN:GIZZARD -CREATURE:WORM_MAN:PANCREAS -CREATURE:WORM_MAN:SPLEEN -CREATURE:WORM_MAN:KIDNEY -CREATURE:BIRD_BLUEJAY:MUSCLE -CREATURE:BIRD_BLUEJAY:EYE -CREATURE:BIRD_BLUEJAY:BRAIN -CREATURE:BIRD_BLUEJAY:LUNG -CREATURE:BIRD_BLUEJAY:HEART -CREATURE:BIRD_BLUEJAY:LIVER -CREATURE:BIRD_BLUEJAY:GUT -CREATURE:BIRD_BLUEJAY:STOMACH -CREATURE:BIRD_BLUEJAY:GIZZARD -CREATURE:BIRD_BLUEJAY:PANCREAS -CREATURE:BIRD_BLUEJAY:SPLEEN -CREATURE:BIRD_BLUEJAY:KIDNEY -CREATURE:BLUEJAY_MAN:MUSCLE -CREATURE:BLUEJAY_MAN:EYE -CREATURE:BLUEJAY_MAN:BRAIN -CREATURE:BLUEJAY_MAN:LUNG -CREATURE:BLUEJAY_MAN:HEART -CREATURE:BLUEJAY_MAN:LIVER -CREATURE:BLUEJAY_MAN:GUT -CREATURE:BLUEJAY_MAN:STOMACH -CREATURE:BLUEJAY_MAN:GIZZARD -CREATURE:BLUEJAY_MAN:PANCREAS -CREATURE:BLUEJAY_MAN:SPLEEN -CREATURE:BLUEJAY_MAN:KIDNEY -CREATURE:GIANT_BLUEJAY:MUSCLE -CREATURE:GIANT_BLUEJAY:EYE -CREATURE:GIANT_BLUEJAY:BRAIN -CREATURE:GIANT_BLUEJAY:LUNG -CREATURE:GIANT_BLUEJAY:HEART -CREATURE:GIANT_BLUEJAY:LIVER -CREATURE:GIANT_BLUEJAY:GUT -CREATURE:GIANT_BLUEJAY:STOMACH -CREATURE:GIANT_BLUEJAY:GIZZARD -CREATURE:GIANT_BLUEJAY:PANCREAS -CREATURE:GIANT_BLUEJAY:SPLEEN -CREATURE:GIANT_BLUEJAY:KIDNEY -CREATURE:BIRD_CARDINAL:MUSCLE -CREATURE:BIRD_CARDINAL:EYE -CREATURE:BIRD_CARDINAL:BRAIN -CREATURE:BIRD_CARDINAL:LUNG -CREATURE:BIRD_CARDINAL:HEART -CREATURE:BIRD_CARDINAL:LIVER -CREATURE:BIRD_CARDINAL:GUT -CREATURE:BIRD_CARDINAL:STOMACH -CREATURE:BIRD_CARDINAL:GIZZARD -CREATURE:BIRD_CARDINAL:PANCREAS -CREATURE:BIRD_CARDINAL:SPLEEN -CREATURE:BIRD_CARDINAL:KIDNEY -CREATURE:CARDINAL_MAN:MUSCLE -CREATURE:CARDINAL_MAN:EYE -CREATURE:CARDINAL_MAN:BRAIN -CREATURE:CARDINAL_MAN:LUNG -CREATURE:CARDINAL_MAN:HEART -CREATURE:CARDINAL_MAN:LIVER -CREATURE:CARDINAL_MAN:GUT -CREATURE:CARDINAL_MAN:STOMACH -CREATURE:CARDINAL_MAN:GIZZARD -CREATURE:CARDINAL_MAN:PANCREAS -CREATURE:CARDINAL_MAN:SPLEEN -CREATURE:CARDINAL_MAN:KIDNEY -CREATURE:GIANT_CARDINAL:MUSCLE -CREATURE:GIANT_CARDINAL:EYE -CREATURE:GIANT_CARDINAL:BRAIN -CREATURE:GIANT_CARDINAL:LUNG -CREATURE:GIANT_CARDINAL:HEART -CREATURE:GIANT_CARDINAL:LIVER -CREATURE:GIANT_CARDINAL:GUT -CREATURE:GIANT_CARDINAL:STOMACH -CREATURE:GIANT_CARDINAL:GIZZARD - CREATURE:GIANT_CARDINAL:PANCREAS -CREATURE:GIANT_CARDINAL:SPLEEN -CREATURE:GIANT_CARDINAL:KIDNEY -CREATURE:BIRD_GRACKLE:MUSCLE -CREATURE:BIRD_GRACKLE:EYE -CREATURE:BIRD_GRACKLE:BRAIN -CREATURE:BIRD_GRACKLE:LUNG -CREATURE:BIRD_GRACKLE:HEART -CREATURE:BIRD_GRACKLE:LIVER -CREATURE:BIRD_GRACKLE:GUT -CREATURE:BIRD_GRACKLE:STOMACH -CREATURE:BIRD_GRACKLE:GIZZARD -CREATURE:BIRD_GRACKLE:PANCREAS -CREATURE:BIRD_GRACKLE:SPLEEN -CREATURE:BIRD_GRACKLE:KIDNEY -CREATURE:GRACKLE_MAN:MUSCLE -CREATURE:GRACKLE_MAN:EYE -CREATURE:GRACKLE_MAN:BRAIN -CREATURE:GRACKLE_MAN:LUNG -CREATURE:GRACKLE_MAN:HEART -CREATURE:GRACKLE_MAN:LIVER -CREATURE:GRACKLE_MAN:GUT -CREATURE:GRACKLE_MAN:STOMACH -CREATURE:GRACKLE_MAN:GIZZARD -CREATURE:GRACKLE_MAN:PANCREAS -CREATURE:GRACKLE_MAN:SPLEEN -CREATURE:GRACKLE_MAN:KIDNEY -CREATURE:GIANT_GRACKLE:MUSCLE -CREATURE:GIANT_GRACKLE:EYE -CREATURE:GIANT_GRACKLE:BRAIN -CREATURE:GIANT_GRACKLE:LUNG -CREATURE:GIANT_GRACKLE:HEART -CREATURE:GIANT_GRACKLE:LIVER -CREATURE:GIANT_GRACKLE:GUT -CREATURE:GIANT_GRACKLE:STOMACH -CREATURE:GIANT_GRACKLE:GIZZARD -CREATURE:GIANT_GRACKLE:PANCREAS -CREATURE:GIANT_GRACKLE:SPLEEN -CREATURE:GIANT_GRACKLE:KIDNEY -CREATURE:BIRD_ORIOLE:MUSCLE -CREATURE:BIRD_ORIOLE:EYE -CREATURE:BIRD_ORIOLE:BRAIN -CREATURE:BIRD_ORIOLE:LUNG -CREATURE:BIRD_ORIOLE:HEART -CREATURE:BIRD_ORIOLE:LIVER -CREATURE:BIRD_ORIOLE:GUT -CREATURE:BIRD_ORIOLE:STOMACH -CREATURE:BIRD_ORIOLE:GIZZARD -CREATURE:BIRD_ORIOLE:PANCREAS -CREATURE:BIRD_ORIOLE:SPLEEN -CREATURE:BIRD_ORIOLE:KIDNEY -CREATURE:ORIOLE_MAN:MUSCLE -CREATURE:ORIOLE_MAN:EYE -CREATURE:ORIOLE_MAN:BRAIN -CREATURE:ORIOLE_MAN:LUNG -CREATURE:ORIOLE_MAN:HEART -CREATURE:ORIOLE_MAN:LIVER -CREATURE:ORIOLE_MAN:GUT -CREATURE:ORIOLE_MAN:STOMACH -CREATURE:ORIOLE_MAN:GIZZARD -CREATURE:ORIOLE_MAN:PANCREAS -CREATURE:ORIOLE_MAN:SPLEEN -CREATURE:ORIOLE_MAN:KIDNEY -CREATURE:GIANT_ORIOLE:MUSCLE -CREATURE:GIANT_ORIOLE:EYE -CREATURE:GIANT_ORIOLE:BRAIN -CREATURE:GIANT_ORIOLE:LUNG -CREATURE:GIANT_ORIOLE:HEART -CREATURE:GIANT_ORIOLE:LIVER -CREATURE:GIANT_ORIOLE:GUT -CREATURE:GIANT_ORIOLE:STOMACH -CREATURE:GIANT_ORIOLE:GIZZARD -CREATURE:GIANT_ORIOLE:PANCREAS -CREATURE:GIANT_ORIOLE:SPLEEN -CREATURE:GIANT_ORIOLE:KIDNEY -!CREATURE:BIRD_RW_BLACKBIRD:MUSCLE -CREATURE:BIRD_RW_BLACKBIRD:EYE - CREATURE:BIRD_RW_BLACKBIRD:BRAIN -CREATURE:BIRD_RW_BLACKBIRD:LUNG - CREATURE:BIRD_RW_BLACKBIRD:HEART - CREATURE:BIRD_RW_BLACKBIRD:LIVER -CREATURE:BIRD_RW_BLACKBIRD:GUT -"CREATURE:BIRD_RW_BLACKBIRD:STOMACH -"CREATURE:BIRD_RW_BLACKBIRD:GIZZARD -#CREATURE:BIRD_RW_BLACKBIRD:PANCREAS -!CREATURE:BIRD_RW_BLACKBIRD:SPLEEN -!CREATURE:BIRD_RW_BLACKBIRD:KIDNEY - CREATURE:RW_BLACKBIRD_MAN:MUSCLE -CREATURE:RW_BLACKBIRD_MAN:EYE -CREATURE:RW_BLACKBIRD_MAN:BRAIN -CREATURE:RW_BLACKBIRD_MAN:LUNG -CREATURE:RW_BLACKBIRD_MAN:HEART -CREATURE:RW_BLACKBIRD_MAN:LIVER -CREATURE:RW_BLACKBIRD_MAN:GUT -!CREATURE:RW_BLACKBIRD_MAN:STOMACH -!CREATURE:RW_BLACKBIRD_MAN:GIZZARD -"CREATURE:RW_BLACKBIRD_MAN:PANCREAS - CREATURE:RW_BLACKBIRD_MAN:SPLEEN - CREATURE:RW_BLACKBIRD_MAN:KIDNEY -"CREATURE:GIANT_RW_BLACKBIRD:MUSCLE -CREATURE:GIANT_RW_BLACKBIRD:EYE -!CREATURE:GIANT_RW_BLACKBIRD:BRAIN - CREATURE:GIANT_RW_BLACKBIRD:LUNG -!CREATURE:GIANT_RW_BLACKBIRD:HEART -!CREATURE:GIANT_RW_BLACKBIRD:LIVER -CREATURE:GIANT_RW_BLACKBIRD:GUT -#CREATURE:GIANT_RW_BLACKBIRD:STOMACH -#CREATURE:GIANT_RW_BLACKBIRD:GIZZARD -$CREATURE:GIANT_RW_BLACKBIRD:PANCREAS -"CREATURE:GIANT_RW_BLACKBIRD:SPLEEN -"CREATURE:GIANT_RW_BLACKBIRD:KIDNEY -CREATURE:BIRD_PENGUIN:MUSCLE -CREATURE:BIRD_PENGUIN:EYE -CREATURE:BIRD_PENGUIN:BRAIN -CREATURE:BIRD_PENGUIN:LUNG -CREATURE:BIRD_PENGUIN:HEART -CREATURE:BIRD_PENGUIN:LIVER -CREATURE:BIRD_PENGUIN:GUT -CREATURE:BIRD_PENGUIN:STOMACH -CREATURE:BIRD_PENGUIN:GIZZARD -CREATURE:BIRD_PENGUIN:PANCREAS -CREATURE:BIRD_PENGUIN:SPLEEN -CREATURE:BIRD_PENGUIN:KIDNEY -#CREATURE:BIRD_PENGUIN_LITTLE:MUSCLE - CREATURE:BIRD_PENGUIN_LITTLE:EYE -"CREATURE:BIRD_PENGUIN_LITTLE:BRAIN -!CREATURE:BIRD_PENGUIN_LITTLE:LUNG -"CREATURE:BIRD_PENGUIN_LITTLE:HEART -"CREATURE:BIRD_PENGUIN_LITTLE:LIVER - CREATURE:BIRD_PENGUIN_LITTLE:GUT -$CREATURE:BIRD_PENGUIN_LITTLE:STOMACH -$CREATURE:BIRD_PENGUIN_LITTLE:GIZZARD -%CREATURE:BIRD_PENGUIN_LITTLE:PANCREAS -#CREATURE:BIRD_PENGUIN_LITTLE:SPLEEN -#CREATURE:BIRD_PENGUIN_LITTLE:KIDNEY -$CREATURE:BIRD_PENGUIN_EMPEROR:MUSCLE -!CREATURE:BIRD_PENGUIN_EMPEROR:EYE -#CREATURE:BIRD_PENGUIN_EMPEROR:BRAIN -"CREATURE:BIRD_PENGUIN_EMPEROR:LUNG -#CREATURE:BIRD_PENGUIN_EMPEROR:HEART -#CREATURE:BIRD_PENGUIN_EMPEROR:LIVER -!CREATURE:BIRD_PENGUIN_EMPEROR:GUT -%CREATURE:BIRD_PENGUIN_EMPEROR:STOMACH -%CREATURE:BIRD_PENGUIN_EMPEROR:GIZZARD -&CREATURE:BIRD_PENGUIN_EMPEROR:PANCREAS -$CREATURE:BIRD_PENGUIN_EMPEROR:SPLEEN -$CREATURE:BIRD_PENGUIN_EMPEROR:KIDNEY -CREATURE:PENGUIN MAN:MUSCLE -CREATURE:PENGUIN MAN:EYE -CREATURE:PENGUIN MAN:BRAIN -CREATURE:PENGUIN MAN:LUNG -CREATURE:PENGUIN MAN:HEART -CREATURE:PENGUIN MAN:LIVER -CREATURE:PENGUIN MAN:GUT -CREATURE:PENGUIN MAN:STOMACH -CREATURE:PENGUIN MAN:GIZZARD -CREATURE:PENGUIN MAN:PANCREAS -CREATURE:PENGUIN MAN:SPLEEN -CREATURE:PENGUIN MAN:KIDNEY -"CREATURE:BIRD_PENGUIN_GIANT:MUSCLE -CREATURE:BIRD_PENGUIN_GIANT:EYE -!CREATURE:BIRD_PENGUIN_GIANT:BRAIN - CREATURE:BIRD_PENGUIN_GIANT:LUNG -!CREATURE:BIRD_PENGUIN_GIANT:HEART -!CREATURE:BIRD_PENGUIN_GIANT:LIVER -CREATURE:BIRD_PENGUIN_GIANT:GUT -#CREATURE:BIRD_PENGUIN_GIANT:STOMACH -#CREATURE:BIRD_PENGUIN_GIANT:GIZZARD -$CREATURE:BIRD_PENGUIN_GIANT:PANCREAS -"CREATURE:BIRD_PENGUIN_GIANT:SPLEEN -"CREATURE:BIRD_PENGUIN_GIANT:KIDNEY -%CREATURE:BIRD_FALCON_PEREGRINE:MUSCLE -"CREATURE:BIRD_FALCON_PEREGRINE:EYE -$CREATURE:BIRD_FALCON_PEREGRINE:BRAIN -#CREATURE:BIRD_FALCON_PEREGRINE:LUNG -$CREATURE:BIRD_FALCON_PEREGRINE:HEART -$CREATURE:BIRD_FALCON_PEREGRINE:LIVER -"CREATURE:BIRD_FALCON_PEREGRINE:GUT -&CREATURE:BIRD_FALCON_PEREGRINE:STOMACH -&CREATURE:BIRD_FALCON_PEREGRINE:GIZZARD -'CREATURE:BIRD_FALCON_PEREGRINE:PANCREAS -%CREATURE:BIRD_FALCON_PEREGRINE:SPLEEN -%CREATURE:BIRD_FALCON_PEREGRINE:KIDNEY -$CREATURE:PEREGRINE FALCON MAN:MUSCLE -!CREATURE:PEREGRINE FALCON MAN:EYE -#CREATURE:PEREGRINE FALCON MAN:BRAIN -"CREATURE:PEREGRINE FALCON MAN:LUNG -#CREATURE:PEREGRINE FALCON MAN:HEART -#CREATURE:PEREGRINE FALCON MAN:LIVER -!CREATURE:PEREGRINE FALCON MAN:GUT -%CREATURE:PEREGRINE FALCON MAN:STOMACH -%CREATURE:PEREGRINE FALCON MAN:GIZZARD -&CREATURE:PEREGRINE FALCON MAN:PANCREAS -$CREATURE:PEREGRINE FALCON MAN:SPLEEN -$CREATURE:PEREGRINE FALCON MAN:KIDNEY -&CREATURE:GIANT PEREGRINE FALCON:MUSCLE -#CREATURE:GIANT PEREGRINE FALCON:EYE -%CREATURE:GIANT PEREGRINE FALCON:BRAIN -$CREATURE:GIANT PEREGRINE FALCON:LUNG -%CREATURE:GIANT PEREGRINE FALCON:HEART -%CREATURE:GIANT PEREGRINE FALCON:LIVER -#CREATURE:GIANT PEREGRINE FALCON:GUT -'CREATURE:GIANT PEREGRINE FALCON:STOMACH -'CREATURE:GIANT PEREGRINE FALCON:GIZZARD -(CREATURE:GIANT PEREGRINE FALCON:PANCREAS -&CREATURE:GIANT PEREGRINE FALCON:SPLEEN -&CREATURE:GIANT PEREGRINE FALCON:KIDNEY -CREATURE:BIRD_KIWI:MUSCLE -CREATURE:BIRD_KIWI:EYE -CREATURE:BIRD_KIWI:BRAIN -CREATURE:BIRD_KIWI:LUNG -CREATURE:BIRD_KIWI:HEART -CREATURE:BIRD_KIWI:LIVER -CREATURE:BIRD_KIWI:GUT -CREATURE:BIRD_KIWI:STOMACH -CREATURE:BIRD_KIWI:GIZZARD -CREATURE:BIRD_KIWI:PANCREAS -CREATURE:BIRD_KIWI:SPLEEN -CREATURE:BIRD_KIWI:KIDNEY -CREATURE:KIWI MAN:MUSCLE -CREATURE:KIWI MAN:EYE -CREATURE:KIWI MAN:BRAIN -CREATURE:KIWI MAN:LUNG -CREATURE:KIWI MAN:HEART -CREATURE:KIWI MAN:LIVER -CREATURE:KIWI MAN:GUT -CREATURE:KIWI MAN:STOMACH -CREATURE:KIWI MAN:GIZZARD -CREATURE:KIWI MAN:PANCREAS -CREATURE:KIWI MAN:SPLEEN -CREATURE:KIWI MAN:KIDNEY -CREATURE:BIRD_KIWI_GIANT:MUSCLE -CREATURE:BIRD_KIWI_GIANT:EYE -CREATURE:BIRD_KIWI_GIANT:BRAIN -CREATURE:BIRD_KIWI_GIANT:LUNG -CREATURE:BIRD_KIWI_GIANT:HEART -CREATURE:BIRD_KIWI_GIANT:LIVER -CREATURE:BIRD_KIWI_GIANT:GUT - CREATURE:BIRD_KIWI_GIANT:STOMACH - CREATURE:BIRD_KIWI_GIANT:GIZZARD -!CREATURE:BIRD_KIWI_GIANT:PANCREAS -CREATURE:BIRD_KIWI_GIANT:SPLEEN -CREATURE:BIRD_KIWI_GIANT:KIDNEY -CREATURE:BIRD_OSTRICH:MUSCLE -CREATURE:BIRD_OSTRICH:EYE -CREATURE:BIRD_OSTRICH:BRAIN -CREATURE:BIRD_OSTRICH:LUNG -CREATURE:BIRD_OSTRICH:HEART -CREATURE:BIRD_OSTRICH:LIVER -CREATURE:BIRD_OSTRICH:GUT -CREATURE:BIRD_OSTRICH:STOMACH -CREATURE:BIRD_OSTRICH:GIZZARD -CREATURE:BIRD_OSTRICH:PANCREAS -CREATURE:BIRD_OSTRICH:SPLEEN -CREATURE:BIRD_OSTRICH:KIDNEY -CREATURE:OSTRICH MAN:MUSCLE -CREATURE:OSTRICH MAN:EYE -CREATURE:OSTRICH MAN:BRAIN -CREATURE:OSTRICH MAN:LUNG -CREATURE:OSTRICH MAN:HEART -CREATURE:OSTRICH MAN:LIVER -CREATURE:OSTRICH MAN:GUT -CREATURE:OSTRICH MAN:STOMACH -CREATURE:OSTRICH MAN:GIZZARD -CREATURE:OSTRICH MAN:PANCREAS -CREATURE:OSTRICH MAN:SPLEEN -CREATURE:OSTRICH MAN:KIDNEY -"CREATURE:BIRD_OSTRICH_GIANT:MUSCLE -CREATURE:BIRD_OSTRICH_GIANT:EYE -!CREATURE:BIRD_OSTRICH_GIANT:BRAIN - CREATURE:BIRD_OSTRICH_GIANT:LUNG -!CREATURE:BIRD_OSTRICH_GIANT:HEART -!CREATURE:BIRD_OSTRICH_GIANT:LIVER -CREATURE:BIRD_OSTRICH_GIANT:GUT -#CREATURE:BIRD_OSTRICH_GIANT:STOMACH -#CREATURE:BIRD_OSTRICH_GIANT:GIZZARD -$CREATURE:BIRD_OSTRICH_GIANT:PANCREAS -"CREATURE:BIRD_OSTRICH_GIANT:SPLEEN -"CREATURE:BIRD_OSTRICH_GIANT:KIDNEY -CREATURE:BIRD_CROW:MUSCLE -CREATURE:BIRD_CROW:EYE -CREATURE:BIRD_CROW:BRAIN -CREATURE:BIRD_CROW:LUNG -CREATURE:BIRD_CROW:HEART -CREATURE:BIRD_CROW:LIVER -CREATURE:BIRD_CROW:GUT -CREATURE:BIRD_CROW:STOMACH -CREATURE:BIRD_CROW:GIZZARD -CREATURE:BIRD_CROW:PANCREAS -CREATURE:BIRD_CROW:SPLEEN -CREATURE:BIRD_CROW:KIDNEY -CREATURE:CROW_MAN:MUSCLE -CREATURE:CROW_MAN:EYE -CREATURE:CROW_MAN:BRAIN -CREATURE:CROW_MAN:LUNG -CREATURE:CROW_MAN:HEART -CREATURE:CROW_MAN:LIVER -CREATURE:CROW_MAN:GUT -CREATURE:CROW_MAN:STOMACH -CREATURE:CROW_MAN:GIZZARD -CREATURE:CROW_MAN:PANCREAS -CREATURE:CROW_MAN:SPLEEN -CREATURE:CROW_MAN:KIDNEY -CREATURE:GIANT_CROW:MUSCLE -CREATURE:GIANT_CROW:EYE -CREATURE:GIANT_CROW:BRAIN -CREATURE:GIANT_CROW:LUNG -CREATURE:GIANT_CROW:HEART -CREATURE:GIANT_CROW:LIVER -CREATURE:GIANT_CROW:GUT -CREATURE:GIANT_CROW:STOMACH -CREATURE:GIANT_CROW:GIZZARD -CREATURE:GIANT_CROW:PANCREAS -CREATURE:GIANT_CROW:SPLEEN -CREATURE:GIANT_CROW:KIDNEY -CREATURE:BIRD_RAVEN:MUSCLE -CREATURE:BIRD_RAVEN:EYE -CREATURE:BIRD_RAVEN:BRAIN -CREATURE:BIRD_RAVEN:LUNG -CREATURE:BIRD_RAVEN:HEART -CREATURE:BIRD_RAVEN:LIVER -CREATURE:BIRD_RAVEN:GUT -CREATURE:BIRD_RAVEN:STOMACH -CREATURE:BIRD_RAVEN:GIZZARD -CREATURE:BIRD_RAVEN:PANCREAS -CREATURE:BIRD_RAVEN:SPLEEN -CREATURE:BIRD_RAVEN:KIDNEY -CREATURE:RAVEN_MAN:MUSCLE -CREATURE:RAVEN_MAN:EYE -CREATURE:RAVEN_MAN:BRAIN -CREATURE:RAVEN_MAN:LUNG -CREATURE:RAVEN_MAN:HEART -CREATURE:RAVEN_MAN:LIVER -CREATURE:RAVEN_MAN:GUT -CREATURE:RAVEN_MAN:STOMACH -CREATURE:RAVEN_MAN:GIZZARD -CREATURE:RAVEN_MAN:PANCREAS -CREATURE:RAVEN_MAN:SPLEEN -CREATURE:RAVEN_MAN:KIDNEY -CREATURE:GIANT_RAVEN:MUSCLE -CREATURE:GIANT_RAVEN:EYE -CREATURE:GIANT_RAVEN:BRAIN -CREATURE:GIANT_RAVEN:LUNG -CREATURE:GIANT_RAVEN:HEART -CREATURE:GIANT_RAVEN:LIVER -CREATURE:GIANT_RAVEN:GUT -CREATURE:GIANT_RAVEN:STOMACH -CREATURE:GIANT_RAVEN:GIZZARD -CREATURE:GIANT_RAVEN:PANCREAS -CREATURE:GIANT_RAVEN:SPLEEN -CREATURE:GIANT_RAVEN:KIDNEY -CREATURE:BIRD_CASSOWARY:MUSCLE -CREATURE:BIRD_CASSOWARY:EYE -CREATURE:BIRD_CASSOWARY:BRAIN -CREATURE:BIRD_CASSOWARY:LUNG -CREATURE:BIRD_CASSOWARY:HEART -CREATURE:BIRD_CASSOWARY:LIVER -CREATURE:BIRD_CASSOWARY:GUT -CREATURE:BIRD_CASSOWARY:STOMACH -CREATURE:BIRD_CASSOWARY:GIZZARD - CREATURE:BIRD_CASSOWARY:PANCREAS -CREATURE:BIRD_CASSOWARY:SPLEEN -CREATURE:BIRD_CASSOWARY:KIDNEY -CREATURE:CASSOWARY_MAN:MUSCLE -CREATURE:CASSOWARY_MAN:EYE -CREATURE:CASSOWARY_MAN:BRAIN -CREATURE:CASSOWARY_MAN:LUNG -CREATURE:CASSOWARY_MAN:HEART -CREATURE:CASSOWARY_MAN:LIVER -CREATURE:CASSOWARY_MAN:GUT -CREATURE:CASSOWARY_MAN:STOMACH -CREATURE:CASSOWARY_MAN:GIZZARD -CREATURE:CASSOWARY_MAN:PANCREAS -CREATURE:CASSOWARY_MAN:SPLEEN -CREATURE:CASSOWARY_MAN:KIDNEY -CREATURE:GIANT_CASSOWARY:MUSCLE -CREATURE:GIANT_CASSOWARY:EYE -CREATURE:GIANT_CASSOWARY:BRAIN -CREATURE:GIANT_CASSOWARY:LUNG -CREATURE:GIANT_CASSOWARY:HEART -CREATURE:GIANT_CASSOWARY:LIVER -CREATURE:GIANT_CASSOWARY:GUT - CREATURE:GIANT_CASSOWARY:STOMACH - CREATURE:GIANT_CASSOWARY:GIZZARD -!CREATURE:GIANT_CASSOWARY:PANCREAS -CREATURE:GIANT_CASSOWARY:SPLEEN -CREATURE:GIANT_CASSOWARY:KIDNEY -CREATURE:BIRD_KEA:MUSCLE -CREATURE:BIRD_KEA:EYE -CREATURE:BIRD_KEA:BRAIN -CREATURE:BIRD_KEA:LUNG -CREATURE:BIRD_KEA:HEART -CREATURE:BIRD_KEA:LIVER -CREATURE:BIRD_KEA:GUT -CREATURE:BIRD_KEA:STOMACH -CREATURE:BIRD_KEA:GIZZARD -CREATURE:BIRD_KEA:PANCREAS -CREATURE:BIRD_KEA:SPLEEN -CREATURE:BIRD_KEA:KIDNEY -CREATURE:KEA_MAN:MUSCLE -CREATURE:KEA_MAN:EYE -CREATURE:KEA_MAN:BRAIN -CREATURE:KEA_MAN:LUNG -CREATURE:KEA_MAN:HEART -CREATURE:KEA_MAN:LIVER -CREATURE:KEA_MAN:GUT -CREATURE:KEA_MAN:STOMACH -CREATURE:KEA_MAN:GIZZARD -CREATURE:KEA_MAN:PANCREAS -CREATURE:KEA_MAN:SPLEEN -CREATURE:KEA_MAN:KIDNEY -CREATURE:GIANT_KEA:MUSCLE -CREATURE:GIANT_KEA:EYE -CREATURE:GIANT_KEA:BRAIN -CREATURE:GIANT_KEA:LUNG -CREATURE:GIANT_KEA:HEART -CREATURE:GIANT_KEA:LIVER -CREATURE:GIANT_KEA:GUT -CREATURE:GIANT_KEA:STOMACH -CREATURE:GIANT_KEA:GIZZARD -CREATURE:GIANT_KEA:PANCREAS -CREATURE:GIANT_KEA:SPLEEN -CREATURE:GIANT_KEA:KIDNEY -CREATURE:BIRD_OWL_SNOWY:MUSCLE -CREATURE:BIRD_OWL_SNOWY:EYE -CREATURE:BIRD_OWL_SNOWY:BRAIN -CREATURE:BIRD_OWL_SNOWY:LUNG -CREATURE:BIRD_OWL_SNOWY:HEART -CREATURE:BIRD_OWL_SNOWY:LIVER -CREATURE:BIRD_OWL_SNOWY:GUT -CREATURE:BIRD_OWL_SNOWY:STOMACH -CREATURE:BIRD_OWL_SNOWY:GIZZARD - CREATURE:BIRD_OWL_SNOWY:PANCREAS -CREATURE:BIRD_OWL_SNOWY:SPLEEN -CREATURE:BIRD_OWL_SNOWY:KIDNEY -CREATURE:SNOWY_OWL_MAN:MUSCLE -CREATURE:SNOWY_OWL_MAN:EYE -CREATURE:SNOWY_OWL_MAN:BRAIN -CREATURE:SNOWY_OWL_MAN:LUNG -CREATURE:SNOWY_OWL_MAN:HEART -CREATURE:SNOWY_OWL_MAN:LIVER -CREATURE:SNOWY_OWL_MAN:GUT -CREATURE:SNOWY_OWL_MAN:STOMACH -CREATURE:SNOWY_OWL_MAN:GIZZARD -CREATURE:SNOWY_OWL_MAN:PANCREAS -CREATURE:SNOWY_OWL_MAN:SPLEEN -CREATURE:SNOWY_OWL_MAN:KIDNEY -CREATURE:GIANT_SNOWY_OWL:MUSCLE -CREATURE:GIANT_SNOWY_OWL:EYE -CREATURE:GIANT_SNOWY_OWL:BRAIN -CREATURE:GIANT_SNOWY_OWL:LUNG -CREATURE:GIANT_SNOWY_OWL:HEART -CREATURE:GIANT_SNOWY_OWL:LIVER -CREATURE:GIANT_SNOWY_OWL:GUT - CREATURE:GIANT_SNOWY_OWL:STOMACH - CREATURE:GIANT_SNOWY_OWL:GIZZARD -!CREATURE:GIANT_SNOWY_OWL:PANCREAS -CREATURE:GIANT_SNOWY_OWL:SPLEEN -CREATURE:GIANT_SNOWY_OWL:KIDNEY -CREATURE:SPARROW:MUSCLE -CREATURE:SPARROW:EYE -CREATURE:SPARROW:BRAIN -CREATURE:SPARROW:LUNG -CREATURE:SPARROW:HEART -CREATURE:SPARROW:LIVER -CREATURE:SPARROW:GUT -CREATURE:SPARROW:STOMACH -CREATURE:SPARROW:GIZZARD -CREATURE:SPARROW:PANCREAS -CREATURE:SPARROW:SPLEEN -CREATURE:SPARROW:KIDNEY -CREATURE:SPARROW_MAN:MUSCLE -CREATURE:SPARROW_MAN:EYE -CREATURE:SPARROW_MAN:BRAIN -CREATURE:SPARROW_MAN:LUNG -CREATURE:SPARROW_MAN:HEART -CREATURE:SPARROW_MAN:LIVER -CREATURE:SPARROW_MAN:GUT -CREATURE:SPARROW_MAN:STOMACH -CREATURE:SPARROW_MAN:GIZZARD -CREATURE:SPARROW_MAN:PANCREAS -CREATURE:SPARROW_MAN:SPLEEN -CREATURE:SPARROW_MAN:KIDNEY -CREATURE:GIANT_SPARROW:MUSCLE -CREATURE:GIANT_SPARROW:EYE -CREATURE:GIANT_SPARROW:BRAIN -CREATURE:GIANT_SPARROW:LUNG -CREATURE:GIANT_SPARROW:HEART -CREATURE:GIANT_SPARROW:LIVER -CREATURE:GIANT_SPARROW:GUT -CREATURE:GIANT_SPARROW:STOMACH -CREATURE:GIANT_SPARROW:GIZZARD -CREATURE:GIANT_SPARROW:PANCREAS -CREATURE:GIANT_SPARROW:SPLEEN -CREATURE:GIANT_SPARROW:KIDNEY - CREATURE:BIRD_STORK_WHITE:MUSCLE -CREATURE:BIRD_STORK_WHITE:EYE -CREATURE:BIRD_STORK_WHITE:BRAIN -CREATURE:BIRD_STORK_WHITE:LUNG -CREATURE:BIRD_STORK_WHITE:HEART -CREATURE:BIRD_STORK_WHITE:LIVER -CREATURE:BIRD_STORK_WHITE:GUT -!CREATURE:BIRD_STORK_WHITE:STOMACH -!CREATURE:BIRD_STORK_WHITE:GIZZARD -"CREATURE:BIRD_STORK_WHITE:PANCREAS - CREATURE:BIRD_STORK_WHITE:SPLEEN - CREATURE:BIRD_STORK_WHITE:KIDNEY -CREATURE:WHITE_STORK_MAN:MUSCLE -CREATURE:WHITE_STORK_MAN:EYE -CREATURE:WHITE_STORK_MAN:BRAIN -CREATURE:WHITE_STORK_MAN:LUNG -CREATURE:WHITE_STORK_MAN:HEART -CREATURE:WHITE_STORK_MAN:LIVER -CREATURE:WHITE_STORK_MAN:GUT - CREATURE:WHITE_STORK_MAN:STOMACH - CREATURE:WHITE_STORK_MAN:GIZZARD -!CREATURE:WHITE_STORK_MAN:PANCREAS -CREATURE:WHITE_STORK_MAN:SPLEEN -CREATURE:WHITE_STORK_MAN:KIDNEY -!CREATURE:GIANT_WHITE_STORK:MUSCLE -CREATURE:GIANT_WHITE_STORK:EYE - CREATURE:GIANT_WHITE_STORK:BRAIN -CREATURE:GIANT_WHITE_STORK:LUNG - CREATURE:GIANT_WHITE_STORK:HEART - CREATURE:GIANT_WHITE_STORK:LIVER -CREATURE:GIANT_WHITE_STORK:GUT -"CREATURE:GIANT_WHITE_STORK:STOMACH -"CREATURE:GIANT_WHITE_STORK:GIZZARD -#CREATURE:GIANT_WHITE_STORK:PANCREAS -!CREATURE:GIANT_WHITE_STORK:SPLEEN -!CREATURE:GIANT_WHITE_STORK:KIDNEY -CREATURE:BIRD_LOON:MUSCLE -CREATURE:BIRD_LOON:EYE -CREATURE:BIRD_LOON:BRAIN -CREATURE:BIRD_LOON:LUNG -CREATURE:BIRD_LOON:HEART -CREATURE:BIRD_LOON:LIVER -CREATURE:BIRD_LOON:GUT -CREATURE:BIRD_LOON:STOMACH -CREATURE:BIRD_LOON:GIZZARD -CREATURE:BIRD_LOON:PANCREAS -CREATURE:BIRD_LOON:SPLEEN -CREATURE:BIRD_LOON:KIDNEY -CREATURE:LOON_MAN:MUSCLE -CREATURE:LOON_MAN:EYE -CREATURE:LOON_MAN:BRAIN -CREATURE:LOON_MAN:LUNG -CREATURE:LOON_MAN:HEART -CREATURE:LOON_MAN:LIVER -CREATURE:LOON_MAN:GUT -CREATURE:LOON_MAN:STOMACH -CREATURE:LOON_MAN:GIZZARD -CREATURE:LOON_MAN:PANCREAS -CREATURE:LOON_MAN:SPLEEN -CREATURE:LOON_MAN:KIDNEY -CREATURE:GIANT_LOON:MUSCLE -CREATURE:GIANT_LOON:EYE -CREATURE:GIANT_LOON:BRAIN -CREATURE:GIANT_LOON:LUNG -CREATURE:GIANT_LOON:HEART -CREATURE:GIANT_LOON:LIVER -CREATURE:GIANT_LOON:GUT -CREATURE:GIANT_LOON:STOMACH -CREATURE:GIANT_LOON:GIZZARD -CREATURE:GIANT_LOON:PANCREAS -CREATURE:GIANT_LOON:SPLEEN -CREATURE:GIANT_LOON:KIDNEY -CREATURE:BIRD_OWL_BARN:MUSCLE -CREATURE:BIRD_OWL_BARN:EYE -CREATURE:BIRD_OWL_BARN:BRAIN -CREATURE:BIRD_OWL_BARN:LUNG -CREATURE:BIRD_OWL_BARN:HEART -CREATURE:BIRD_OWL_BARN:LIVER -CREATURE:BIRD_OWL_BARN:GUT -CREATURE:BIRD_OWL_BARN:STOMACH -CREATURE:BIRD_OWL_BARN:GIZZARD -CREATURE:BIRD_OWL_BARN:PANCREAS -CREATURE:BIRD_OWL_BARN:SPLEEN -CREATURE:BIRD_OWL_BARN:KIDNEY -CREATURE:BARN_OWL_MAN:MUSCLE -CREATURE:BARN_OWL_MAN:EYE -CREATURE:BARN_OWL_MAN:BRAIN -CREATURE:BARN_OWL_MAN:LUNG -CREATURE:BARN_OWL_MAN:HEART -CREATURE:BARN_OWL_MAN:LIVER -CREATURE:BARN_OWL_MAN:GUT -CREATURE:BARN_OWL_MAN:STOMACH -CREATURE:BARN_OWL_MAN:GIZZARD -CREATURE:BARN_OWL_MAN:PANCREAS -CREATURE:BARN_OWL_MAN:SPLEEN -CREATURE:BARN_OWL_MAN:KIDNEY -CREATURE:GIANT_BARN_OWL:MUSCLE -CREATURE:GIANT_BARN_OWL:EYE -CREATURE:GIANT_BARN_OWL:BRAIN -CREATURE:GIANT_BARN_OWL:LUNG -CREATURE:GIANT_BARN_OWL:HEART -CREATURE:GIANT_BARN_OWL:LIVER -CREATURE:GIANT_BARN_OWL:GUT -CREATURE:GIANT_BARN_OWL:STOMACH -CREATURE:GIANT_BARN_OWL:GIZZARD - CREATURE:GIANT_BARN_OWL:PANCREAS -CREATURE:GIANT_BARN_OWL:SPLEEN -CREATURE:GIANT_BARN_OWL:KIDNEY -CREATURE:BIRD_PARAKEET:MUSCLE -CREATURE:BIRD_PARAKEET:EYE -CREATURE:BIRD_PARAKEET:BRAIN -CREATURE:BIRD_PARAKEET:LUNG -CREATURE:BIRD_PARAKEET:HEART -CREATURE:BIRD_PARAKEET:LIVER -CREATURE:BIRD_PARAKEET:GUT -CREATURE:BIRD_PARAKEET:STOMACH -CREATURE:BIRD_PARAKEET:GIZZARD -CREATURE:BIRD_PARAKEET:PANCREAS -CREATURE:BIRD_PARAKEET:SPLEEN -CREATURE:BIRD_PARAKEET:KIDNEY -CREATURE:PARAKEET_MAN:MUSCLE -CREATURE:PARAKEET_MAN:EYE -CREATURE:PARAKEET_MAN:BRAIN -CREATURE:PARAKEET_MAN:LUNG -CREATURE:PARAKEET_MAN:HEART -CREATURE:PARAKEET_MAN:LIVER -CREATURE:PARAKEET_MAN:GUT -CREATURE:PARAKEET_MAN:STOMACH -CREATURE:PARAKEET_MAN:GIZZARD -CREATURE:PARAKEET_MAN:PANCREAS -CREATURE:PARAKEET_MAN:SPLEEN -CREATURE:PARAKEET_MAN:KIDNEY -CREATURE:GIANT_PARAKEET:MUSCLE -CREATURE:GIANT_PARAKEET:EYE -CREATURE:GIANT_PARAKEET:BRAIN -CREATURE:GIANT_PARAKEET:LUNG -CREATURE:GIANT_PARAKEET:HEART -CREATURE:GIANT_PARAKEET:LIVER -CREATURE:GIANT_PARAKEET:GUT -CREATURE:GIANT_PARAKEET:STOMACH -CREATURE:GIANT_PARAKEET:GIZZARD - CREATURE:GIANT_PARAKEET:PANCREAS -CREATURE:GIANT_PARAKEET:SPLEEN -CREATURE:GIANT_PARAKEET:KIDNEY -CREATURE:BIRD_KAKAPO:MUSCLE -CREATURE:BIRD_KAKAPO:EYE -CREATURE:BIRD_KAKAPO:BRAIN -CREATURE:BIRD_KAKAPO:LUNG -CREATURE:BIRD_KAKAPO:HEART -CREATURE:BIRD_KAKAPO:LIVER -CREATURE:BIRD_KAKAPO:GUT -CREATURE:BIRD_KAKAPO:STOMACH -CREATURE:BIRD_KAKAPO:GIZZARD -CREATURE:BIRD_KAKAPO:PANCREAS -CREATURE:BIRD_KAKAPO:SPLEEN -CREATURE:BIRD_KAKAPO:KIDNEY -CREATURE:KAKAPO_MAN:MUSCLE -CREATURE:KAKAPO_MAN:EYE -CREATURE:KAKAPO_MAN:BRAIN -CREATURE:KAKAPO_MAN:LUNG -CREATURE:KAKAPO_MAN:HEART -CREATURE:KAKAPO_MAN:LIVER -CREATURE:KAKAPO_MAN:GUT -CREATURE:KAKAPO_MAN:STOMACH -CREATURE:KAKAPO_MAN:GIZZARD -CREATURE:KAKAPO_MAN:PANCREAS -CREATURE:KAKAPO_MAN:SPLEEN -CREATURE:KAKAPO_MAN:KIDNEY -CREATURE:GIANT_KAKAPO:MUSCLE -CREATURE:GIANT_KAKAPO:EYE -CREATURE:GIANT_KAKAPO:BRAIN -CREATURE:GIANT_KAKAPO:LUNG -CREATURE:GIANT_KAKAPO:HEART -CREATURE:GIANT_KAKAPO:LIVER -CREATURE:GIANT_KAKAPO:GUT -CREATURE:GIANT_KAKAPO:STOMACH -CREATURE:GIANT_KAKAPO:GIZZARD -CREATURE:GIANT_KAKAPO:PANCREAS -CREATURE:GIANT_KAKAPO:SPLEEN -CREATURE:GIANT_KAKAPO:KIDNEY - CREATURE:BIRD_PARROT_GREY:MUSCLE -CREATURE:BIRD_PARROT_GREY:EYE -CREATURE:BIRD_PARROT_GREY:BRAIN -CREATURE:BIRD_PARROT_GREY:LUNG -CREATURE:BIRD_PARROT_GREY:HEART -CREATURE:BIRD_PARROT_GREY:LIVER -CREATURE:BIRD_PARROT_GREY:GUT -!CREATURE:BIRD_PARROT_GREY:STOMACH -!CREATURE:BIRD_PARROT_GREY:GIZZARD -"CREATURE:BIRD_PARROT_GREY:PANCREAS - CREATURE:BIRD_PARROT_GREY:SPLEEN - CREATURE:BIRD_PARROT_GREY:KIDNEY -CREATURE:GREY_PARROT_MAN:MUSCLE -CREATURE:GREY_PARROT_MAN:EYE -CREATURE:GREY_PARROT_MAN:BRAIN -CREATURE:GREY_PARROT_MAN:LUNG -CREATURE:GREY_PARROT_MAN:HEART -CREATURE:GREY_PARROT_MAN:LIVER -CREATURE:GREY_PARROT_MAN:GUT - CREATURE:GREY_PARROT_MAN:STOMACH - CREATURE:GREY_PARROT_MAN:GIZZARD -!CREATURE:GREY_PARROT_MAN:PANCREAS -CREATURE:GREY_PARROT_MAN:SPLEEN -CREATURE:GREY_PARROT_MAN:KIDNEY -!CREATURE:GIANT_GREY_PARROT:MUSCLE -CREATURE:GIANT_GREY_PARROT:EYE - CREATURE:GIANT_GREY_PARROT:BRAIN -CREATURE:GIANT_GREY_PARROT:LUNG - CREATURE:GIANT_GREY_PARROT:HEART - CREATURE:GIANT_GREY_PARROT:LIVER -CREATURE:GIANT_GREY_PARROT:GUT -"CREATURE:GIANT_GREY_PARROT:STOMACH -"CREATURE:GIANT_GREY_PARROT:GIZZARD -#CREATURE:GIANT_GREY_PARROT:PANCREAS -!CREATURE:GIANT_GREY_PARROT:SPLEEN -!CREATURE:GIANT_GREY_PARROT:KIDNEY -CREATURE:BIRD_PUFFIN:MUSCLE -CREATURE:BIRD_PUFFIN:EYE -CREATURE:BIRD_PUFFIN:BRAIN -CREATURE:BIRD_PUFFIN:LUNG -CREATURE:BIRD_PUFFIN:HEART -CREATURE:BIRD_PUFFIN:LIVER -CREATURE:BIRD_PUFFIN:GUT -CREATURE:BIRD_PUFFIN:STOMACH -CREATURE:BIRD_PUFFIN:GIZZARD -CREATURE:BIRD_PUFFIN:PANCREAS -CREATURE:BIRD_PUFFIN:SPLEEN -CREATURE:BIRD_PUFFIN:KIDNEY -CREATURE:PUFFIN_MAN:MUSCLE -CREATURE:PUFFIN_MAN:EYE -CREATURE:PUFFIN_MAN:BRAIN -CREATURE:PUFFIN_MAN:LUNG -CREATURE:PUFFIN_MAN:HEART -CREATURE:PUFFIN_MAN:LIVER -CREATURE:PUFFIN_MAN:GUT -CREATURE:PUFFIN_MAN:STOMACH -CREATURE:PUFFIN_MAN:GIZZARD -CREATURE:PUFFIN_MAN:PANCREAS -CREATURE:PUFFIN_MAN:SPLEEN -CREATURE:PUFFIN_MAN:KIDNEY -CREATURE:GIANT_PUFFIN:MUSCLE -CREATURE:GIANT_PUFFIN:EYE -CREATURE:GIANT_PUFFIN:BRAIN -CREATURE:GIANT_PUFFIN:LUNG -CREATURE:GIANT_PUFFIN:HEART -CREATURE:GIANT_PUFFIN:LIVER -CREATURE:GIANT_PUFFIN:GUT -CREATURE:GIANT_PUFFIN:STOMACH -CREATURE:GIANT_PUFFIN:GIZZARD -CREATURE:GIANT_PUFFIN:PANCREAS -CREATURE:GIANT_PUFFIN:SPLEEN -CREATURE:GIANT_PUFFIN:KIDNEY -CREATURE:BIRD_SWAN:MUSCLE -CREATURE:BIRD_SWAN:EYE -CREATURE:BIRD_SWAN:BRAIN -CREATURE:BIRD_SWAN:LUNG -CREATURE:BIRD_SWAN:HEART -CREATURE:BIRD_SWAN:LIVER -CREATURE:BIRD_SWAN:GUT -CREATURE:BIRD_SWAN:STOMACH -CREATURE:BIRD_SWAN:GIZZARD -CREATURE:BIRD_SWAN:PANCREAS -CREATURE:BIRD_SWAN:SPLEEN -CREATURE:BIRD_SWAN:KIDNEY -CREATURE:SWAN_MAN:MUSCLE -CREATURE:SWAN_MAN:EYE -CREATURE:SWAN_MAN:BRAIN -CREATURE:SWAN_MAN:LUNG -CREATURE:SWAN_MAN:HEART -CREATURE:SWAN_MAN:LIVER -CREATURE:SWAN_MAN:GUT -CREATURE:SWAN_MAN:STOMACH -CREATURE:SWAN_MAN:GIZZARD -CREATURE:SWAN_MAN:PANCREAS -CREATURE:SWAN_MAN:SPLEEN -CREATURE:SWAN_MAN:KIDNEY -CREATURE:GIANT_SWAN:MUSCLE -CREATURE:GIANT_SWAN:EYE -CREATURE:GIANT_SWAN:BRAIN -CREATURE:GIANT_SWAN:LUNG -CREATURE:GIANT_SWAN:HEART -CREATURE:GIANT_SWAN:LIVER -CREATURE:GIANT_SWAN:GUT -CREATURE:GIANT_SWAN:STOMACH -CREATURE:GIANT_SWAN:GIZZARD -CREATURE:GIANT_SWAN:PANCREAS -CREATURE:GIANT_SWAN:SPLEEN -CREATURE:GIANT_SWAN:KIDNEY -CREATURE:BIRD_LORIKEET:MUSCLE -CREATURE:BIRD_LORIKEET:EYE -CREATURE:BIRD_LORIKEET:BRAIN -CREATURE:BIRD_LORIKEET:LUNG -CREATURE:BIRD_LORIKEET:HEART -CREATURE:BIRD_LORIKEET:LIVER -CREATURE:BIRD_LORIKEET:GUT -CREATURE:BIRD_LORIKEET:STOMACH -CREATURE:BIRD_LORIKEET:GIZZARD -CREATURE:BIRD_LORIKEET:PANCREAS -CREATURE:BIRD_LORIKEET:SPLEEN -CREATURE:BIRD_LORIKEET:KIDNEY -CREATURE:LORIKEET_MAN:MUSCLE -CREATURE:LORIKEET_MAN:EYE -CREATURE:LORIKEET_MAN:BRAIN -CREATURE:LORIKEET_MAN:LUNG -CREATURE:LORIKEET_MAN:HEART -CREATURE:LORIKEET_MAN:LIVER -CREATURE:LORIKEET_MAN:GUT -CREATURE:LORIKEET_MAN:STOMACH -CREATURE:LORIKEET_MAN:GIZZARD -CREATURE:LORIKEET_MAN:PANCREAS -CREATURE:LORIKEET_MAN:SPLEEN -CREATURE:LORIKEET_MAN:KIDNEY -CREATURE:GIANT_LORIKEET:MUSCLE -CREATURE:GIANT_LORIKEET:EYE -CREATURE:GIANT_LORIKEET:BRAIN -CREATURE:GIANT_LORIKEET:LUNG -CREATURE:GIANT_LORIKEET:HEART -CREATURE:GIANT_LORIKEET:LIVER -CREATURE:GIANT_LORIKEET:GUT -CREATURE:GIANT_LORIKEET:STOMACH -CREATURE:GIANT_LORIKEET:GIZZARD - CREATURE:GIANT_LORIKEET:PANCREAS -CREATURE:GIANT_LORIKEET:SPLEEN -CREATURE:GIANT_LORIKEET:KIDNEY -CREATURE:BIRD_WREN:MUSCLE -CREATURE:BIRD_WREN:EYE -CREATURE:BIRD_WREN:BRAIN -CREATURE:BIRD_WREN:LUNG -CREATURE:BIRD_WREN:HEART -CREATURE:BIRD_WREN:LIVER -CREATURE:BIRD_WREN:GUT -CREATURE:BIRD_WREN:STOMACH -CREATURE:BIRD_WREN:GIZZARD -CREATURE:BIRD_WREN:PANCREAS -CREATURE:BIRD_WREN:SPLEEN -CREATURE:BIRD_WREN:KIDNEY -CREATURE:WREN_MAN:MUSCLE -CREATURE:WREN_MAN:EYE -CREATURE:WREN_MAN:BRAIN -CREATURE:WREN_MAN:LUNG -CREATURE:WREN_MAN:HEART -CREATURE:WREN_MAN:LIVER -CREATURE:WREN_MAN:GUT -CREATURE:WREN_MAN:STOMACH -CREATURE:WREN_MAN:GIZZARD -CREATURE:WREN_MAN:PANCREAS -CREATURE:WREN_MAN:SPLEEN -CREATURE:WREN_MAN:KIDNEY -CREATURE:GIANT_WREN:MUSCLE -CREATURE:GIANT_WREN:EYE -CREATURE:GIANT_WREN:BRAIN -CREATURE:GIANT_WREN:LUNG -CREATURE:GIANT_WREN:HEART -CREATURE:GIANT_WREN:LIVER -CREATURE:GIANT_WREN:GUT -CREATURE:GIANT_WREN:STOMACH -CREATURE:GIANT_WREN:GIZZARD -CREATURE:GIANT_WREN:PANCREAS -CREATURE:GIANT_WREN:SPLEEN -CREATURE:GIANT_WREN:KIDNEY -CREATURE:BIRD_OSPREY:MUSCLE -CREATURE:BIRD_OSPREY:EYE -CREATURE:BIRD_OSPREY:BRAIN -CREATURE:BIRD_OSPREY:LUNG -CREATURE:BIRD_OSPREY:HEART -CREATURE:BIRD_OSPREY:LIVER -CREATURE:BIRD_OSPREY:GUT -CREATURE:BIRD_OSPREY:STOMACH -CREATURE:BIRD_OSPREY:GIZZARD -CREATURE:BIRD_OSPREY:PANCREAS -CREATURE:BIRD_OSPREY:SPLEEN -CREATURE:BIRD_OSPREY:KIDNEY -CREATURE:OSPREY_MAN:MUSCLE -CREATURE:OSPREY_MAN:EYE -CREATURE:OSPREY_MAN:BRAIN -CREATURE:OSPREY_MAN:LUNG -CREATURE:OSPREY_MAN:HEART -CREATURE:OSPREY_MAN:LIVER -CREATURE:OSPREY_MAN:GUT -CREATURE:OSPREY_MAN:STOMACH -CREATURE:OSPREY_MAN:GIZZARD -CREATURE:OSPREY_MAN:PANCREAS -CREATURE:OSPREY_MAN:SPLEEN -CREATURE:OSPREY_MAN:KIDNEY -CREATURE:GIANT_OSPREY:MUSCLE -CREATURE:GIANT_OSPREY:EYE -CREATURE:GIANT_OSPREY:BRAIN -CREATURE:GIANT_OSPREY:LUNG -CREATURE:GIANT_OSPREY:HEART -CREATURE:GIANT_OSPREY:LIVER -CREATURE:GIANT_OSPREY:GUT -CREATURE:GIANT_OSPREY:STOMACH -CREATURE:GIANT_OSPREY:GIZZARD -CREATURE:GIANT_OSPREY:PANCREAS -CREATURE:GIANT_OSPREY:SPLEEN -CREATURE:GIANT_OSPREY:KIDNEY -CREATURE:BIRD_EMU:MUSCLE -CREATURE:BIRD_EMU:EYE -CREATURE:BIRD_EMU:BRAIN -CREATURE:BIRD_EMU:LUNG -CREATURE:BIRD_EMU:HEART -CREATURE:BIRD_EMU:LIVER -CREATURE:BIRD_EMU:GUT -CREATURE:BIRD_EMU:STOMACH -CREATURE:BIRD_EMU:GIZZARD -CREATURE:BIRD_EMU:PANCREAS -CREATURE:BIRD_EMU:SPLEEN -CREATURE:BIRD_EMU:KIDNEY -CREATURE:EMU_MAN:MUSCLE -CREATURE:EMU_MAN:EYE -CREATURE:EMU_MAN:BRAIN -CREATURE:EMU_MAN:LUNG -CREATURE:EMU_MAN:HEART -CREATURE:EMU_MAN:LIVER -CREATURE:EMU_MAN:GUT -CREATURE:EMU_MAN:STOMACH -CREATURE:EMU_MAN:GIZZARD -CREATURE:EMU_MAN:PANCREAS -CREATURE:EMU_MAN:SPLEEN -CREATURE:EMU_MAN:KIDNEY -CREATURE:GIANT_EMU:MUSCLE -CREATURE:GIANT_EMU:EYE -CREATURE:GIANT_EMU:BRAIN -CREATURE:GIANT_EMU:LUNG -CREATURE:GIANT_EMU:HEART -CREATURE:GIANT_EMU:LIVER -CREATURE:GIANT_EMU:GUT -CREATURE:GIANT_EMU:STOMACH -CREATURE:GIANT_EMU:GIZZARD -CREATURE:GIANT_EMU:PANCREAS -CREATURE:GIANT_EMU:SPLEEN -CREATURE:GIANT_EMU:KIDNEY -CREATURE:BIRD_COCKATIEL:MUSCLE -CREATURE:BIRD_COCKATIEL:EYE -CREATURE:BIRD_COCKATIEL:BRAIN -CREATURE:BIRD_COCKATIEL:LUNG -CREATURE:BIRD_COCKATIEL:HEART -CREATURE:BIRD_COCKATIEL:LIVER -CREATURE:BIRD_COCKATIEL:GUT -CREATURE:BIRD_COCKATIEL:STOMACH -CREATURE:BIRD_COCKATIEL:GIZZARD - CREATURE:BIRD_COCKATIEL:PANCREAS -CREATURE:BIRD_COCKATIEL:SPLEEN -CREATURE:BIRD_COCKATIEL:KIDNEY -CREATURE:COCKATIEL_MAN:MUSCLE -CREATURE:COCKATIEL_MAN:EYE -CREATURE:COCKATIEL_MAN:BRAIN -CREATURE:COCKATIEL_MAN:LUNG -CREATURE:COCKATIEL_MAN:HEART -CREATURE:COCKATIEL_MAN:LIVER -CREATURE:COCKATIEL_MAN:GUT -CREATURE:COCKATIEL_MAN:STOMACH -CREATURE:COCKATIEL_MAN:GIZZARD -CREATURE:COCKATIEL_MAN:PANCREAS -CREATURE:COCKATIEL_MAN:SPLEEN -CREATURE:COCKATIEL_MAN:KIDNEY -CREATURE:GIANT_COCKATIEL:MUSCLE -CREATURE:GIANT_COCKATIEL:EYE -CREATURE:GIANT_COCKATIEL:BRAIN -CREATURE:GIANT_COCKATIEL:LUNG -CREATURE:GIANT_COCKATIEL:HEART -CREATURE:GIANT_COCKATIEL:LIVER -CREATURE:GIANT_COCKATIEL:GUT - CREATURE:GIANT_COCKATIEL:STOMACH - CREATURE:GIANT_COCKATIEL:GIZZARD -!CREATURE:GIANT_COCKATIEL:PANCREAS -CREATURE:GIANT_COCKATIEL:SPLEEN -CREATURE:GIANT_COCKATIEL:KIDNEY -)CREATURE:BIRD_LOVEBIRD_PEACH-FACED:MUSCLE -&CREATURE:BIRD_LOVEBIRD_PEACH-FACED:EYE -(CREATURE:BIRD_LOVEBIRD_PEACH-FACED:BRAIN -'CREATURE:BIRD_LOVEBIRD_PEACH-FACED:LUNG -(CREATURE:BIRD_LOVEBIRD_PEACH-FACED:HEART -(CREATURE:BIRD_LOVEBIRD_PEACH-FACED:LIVER -&CREATURE:BIRD_LOVEBIRD_PEACH-FACED:GUT -*CREATURE:BIRD_LOVEBIRD_PEACH-FACED:STOMACH -*CREATURE:BIRD_LOVEBIRD_PEACH-FACED:GIZZARD -+CREATURE:BIRD_LOVEBIRD_PEACH-FACED:PANCREAS -)CREATURE:BIRD_LOVEBIRD_PEACH-FACED:SPLEEN -)CREATURE:BIRD_LOVEBIRD_PEACH-FACED:KIDNEY -(CREATURE:PEACH-FACED_LOVEBIRD_MAN:MUSCLE -%CREATURE:PEACH-FACED_LOVEBIRD_MAN:EYE -'CREATURE:PEACH-FACED_LOVEBIRD_MAN:BRAIN -&CREATURE:PEACH-FACED_LOVEBIRD_MAN:LUNG -'CREATURE:PEACH-FACED_LOVEBIRD_MAN:HEART -'CREATURE:PEACH-FACED_LOVEBIRD_MAN:LIVER -%CREATURE:PEACH-FACED_LOVEBIRD_MAN:GUT -)CREATURE:PEACH-FACED_LOVEBIRD_MAN:STOMACH -)CREATURE:PEACH-FACED_LOVEBIRD_MAN:GIZZARD -*CREATURE:PEACH-FACED_LOVEBIRD_MAN:PANCREAS -(CREATURE:PEACH-FACED_LOVEBIRD_MAN:SPLEEN -(CREATURE:PEACH-FACED_LOVEBIRD_MAN:KIDNEY -*CREATURE:GIANT_PEACH-FACED_LOVEBIRD:MUSCLE -'CREATURE:GIANT_PEACH-FACED_LOVEBIRD:EYE -)CREATURE:GIANT_PEACH-FACED_LOVEBIRD:BRAIN -(CREATURE:GIANT_PEACH-FACED_LOVEBIRD:LUNG -)CREATURE:GIANT_PEACH-FACED_LOVEBIRD:HEART -)CREATURE:GIANT_PEACH-FACED_LOVEBIRD:LIVER -'CREATURE:GIANT_PEACH-FACED_LOVEBIRD:GUT -+CREATURE:GIANT_PEACH-FACED_LOVEBIRD:STOMACH -+CREATURE:GIANT_PEACH-FACED_LOVEBIRD:GIZZARD -,CREATURE:GIANT_PEACH-FACED_LOVEBIRD:PANCREAS -*CREATURE:GIANT_PEACH-FACED_LOVEBIRD:SPLEEN -*CREATURE:GIANT_PEACH-FACED_LOVEBIRD:KIDNEY -CREATURE:BIRD_MAGPIE:MUSCLE -CREATURE:BIRD_MAGPIE:EYE -CREATURE:BIRD_MAGPIE:BRAIN -CREATURE:BIRD_MAGPIE:LUNG -CREATURE:BIRD_MAGPIE:HEART -CREATURE:BIRD_MAGPIE:LIVER -CREATURE:BIRD_MAGPIE:GUT -CREATURE:BIRD_MAGPIE:STOMACH -CREATURE:BIRD_MAGPIE:GIZZARD -CREATURE:BIRD_MAGPIE:PANCREAS -CREATURE:BIRD_MAGPIE:SPLEEN -CREATURE:BIRD_MAGPIE:KIDNEY -CREATURE:MAGPIE_MAN:MUSCLE -CREATURE:MAGPIE_MAN:EYE -CREATURE:MAGPIE_MAN:BRAIN -CREATURE:MAGPIE_MAN:LUNG -CREATURE:MAGPIE_MAN:HEART -CREATURE:MAGPIE_MAN:LIVER -CREATURE:MAGPIE_MAN:GUT -CREATURE:MAGPIE_MAN:STOMACH -CREATURE:MAGPIE_MAN:GIZZARD -CREATURE:MAGPIE_MAN:PANCREAS -CREATURE:MAGPIE_MAN:SPLEEN -CREATURE:MAGPIE_MAN:KIDNEY -CREATURE:GIANT_MAGPIE:MUSCLE -CREATURE:GIANT_MAGPIE:EYE -CREATURE:GIANT_MAGPIE:BRAIN -CREATURE:GIANT_MAGPIE:LUNG -CREATURE:GIANT_MAGPIE:HEART -CREATURE:GIANT_MAGPIE:LIVER -CREATURE:GIANT_MAGPIE:GUT -CREATURE:GIANT_MAGPIE:STOMACH -CREATURE:GIANT_MAGPIE:GIZZARD -CREATURE:GIANT_MAGPIE:PANCREAS -CREATURE:GIANT_MAGPIE:SPLEEN -CREATURE:GIANT_MAGPIE:KIDNEY -CREATURE:BIRD_KESTREL:MUSCLE -CREATURE:BIRD_KESTREL:EYE -CREATURE:BIRD_KESTREL:BRAIN -CREATURE:BIRD_KESTREL:LUNG -CREATURE:BIRD_KESTREL:HEART -CREATURE:BIRD_KESTREL:LIVER -CREATURE:BIRD_KESTREL:GUT -CREATURE:BIRD_KESTREL:STOMACH -CREATURE:BIRD_KESTREL:GIZZARD -CREATURE:BIRD_KESTREL:PANCREAS -CREATURE:BIRD_KESTREL:SPLEEN -CREATURE:BIRD_KESTREL:KIDNEY -CREATURE:KESTREL_MAN:MUSCLE -CREATURE:KESTREL_MAN:EYE -CREATURE:KESTREL_MAN:BRAIN -CREATURE:KESTREL_MAN:LUNG -CREATURE:KESTREL_MAN:HEART -CREATURE:KESTREL_MAN:LIVER -CREATURE:KESTREL_MAN:GUT -CREATURE:KESTREL_MAN:STOMACH -CREATURE:KESTREL_MAN:GIZZARD -CREATURE:KESTREL_MAN:PANCREAS -CREATURE:KESTREL_MAN:SPLEEN -CREATURE:KESTREL_MAN:KIDNEY -CREATURE:GIANT_KESTREL:MUSCLE -CREATURE:GIANT_KESTREL:EYE -CREATURE:GIANT_KESTREL:BRAIN -CREATURE:GIANT_KESTREL:LUNG -CREATURE:GIANT_KESTREL:HEART -CREATURE:GIANT_KESTREL:LIVER -CREATURE:GIANT_KESTREL:GUT -CREATURE:GIANT_KESTREL:STOMACH -CREATURE:GIANT_KESTREL:GIZZARD -CREATURE:GIANT_KESTREL:PANCREAS -CREATURE:GIANT_KESTREL:SPLEEN -CREATURE:GIANT_KESTREL:KIDNEY -CREATURE:BIRD_ALBATROSS:MUSCLE -CREATURE:BIRD_ALBATROSS:EYE -CREATURE:BIRD_ALBATROSS:BRAIN -CREATURE:BIRD_ALBATROSS:LUNG -CREATURE:BIRD_ALBATROSS:HEART -CREATURE:BIRD_ALBATROSS:LIVER -CREATURE:BIRD_ALBATROSS:GUT -CREATURE:BIRD_ALBATROSS:STOMACH -CREATURE:BIRD_ALBATROSS:GIZZARD - CREATURE:BIRD_ALBATROSS:PANCREAS -CREATURE:BIRD_ALBATROSS:SPLEEN -CREATURE:BIRD_ALBATROSS:KIDNEY -CREATURE:ALBATROSS_MAN:MUSCLE -CREATURE:ALBATROSS_MAN:EYE -CREATURE:ALBATROSS_MAN:BRAIN -CREATURE:ALBATROSS_MAN:LUNG -CREATURE:ALBATROSS_MAN:HEART -CREATURE:ALBATROSS_MAN:LIVER -CREATURE:ALBATROSS_MAN:GUT -CREATURE:ALBATROSS_MAN:STOMACH -CREATURE:ALBATROSS_MAN:GIZZARD -CREATURE:ALBATROSS_MAN:PANCREAS -CREATURE:ALBATROSS_MAN:SPLEEN -CREATURE:ALBATROSS_MAN:KIDNEY -CREATURE:GIANT_ALBATROSS:MUSCLE -CREATURE:GIANT_ALBATROSS:EYE -CREATURE:GIANT_ALBATROSS:BRAIN -CREATURE:GIANT_ALBATROSS:LUNG -CREATURE:GIANT_ALBATROSS:HEART -CREATURE:GIANT_ALBATROSS:LIVER -CREATURE:GIANT_ALBATROSS:GUT - CREATURE:GIANT_ALBATROSS:STOMACH - CREATURE:GIANT_ALBATROSS:GIZZARD -!CREATURE:GIANT_ALBATROSS:PANCREAS -CREATURE:GIANT_ALBATROSS:SPLEEN -CREATURE:GIANT_ALBATROSS:KIDNEY -%CREATURE:BIRD_OWL_GREAT_HORNED:MUSCLE -"CREATURE:BIRD_OWL_GREAT_HORNED:EYE -$CREATURE:BIRD_OWL_GREAT_HORNED:BRAIN -#CREATURE:BIRD_OWL_GREAT_HORNED:LUNG -$CREATURE:BIRD_OWL_GREAT_HORNED:HEART -$CREATURE:BIRD_OWL_GREAT_HORNED:LIVER -"CREATURE:BIRD_OWL_GREAT_HORNED:GUT -&CREATURE:BIRD_OWL_GREAT_HORNED:STOMACH -&CREATURE:BIRD_OWL_GREAT_HORNED:GIZZARD -'CREATURE:BIRD_OWL_GREAT_HORNED:PANCREAS -%CREATURE:BIRD_OWL_GREAT_HORNED:SPLEEN -%CREATURE:BIRD_OWL_GREAT_HORNED:KIDNEY -$CREATURE:GREAT_HORNED_OWL_MAN:MUSCLE -!CREATURE:GREAT_HORNED_OWL_MAN:EYE -#CREATURE:GREAT_HORNED_OWL_MAN:BRAIN -"CREATURE:GREAT_HORNED_OWL_MAN:LUNG -#CREATURE:GREAT_HORNED_OWL_MAN:HEART -#CREATURE:GREAT_HORNED_OWL_MAN:LIVER -!CREATURE:GREAT_HORNED_OWL_MAN:GUT -%CREATURE:GREAT_HORNED_OWL_MAN:STOMACH -%CREATURE:GREAT_HORNED_OWL_MAN:GIZZARD -&CREATURE:GREAT_HORNED_OWL_MAN:PANCREAS -$CREATURE:GREAT_HORNED_OWL_MAN:SPLEEN -$CREATURE:GREAT_HORNED_OWL_MAN:KIDNEY -&CREATURE:GIANT_GREAT_HORNED_OWL:MUSCLE -#CREATURE:GIANT_GREAT_HORNED_OWL:EYE -%CREATURE:GIANT_GREAT_HORNED_OWL:BRAIN -$CREATURE:GIANT_GREAT_HORNED_OWL:LUNG -%CREATURE:GIANT_GREAT_HORNED_OWL:HEART -%CREATURE:GIANT_GREAT_HORNED_OWL:LIVER -#CREATURE:GIANT_GREAT_HORNED_OWL:GUT -'CREATURE:GIANT_GREAT_HORNED_OWL:STOMACH -'CREATURE:GIANT_GREAT_HORNED_OWL:GIZZARD -(CREATURE:GIANT_GREAT_HORNED_OWL:PANCREAS -&CREATURE:GIANT_GREAT_HORNED_OWL:SPLEEN -&CREATURE:GIANT_GREAT_HORNED_OWL:KIDNEY -CREATURE:BIRD_EAGLE:MUSCLE -CREATURE:BIRD_EAGLE:EYE -CREATURE:BIRD_EAGLE:BRAIN -CREATURE:BIRD_EAGLE:LUNG -CREATURE:BIRD_EAGLE:HEART -CREATURE:BIRD_EAGLE:LIVER -CREATURE:BIRD_EAGLE:GUT -CREATURE:BIRD_EAGLE:STOMACH -CREATURE:BIRD_EAGLE:GIZZARD -CREATURE:BIRD_EAGLE:PANCREAS -CREATURE:BIRD_EAGLE:SPLEEN -CREATURE:BIRD_EAGLE:KIDNEY -CREATURE:EAGLE_MAN:MUSCLE -CREATURE:EAGLE_MAN:EYE -CREATURE:EAGLE_MAN:BRAIN -CREATURE:EAGLE_MAN:LUNG -CREATURE:EAGLE_MAN:HEART -CREATURE:EAGLE_MAN:LIVER -CREATURE:EAGLE_MAN:GUT -CREATURE:EAGLE_MAN:STOMACH -CREATURE:EAGLE_MAN:GIZZARD -CREATURE:EAGLE_MAN:PANCREAS -CREATURE:EAGLE_MAN:SPLEEN -CREATURE:EAGLE_MAN:KIDNEY -CREATURE:GIANT_EAGLE:MUSCLE -CREATURE:GIANT_EAGLE:EYE -CREATURE:GIANT_EAGLE:BRAIN -CREATURE:GIANT_EAGLE:LUNG -CREATURE:GIANT_EAGLE:HEART -CREATURE:GIANT_EAGLE:LIVER -CREATURE:GIANT_EAGLE:GUT -CREATURE:GIANT_EAGLE:STOMACH -CREATURE:GIANT_EAGLE:GIZZARD -CREATURE:GIANT_EAGLE:PANCREAS -CREATURE:GIANT_EAGLE:SPLEEN -CREATURE:GIANT_EAGLE:KIDNEY -CREATURE:BIRD_HORNBILL:MUSCLE -CREATURE:BIRD_HORNBILL:EYE -CREATURE:BIRD_HORNBILL:BRAIN -CREATURE:BIRD_HORNBILL:LUNG -CREATURE:BIRD_HORNBILL:HEART -CREATURE:BIRD_HORNBILL:LIVER -CREATURE:BIRD_HORNBILL:GUT -CREATURE:BIRD_HORNBILL:STOMACH -CREATURE:BIRD_HORNBILL:GIZZARD -CREATURE:BIRD_HORNBILL:PANCREAS -CREATURE:BIRD_HORNBILL:SPLEEN -CREATURE:BIRD_HORNBILL:KIDNEY -CREATURE:HORNBILL_MAN:MUSCLE -CREATURE:HORNBILL_MAN:EYE -CREATURE:HORNBILL_MAN:BRAIN -CREATURE:HORNBILL_MAN:LUNG -CREATURE:HORNBILL_MAN:HEART -CREATURE:HORNBILL_MAN:LIVER -CREATURE:HORNBILL_MAN:GUT -CREATURE:HORNBILL_MAN:STOMACH -CREATURE:HORNBILL_MAN:GIZZARD -CREATURE:HORNBILL_MAN:PANCREAS -CREATURE:HORNBILL_MAN:SPLEEN -CREATURE:HORNBILL_MAN:KIDNEY -CREATURE:GIANT_HORNBILL:MUSCLE -CREATURE:GIANT_HORNBILL:EYE -CREATURE:GIANT_HORNBILL:BRAIN -CREATURE:GIANT_HORNBILL:LUNG -CREATURE:GIANT_HORNBILL:HEART -CREATURE:GIANT_HORNBILL:LIVER -CREATURE:GIANT_HORNBILL:GUT -CREATURE:GIANT_HORNBILL:STOMACH -CREATURE:GIANT_HORNBILL:GIZZARD - CREATURE:GIANT_HORNBILL:PANCREAS -CREATURE:GIANT_HORNBILL:SPLEEN -CREATURE:GIANT_HORNBILL:KIDNEY -$CREATURE:BIRD_LOVEBIRD_MASKED:MUSCLE -!CREATURE:BIRD_LOVEBIRD_MASKED:EYE -#CREATURE:BIRD_LOVEBIRD_MASKED:BRAIN -"CREATURE:BIRD_LOVEBIRD_MASKED:LUNG -#CREATURE:BIRD_LOVEBIRD_MASKED:HEART -#CREATURE:BIRD_LOVEBIRD_MASKED:LIVER -!CREATURE:BIRD_LOVEBIRD_MASKED:GUT -%CREATURE:BIRD_LOVEBIRD_MASKED:STOMACH -%CREATURE:BIRD_LOVEBIRD_MASKED:GIZZARD -&CREATURE:BIRD_LOVEBIRD_MASKED:PANCREAS -$CREATURE:BIRD_LOVEBIRD_MASKED:SPLEEN -$CREATURE:BIRD_LOVEBIRD_MASKED:KIDNEY -#CREATURE:MASKED_LOVEBIRD_MAN:MUSCLE - CREATURE:MASKED_LOVEBIRD_MAN:EYE -"CREATURE:MASKED_LOVEBIRD_MAN:BRAIN -!CREATURE:MASKED_LOVEBIRD_MAN:LUNG -"CREATURE:MASKED_LOVEBIRD_MAN:HEART -"CREATURE:MASKED_LOVEBIRD_MAN:LIVER - CREATURE:MASKED_LOVEBIRD_MAN:GUT -$CREATURE:MASKED_LOVEBIRD_MAN:STOMACH -$CREATURE:MASKED_LOVEBIRD_MAN:GIZZARD -%CREATURE:MASKED_LOVEBIRD_MAN:PANCREAS -#CREATURE:MASKED_LOVEBIRD_MAN:SPLEEN -#CREATURE:MASKED_LOVEBIRD_MAN:KIDNEY -%CREATURE:GIANT_MASKED_LOVEBIRD:MUSCLE -"CREATURE:GIANT_MASKED_LOVEBIRD:EYE -$CREATURE:GIANT_MASKED_LOVEBIRD:BRAIN -#CREATURE:GIANT_MASKED_LOVEBIRD:LUNG -$CREATURE:GIANT_MASKED_LOVEBIRD:HEART -$CREATURE:GIANT_MASKED_LOVEBIRD:LIVER -"CREATURE:GIANT_MASKED_LOVEBIRD:GUT -&CREATURE:GIANT_MASKED_LOVEBIRD:STOMACH -&CREATURE:GIANT_MASKED_LOVEBIRD:GIZZARD -'CREATURE:GIANT_MASKED_LOVEBIRD:PANCREAS -%CREATURE:GIANT_MASKED_LOVEBIRD:SPLEEN -%CREATURE:GIANT_MASKED_LOVEBIRD:KIDNEY -CREATURE:BIRD_BUSHTIT:MUSCLE -CREATURE:BIRD_BUSHTIT:EYE -CREATURE:BIRD_BUSHTIT:BRAIN -CREATURE:BIRD_BUSHTIT:LUNG -CREATURE:BIRD_BUSHTIT:HEART -CREATURE:BIRD_BUSHTIT:LIVER -CREATURE:BIRD_BUSHTIT:GUT -CREATURE:BIRD_BUSHTIT:STOMACH -CREATURE:BIRD_BUSHTIT:GIZZARD -CREATURE:BIRD_BUSHTIT:PANCREAS -CREATURE:BIRD_BUSHTIT:SPLEEN -CREATURE:BIRD_BUSHTIT:KIDNEY -CREATURE:BUSHTIT_MAN:MUSCLE -CREATURE:BUSHTIT_MAN:EYE -CREATURE:BUSHTIT_MAN:BRAIN -CREATURE:BUSHTIT_MAN:LUNG -CREATURE:BUSHTIT_MAN:HEART -CREATURE:BUSHTIT_MAN:LIVER -CREATURE:BUSHTIT_MAN:GUT -CREATURE:BUSHTIT_MAN:STOMACH -CREATURE:BUSHTIT_MAN:GIZZARD -CREATURE:BUSHTIT_MAN:PANCREAS -CREATURE:BUSHTIT_MAN:SPLEEN -CREATURE:BUSHTIT_MAN:KIDNEY -CREATURE:GIANT_BUSHTIT:MUSCLE -CREATURE:GIANT_BUSHTIT:EYE -CREATURE:GIANT_BUSHTIT:BRAIN -CREATURE:GIANT_BUSHTIT:LUNG -CREATURE:GIANT_BUSHTIT:HEART -CREATURE:GIANT_BUSHTIT:LIVER -CREATURE:GIANT_BUSHTIT:GUT -CREATURE:GIANT_BUSHTIT:STOMACH -CREATURE:GIANT_BUSHTIT:GIZZARD -CREATURE:GIANT_BUSHTIT:PANCREAS -CREATURE:GIANT_BUSHTIT:SPLEEN -CREATURE:GIANT_BUSHTIT:KIDNEY -CREATURE:DAMSELFLY:MUSCLE -CREATURE:DAMSELFLY:EYE -CREATURE:DAMSELFLY:BRAIN -CREATURE:DAMSELFLY:LUNG -CREATURE:DAMSELFLY:HEART -CREATURE:DAMSELFLY:LIVER -CREATURE:DAMSELFLY:GUT -CREATURE:DAMSELFLY:STOMACH -CREATURE:DAMSELFLY:GIZZARD -CREATURE:DAMSELFLY:PANCREAS -CREATURE:DAMSELFLY:SPLEEN -CREATURE:DAMSELFLY:KIDNEY -CREATURE:DAMSELFLY_MAN:MUSCLE -CREATURE:DAMSELFLY_MAN:EYE -CREATURE:DAMSELFLY_MAN:BRAIN -CREATURE:DAMSELFLY_MAN:LUNG -CREATURE:DAMSELFLY_MAN:HEART -CREATURE:DAMSELFLY_MAN:LIVER -CREATURE:DAMSELFLY_MAN:GUT -CREATURE:DAMSELFLY_MAN:STOMACH -CREATURE:DAMSELFLY_MAN:GIZZARD -CREATURE:DAMSELFLY_MAN:PANCREAS -CREATURE:DAMSELFLY_MAN:SPLEEN -CREATURE:DAMSELFLY_MAN:KIDNEY -CREATURE:GIANT_DAMSELFLY:MUSCLE -CREATURE:GIANT_DAMSELFLY:EYE -CREATURE:GIANT_DAMSELFLY:BRAIN -CREATURE:GIANT_DAMSELFLY:LUNG -CREATURE:GIANT_DAMSELFLY:HEART -CREATURE:GIANT_DAMSELFLY:LIVER -CREATURE:GIANT_DAMSELFLY:GUT - CREATURE:GIANT_DAMSELFLY:STOMACH - CREATURE:GIANT_DAMSELFLY:GIZZARD -!CREATURE:GIANT_DAMSELFLY:PANCREAS -CREATURE:GIANT_DAMSELFLY:SPLEEN -CREATURE:GIANT_DAMSELFLY:KIDNEY -CREATURE:MOTH:MUSCLE -CREATURE:MOTH:EYE -CREATURE:MOTH:BRAIN -CREATURE:MOTH:LUNG -CREATURE:MOTH:HEART -CREATURE:MOTH:LIVER -CREATURE:MOTH:GUT -CREATURE:MOTH:STOMACH -CREATURE:MOTH:GIZZARD -CREATURE:MOTH:PANCREAS -CREATURE:MOTH:SPLEEN -CREATURE:MOTH:KIDNEY -CREATURE:MOTH_MAN:MUSCLE -CREATURE:MOTH_MAN:EYE -CREATURE:MOTH_MAN:BRAIN -CREATURE:MOTH_MAN:LUNG -CREATURE:MOTH_MAN:HEART -CREATURE:MOTH_MAN:LIVER -CREATURE:MOTH_MAN:GUT -CREATURE:MOTH_MAN:STOMACH -CREATURE:MOTH_MAN:GIZZARD -CREATURE:MOTH_MAN:PANCREAS -CREATURE:MOTH_MAN:SPLEEN -CREATURE:MOTH_MAN:KIDNEY -CREATURE:GIANT_MOTH:MUSCLE -CREATURE:GIANT_MOTH:EYE -CREATURE:GIANT_MOTH:BRAIN -CREATURE:GIANT_MOTH:LUNG -CREATURE:GIANT_MOTH:HEART -CREATURE:GIANT_MOTH:LIVER -CREATURE:GIANT_MOTH:GUT -CREATURE:GIANT_MOTH:STOMACH -CREATURE:GIANT_MOTH:GIZZARD -CREATURE:GIANT_MOTH:PANCREAS -CREATURE:GIANT_MOTH:SPLEEN -CREATURE:GIANT_MOTH:KIDNEY -CREATURE:GRASSHOPPER:MUSCLE -CREATURE:GRASSHOPPER:EYE -CREATURE:GRASSHOPPER:BRAIN -CREATURE:GRASSHOPPER:LUNG -CREATURE:GRASSHOPPER:HEART -CREATURE:GRASSHOPPER:LIVER -CREATURE:GRASSHOPPER:GUT -CREATURE:GRASSHOPPER:STOMACH -CREATURE:GRASSHOPPER:GIZZARD -CREATURE:GRASSHOPPER:PANCREAS -CREATURE:GRASSHOPPER:SPLEEN -CREATURE:GRASSHOPPER:KIDNEY -CREATURE:GRASSHOPPER_MAN:MUSCLE -CREATURE:GRASSHOPPER_MAN:EYE -CREATURE:GRASSHOPPER_MAN:BRAIN -CREATURE:GRASSHOPPER_MAN:LUNG -CREATURE:GRASSHOPPER_MAN:HEART -CREATURE:GRASSHOPPER_MAN:LIVER -CREATURE:GRASSHOPPER_MAN:GUT - CREATURE:GRASSHOPPER_MAN:STOMACH - CREATURE:GRASSHOPPER_MAN:GIZZARD -!CREATURE:GRASSHOPPER_MAN:PANCREAS -CREATURE:GRASSHOPPER_MAN:SPLEEN -CREATURE:GRASSHOPPER_MAN:KIDNEY -!CREATURE:GIANT_GRASSHOPPER:MUSCLE -CREATURE:GIANT_GRASSHOPPER:EYE - CREATURE:GIANT_GRASSHOPPER:BRAIN -CREATURE:GIANT_GRASSHOPPER:LUNG - CREATURE:GIANT_GRASSHOPPER:HEART - CREATURE:GIANT_GRASSHOPPER:LIVER -CREATURE:GIANT_GRASSHOPPER:GUT -"CREATURE:GIANT_GRASSHOPPER:STOMACH -"CREATURE:GIANT_GRASSHOPPER:GIZZARD -#CREATURE:GIANT_GRASSHOPPER:PANCREAS -!CREATURE:GIANT_GRASSHOPPER:SPLEEN -!CREATURE:GIANT_GRASSHOPPER:KIDNEY -CREATURE:BARK_SCORPION:MUSCLE -CREATURE:BARK_SCORPION:EYE -CREATURE:BARK_SCORPION:BRAIN -CREATURE:BARK_SCORPION:LUNG -CREATURE:BARK_SCORPION:HEART -CREATURE:BARK_SCORPION:LIVER -CREATURE:BARK_SCORPION:GUT -CREATURE:BARK_SCORPION:STOMACH -CREATURE:BARK_SCORPION:GIZZARD -CREATURE:BARK_SCORPION:PANCREAS -CREATURE:BARK_SCORPION:SPLEEN -CREATURE:BARK_SCORPION:KIDNEY -!CREATURE:BARK_SCORPION_MAN:MUSCLE -CREATURE:BARK_SCORPION_MAN:EYE - CREATURE:BARK_SCORPION_MAN:BRAIN -CREATURE:BARK_SCORPION_MAN:LUNG - CREATURE:BARK_SCORPION_MAN:HEART - CREATURE:BARK_SCORPION_MAN:LIVER -CREATURE:BARK_SCORPION_MAN:GUT -"CREATURE:BARK_SCORPION_MAN:STOMACH -"CREATURE:BARK_SCORPION_MAN:GIZZARD -#CREATURE:BARK_SCORPION_MAN:PANCREAS -!CREATURE:BARK_SCORPION_MAN:SPLEEN -!CREATURE:BARK_SCORPION_MAN:KIDNEY -#CREATURE:GIANT_BARK_SCORPION:MUSCLE - CREATURE:GIANT_BARK_SCORPION:EYE -"CREATURE:GIANT_BARK_SCORPION:BRAIN -!CREATURE:GIANT_BARK_SCORPION:LUNG -"CREATURE:GIANT_BARK_SCORPION:HEART -"CREATURE:GIANT_BARK_SCORPION:LIVER - CREATURE:GIANT_BARK_SCORPION:GUT -$CREATURE:GIANT_BARK_SCORPION:STOMACH -$CREATURE:GIANT_BARK_SCORPION:GIZZARD -%CREATURE:GIANT_BARK_SCORPION:PANCREAS -#CREATURE:GIANT_BARK_SCORPION:SPLEEN -#CREATURE:GIANT_BARK_SCORPION:KIDNEY -CREATURE:MANTIS:MUSCLE -CREATURE:MANTIS:EYE -CREATURE:MANTIS:BRAIN -CREATURE:MANTIS:LUNG -CREATURE:MANTIS:HEART -CREATURE:MANTIS:LIVER -CREATURE:MANTIS:GUT -CREATURE:MANTIS:STOMACH -CREATURE:MANTIS:GIZZARD -CREATURE:MANTIS:PANCREAS -CREATURE:MANTIS:SPLEEN -CREATURE:MANTIS:KIDNEY -CREATURE:MANTIS_MAN:MUSCLE -CREATURE:MANTIS_MAN:EYE -CREATURE:MANTIS_MAN:BRAIN -CREATURE:MANTIS_MAN:LUNG -CREATURE:MANTIS_MAN:HEART -CREATURE:MANTIS_MAN:LIVER -CREATURE:MANTIS_MAN:GUT -CREATURE:MANTIS_MAN:STOMACH -CREATURE:MANTIS_MAN:GIZZARD -CREATURE:MANTIS_MAN:PANCREAS -CREATURE:MANTIS_MAN:SPLEEN -CREATURE:MANTIS_MAN:KIDNEY -CREATURE:GIANT_MANTIS:MUSCLE -CREATURE:GIANT_MANTIS:EYE -CREATURE:GIANT_MANTIS:BRAIN -CREATURE:GIANT_MANTIS:LUNG -CREATURE:GIANT_MANTIS:HEART -CREATURE:GIANT_MANTIS:LIVER -CREATURE:GIANT_MANTIS:GUT -CREATURE:GIANT_MANTIS:STOMACH -CREATURE:GIANT_MANTIS:GIZZARD -CREATURE:GIANT_MANTIS:PANCREAS -CREATURE:GIANT_MANTIS:SPLEEN -CREATURE:GIANT_MANTIS:KIDNEY -CREATURE:TICK:MUSCLE -CREATURE:TICK:EYE -CREATURE:TICK:BRAIN -CREATURE:TICK:LUNG -CREATURE:TICK:HEART -CREATURE:TICK:LIVER -CREATURE:TICK:GUT -CREATURE:TICK:STOMACH -CREATURE:TICK:GIZZARD -CREATURE:TICK:PANCREAS -CREATURE:TICK:SPLEEN -CREATURE:TICK:KIDNEY -CREATURE:TICK_MAN:MUSCLE -CREATURE:TICK_MAN:EYE -CREATURE:TICK_MAN:BRAIN -CREATURE:TICK_MAN:LUNG -CREATURE:TICK_MAN:HEART -CREATURE:TICK_MAN:LIVER -CREATURE:TICK_MAN:GUT -CREATURE:TICK_MAN:STOMACH -CREATURE:TICK_MAN:GIZZARD -CREATURE:TICK_MAN:PANCREAS -CREATURE:TICK_MAN:SPLEEN -CREATURE:TICK_MAN:KIDNEY -CREATURE:GIANT_TICK:MUSCLE -CREATURE:GIANT_TICK:EYE -CREATURE:GIANT_TICK:BRAIN -CREATURE:GIANT_TICK:LUNG -CREATURE:GIANT_TICK:HEART -CREATURE:GIANT_TICK:LIVER -CREATURE:GIANT_TICK:GUT -CREATURE:GIANT_TICK:STOMACH -CREATURE:GIANT_TICK:GIZZARD -CREATURE:GIANT_TICK:PANCREAS -CREATURE:GIANT_TICK:SPLEEN -CREATURE:GIANT_TICK:KIDNEY -CREATURE:LOUSE:MUSCLE -CREATURE:LOUSE:EYE -CREATURE:LOUSE:BRAIN -CREATURE:LOUSE:LUNG -CREATURE:LOUSE:HEART -CREATURE:LOUSE:LIVER -CREATURE:LOUSE:GUT -CREATURE:LOUSE:STOMACH -CREATURE:LOUSE:GIZZARD -CREATURE:LOUSE:PANCREAS -CREATURE:LOUSE:SPLEEN -CREATURE:LOUSE:KIDNEY -CREATURE:LOUSE_MAN:MUSCLE -CREATURE:LOUSE_MAN:EYE -CREATURE:LOUSE_MAN:BRAIN -CREATURE:LOUSE_MAN:LUNG -CREATURE:LOUSE_MAN:HEART -CREATURE:LOUSE_MAN:LIVER -CREATURE:LOUSE_MAN:GUT -CREATURE:LOUSE_MAN:STOMACH -CREATURE:LOUSE_MAN:GIZZARD -CREATURE:LOUSE_MAN:PANCREAS -CREATURE:LOUSE_MAN:SPLEEN -CREATURE:LOUSE_MAN:KIDNEY -CREATURE:GIANT_LOUSE:MUSCLE -CREATURE:GIANT_LOUSE:EYE -CREATURE:GIANT_LOUSE:BRAIN -CREATURE:GIANT_LOUSE:LUNG -CREATURE:GIANT_LOUSE:HEART -CREATURE:GIANT_LOUSE:LIVER -CREATURE:GIANT_LOUSE:GUT -CREATURE:GIANT_LOUSE:STOMACH -CREATURE:GIANT_LOUSE:GIZZARD -CREATURE:GIANT_LOUSE:PANCREAS -CREATURE:GIANT_LOUSE:SPLEEN -CREATURE:GIANT_LOUSE:KIDNEY -CREATURE:THRIPS:MUSCLE -CREATURE:THRIPS:EYE -CREATURE:THRIPS:BRAIN -CREATURE:THRIPS:LUNG -CREATURE:THRIPS:HEART -CREATURE:THRIPS:LIVER -CREATURE:THRIPS:GUT -CREATURE:THRIPS:STOMACH -CREATURE:THRIPS:GIZZARD -CREATURE:THRIPS:PANCREAS -CREATURE:THRIPS:SPLEEN -CREATURE:THRIPS:KIDNEY -CREATURE:THRIPS_MAN:MUSCLE -CREATURE:THRIPS_MAN:EYE -CREATURE:THRIPS_MAN:BRAIN -CREATURE:THRIPS_MAN:LUNG -CREATURE:THRIPS_MAN:HEART -CREATURE:THRIPS_MAN:LIVER -CREATURE:THRIPS_MAN:GUT -CREATURE:THRIPS_MAN:STOMACH -CREATURE:THRIPS_MAN:GIZZARD -CREATURE:THRIPS_MAN:PANCREAS -CREATURE:THRIPS_MAN:SPLEEN -CREATURE:THRIPS_MAN:KIDNEY -CREATURE:GIANT_THRIPS:MUSCLE -CREATURE:GIANT_THRIPS:EYE -CREATURE:GIANT_THRIPS:BRAIN -CREATURE:GIANT_THRIPS:LUNG -CREATURE:GIANT_THRIPS:HEART -CREATURE:GIANT_THRIPS:LIVER -CREATURE:GIANT_THRIPS:GUT -CREATURE:GIANT_THRIPS:STOMACH -CREATURE:GIANT_THRIPS:GIZZARD -CREATURE:GIANT_THRIPS:PANCREAS -CREATURE:GIANT_THRIPS:SPLEEN -CREATURE:GIANT_THRIPS:KIDNEY -CREATURE:SLUG:MUSCLE -CREATURE:SLUG:EYE -CREATURE:SLUG:BRAIN -CREATURE:SLUG:LUNG -CREATURE:SLUG:HEART -CREATURE:SLUG:LIVER -CREATURE:SLUG:GUT -CREATURE:SLUG:STOMACH -CREATURE:SLUG:GIZZARD -CREATURE:SLUG:PANCREAS -CREATURE:SLUG:SPLEEN -CREATURE:SLUG:KIDNEY -CREATURE:SLUG_MAN:MUSCLE -CREATURE:SLUG_MAN:EYE -CREATURE:SLUG_MAN:BRAIN -CREATURE:SLUG_MAN:LUNG -CREATURE:SLUG_MAN:HEART -CREATURE:SLUG_MAN:LIVER -CREATURE:SLUG_MAN:GUT -CREATURE:SLUG_MAN:STOMACH -CREATURE:SLUG_MAN:GIZZARD -CREATURE:SLUG_MAN:PANCREAS -CREATURE:SLUG_MAN:SPLEEN -CREATURE:SLUG_MAN:KIDNEY -CREATURE:GIANT_SLUG:MUSCLE -CREATURE:GIANT_SLUG:EYE -CREATURE:GIANT_SLUG:BRAIN -CREATURE:GIANT_SLUG:LUNG -CREATURE:GIANT_SLUG:HEART -CREATURE:GIANT_SLUG:LIVER -CREATURE:GIANT_SLUG:GUT -CREATURE:GIANT_SLUG:STOMACH -CREATURE:GIANT_SLUG:GIZZARD -CREATURE:GIANT_SLUG:PANCREAS -CREATURE:GIANT_SLUG:SPLEEN -CREATURE:GIANT_SLUG:KIDNEY -CREATURE:MOSQUITO:MUSCLE -CREATURE:MOSQUITO:EYE -CREATURE:MOSQUITO:BRAIN -CREATURE:MOSQUITO:LUNG -CREATURE:MOSQUITO:HEART -CREATURE:MOSQUITO:LIVER -CREATURE:MOSQUITO:GUT -CREATURE:MOSQUITO:STOMACH -CREATURE:MOSQUITO:GIZZARD -CREATURE:MOSQUITO:PANCREAS -CREATURE:MOSQUITO:SPLEEN -CREATURE:MOSQUITO:KIDNEY -CREATURE:MOSQUITO_MAN:MUSCLE -CREATURE:MOSQUITO_MAN:EYE -CREATURE:MOSQUITO_MAN:BRAIN -CREATURE:MOSQUITO_MAN:LUNG -CREATURE:MOSQUITO_MAN:HEART -CREATURE:MOSQUITO_MAN:LIVER -CREATURE:MOSQUITO_MAN:GUT -CREATURE:MOSQUITO_MAN:STOMACH -CREATURE:MOSQUITO_MAN:GIZZARD -CREATURE:MOSQUITO_MAN:PANCREAS -CREATURE:MOSQUITO_MAN:SPLEEN -CREATURE:MOSQUITO_MAN:KIDNEY -CREATURE:GIANT_MOSQUITO:MUSCLE -CREATURE:GIANT_MOSQUITO:EYE -CREATURE:GIANT_MOSQUITO:BRAIN -CREATURE:GIANT_MOSQUITO:LUNG -CREATURE:GIANT_MOSQUITO:HEART -CREATURE:GIANT_MOSQUITO:LIVER -CREATURE:GIANT_MOSQUITO:GUT -CREATURE:GIANT_MOSQUITO:STOMACH -CREATURE:GIANT_MOSQUITO:GIZZARD - CREATURE:GIANT_MOSQUITO:PANCREAS -CREATURE:GIANT_MOSQUITO:SPLEEN -CREATURE:GIANT_MOSQUITO:KIDNEY -CREATURE:SPIDER_JUMPING:MUSCLE -CREATURE:SPIDER_JUMPING:EYE -CREATURE:SPIDER_JUMPING:BRAIN -CREATURE:SPIDER_JUMPING:LUNG -CREATURE:SPIDER_JUMPING:HEART -CREATURE:SPIDER_JUMPING:LIVER -CREATURE:SPIDER_JUMPING:GUT -CREATURE:SPIDER_JUMPING:STOMACH -CREATURE:SPIDER_JUMPING:GIZZARD - CREATURE:SPIDER_JUMPING:PANCREAS -CREATURE:SPIDER_JUMPING:SPLEEN -CREATURE:SPIDER_JUMPING:KIDNEY -"CREATURE:JUMPING_SPIDER_MAN:MUSCLE -CREATURE:JUMPING_SPIDER_MAN:EYE -!CREATURE:JUMPING_SPIDER_MAN:BRAIN - CREATURE:JUMPING_SPIDER_MAN:LUNG -!CREATURE:JUMPING_SPIDER_MAN:HEART -!CREATURE:JUMPING_SPIDER_MAN:LIVER -CREATURE:JUMPING_SPIDER_MAN:GUT -#CREATURE:JUMPING_SPIDER_MAN:STOMACH -#CREATURE:JUMPING_SPIDER_MAN:GIZZARD -$CREATURE:JUMPING_SPIDER_MAN:PANCREAS -"CREATURE:JUMPING_SPIDER_MAN:SPLEEN -"CREATURE:JUMPING_SPIDER_MAN:KIDNEY -$CREATURE:GIANT_JUMPING_SPIDER:MUSCLE -!CREATURE:GIANT_JUMPING_SPIDER:EYE -#CREATURE:GIANT_JUMPING_SPIDER:BRAIN -"CREATURE:GIANT_JUMPING_SPIDER:LUNG -#CREATURE:GIANT_JUMPING_SPIDER:HEART -#CREATURE:GIANT_JUMPING_SPIDER:LIVER -!CREATURE:GIANT_JUMPING_SPIDER:GUT -%CREATURE:GIANT_JUMPING_SPIDER:STOMACH -%CREATURE:GIANT_JUMPING_SPIDER:GIZZARD -&CREATURE:GIANT_JUMPING_SPIDER:PANCREAS -$CREATURE:GIANT_JUMPING_SPIDER:SPLEEN -$CREATURE:GIANT_JUMPING_SPIDER:KIDNEY -CREATURE:TERMITE:MUSCLE -CREATURE:TERMITE:EYE -CREATURE:TERMITE:BRAIN -CREATURE:TERMITE:LUNG -CREATURE:TERMITE:HEART -CREATURE:TERMITE:LIVER -CREATURE:TERMITE:GUT -CREATURE:TERMITE:STOMACH -CREATURE:TERMITE:GIZZARD -CREATURE:TERMITE:PANCREAS -CREATURE:TERMITE:SPLEEN -CREATURE:TERMITE:KIDNEY -CREATURE:MOON_SNAIL:MUSCLE -CREATURE:MOON_SNAIL:EYE -CREATURE:MOON_SNAIL:BRAIN -CREATURE:MOON_SNAIL:LUNG -CREATURE:MOON_SNAIL:HEART -CREATURE:MOON_SNAIL:LIVER -CREATURE:MOON_SNAIL:GUT -CREATURE:MOON_SNAIL:STOMACH -CREATURE:MOON_SNAIL:GIZZARD -CREATURE:MOON_SNAIL:PANCREAS -CREATURE:MOON_SNAIL:SPLEEN -CREATURE:MOON_SNAIL:KIDNEY -CREATURE:MOON_SNAIL_MAN:MUSCLE -CREATURE:MOON_SNAIL_MAN:EYE -CREATURE:MOON_SNAIL_MAN:BRAIN -CREATURE:MOON_SNAIL_MAN:LUNG -CREATURE:MOON_SNAIL_MAN:HEART -CREATURE:MOON_SNAIL_MAN:LIVER -CREATURE:MOON_SNAIL_MAN:GUT -CREATURE:MOON_SNAIL_MAN:STOMACH -CREATURE:MOON_SNAIL_MAN:GIZZARD - CREATURE:MOON_SNAIL_MAN:PANCREAS -CREATURE:MOON_SNAIL_MAN:SPLEEN -CREATURE:MOON_SNAIL_MAN:KIDNEY - CREATURE:GIANT_MOON_SNAIL:MUSCLE -CREATURE:GIANT_MOON_SNAIL:EYE -CREATURE:GIANT_MOON_SNAIL:BRAIN -CREATURE:GIANT_MOON_SNAIL:LUNG -CREATURE:GIANT_MOON_SNAIL:HEART -CREATURE:GIANT_MOON_SNAIL:LIVER -CREATURE:GIANT_MOON_SNAIL:GUT -!CREATURE:GIANT_MOON_SNAIL:STOMACH -!CREATURE:GIANT_MOON_SNAIL:GIZZARD -"CREATURE:GIANT_MOON_SNAIL:PANCREAS - CREATURE:GIANT_MOON_SNAIL:SPLEEN - CREATURE:GIANT_MOON_SNAIL:KIDNEY -$CREATURE:SPIDER_BROWN_RECLUSE:MUSCLE -!CREATURE:SPIDER_BROWN_RECLUSE:EYE -#CREATURE:SPIDER_BROWN_RECLUSE:BRAIN -"CREATURE:SPIDER_BROWN_RECLUSE:LUNG -#CREATURE:SPIDER_BROWN_RECLUSE:HEART -#CREATURE:SPIDER_BROWN_RECLUSE:LIVER -!CREATURE:SPIDER_BROWN_RECLUSE:GUT -%CREATURE:SPIDER_BROWN_RECLUSE:STOMACH -%CREATURE:SPIDER_BROWN_RECLUSE:GIZZARD -&CREATURE:SPIDER_BROWN_RECLUSE:PANCREAS -$CREATURE:SPIDER_BROWN_RECLUSE:SPLEEN -$CREATURE:SPIDER_BROWN_RECLUSE:KIDNEY -(CREATURE:BROWN_RECLUSE_SPIDER_MAN:MUSCLE -%CREATURE:BROWN_RECLUSE_SPIDER_MAN:EYE -'CREATURE:BROWN_RECLUSE_SPIDER_MAN:BRAIN -&CREATURE:BROWN_RECLUSE_SPIDER_MAN:LUNG -'CREATURE:BROWN_RECLUSE_SPIDER_MAN:HEART -'CREATURE:BROWN_RECLUSE_SPIDER_MAN:LIVER -%CREATURE:BROWN_RECLUSE_SPIDER_MAN:GUT -)CREATURE:BROWN_RECLUSE_SPIDER_MAN:STOMACH -)CREATURE:BROWN_RECLUSE_SPIDER_MAN:GIZZARD -*CREATURE:BROWN_RECLUSE_SPIDER_MAN:PANCREAS -(CREATURE:BROWN_RECLUSE_SPIDER_MAN:SPLEEN -(CREATURE:BROWN_RECLUSE_SPIDER_MAN:KIDNEY -*CREATURE:GIANT_BROWN_RECLUSE_SPIDER:MUSCLE -'CREATURE:GIANT_BROWN_RECLUSE_SPIDER:EYE -)CREATURE:GIANT_BROWN_RECLUSE_SPIDER:BRAIN -(CREATURE:GIANT_BROWN_RECLUSE_SPIDER:LUNG -)CREATURE:GIANT_BROWN_RECLUSE_SPIDER:HEART -)CREATURE:GIANT_BROWN_RECLUSE_SPIDER:LIVER -'CREATURE:GIANT_BROWN_RECLUSE_SPIDER:GUT -+CREATURE:GIANT_BROWN_RECLUSE_SPIDER:STOMACH -+CREATURE:GIANT_BROWN_RECLUSE_SPIDER:GIZZARD -,CREATURE:GIANT_BROWN_RECLUSE_SPIDER:PANCREAS -*CREATURE:GIANT_BROWN_RECLUSE_SPIDER:SPLEEN -*CREATURE:GIANT_BROWN_RECLUSE_SPIDER:KIDNEY -CREATURE:SNAIL:MUSCLE -CREATURE:SNAIL:EYE -CREATURE:SNAIL:BRAIN -CREATURE:SNAIL:LUNG -CREATURE:SNAIL:HEART -CREATURE:SNAIL:LIVER -CREATURE:SNAIL:GUT -CREATURE:SNAIL:STOMACH -CREATURE:SNAIL:GIZZARD -CREATURE:SNAIL:PANCREAS -CREATURE:SNAIL:SPLEEN -CREATURE:SNAIL:KIDNEY -CREATURE:SNAIL_MAN:MUSCLE -CREATURE:SNAIL_MAN:EYE -CREATURE:SNAIL_MAN:BRAIN -CREATURE:SNAIL_MAN:LUNG -CREATURE:SNAIL_MAN:HEART -CREATURE:SNAIL_MAN:LIVER -CREATURE:SNAIL_MAN:GUT -CREATURE:SNAIL_MAN:STOMACH -CREATURE:SNAIL_MAN:GIZZARD -CREATURE:SNAIL_MAN:PANCREAS -CREATURE:SNAIL_MAN:SPLEEN -CREATURE:SNAIL_MAN:KIDNEY -CREATURE:GIANT_SNAIL:MUSCLE -CREATURE:GIANT_SNAIL:EYE -CREATURE:GIANT_SNAIL:BRAIN -CREATURE:GIANT_SNAIL:LUNG -CREATURE:GIANT_SNAIL:HEART -CREATURE:GIANT_SNAIL:LIVER -CREATURE:GIANT_SNAIL:GUT -CREATURE:GIANT_SNAIL:STOMACH -CREATURE:GIANT_SNAIL:GIZZARD -CREATURE:GIANT_SNAIL:PANCREAS -CREATURE:GIANT_SNAIL:SPLEEN -CREATURE:GIANT_SNAIL:KIDNEY -CREATURE:GECKO_LEOPARD:MUSCLE -CREATURE:GECKO_LEOPARD:EYE -CREATURE:GECKO_LEOPARD:BRAIN -CREATURE:GECKO_LEOPARD:LUNG -CREATURE:GECKO_LEOPARD:HEART -CREATURE:GECKO_LEOPARD:LIVER -CREATURE:GECKO_LEOPARD:GUT -CREATURE:GECKO_LEOPARD:STOMACH -CREATURE:GECKO_LEOPARD:GIZZARD -CREATURE:GECKO_LEOPARD:PANCREAS -CREATURE:GECKO_LEOPARD:SPLEEN -CREATURE:GECKO_LEOPARD:KIDNEY -!CREATURE:LEOPARD_GECKO_MAN:MUSCLE -CREATURE:LEOPARD_GECKO_MAN:EYE - CREATURE:LEOPARD_GECKO_MAN:BRAIN -CREATURE:LEOPARD_GECKO_MAN:LUNG - CREATURE:LEOPARD_GECKO_MAN:HEART - CREATURE:LEOPARD_GECKO_MAN:LIVER -CREATURE:LEOPARD_GECKO_MAN:GUT -"CREATURE:LEOPARD_GECKO_MAN:STOMACH -"CREATURE:LEOPARD_GECKO_MAN:GIZZARD -#CREATURE:LEOPARD_GECKO_MAN:PANCREAS -!CREATURE:LEOPARD_GECKO_MAN:SPLEEN -!CREATURE:LEOPARD_GECKO_MAN:KIDNEY -#CREATURE:GIANT_LEOPARD_GECKO:MUSCLE - CREATURE:GIANT_LEOPARD_GECKO:EYE -"CREATURE:GIANT_LEOPARD_GECKO:BRAIN -!CREATURE:GIANT_LEOPARD_GECKO:LUNG -"CREATURE:GIANT_LEOPARD_GECKO:HEART -"CREATURE:GIANT_LEOPARD_GECKO:LIVER - CREATURE:GIANT_LEOPARD_GECKO:GUT -$CREATURE:GIANT_LEOPARD_GECKO:STOMACH -$CREATURE:GIANT_LEOPARD_GECKO:GIZZARD -%CREATURE:GIANT_LEOPARD_GECKO:PANCREAS -#CREATURE:GIANT_LEOPARD_GECKO:SPLEEN -#CREATURE:GIANT_LEOPARD_GECKO:KIDNEY -CREATURE:DESERT TORTOISE:MUSCLE -CREATURE:DESERT TORTOISE:EYE -CREATURE:DESERT TORTOISE:BRAIN -CREATURE:DESERT TORTOISE:LUNG -CREATURE:DESERT TORTOISE:HEART -CREATURE:DESERT TORTOISE:LIVER -CREATURE:DESERT TORTOISE:GUT - CREATURE:DESERT TORTOISE:STOMACH - CREATURE:DESERT TORTOISE:GIZZARD -!CREATURE:DESERT TORTOISE:PANCREAS -CREATURE:DESERT TORTOISE:SPLEEN -CREATURE:DESERT TORTOISE:KIDNEY -#CREATURE:DESERT_TORTOISE_MAN:MUSCLE - CREATURE:DESERT_TORTOISE_MAN:EYE -"CREATURE:DESERT_TORTOISE_MAN:BRAIN -!CREATURE:DESERT_TORTOISE_MAN:LUNG -"CREATURE:DESERT_TORTOISE_MAN:HEART -"CREATURE:DESERT_TORTOISE_MAN:LIVER - CREATURE:DESERT_TORTOISE_MAN:GUT -$CREATURE:DESERT_TORTOISE_MAN:STOMACH -$CREATURE:DESERT_TORTOISE_MAN:GIZZARD -%CREATURE:DESERT_TORTOISE_MAN:PANCREAS -#CREATURE:DESERT_TORTOISE_MAN:SPLEEN -#CREATURE:DESERT_TORTOISE_MAN:KIDNEY -%CREATURE:GIANT_DESERT_TORTOISE:MUSCLE -"CREATURE:GIANT_DESERT_TORTOISE:EYE -$CREATURE:GIANT_DESERT_TORTOISE:BRAIN -#CREATURE:GIANT_DESERT_TORTOISE:LUNG -$CREATURE:GIANT_DESERT_TORTOISE:HEART -$CREATURE:GIANT_DESERT_TORTOISE:LIVER -"CREATURE:GIANT_DESERT_TORTOISE:GUT -&CREATURE:GIANT_DESERT_TORTOISE:STOMACH -&CREATURE:GIANT_DESERT_TORTOISE:GIZZARD -'CREATURE:GIANT_DESERT_TORTOISE:PANCREAS -%CREATURE:GIANT_DESERT_TORTOISE:SPLEEN -%CREATURE:GIANT_DESERT_TORTOISE:KIDNEY -CREATURE:GILA_MONSTER:MUSCLE -CREATURE:GILA_MONSTER:EYE -CREATURE:GILA_MONSTER:BRAIN -CREATURE:GILA_MONSTER:LUNG -CREATURE:GILA_MONSTER:HEART -CREATURE:GILA_MONSTER:LIVER -CREATURE:GILA_MONSTER:GUT -CREATURE:GILA_MONSTER:STOMACH -CREATURE:GILA_MONSTER:GIZZARD -CREATURE:GILA_MONSTER:PANCREAS -CREATURE:GILA_MONSTER:SPLEEN -CREATURE:GILA_MONSTER:KIDNEY - CREATURE:GILA_MONSTER_MAN:MUSCLE -CREATURE:GILA_MONSTER_MAN:EYE -CREATURE:GILA_MONSTER_MAN:BRAIN -CREATURE:GILA_MONSTER_MAN:LUNG -CREATURE:GILA_MONSTER_MAN:HEART -CREATURE:GILA_MONSTER_MAN:LIVER -CREATURE:GILA_MONSTER_MAN:GUT -!CREATURE:GILA_MONSTER_MAN:STOMACH -!CREATURE:GILA_MONSTER_MAN:GIZZARD -"CREATURE:GILA_MONSTER_MAN:PANCREAS - CREATURE:GILA_MONSTER_MAN:SPLEEN - CREATURE:GILA_MONSTER_MAN:KIDNEY -"CREATURE:GIANT_GILA_MONSTER:MUSCLE -CREATURE:GIANT_GILA_MONSTER:EYE -!CREATURE:GIANT_GILA_MONSTER:BRAIN - CREATURE:GIANT_GILA_MONSTER:LUNG -!CREATURE:GIANT_GILA_MONSTER:HEART -!CREATURE:GIANT_GILA_MONSTER:LIVER -CREATURE:GIANT_GILA_MONSTER:GUT -#CREATURE:GIANT_GILA_MONSTER:STOMACH -#CREATURE:GIANT_GILA_MONSTER:GIZZARD -$CREATURE:GIANT_GILA_MONSTER:PANCREAS -"CREATURE:GIANT_GILA_MONSTER:SPLEEN -"CREATURE:GIANT_GILA_MONSTER:KIDNEY -CREATURE:DOG:MUSCLE -CREATURE:DOG:EYE -CREATURE:DOG:BRAIN -CREATURE:DOG:LUNG -CREATURE:DOG:HEART -CREATURE:DOG:LIVER -CREATURE:DOG:GUT -CREATURE:DOG:STOMACH -CREATURE:DOG:GIZZARD -CREATURE:DOG:PANCREAS -CREATURE:DOG:SPLEEN -CREATURE:DOG:KIDNEY -CREATURE:CAT:MUSCLE -CREATURE:CAT:EYE -CREATURE:CAT:BRAIN -CREATURE:CAT:LUNG -CREATURE:CAT:HEART -CREATURE:CAT:LIVER -CREATURE:CAT:GUT -CREATURE:CAT:STOMACH -CREATURE:CAT:GIZZARD -CREATURE:CAT:PANCREAS -CREATURE:CAT:SPLEEN -CREATURE:CAT:KIDNEY -CREATURE:MULE:MUSCLE -CREATURE:MULE:EYE -CREATURE:MULE:BRAIN -CREATURE:MULE:LUNG -CREATURE:MULE:HEART -CREATURE:MULE:LIVER -CREATURE:MULE:GUT -CREATURE:MULE:STOMACH -CREATURE:MULE:GIZZARD -CREATURE:MULE:PANCREAS -CREATURE:MULE:SPLEEN -CREATURE:MULE:KIDNEY -CREATURE:DONKEY:MUSCLE -CREATURE:DONKEY:EYE -CREATURE:DONKEY:BRAIN -CREATURE:DONKEY:LUNG -CREATURE:DONKEY:HEART -CREATURE:DONKEY:LIVER -CREATURE:DONKEY:GUT -CREATURE:DONKEY:STOMACH -CREATURE:DONKEY:GIZZARD -CREATURE:DONKEY:PANCREAS -CREATURE:DONKEY:SPLEEN -CREATURE:DONKEY:KIDNEY -CREATURE:HORSE:MUSCLE -CREATURE:HORSE:EYE -CREATURE:HORSE:BRAIN -CREATURE:HORSE:LUNG -CREATURE:HORSE:HEART -CREATURE:HORSE:LIVER -CREATURE:HORSE:GUT -CREATURE:HORSE:STOMACH -CREATURE:HORSE:GIZZARD -CREATURE:HORSE:PANCREAS -CREATURE:HORSE:SPLEEN -CREATURE:HORSE:KIDNEY -CREATURE:COW:MUSCLE -CREATURE:COW:EYE -CREATURE:COW:BRAIN -CREATURE:COW:LUNG -CREATURE:COW:HEART -CREATURE:COW:LIVER -CREATURE:COW:GUT -CREATURE:COW:STOMACH -CREATURE:COW:GIZZARD -CREATURE:COW:PANCREAS -CREATURE:COW:SPLEEN -CREATURE:COW:KIDNEY -CREATURE:SHEEP:MUSCLE -CREATURE:SHEEP:EYE -CREATURE:SHEEP:BRAIN -CREATURE:SHEEP:LUNG -CREATURE:SHEEP:HEART -CREATURE:SHEEP:LIVER -CREATURE:SHEEP:GUT -CREATURE:SHEEP:STOMACH -CREATURE:SHEEP:GIZZARD -CREATURE:SHEEP:PANCREAS -CREATURE:SHEEP:SPLEEN -CREATURE:SHEEP:KIDNEY -CREATURE:PIG:MUSCLE -CREATURE:PIG:EYE -CREATURE:PIG:BRAIN -CREATURE:PIG:LUNG -CREATURE:PIG:HEART -CREATURE:PIG:LIVER -CREATURE:PIG:GUT -CREATURE:PIG:STOMACH -CREATURE:PIG:GIZZARD -CREATURE:PIG:PANCREAS -CREATURE:PIG:SPLEEN -CREATURE:PIG:KIDNEY -CREATURE:GOAT:MUSCLE -CREATURE:GOAT:EYE -CREATURE:GOAT:BRAIN -CREATURE:GOAT:LUNG -CREATURE:GOAT:HEART -CREATURE:GOAT:LIVER -CREATURE:GOAT:GUT -CREATURE:GOAT:STOMACH -CREATURE:GOAT:GIZZARD -CREATURE:GOAT:PANCREAS -CREATURE:GOAT:SPLEEN -CREATURE:GOAT:KIDNEY -CREATURE:BIRD_CHICKEN:MUSCLE -CREATURE:BIRD_CHICKEN:EYE -CREATURE:BIRD_CHICKEN:BRAIN -CREATURE:BIRD_CHICKEN:LUNG -CREATURE:BIRD_CHICKEN:HEART -CREATURE:BIRD_CHICKEN:LIVER -CREATURE:BIRD_CHICKEN:GUT -CREATURE:BIRD_CHICKEN:STOMACH -CREATURE:BIRD_CHICKEN:GIZZARD -CREATURE:BIRD_CHICKEN:PANCREAS -CREATURE:BIRD_CHICKEN:SPLEEN -CREATURE:BIRD_CHICKEN:KIDNEY -CREATURE:CAVY:MUSCLE -CREATURE:CAVY:EYE -CREATURE:CAVY:BRAIN -CREATURE:CAVY:LUNG -CREATURE:CAVY:HEART -CREATURE:CAVY:LIVER -CREATURE:CAVY:GUT -CREATURE:CAVY:STOMACH -CREATURE:CAVY:GIZZARD -CREATURE:CAVY:PANCREAS -CREATURE:CAVY:SPLEEN -CREATURE:CAVY:KIDNEY -CREATURE:BIRD_DUCK:MUSCLE -CREATURE:BIRD_DUCK:EYE -CREATURE:BIRD_DUCK:BRAIN -CREATURE:BIRD_DUCK:LUNG -CREATURE:BIRD_DUCK:HEART -CREATURE:BIRD_DUCK:LIVER -CREATURE:BIRD_DUCK:GUT -CREATURE:BIRD_DUCK:STOMACH -CREATURE:BIRD_DUCK:GIZZARD -CREATURE:BIRD_DUCK:PANCREAS -CREATURE:BIRD_DUCK:SPLEEN -CREATURE:BIRD_DUCK:KIDNEY -CREATURE:WATER_BUFFALO:MUSCLE -CREATURE:WATER_BUFFALO:EYE -CREATURE:WATER_BUFFALO:BRAIN -CREATURE:WATER_BUFFALO:LUNG -CREATURE:WATER_BUFFALO:HEART -CREATURE:WATER_BUFFALO:LIVER -CREATURE:WATER_BUFFALO:GUT -CREATURE:WATER_BUFFALO:STOMACH -CREATURE:WATER_BUFFALO:GIZZARD -CREATURE:WATER_BUFFALO:PANCREAS -CREATURE:WATER_BUFFALO:SPLEEN -CREATURE:WATER_BUFFALO:KIDNEY -CREATURE:REINDEER:MUSCLE -CREATURE:REINDEER:EYE -CREATURE:REINDEER:BRAIN -CREATURE:REINDEER:LUNG -CREATURE:REINDEER:HEART -CREATURE:REINDEER:LIVER -CREATURE:REINDEER:GUT -CREATURE:REINDEER:STOMACH -CREATURE:REINDEER:GIZZARD -CREATURE:REINDEER:PANCREAS -CREATURE:REINDEER:SPLEEN -CREATURE:REINDEER:KIDNEY -CREATURE:BIRD_GOOSE:MUSCLE -CREATURE:BIRD_GOOSE:EYE -CREATURE:BIRD_GOOSE:BRAIN -CREATURE:BIRD_GOOSE:LUNG -CREATURE:BIRD_GOOSE:HEART -CREATURE:BIRD_GOOSE:LIVER -CREATURE:BIRD_GOOSE:GUT -CREATURE:BIRD_GOOSE:STOMACH -CREATURE:BIRD_GOOSE:GIZZARD -CREATURE:BIRD_GOOSE:PANCREAS -CREATURE:BIRD_GOOSE:SPLEEN -CREATURE:BIRD_GOOSE:KIDNEY -CREATURE:YAK:MUSCLE -CREATURE:YAK:EYE -CREATURE:YAK:BRAIN -CREATURE:YAK:LUNG -CREATURE:YAK:HEART -CREATURE:YAK:LIVER -CREATURE:YAK:GUT -CREATURE:YAK:STOMACH -CREATURE:YAK:GIZZARD -CREATURE:YAK:PANCREAS -CREATURE:YAK:SPLEEN -CREATURE:YAK:KIDNEY -CREATURE:LLAMA:MUSCLE -CREATURE:LLAMA:EYE -CREATURE:LLAMA:BRAIN -CREATURE:LLAMA:LUNG -CREATURE:LLAMA:HEART -CREATURE:LLAMA:LIVER -CREATURE:LLAMA:GUT -CREATURE:LLAMA:STOMACH -CREATURE:LLAMA:GIZZARD -CREATURE:LLAMA:PANCREAS -CREATURE:LLAMA:SPLEEN -CREATURE:LLAMA:KIDNEY -CREATURE:ALPACA:MUSCLE -CREATURE:ALPACA:EYE -CREATURE:ALPACA:BRAIN -CREATURE:ALPACA:LUNG -CREATURE:ALPACA:HEART -CREATURE:ALPACA:LIVER -CREATURE:ALPACA:GUT -CREATURE:ALPACA:STOMACH -CREATURE:ALPACA:GIZZARD -CREATURE:ALPACA:PANCREAS -CREATURE:ALPACA:SPLEEN -CREATURE:ALPACA:KIDNEY -CREATURE:BIRD_GUINEAFOWL:MUSCLE -CREATURE:BIRD_GUINEAFOWL:EYE -CREATURE:BIRD_GUINEAFOWL:BRAIN -CREATURE:BIRD_GUINEAFOWL:LUNG -CREATURE:BIRD_GUINEAFOWL:HEART -CREATURE:BIRD_GUINEAFOWL:LIVER -CREATURE:BIRD_GUINEAFOWL:GUT - CREATURE:BIRD_GUINEAFOWL:STOMACH - CREATURE:BIRD_GUINEAFOWL:GIZZARD -!CREATURE:BIRD_GUINEAFOWL:PANCREAS -CREATURE:BIRD_GUINEAFOWL:SPLEEN -CREATURE:BIRD_GUINEAFOWL:KIDNEY -!CREATURE:BIRD_PEAFOWL_BLUE:MUSCLE -CREATURE:BIRD_PEAFOWL_BLUE:EYE - CREATURE:BIRD_PEAFOWL_BLUE:BRAIN -CREATURE:BIRD_PEAFOWL_BLUE:LUNG - CREATURE:BIRD_PEAFOWL_BLUE:HEART - CREATURE:BIRD_PEAFOWL_BLUE:LIVER -CREATURE:BIRD_PEAFOWL_BLUE:GUT -"CREATURE:BIRD_PEAFOWL_BLUE:STOMACH -"CREATURE:BIRD_PEAFOWL_BLUE:GIZZARD -#CREATURE:BIRD_PEAFOWL_BLUE:PANCREAS -!CREATURE:BIRD_PEAFOWL_BLUE:SPLEEN -!CREATURE:BIRD_PEAFOWL_BLUE:KIDNEY -CREATURE:BIRD_TURKEY:MUSCLE -CREATURE:BIRD_TURKEY:EYE -CREATURE:BIRD_TURKEY:BRAIN -CREATURE:BIRD_TURKEY:LUNG -CREATURE:BIRD_TURKEY:HEART -CREATURE:BIRD_TURKEY:LIVER -CREATURE:BIRD_TURKEY:GUT -CREATURE:BIRD_TURKEY:STOMACH -CREATURE:BIRD_TURKEY:GIZZARD -CREATURE:BIRD_TURKEY:PANCREAS -CREATURE:BIRD_TURKEY:SPLEEN -CREATURE:BIRD_TURKEY:KIDNEY -CREATURE:RABBIT:MUSCLE -CREATURE:RABBIT:EYE -CREATURE:RABBIT:BRAIN -CREATURE:RABBIT:LUNG -CREATURE:RABBIT:HEART -CREATURE:RABBIT:LIVER -CREATURE:RABBIT:GUT -CREATURE:RABBIT:STOMACH -CREATURE:RABBIT:GIZZARD -CREATURE:RABBIT:PANCREAS -CREATURE:RABBIT:SPLEEN -CREATURE:RABBIT:KIDNEY -CREATURE:FLY:MUSCLE -CREATURE:FLY:EYE -CREATURE:FLY:BRAIN -CREATURE:FLY:LUNG -CREATURE:FLY:HEART -CREATURE:FLY:LIVER -CREATURE:FLY:GUT -CREATURE:FLY:STOMACH -CREATURE:FLY:GIZZARD -CREATURE:FLY:PANCREAS -CREATURE:FLY:SPLEEN -CREATURE:FLY:KIDNEY -CREATURE:FLY_MAN:MUSCLE -CREATURE:FLY_MAN:EYE -CREATURE:FLY_MAN:BRAIN -CREATURE:FLY_MAN:LUNG -CREATURE:FLY_MAN:HEART -CREATURE:FLY_MAN:LIVER -CREATURE:FLY_MAN:GUT -CREATURE:FLY_MAN:STOMACH -CREATURE:FLY_MAN:GIZZARD -CREATURE:FLY_MAN:PANCREAS -CREATURE:FLY_MAN:SPLEEN -CREATURE:FLY_MAN:KIDNEY -CREATURE:GIANT_FLY:MUSCLE -CREATURE:GIANT_FLY:EYE -CREATURE:GIANT_FLY:BRAIN -CREATURE:GIANT_FLY:LUNG -CREATURE:GIANT_FLY:HEART -CREATURE:GIANT_FLY:LIVER -CREATURE:GIANT_FLY:GUT -CREATURE:GIANT_FLY:STOMACH -CREATURE:GIANT_FLY:GIZZARD -CREATURE:GIANT_FLY:PANCREAS -CREATURE:GIANT_FLY:SPLEEN -CREATURE:GIANT_FLY:KIDNEY -CREATURE:ROACH_LARGE:MUSCLE -CREATURE:ROACH_LARGE:EYE -CREATURE:ROACH_LARGE:BRAIN -CREATURE:ROACH_LARGE:LUNG -CREATURE:ROACH_LARGE:HEART -CREATURE:ROACH_LARGE:LIVER -CREATURE:ROACH_LARGE:GUT -CREATURE:ROACH_LARGE:STOMACH -CREATURE:ROACH_LARGE:GIZZARD -CREATURE:ROACH_LARGE:PANCREAS -CREATURE:ROACH_LARGE:SPLEEN -CREATURE:ROACH_LARGE:KIDNEY -CREATURE:ROACH_MAN:MUSCLE -CREATURE:ROACH_MAN:EYE -CREATURE:ROACH_MAN:BRAIN -CREATURE:ROACH_MAN:LUNG -CREATURE:ROACH_MAN:HEART -CREATURE:ROACH_MAN:LIVER -CREATURE:ROACH_MAN:GUT -CREATURE:ROACH_MAN:STOMACH -CREATURE:ROACH_MAN:GIZZARD -CREATURE:ROACH_MAN:PANCREAS -CREATURE:ROACH_MAN:SPLEEN -CREATURE:ROACH_MAN:KIDNEY -CREATURE:GIANT_ROACH:MUSCLE -CREATURE:GIANT_ROACH:EYE -CREATURE:GIANT_ROACH:BRAIN -CREATURE:GIANT_ROACH:LUNG -CREATURE:GIANT_ROACH:HEART -CREATURE:GIANT_ROACH:LIVER -CREATURE:GIANT_ROACH:GUT -CREATURE:GIANT_ROACH:STOMACH -CREATURE:GIANT_ROACH:GIZZARD -CREATURE:GIANT_ROACH:PANCREAS -CREATURE:GIANT_ROACH:SPLEEN -CREATURE:GIANT_ROACH:KIDNEY -CREATURE:BEETLE:MUSCLE -CREATURE:BEETLE:EYE -CREATURE:BEETLE:BRAIN -CREATURE:BEETLE:LUNG -CREATURE:BEETLE:HEART -CREATURE:BEETLE:LIVER -CREATURE:BEETLE:GUT -CREATURE:BEETLE:STOMACH -CREATURE:BEETLE:GIZZARD -CREATURE:BEETLE:PANCREAS -CREATURE:BEETLE:SPLEEN -CREATURE:BEETLE:KIDNEY -CREATURE:BEETLE_MAN:MUSCLE -CREATURE:BEETLE_MAN:EYE -CREATURE:BEETLE_MAN:BRAIN -CREATURE:BEETLE_MAN:LUNG -CREATURE:BEETLE_MAN:HEART -CREATURE:BEETLE_MAN:LIVER -CREATURE:BEETLE_MAN:GUT -CREATURE:BEETLE_MAN:STOMACH -CREATURE:BEETLE_MAN:GIZZARD -CREATURE:BEETLE_MAN:PANCREAS -CREATURE:BEETLE_MAN:SPLEEN -CREATURE:BEETLE_MAN:KIDNEY -CREATURE:GIANT_BEETLE:MUSCLE -CREATURE:GIANT_BEETLE:EYE -CREATURE:GIANT_BEETLE:BRAIN -CREATURE:GIANT_BEETLE:LUNG -CREATURE:GIANT_BEETLE:HEART -CREATURE:GIANT_BEETLE:LIVER -CREATURE:GIANT_BEETLE:GUT -CREATURE:GIANT_BEETLE:STOMACH -CREATURE:GIANT_BEETLE:GIZZARD -CREATURE:GIANT_BEETLE:PANCREAS -CREATURE:GIANT_BEETLE:SPLEEN -CREATURE:GIANT_BEETLE:KIDNEY -CREATURE:ANT:MUSCLE -CREATURE:ANT:EYE -CREATURE:ANT:BRAIN -CREATURE:ANT:LUNG -CREATURE:ANT:HEART -CREATURE:ANT:LIVER -CREATURE:ANT:GUT -CREATURE:ANT:STOMACH -CREATURE:ANT:GIZZARD -CREATURE:ANT:PANCREAS -CREATURE:ANT:SPLEEN -CREATURE:ANT:KIDNEY -!CREATURE:BUTTERFLY_MONARCH:MUSCLE -CREATURE:BUTTERFLY_MONARCH:EYE - CREATURE:BUTTERFLY_MONARCH:BRAIN -CREATURE:BUTTERFLY_MONARCH:LUNG - CREATURE:BUTTERFLY_MONARCH:HEART - CREATURE:BUTTERFLY_MONARCH:LIVER -CREATURE:BUTTERFLY_MONARCH:GUT -"CREATURE:BUTTERFLY_MONARCH:STOMACH -"CREATURE:BUTTERFLY_MONARCH:GIZZARD -#CREATURE:BUTTERFLY_MONARCH:PANCREAS -!CREATURE:BUTTERFLY_MONARCH:SPLEEN -!CREATURE:BUTTERFLY_MONARCH:KIDNEY -%CREATURE:BUTTERFLY_MONARCH_MAN:MUSCLE -"CREATURE:BUTTERFLY_MONARCH_MAN:EYE -$CREATURE:BUTTERFLY_MONARCH_MAN:BRAIN -#CREATURE:BUTTERFLY_MONARCH_MAN:LUNG -$CREATURE:BUTTERFLY_MONARCH_MAN:HEART -$CREATURE:BUTTERFLY_MONARCH_MAN:LIVER -"CREATURE:BUTTERFLY_MONARCH_MAN:GUT -&CREATURE:BUTTERFLY_MONARCH_MAN:STOMACH -&CREATURE:BUTTERFLY_MONARCH_MAN:GIZZARD -'CREATURE:BUTTERFLY_MONARCH_MAN:PANCREAS -%CREATURE:BUTTERFLY_MONARCH_MAN:SPLEEN -%CREATURE:BUTTERFLY_MONARCH_MAN:KIDNEY -'CREATURE:GIANT_BUTTERFLY_MONARCH:MUSCLE -$CREATURE:GIANT_BUTTERFLY_MONARCH:EYE -&CREATURE:GIANT_BUTTERFLY_MONARCH:BRAIN -%CREATURE:GIANT_BUTTERFLY_MONARCH:LUNG -&CREATURE:GIANT_BUTTERFLY_MONARCH:HEART -&CREATURE:GIANT_BUTTERFLY_MONARCH:LIVER -$CREATURE:GIANT_BUTTERFLY_MONARCH:GUT -(CREATURE:GIANT_BUTTERFLY_MONARCH:STOMACH -(CREATURE:GIANT_BUTTERFLY_MONARCH:GIZZARD -)CREATURE:GIANT_BUTTERFLY_MONARCH:PANCREAS -'CREATURE:GIANT_BUTTERFLY_MONARCH:SPLEEN -'CREATURE:GIANT_BUTTERFLY_MONARCH:KIDNEY -CREATURE:FIREFLY:MUSCLE -CREATURE:FIREFLY:EYE -CREATURE:FIREFLY:BRAIN -CREATURE:FIREFLY:LUNG -CREATURE:FIREFLY:HEART -CREATURE:FIREFLY:LIVER -CREATURE:FIREFLY:GUT -CREATURE:FIREFLY:STOMACH -CREATURE:FIREFLY:GIZZARD -CREATURE:FIREFLY:PANCREAS -CREATURE:FIREFLY:SPLEEN -CREATURE:FIREFLY:KIDNEY -CREATURE:FIREFLY_MAN:MUSCLE -CREATURE:FIREFLY_MAN:EYE -CREATURE:FIREFLY_MAN:BRAIN -CREATURE:FIREFLY_MAN:LUNG -CREATURE:FIREFLY_MAN:HEART -CREATURE:FIREFLY_MAN:LIVER -CREATURE:FIREFLY_MAN:GUT -CREATURE:FIREFLY_MAN:STOMACH -CREATURE:FIREFLY_MAN:GIZZARD -CREATURE:FIREFLY_MAN:PANCREAS -CREATURE:FIREFLY_MAN:SPLEEN -CREATURE:FIREFLY_MAN:KIDNEY -CREATURE:GIANT_FIREFLY:MUSCLE -CREATURE:GIANT_FIREFLY:EYE -CREATURE:GIANT_FIREFLY:BRAIN -CREATURE:GIANT_FIREFLY:LUNG -CREATURE:GIANT_FIREFLY:HEART -CREATURE:GIANT_FIREFLY:LIVER -CREATURE:GIANT_FIREFLY:GUT -CREATURE:GIANT_FIREFLY:STOMACH -CREATURE:GIANT_FIREFLY:GIZZARD -CREATURE:GIANT_FIREFLY:PANCREAS -CREATURE:GIANT_FIREFLY:SPLEEN -CREATURE:GIANT_FIREFLY:KIDNEY -CREATURE:DRAGONFLY:MUSCLE -CREATURE:DRAGONFLY:EYE -CREATURE:DRAGONFLY:BRAIN -CREATURE:DRAGONFLY:LUNG -CREATURE:DRAGONFLY:HEART -CREATURE:DRAGONFLY:LIVER -CREATURE:DRAGONFLY:GUT -CREATURE:DRAGONFLY:STOMACH -CREATURE:DRAGONFLY:GIZZARD -CREATURE:DRAGONFLY:PANCREAS -CREATURE:DRAGONFLY:SPLEEN -CREATURE:DRAGONFLY:KIDNEY -CREATURE:DRAGONFLY_MAN:MUSCLE -CREATURE:DRAGONFLY_MAN:EYE -CREATURE:DRAGONFLY_MAN:BRAIN -CREATURE:DRAGONFLY_MAN:LUNG -CREATURE:DRAGONFLY_MAN:HEART -CREATURE:DRAGONFLY_MAN:LIVER -CREATURE:DRAGONFLY_MAN:GUT -CREATURE:DRAGONFLY_MAN:STOMACH -CREATURE:DRAGONFLY_MAN:GIZZARD -CREATURE:DRAGONFLY_MAN:PANCREAS -CREATURE:DRAGONFLY_MAN:SPLEEN -CREATURE:DRAGONFLY_MAN:KIDNEY -CREATURE:GIANT_DRAGONFLY:MUSCLE -CREATURE:GIANT_DRAGONFLY:EYE -CREATURE:GIANT_DRAGONFLY:BRAIN -CREATURE:GIANT_DRAGONFLY:LUNG -CREATURE:GIANT_DRAGONFLY:HEART -CREATURE:GIANT_DRAGONFLY:LIVER -CREATURE:GIANT_DRAGONFLY:GUT - CREATURE:GIANT_DRAGONFLY:STOMACH - CREATURE:GIANT_DRAGONFLY:GIZZARD -!CREATURE:GIANT_DRAGONFLY:PANCREAS -CREATURE:GIANT_DRAGONFLY:SPLEEN -CREATURE:GIANT_DRAGONFLY:KIDNEY -CREATURE:HONEY_BEE:MUSCLE -CREATURE:HONEY_BEE:EYE -CREATURE:HONEY_BEE:BRAIN -CREATURE:HONEY_BEE:LUNG -CREATURE:HONEY_BEE:HEART -CREATURE:HONEY_BEE:LIVER -CREATURE:HONEY_BEE:GUT -CREATURE:HONEY_BEE:STOMACH -CREATURE:HONEY_BEE:GIZZARD -CREATURE:HONEY_BEE:PANCREAS -CREATURE:HONEY_BEE:SPLEEN -CREATURE:HONEY_BEE:KIDNEY -CREATURE:BUMBLEBEE:MUSCLE -CREATURE:BUMBLEBEE:EYE -CREATURE:BUMBLEBEE:BRAIN -CREATURE:BUMBLEBEE:LUNG -CREATURE:BUMBLEBEE:HEART -CREATURE:BUMBLEBEE:LIVER -CREATURE:BUMBLEBEE:GUT -CREATURE:BUMBLEBEE:STOMACH -CREATURE:BUMBLEBEE:GIZZARD -CREATURE:BUMBLEBEE:PANCREAS -CREATURE:BUMBLEBEE:SPLEEN -CREATURE:BUMBLEBEE:KIDNEY -CREATURE:GOAT_MOUNTAIN:MUSCLE -CREATURE:GOAT_MOUNTAIN:EYE -CREATURE:GOAT_MOUNTAIN:BRAIN -CREATURE:GOAT_MOUNTAIN:LUNG -CREATURE:GOAT_MOUNTAIN:HEART -CREATURE:GOAT_MOUNTAIN:LIVER -CREATURE:GOAT_MOUNTAIN:GUT -CREATURE:GOAT_MOUNTAIN:STOMACH -CREATURE:GOAT_MOUNTAIN:GIZZARD -CREATURE:GOAT_MOUNTAIN:PANCREAS -CREATURE:GOAT_MOUNTAIN:SPLEEN -CREATURE:GOAT_MOUNTAIN:KIDNEY -!CREATURE:GOAT_MOUNTAIN_MAN:MUSCLE -CREATURE:GOAT_MOUNTAIN_MAN:EYE - CREATURE:GOAT_MOUNTAIN_MAN:BRAIN -CREATURE:GOAT_MOUNTAIN_MAN:LUNG - CREATURE:GOAT_MOUNTAIN_MAN:HEART - CREATURE:GOAT_MOUNTAIN_MAN:LIVER -CREATURE:GOAT_MOUNTAIN_MAN:GUT -"CREATURE:GOAT_MOUNTAIN_MAN:STOMACH -"CREATURE:GOAT_MOUNTAIN_MAN:GIZZARD -#CREATURE:GOAT_MOUNTAIN_MAN:PANCREAS -!CREATURE:GOAT_MOUNTAIN_MAN:SPLEEN -!CREATURE:GOAT_MOUNTAIN_MAN:KIDNEY -#CREATURE:GIANT_GOAT_MOUNTAIN:MUSCLE - CREATURE:GIANT_GOAT_MOUNTAIN:EYE -"CREATURE:GIANT_GOAT_MOUNTAIN:BRAIN -!CREATURE:GIANT_GOAT_MOUNTAIN:LUNG -"CREATURE:GIANT_GOAT_MOUNTAIN:HEART -"CREATURE:GIANT_GOAT_MOUNTAIN:LIVER - CREATURE:GIANT_GOAT_MOUNTAIN:GUT -$CREATURE:GIANT_GOAT_MOUNTAIN:STOMACH -$CREATURE:GIANT_GOAT_MOUNTAIN:GIZZARD -%CREATURE:GIANT_GOAT_MOUNTAIN:PANCREAS -#CREATURE:GIANT_GOAT_MOUNTAIN:SPLEEN -#CREATURE:GIANT_GOAT_MOUNTAIN:KIDNEY -CREATURE:MARMOT_HOARY:MUSCLE -CREATURE:MARMOT_HOARY:EYE -CREATURE:MARMOT_HOARY:BRAIN -CREATURE:MARMOT_HOARY:LUNG -CREATURE:MARMOT_HOARY:HEART -CREATURE:MARMOT_HOARY:LIVER -CREATURE:MARMOT_HOARY:GUT -CREATURE:MARMOT_HOARY:STOMACH -CREATURE:MARMOT_HOARY:GIZZARD -CREATURE:MARMOT_HOARY:PANCREAS -CREATURE:MARMOT_HOARY:SPLEEN -CREATURE:MARMOT_HOARY:KIDNEY - CREATURE:MARMOT_HOARY_MAN:MUSCLE -CREATURE:MARMOT_HOARY_MAN:EYE -CREATURE:MARMOT_HOARY_MAN:BRAIN -CREATURE:MARMOT_HOARY_MAN:LUNG -CREATURE:MARMOT_HOARY_MAN:HEART -CREATURE:MARMOT_HOARY_MAN:LIVER -CREATURE:MARMOT_HOARY_MAN:GUT -!CREATURE:MARMOT_HOARY_MAN:STOMACH -!CREATURE:MARMOT_HOARY_MAN:GIZZARD -"CREATURE:MARMOT_HOARY_MAN:PANCREAS - CREATURE:MARMOT_HOARY_MAN:SPLEEN - CREATURE:MARMOT_HOARY_MAN:KIDNEY -"CREATURE:GIANT_MARMOT_HOARY:MUSCLE -CREATURE:GIANT_MARMOT_HOARY:EYE -!CREATURE:GIANT_MARMOT_HOARY:BRAIN - CREATURE:GIANT_MARMOT_HOARY:LUNG -!CREATURE:GIANT_MARMOT_HOARY:HEART -!CREATURE:GIANT_MARMOT_HOARY:LIVER -CREATURE:GIANT_MARMOT_HOARY:GUT -#CREATURE:GIANT_MARMOT_HOARY:STOMACH -#CREATURE:GIANT_MARMOT_HOARY:GIZZARD -$CREATURE:GIANT_MARMOT_HOARY:PANCREAS -"CREATURE:GIANT_MARMOT_HOARY:SPLEEN -"CREATURE:GIANT_MARMOT_HOARY:KIDNEY -CREATURE:GNOME_MOUNTAIN:MUSCLE -CREATURE:GNOME_MOUNTAIN:EYE -CREATURE:GNOME_MOUNTAIN:BRAIN -CREATURE:GNOME_MOUNTAIN:LUNG -CREATURE:GNOME_MOUNTAIN:HEART -CREATURE:GNOME_MOUNTAIN:LIVER -CREATURE:GNOME_MOUNTAIN:GUT -CREATURE:GNOME_MOUNTAIN:STOMACH -CREATURE:GNOME_MOUNTAIN:GIZZARD - CREATURE:GNOME_MOUNTAIN:PANCREAS -CREATURE:GNOME_MOUNTAIN:SPLEEN -CREATURE:GNOME_MOUNTAIN:KIDNEY -CREATURE:GNOME_DARK:MUSCLE -CREATURE:GNOME_DARK:EYE -CREATURE:GNOME_DARK:BRAIN -CREATURE:GNOME_DARK:LUNG -CREATURE:GNOME_DARK:HEART -CREATURE:GNOME_DARK:LIVER -CREATURE:GNOME_DARK:GUT -CREATURE:GNOME_DARK:STOMACH -CREATURE:GNOME_DARK:GIZZARD -CREATURE:GNOME_DARK:PANCREAS -CREATURE:GNOME_DARK:SPLEEN -CREATURE:GNOME_DARK:KIDNEY -CREATURE:WALRUS:MUSCLE -CREATURE:WALRUS:EYE -CREATURE:WALRUS:BRAIN -CREATURE:WALRUS:LUNG -CREATURE:WALRUS:HEART -CREATURE:WALRUS:LIVER -CREATURE:WALRUS:GUT -CREATURE:WALRUS:STOMACH -CREATURE:WALRUS:GIZZARD -CREATURE:WALRUS:PANCREAS -CREATURE:WALRUS:SPLEEN -CREATURE:WALRUS:KIDNEY -CREATURE:WALRUS_MAN:MUSCLE -CREATURE:WALRUS_MAN:EYE -CREATURE:WALRUS_MAN:BRAIN -CREATURE:WALRUS_MAN:LUNG -CREATURE:WALRUS_MAN:HEART -CREATURE:WALRUS_MAN:LIVER -CREATURE:WALRUS_MAN:GUT -CREATURE:WALRUS_MAN:STOMACH -CREATURE:WALRUS_MAN:GIZZARD -CREATURE:WALRUS_MAN:PANCREAS -CREATURE:WALRUS_MAN:SPLEEN -CREATURE:WALRUS_MAN:KIDNEY -CREATURE:GIANT_WALRUS:MUSCLE -CREATURE:GIANT_WALRUS:EYE -CREATURE:GIANT_WALRUS:BRAIN -CREATURE:GIANT_WALRUS:LUNG -CREATURE:GIANT_WALRUS:HEART -CREATURE:GIANT_WALRUS:LIVER -CREATURE:GIANT_WALRUS:GUT -CREATURE:GIANT_WALRUS:STOMACH -CREATURE:GIANT_WALRUS:GIZZARD -CREATURE:GIANT_WALRUS:PANCREAS -CREATURE:GIANT_WALRUS:SPLEEN -CREATURE:GIANT_WALRUS:KIDNEY - CREATURE:FISH_LAMPREY_SEA:MUSCLE -CREATURE:FISH_LAMPREY_SEA:EYE -CREATURE:FISH_LAMPREY_SEA:BRAIN -CREATURE:FISH_LAMPREY_SEA:LUNG -CREATURE:FISH_LAMPREY_SEA:HEART -CREATURE:FISH_LAMPREY_SEA:LIVER -CREATURE:FISH_LAMPREY_SEA:GUT -!CREATURE:FISH_LAMPREY_SEA:STOMACH -!CREATURE:FISH_LAMPREY_SEA:GIZZARD -"CREATURE:FISH_LAMPREY_SEA:PANCREAS - CREATURE:FISH_LAMPREY_SEA:SPLEEN - CREATURE:FISH_LAMPREY_SEA:KIDNEY -!CREATURE:SHARK_GREAT_WHITE:MUSCLE -CREATURE:SHARK_GREAT_WHITE:EYE - CREATURE:SHARK_GREAT_WHITE:BRAIN -CREATURE:SHARK_GREAT_WHITE:LUNG - CREATURE:SHARK_GREAT_WHITE:HEART - CREATURE:SHARK_GREAT_WHITE:LIVER -CREATURE:SHARK_GREAT_WHITE:GUT -"CREATURE:SHARK_GREAT_WHITE:STOMACH -"CREATURE:SHARK_GREAT_WHITE:GIZZARD -#CREATURE:SHARK_GREAT_WHITE:PANCREAS -!CREATURE:SHARK_GREAT_WHITE:SPLEEN -!CREATURE:SHARK_GREAT_WHITE:KIDNEY -CREATURE:SHARK_FRILL:MUSCLE -CREATURE:SHARK_FRILL:EYE -CREATURE:SHARK_FRILL:BRAIN -CREATURE:SHARK_FRILL:LUNG -CREATURE:SHARK_FRILL:HEART -CREATURE:SHARK_FRILL:LIVER -CREATURE:SHARK_FRILL:GUT -CREATURE:SHARK_FRILL:STOMACH -CREATURE:SHARK_FRILL:GIZZARD -CREATURE:SHARK_FRILL:PANCREAS -CREATURE:SHARK_FRILL:SPLEEN -CREATURE:SHARK_FRILL:KIDNEY -#CREATURE:SHARK_SPINY_DOGFISH:MUSCLE - CREATURE:SHARK_SPINY_DOGFISH:EYE -"CREATURE:SHARK_SPINY_DOGFISH:BRAIN -!CREATURE:SHARK_SPINY_DOGFISH:LUNG -"CREATURE:SHARK_SPINY_DOGFISH:HEART -"CREATURE:SHARK_SPINY_DOGFISH:LIVER - CREATURE:SHARK_SPINY_DOGFISH:GUT -$CREATURE:SHARK_SPINY_DOGFISH:STOMACH -$CREATURE:SHARK_SPINY_DOGFISH:GIZZARD -%CREATURE:SHARK_SPINY_DOGFISH:PANCREAS -#CREATURE:SHARK_SPINY_DOGFISH:SPLEEN -#CREATURE:SHARK_SPINY_DOGFISH:KIDNEY -'CREATURE:SHARK_WOBBEGONG_SPOTTED:MUSCLE -$CREATURE:SHARK_WOBBEGONG_SPOTTED:EYE -&CREATURE:SHARK_WOBBEGONG_SPOTTED:BRAIN -%CREATURE:SHARK_WOBBEGONG_SPOTTED:LUNG -&CREATURE:SHARK_WOBBEGONG_SPOTTED:HEART -&CREATURE:SHARK_WOBBEGONG_SPOTTED:LIVER -$CREATURE:SHARK_WOBBEGONG_SPOTTED:GUT -(CREATURE:SHARK_WOBBEGONG_SPOTTED:STOMACH -(CREATURE:SHARK_WOBBEGONG_SPOTTED:GIZZARD -)CREATURE:SHARK_WOBBEGONG_SPOTTED:PANCREAS -'CREATURE:SHARK_WOBBEGONG_SPOTTED:SPLEEN -'CREATURE:SHARK_WOBBEGONG_SPOTTED:KIDNEY -CREATURE:SHARK_WHALE:MUSCLE -CREATURE:SHARK_WHALE:EYE -CREATURE:SHARK_WHALE:BRAIN -CREATURE:SHARK_WHALE:LUNG -CREATURE:SHARK_WHALE:HEART -CREATURE:SHARK_WHALE:LIVER -CREATURE:SHARK_WHALE:GUT -CREATURE:SHARK_WHALE:STOMACH -CREATURE:SHARK_WHALE:GIZZARD -CREATURE:SHARK_WHALE:PANCREAS -CREATURE:SHARK_WHALE:SPLEEN -CREATURE:SHARK_WHALE:KIDNEY -CREATURE:SHARK_BASKING:MUSCLE -CREATURE:SHARK_BASKING:EYE -CREATURE:SHARK_BASKING:BRAIN -CREATURE:SHARK_BASKING:LUNG -CREATURE:SHARK_BASKING:HEART -CREATURE:SHARK_BASKING:LIVER -CREATURE:SHARK_BASKING:GUT -CREATURE:SHARK_BASKING:STOMACH -CREATURE:SHARK_BASKING:GIZZARD -CREATURE:SHARK_BASKING:PANCREAS -CREATURE:SHARK_BASKING:SPLEEN -CREATURE:SHARK_BASKING:KIDNEY -CREATURE:SHARK_NURSE:MUSCLE -CREATURE:SHARK_NURSE:EYE -CREATURE:SHARK_NURSE:BRAIN -CREATURE:SHARK_NURSE:LUNG -CREATURE:SHARK_NURSE:HEART -CREATURE:SHARK_NURSE:LIVER -CREATURE:SHARK_NURSE:GUT -CREATURE:SHARK_NURSE:STOMACH -CREATURE:SHARK_NURSE:GIZZARD -CREATURE:SHARK_NURSE:PANCREAS -CREATURE:SHARK_NURSE:SPLEEN -CREATURE:SHARK_NURSE:KIDNEY -#CREATURE:SHARK_MAKO_SHORTFIN:MUSCLE - CREATURE:SHARK_MAKO_SHORTFIN:EYE -"CREATURE:SHARK_MAKO_SHORTFIN:BRAIN -!CREATURE:SHARK_MAKO_SHORTFIN:LUNG -"CREATURE:SHARK_MAKO_SHORTFIN:HEART -"CREATURE:SHARK_MAKO_SHORTFIN:LIVER - CREATURE:SHARK_MAKO_SHORTFIN:GUT -$CREATURE:SHARK_MAKO_SHORTFIN:STOMACH -$CREATURE:SHARK_MAKO_SHORTFIN:GIZZARD -%CREATURE:SHARK_MAKO_SHORTFIN:PANCREAS -#CREATURE:SHARK_MAKO_SHORTFIN:SPLEEN -#CREATURE:SHARK_MAKO_SHORTFIN:KIDNEY -"CREATURE:SHARK_MAKO_LONGFIN:MUSCLE -CREATURE:SHARK_MAKO_LONGFIN:EYE -!CREATURE:SHARK_MAKO_LONGFIN:BRAIN - CREATURE:SHARK_MAKO_LONGFIN:LUNG -!CREATURE:SHARK_MAKO_LONGFIN:HEART -!CREATURE:SHARK_MAKO_LONGFIN:LIVER -CREATURE:SHARK_MAKO_LONGFIN:GUT -#CREATURE:SHARK_MAKO_LONGFIN:STOMACH -#CREATURE:SHARK_MAKO_LONGFIN:GIZZARD -$CREATURE:SHARK_MAKO_LONGFIN:PANCREAS -"CREATURE:SHARK_MAKO_LONGFIN:SPLEEN -"CREATURE:SHARK_MAKO_LONGFIN:KIDNEY -CREATURE:SHARK_TIGER:MUSCLE -CREATURE:SHARK_TIGER:EYE -CREATURE:SHARK_TIGER:BRAIN -CREATURE:SHARK_TIGER:LUNG -CREATURE:SHARK_TIGER:HEART -CREATURE:SHARK_TIGER:LIVER -CREATURE:SHARK_TIGER:GUT -CREATURE:SHARK_TIGER:STOMACH -CREATURE:SHARK_TIGER:GIZZARD -CREATURE:SHARK_TIGER:PANCREAS -CREATURE:SHARK_TIGER:SPLEEN -CREATURE:SHARK_TIGER:KIDNEY -CREATURE:SHARK_BULL:MUSCLE -CREATURE:SHARK_BULL:EYE -CREATURE:SHARK_BULL:BRAIN -CREATURE:SHARK_BULL:LUNG -CREATURE:SHARK_BULL:HEART -CREATURE:SHARK_BULL:LIVER -CREATURE:SHARK_BULL:GUT -CREATURE:SHARK_BULL:STOMACH -CREATURE:SHARK_BULL:GIZZARD -CREATURE:SHARK_BULL:PANCREAS -CREATURE:SHARK_BULL:SPLEEN -CREATURE:SHARK_BULL:KIDNEY -#CREATURE:SHARK_REEF_BLACKTIP:MUSCLE - CREATURE:SHARK_REEF_BLACKTIP:EYE -"CREATURE:SHARK_REEF_BLACKTIP:BRAIN -!CREATURE:SHARK_REEF_BLACKTIP:LUNG -"CREATURE:SHARK_REEF_BLACKTIP:HEART -"CREATURE:SHARK_REEF_BLACKTIP:LIVER - CREATURE:SHARK_REEF_BLACKTIP:GUT -$CREATURE:SHARK_REEF_BLACKTIP:STOMACH -$CREATURE:SHARK_REEF_BLACKTIP:GIZZARD -%CREATURE:SHARK_REEF_BLACKTIP:PANCREAS -#CREATURE:SHARK_REEF_BLACKTIP:SPLEEN -#CREATURE:SHARK_REEF_BLACKTIP:KIDNEY -#CREATURE:SHARK_REEF_WHITETIP:MUSCLE - CREATURE:SHARK_REEF_WHITETIP:EYE -"CREATURE:SHARK_REEF_WHITETIP:BRAIN -!CREATURE:SHARK_REEF_WHITETIP:LUNG -"CREATURE:SHARK_REEF_WHITETIP:HEART -"CREATURE:SHARK_REEF_WHITETIP:LIVER - CREATURE:SHARK_REEF_WHITETIP:GUT -$CREATURE:SHARK_REEF_WHITETIP:STOMACH -$CREATURE:SHARK_REEF_WHITETIP:GIZZARD -%CREATURE:SHARK_REEF_WHITETIP:PANCREAS -#CREATURE:SHARK_REEF_WHITETIP:SPLEEN -#CREATURE:SHARK_REEF_WHITETIP:KIDNEY -CREATURE:SHARK_BLUE:MUSCLE -CREATURE:SHARK_BLUE:EYE -CREATURE:SHARK_BLUE:BRAIN -CREATURE:SHARK_BLUE:LUNG -CREATURE:SHARK_BLUE:HEART -CREATURE:SHARK_BLUE:LIVER -CREATURE:SHARK_BLUE:GUT -CREATURE:SHARK_BLUE:STOMACH -CREATURE:SHARK_BLUE:GIZZARD -CREATURE:SHARK_BLUE:PANCREAS -CREATURE:SHARK_BLUE:SPLEEN -CREATURE:SHARK_BLUE:KIDNEY - CREATURE:SHARK_HAMMERHEAD:MUSCLE -CREATURE:SHARK_HAMMERHEAD:EYE -CREATURE:SHARK_HAMMERHEAD:BRAIN -CREATURE:SHARK_HAMMERHEAD:LUNG -CREATURE:SHARK_HAMMERHEAD:HEART -CREATURE:SHARK_HAMMERHEAD:LIVER -CREATURE:SHARK_HAMMERHEAD:GUT -!CREATURE:SHARK_HAMMERHEAD:STOMACH -!CREATURE:SHARK_HAMMERHEAD:GIZZARD -"CREATURE:SHARK_HAMMERHEAD:PANCREAS - CREATURE:SHARK_HAMMERHEAD:SPLEEN - CREATURE:SHARK_HAMMERHEAD:KIDNEY -CREATURE:SHARK_ANGEL:MUSCLE -CREATURE:SHARK_ANGEL:EYE -CREATURE:SHARK_ANGEL:BRAIN -CREATURE:SHARK_ANGEL:LUNG -CREATURE:SHARK_ANGEL:HEART -CREATURE:SHARK_ANGEL:LIVER -CREATURE:SHARK_ANGEL:GUT -CREATURE:SHARK_ANGEL:STOMACH -CREATURE:SHARK_ANGEL:GIZZARD -CREATURE:SHARK_ANGEL:PANCREAS -CREATURE:SHARK_ANGEL:SPLEEN -CREATURE:SHARK_ANGEL:KIDNEY -!CREATURE:FISH_SKATE_COMMON:MUSCLE -CREATURE:FISH_SKATE_COMMON:EYE - CREATURE:FISH_SKATE_COMMON:BRAIN -CREATURE:FISH_SKATE_COMMON:LUNG - CREATURE:FISH_SKATE_COMMON:HEART - CREATURE:FISH_SKATE_COMMON:LIVER -CREATURE:FISH_SKATE_COMMON:GUT -"CREATURE:FISH_SKATE_COMMON:STOMACH -"CREATURE:FISH_SKATE_COMMON:GIZZARD -#CREATURE:FISH_SKATE_COMMON:PANCREAS -!CREATURE:FISH_SKATE_COMMON:SPLEEN -!CREATURE:FISH_SKATE_COMMON:KIDNEY -CREATURE:FISH_RAY_MANTA:MUSCLE -CREATURE:FISH_RAY_MANTA:EYE -CREATURE:FISH_RAY_MANTA:BRAIN -CREATURE:FISH_RAY_MANTA:LUNG -CREATURE:FISH_RAY_MANTA:HEART -CREATURE:FISH_RAY_MANTA:LIVER -CREATURE:FISH_RAY_MANTA:GUT -CREATURE:FISH_RAY_MANTA:STOMACH -CREATURE:FISH_RAY_MANTA:GIZZARD - CREATURE:FISH_RAY_MANTA:PANCREAS -CREATURE:FISH_RAY_MANTA:SPLEEN -CREATURE:FISH_RAY_MANTA:KIDNEY -CREATURE:FISH_STINGRAY:MUSCLE -CREATURE:FISH_STINGRAY:EYE -CREATURE:FISH_STINGRAY:BRAIN -CREATURE:FISH_STINGRAY:LUNG -CREATURE:FISH_STINGRAY:HEART -CREATURE:FISH_STINGRAY:LIVER -CREATURE:FISH_STINGRAY:GUT -CREATURE:FISH_STINGRAY:STOMACH -CREATURE:FISH_STINGRAY:GIZZARD -CREATURE:FISH_STINGRAY:PANCREAS -CREATURE:FISH_STINGRAY:SPLEEN -CREATURE:FISH_STINGRAY:KIDNEY -CREATURE:FISH_COELACANTH:MUSCLE -CREATURE:FISH_COELACANTH:EYE -CREATURE:FISH_COELACANTH:BRAIN -CREATURE:FISH_COELACANTH:LUNG -CREATURE:FISH_COELACANTH:HEART -CREATURE:FISH_COELACANTH:LIVER -CREATURE:FISH_COELACANTH:GUT - CREATURE:FISH_COELACANTH:STOMACH - CREATURE:FISH_COELACANTH:GIZZARD -!CREATURE:FISH_COELACANTH:PANCREAS -CREATURE:FISH_COELACANTH:SPLEEN -CREATURE:FISH_COELACANTH:KIDNEY -CREATURE:FISH_STURGEON:MUSCLE -CREATURE:FISH_STURGEON:EYE -CREATURE:FISH_STURGEON:BRAIN -CREATURE:FISH_STURGEON:LUNG -CREATURE:FISH_STURGEON:HEART -CREATURE:FISH_STURGEON:LIVER -CREATURE:FISH_STURGEON:GUT -CREATURE:FISH_STURGEON:STOMACH -CREATURE:FISH_STURGEON:GIZZARD -CREATURE:FISH_STURGEON:PANCREAS -CREATURE:FISH_STURGEON:SPLEEN -CREATURE:FISH_STURGEON:KIDNEY -CREATURE:FISH_CONGER_EEL:MUSCLE -CREATURE:FISH_CONGER_EEL:EYE -CREATURE:FISH_CONGER_EEL:BRAIN -CREATURE:FISH_CONGER_EEL:LUNG -CREATURE:FISH_CONGER_EEL:HEART -CREATURE:FISH_CONGER_EEL:LIVER -CREATURE:FISH_CONGER_EEL:GUT - CREATURE:FISH_CONGER_EEL:STOMACH - CREATURE:FISH_CONGER_EEL:GIZZARD -!CREATURE:FISH_CONGER_EEL:PANCREAS -CREATURE:FISH_CONGER_EEL:SPLEEN -CREATURE:FISH_CONGER_EEL:KIDNEY -CREATURE:FISH_MILKFISH:MUSCLE -CREATURE:FISH_MILKFISH:EYE -CREATURE:FISH_MILKFISH:BRAIN -CREATURE:FISH_MILKFISH:LUNG -CREATURE:FISH_MILKFISH:HEART -CREATURE:FISH_MILKFISH:LIVER -CREATURE:FISH_MILKFISH:GUT -CREATURE:FISH_MILKFISH:STOMACH -CREATURE:FISH_MILKFISH:GIZZARD -CREATURE:FISH_MILKFISH:PANCREAS -CREATURE:FISH_MILKFISH:SPLEEN -CREATURE:FISH_MILKFISH:KIDNEY -CREATURE:FISH_COD:MUSCLE -CREATURE:FISH_COD:EYE -CREATURE:FISH_COD:BRAIN -CREATURE:FISH_COD:LUNG -CREATURE:FISH_COD:HEART -CREATURE:FISH_COD:LIVER -CREATURE:FISH_COD:GUT -CREATURE:FISH_COD:STOMACH -CREATURE:FISH_COD:GIZZARD -CREATURE:FISH_COD:PANCREAS -CREATURE:FISH_COD:SPLEEN -CREATURE:FISH_COD:KIDNEY -CREATURE:FISH_OPAH:MUSCLE -CREATURE:FISH_OPAH:EYE -CREATURE:FISH_OPAH:BRAIN -CREATURE:FISH_OPAH:LUNG -CREATURE:FISH_OPAH:HEART -CREATURE:FISH_OPAH:LIVER -CREATURE:FISH_OPAH:GUT -CREATURE:FISH_OPAH:STOMACH -CREATURE:FISH_OPAH:GIZZARD -CREATURE:FISH_OPAH:PANCREAS -CREATURE:FISH_OPAH:SPLEEN -CREATURE:FISH_OPAH:KIDNEY -"CREATURE:FISH_GROUPER_GIANT:MUSCLE -CREATURE:FISH_GROUPER_GIANT:EYE -!CREATURE:FISH_GROUPER_GIANT:BRAIN - CREATURE:FISH_GROUPER_GIANT:LUNG -!CREATURE:FISH_GROUPER_GIANT:HEART -!CREATURE:FISH_GROUPER_GIANT:LIVER -CREATURE:FISH_GROUPER_GIANT:GUT -#CREATURE:FISH_GROUPER_GIANT:STOMACH -#CREATURE:FISH_GROUPER_GIANT:GIZZARD -$CREATURE:FISH_GROUPER_GIANT:PANCREAS -"CREATURE:FISH_GROUPER_GIANT:SPLEEN -"CREATURE:FISH_GROUPER_GIANT:KIDNEY -CREATURE:FISH_BLUEFISH:MUSCLE -CREATURE:FISH_BLUEFISH:EYE -CREATURE:FISH_BLUEFISH:BRAIN -CREATURE:FISH_BLUEFISH:LUNG -CREATURE:FISH_BLUEFISH:HEART -CREATURE:FISH_BLUEFISH:LIVER -CREATURE:FISH_BLUEFISH:GUT -CREATURE:FISH_BLUEFISH:STOMACH -CREATURE:FISH_BLUEFISH:GIZZARD -CREATURE:FISH_BLUEFISH:PANCREAS -CREATURE:FISH_BLUEFISH:SPLEEN -CREATURE:FISH_BLUEFISH:KIDNEY -"CREATURE:FISH_SUNFISH_OCEAN:MUSCLE -CREATURE:FISH_SUNFISH_OCEAN:EYE -!CREATURE:FISH_SUNFISH_OCEAN:BRAIN - CREATURE:FISH_SUNFISH_OCEAN:LUNG -!CREATURE:FISH_SUNFISH_OCEAN:HEART -!CREATURE:FISH_SUNFISH_OCEAN:LIVER -CREATURE:FISH_SUNFISH_OCEAN:GUT -#CREATURE:FISH_SUNFISH_OCEAN:STOMACH -#CREATURE:FISH_SUNFISH_OCEAN:GIZZARD -$CREATURE:FISH_SUNFISH_OCEAN:PANCREAS -"CREATURE:FISH_SUNFISH_OCEAN:SPLEEN -"CREATURE:FISH_SUNFISH_OCEAN:KIDNEY -CREATURE:FISH_SWORDFISH:MUSCLE -CREATURE:FISH_SWORDFISH:EYE -CREATURE:FISH_SWORDFISH:BRAIN -CREATURE:FISH_SWORDFISH:LUNG -CREATURE:FISH_SWORDFISH:HEART -CREATURE:FISH_SWORDFISH:LIVER -CREATURE:FISH_SWORDFISH:GUT -CREATURE:FISH_SWORDFISH:STOMACH -CREATURE:FISH_SWORDFISH:GIZZARD - CREATURE:FISH_SWORDFISH:PANCREAS -CREATURE:FISH_SWORDFISH:SPLEEN -CREATURE:FISH_SWORDFISH:KIDNEY -CREATURE:FISH_MARLIN:MUSCLE -CREATURE:FISH_MARLIN:EYE -CREATURE:FISH_MARLIN:BRAIN -CREATURE:FISH_MARLIN:LUNG -CREATURE:FISH_MARLIN:HEART -CREATURE:FISH_MARLIN:LIVER -CREATURE:FISH_MARLIN:GUT -CREATURE:FISH_MARLIN:STOMACH -CREATURE:FISH_MARLIN:GIZZARD -CREATURE:FISH_MARLIN:PANCREAS -CREATURE:FISH_MARLIN:SPLEEN -CREATURE:FISH_MARLIN:KIDNEY -CREATURE:FISH_HALIBUT:MUSCLE -CREATURE:FISH_HALIBUT:EYE -CREATURE:FISH_HALIBUT:BRAIN -CREATURE:FISH_HALIBUT:LUNG -CREATURE:FISH_HALIBUT:HEART -CREATURE:FISH_HALIBUT:LIVER -CREATURE:FISH_HALIBUT:GUT -CREATURE:FISH_HALIBUT:STOMACH -CREATURE:FISH_HALIBUT:GIZZARD -CREATURE:FISH_HALIBUT:PANCREAS -CREATURE:FISH_HALIBUT:SPLEEN -CREATURE:FISH_HALIBUT:KIDNEY -$CREATURE:FISH_BARRACUDA_GREAT:MUSCLE -!CREATURE:FISH_BARRACUDA_GREAT:EYE -#CREATURE:FISH_BARRACUDA_GREAT:BRAIN -"CREATURE:FISH_BARRACUDA_GREAT:LUNG -#CREATURE:FISH_BARRACUDA_GREAT:HEART -#CREATURE:FISH_BARRACUDA_GREAT:LIVER -!CREATURE:FISH_BARRACUDA_GREAT:GUT -%CREATURE:FISH_BARRACUDA_GREAT:STOMACH -%CREATURE:FISH_BARRACUDA_GREAT:GIZZARD -&CREATURE:FISH_BARRACUDA_GREAT:PANCREAS -$CREATURE:FISH_BARRACUDA_GREAT:SPLEEN -$CREATURE:FISH_BARRACUDA_GREAT:KIDNEY -!CREATURE:FISH_TUNA_BLUEFIN:MUSCLE -CREATURE:FISH_TUNA_BLUEFIN:EYE - CREATURE:FISH_TUNA_BLUEFIN:BRAIN -CREATURE:FISH_TUNA_BLUEFIN:LUNG - CREATURE:FISH_TUNA_BLUEFIN:HEART - CREATURE:FISH_TUNA_BLUEFIN:LIVER -CREATURE:FISH_TUNA_BLUEFIN:GUT -"CREATURE:FISH_TUNA_BLUEFIN:STOMACH -"CREATURE:FISH_TUNA_BLUEFIN:GIZZARD -#CREATURE:FISH_TUNA_BLUEFIN:PANCREAS -!CREATURE:FISH_TUNA_BLUEFIN:SPLEEN -!CREATURE:FISH_TUNA_BLUEFIN:KIDNEY -CREATURE:NARWHAL:MUSCLE -CREATURE:NARWHAL:EYE -CREATURE:NARWHAL:BRAIN -CREATURE:NARWHAL:LUNG -CREATURE:NARWHAL:HEART -CREATURE:NARWHAL:LIVER -CREATURE:NARWHAL:GUT -CREATURE:NARWHAL:STOMACH -CREATURE:NARWHAL:GIZZARD -CREATURE:NARWHAL:PANCREAS -CREATURE:NARWHAL:SPLEEN -CREATURE:NARWHAL:KIDNEY -CREATURE:NARWHAL MAN:MUSCLE -CREATURE:NARWHAL MAN:EYE -CREATURE:NARWHAL MAN:BRAIN -CREATURE:NARWHAL MAN:LUNG -CREATURE:NARWHAL MAN:HEART -CREATURE:NARWHAL MAN:LIVER -CREATURE:NARWHAL MAN:GUT -CREATURE:NARWHAL MAN:STOMACH -CREATURE:NARWHAL MAN:GIZZARD -CREATURE:NARWHAL MAN:PANCREAS -CREATURE:NARWHAL MAN:SPLEEN -CREATURE:NARWHAL MAN:KIDNEY -CREATURE:NARWHAL, GIANT:MUSCLE -CREATURE:NARWHAL, GIANT:EYE -CREATURE:NARWHAL, GIANT:BRAIN -CREATURE:NARWHAL, GIANT:LUNG -CREATURE:NARWHAL, GIANT:HEART -CREATURE:NARWHAL, GIANT:LIVER -CREATURE:NARWHAL, GIANT:GUT -CREATURE:NARWHAL, GIANT:STOMACH -CREATURE:NARWHAL, GIANT:GIZZARD - CREATURE:NARWHAL, GIANT:PANCREAS -CREATURE:NARWHAL, GIANT:SPLEEN -CREATURE:NARWHAL, GIANT:KIDNEY -CREATURE:HIPPO:MUSCLE -CREATURE:HIPPO:EYE -CREATURE:HIPPO:BRAIN -CREATURE:HIPPO:LUNG -CREATURE:HIPPO:HEART -CREATURE:HIPPO:LIVER -CREATURE:HIPPO:GUT -CREATURE:HIPPO:STOMACH -CREATURE:HIPPO:GIZZARD -CREATURE:HIPPO:PANCREAS -CREATURE:HIPPO:SPLEEN -CREATURE:HIPPO:KIDNEY -CREATURE:HIPPO_MAN:MUSCLE -CREATURE:HIPPO_MAN:EYE -CREATURE:HIPPO_MAN:BRAIN -CREATURE:HIPPO_MAN:LUNG -CREATURE:HIPPO_MAN:HEART -CREATURE:HIPPO_MAN:LIVER -CREATURE:HIPPO_MAN:GUT -CREATURE:HIPPO_MAN:STOMACH -CREATURE:HIPPO_MAN:GIZZARD -CREATURE:HIPPO_MAN:PANCREAS -CREATURE:HIPPO_MAN:SPLEEN -CREATURE:HIPPO_MAN:KIDNEY -CREATURE:GIANT_HIPPO:MUSCLE -CREATURE:GIANT_HIPPO:EYE -CREATURE:GIANT_HIPPO:BRAIN -CREATURE:GIANT_HIPPO:LUNG -CREATURE:GIANT_HIPPO:HEART -CREATURE:GIANT_HIPPO:LIVER -CREATURE:GIANT_HIPPO:GUT -CREATURE:GIANT_HIPPO:STOMACH -CREATURE:GIANT_HIPPO:GIZZARD -CREATURE:GIANT_HIPPO:PANCREAS -CREATURE:GIANT_HIPPO:SPLEEN -CREATURE:GIANT_HIPPO:KIDNEY -!CREATURE:FISH_GAR_LONGNOSE:MUSCLE -CREATURE:FISH_GAR_LONGNOSE:EYE - CREATURE:FISH_GAR_LONGNOSE:BRAIN -CREATURE:FISH_GAR_LONGNOSE:LUNG - CREATURE:FISH_GAR_LONGNOSE:HEART - CREATURE:FISH_GAR_LONGNOSE:LIVER -CREATURE:FISH_GAR_LONGNOSE:GUT -"CREATURE:FISH_GAR_LONGNOSE:STOMACH -"CREATURE:FISH_GAR_LONGNOSE:GIZZARD -#CREATURE:FISH_GAR_LONGNOSE:PANCREAS -!CREATURE:FISH_GAR_LONGNOSE:SPLEEN -!CREATURE:FISH_GAR_LONGNOSE:KIDNEY -CREATURE:FISH_CARP:MUSCLE -CREATURE:FISH_CARP:EYE -CREATURE:FISH_CARP:BRAIN -CREATURE:FISH_CARP:LUNG -CREATURE:FISH_CARP:HEART -CREATURE:FISH_CARP:LIVER -CREATURE:FISH_CARP:GUT -CREATURE:FISH_CARP:STOMACH -CREATURE:FISH_CARP:GIZZARD -CREATURE:FISH_CARP:PANCREAS -CREATURE:FISH_CARP:SPLEEN -CREATURE:FISH_CARP:KIDNEY -CREATURE:FISH_TIGERFISH:MUSCLE -CREATURE:FISH_TIGERFISH:EYE -CREATURE:FISH_TIGERFISH:BRAIN -CREATURE:FISH_TIGERFISH:LUNG -CREATURE:FISH_TIGERFISH:HEART -CREATURE:FISH_TIGERFISH:LIVER -CREATURE:FISH_TIGERFISH:GUT -CREATURE:FISH_TIGERFISH:STOMACH -CREATURE:FISH_TIGERFISH:GIZZARD - CREATURE:FISH_TIGERFISH:PANCREAS -CREATURE:FISH_TIGERFISH:SPLEEN -CREATURE:FISH_TIGERFISH:KIDNEY -CREATURE:FISH_PIKE:MUSCLE -CREATURE:FISH_PIKE:EYE -CREATURE:FISH_PIKE:BRAIN -CREATURE:FISH_PIKE:LUNG -CREATURE:FISH_PIKE:HEART -CREATURE:FISH_PIKE:LIVER -CREATURE:FISH_PIKE:GUT -CREATURE:FISH_PIKE:STOMACH -CREATURE:FISH_PIKE:GIZZARD -CREATURE:FISH_PIKE:PANCREAS -CREATURE:FISH_PIKE:SPLEEN -CREATURE:FISH_PIKE:KIDNEY -CREATURE:PLATYPUS:MUSCLE -CREATURE:PLATYPUS:EYE -CREATURE:PLATYPUS:BRAIN -CREATURE:PLATYPUS:LUNG -CREATURE:PLATYPUS:HEART -CREATURE:PLATYPUS:LIVER -CREATURE:PLATYPUS:GUT -CREATURE:PLATYPUS:STOMACH -CREATURE:PLATYPUS:GIZZARD -CREATURE:PLATYPUS:PANCREAS -CREATURE:PLATYPUS:SPLEEN -CREATURE:PLATYPUS:KIDNEY -CREATURE:PLATYPUS MAN:MUSCLE -CREATURE:PLATYPUS MAN:EYE -CREATURE:PLATYPUS MAN:BRAIN -CREATURE:PLATYPUS MAN:LUNG -CREATURE:PLATYPUS MAN:HEART -CREATURE:PLATYPUS MAN:LIVER -CREATURE:PLATYPUS MAN:GUT -CREATURE:PLATYPUS MAN:STOMACH -CREATURE:PLATYPUS MAN:GIZZARD -CREATURE:PLATYPUS MAN:PANCREAS -CREATURE:PLATYPUS MAN:SPLEEN -CREATURE:PLATYPUS MAN:KIDNEY -CREATURE:PLATYPUS, GIANT:MUSCLE -CREATURE:PLATYPUS, GIANT:EYE -CREATURE:PLATYPUS, GIANT:BRAIN -CREATURE:PLATYPUS, GIANT:LUNG -CREATURE:PLATYPUS, GIANT:HEART -CREATURE:PLATYPUS, GIANT:LIVER -CREATURE:PLATYPUS, GIANT:GUT - CREATURE:PLATYPUS, GIANT:STOMACH - CREATURE:PLATYPUS, GIANT:GIZZARD -!CREATURE:PLATYPUS, GIANT:PANCREAS -CREATURE:PLATYPUS, GIANT:SPLEEN -CREATURE:PLATYPUS, GIANT:KIDNEY -CREATURE:BEAR_GRIZZLY:MUSCLE -CREATURE:BEAR_GRIZZLY:EYE -CREATURE:BEAR_GRIZZLY:BRAIN -CREATURE:BEAR_GRIZZLY:LUNG -CREATURE:BEAR_GRIZZLY:HEART -CREATURE:BEAR_GRIZZLY:LIVER -CREATURE:BEAR_GRIZZLY:GUT -CREATURE:BEAR_GRIZZLY:STOMACH -CREATURE:BEAR_GRIZZLY:GIZZARD -CREATURE:BEAR_GRIZZLY:PANCREAS -CREATURE:BEAR_GRIZZLY:SPLEEN -CREATURE:BEAR_GRIZZLY:KIDNEY - CREATURE:BEAR_GRIZZLY_MAN:MUSCLE -CREATURE:BEAR_GRIZZLY_MAN:EYE -CREATURE:BEAR_GRIZZLY_MAN:BRAIN -CREATURE:BEAR_GRIZZLY_MAN:LUNG -CREATURE:BEAR_GRIZZLY_MAN:HEART -CREATURE:BEAR_GRIZZLY_MAN:LIVER -CREATURE:BEAR_GRIZZLY_MAN:GUT -!CREATURE:BEAR_GRIZZLY_MAN:STOMACH -!CREATURE:BEAR_GRIZZLY_MAN:GIZZARD -"CREATURE:BEAR_GRIZZLY_MAN:PANCREAS - CREATURE:BEAR_GRIZZLY_MAN:SPLEEN - CREATURE:BEAR_GRIZZLY_MAN:KIDNEY -"CREATURE:GIANT_BEAR_GRIZZLY:MUSCLE -CREATURE:GIANT_BEAR_GRIZZLY:EYE -!CREATURE:GIANT_BEAR_GRIZZLY:BRAIN - CREATURE:GIANT_BEAR_GRIZZLY:LUNG -!CREATURE:GIANT_BEAR_GRIZZLY:HEART -!CREATURE:GIANT_BEAR_GRIZZLY:LIVER -CREATURE:GIANT_BEAR_GRIZZLY:GUT -#CREATURE:GIANT_BEAR_GRIZZLY:STOMACH -#CREATURE:GIANT_BEAR_GRIZZLY:GIZZARD -$CREATURE:GIANT_BEAR_GRIZZLY:PANCREAS -"CREATURE:GIANT_BEAR_GRIZZLY:SPLEEN -"CREATURE:GIANT_BEAR_GRIZZLY:KIDNEY -CREATURE:BEAR_BLACK:MUSCLE -CREATURE:BEAR_BLACK:EYE -CREATURE:BEAR_BLACK:BRAIN -CREATURE:BEAR_BLACK:LUNG -CREATURE:BEAR_BLACK:HEART -CREATURE:BEAR_BLACK:LIVER -CREATURE:BEAR_BLACK:GUT -CREATURE:BEAR_BLACK:STOMACH -CREATURE:BEAR_BLACK:GIZZARD -CREATURE:BEAR_BLACK:PANCREAS -CREATURE:BEAR_BLACK:SPLEEN -CREATURE:BEAR_BLACK:KIDNEY -CREATURE:BEAR_BLACK_MAN:MUSCLE -CREATURE:BEAR_BLACK_MAN:EYE -CREATURE:BEAR_BLACK_MAN:BRAIN -CREATURE:BEAR_BLACK_MAN:LUNG -CREATURE:BEAR_BLACK_MAN:HEART -CREATURE:BEAR_BLACK_MAN:LIVER -CREATURE:BEAR_BLACK_MAN:GUT -CREATURE:BEAR_BLACK_MAN:STOMACH -CREATURE:BEAR_BLACK_MAN:GIZZARD - CREATURE:BEAR_BLACK_MAN:PANCREAS -CREATURE:BEAR_BLACK_MAN:SPLEEN -CREATURE:BEAR_BLACK_MAN:KIDNEY - CREATURE:GIANT_BEAR_BLACK:MUSCLE -CREATURE:GIANT_BEAR_BLACK:EYE -CREATURE:GIANT_BEAR_BLACK:BRAIN -CREATURE:GIANT_BEAR_BLACK:LUNG -CREATURE:GIANT_BEAR_BLACK:HEART -CREATURE:GIANT_BEAR_BLACK:LIVER -CREATURE:GIANT_BEAR_BLACK:GUT -!CREATURE:GIANT_BEAR_BLACK:STOMACH -!CREATURE:GIANT_BEAR_BLACK:GIZZARD -"CREATURE:GIANT_BEAR_BLACK:PANCREAS - CREATURE:GIANT_BEAR_BLACK:SPLEEN - CREATURE:GIANT_BEAR_BLACK:KIDNEY -CREATURE:DEER:MUSCLE -CREATURE:DEER:EYE -CREATURE:DEER:BRAIN -CREATURE:DEER:LUNG -CREATURE:DEER:HEART -CREATURE:DEER:LIVER -CREATURE:DEER:GUT -CREATURE:DEER:STOMACH -CREATURE:DEER:GIZZARD -CREATURE:DEER:PANCREAS -CREATURE:DEER:SPLEEN -CREATURE:DEER:KIDNEY -CREATURE:DEER_MAN:MUSCLE -CREATURE:DEER_MAN:EYE -CREATURE:DEER_MAN:BRAIN -CREATURE:DEER_MAN:LUNG -CREATURE:DEER_MAN:HEART -CREATURE:DEER_MAN:LIVER -CREATURE:DEER_MAN:GUT -CREATURE:DEER_MAN:STOMACH -CREATURE:DEER_MAN:GIZZARD -CREATURE:DEER_MAN:PANCREAS -CREATURE:DEER_MAN:SPLEEN -CREATURE:DEER_MAN:KIDNEY -CREATURE:GIANT_DEER:MUSCLE -CREATURE:GIANT_DEER:EYE -CREATURE:GIANT_DEER:BRAIN -CREATURE:GIANT_DEER:LUNG -CREATURE:GIANT_DEER:HEART -CREATURE:GIANT_DEER:LIVER -CREATURE:GIANT_DEER:GUT -CREATURE:GIANT_DEER:STOMACH -CREATURE:GIANT_DEER:GIZZARD -CREATURE:GIANT_DEER:PANCREAS -CREATURE:GIANT_DEER:SPLEEN -CREATURE:GIANT_DEER:KIDNEY -CREATURE:FOX:MUSCLE -CREATURE:FOX:EYE -CREATURE:FOX:BRAIN -CREATURE:FOX:LUNG -CREATURE:FOX:HEART -CREATURE:FOX:LIVER -CREATURE:FOX:GUT -CREATURE:FOX:STOMACH -CREATURE:FOX:GIZZARD -CREATURE:FOX:PANCREAS -CREATURE:FOX:SPLEEN -CREATURE:FOX:KIDNEY -CREATURE:FOX_MAN:MUSCLE -CREATURE:FOX_MAN:EYE -CREATURE:FOX_MAN:BRAIN -CREATURE:FOX_MAN:LUNG -CREATURE:FOX_MAN:HEART -CREATURE:FOX_MAN:LIVER -CREATURE:FOX_MAN:GUT -CREATURE:FOX_MAN:STOMACH -CREATURE:FOX_MAN:GIZZARD -CREATURE:FOX_MAN:PANCREAS -CREATURE:FOX_MAN:SPLEEN -CREATURE:FOX_MAN:KIDNEY -CREATURE:GIANT_FOX:MUSCLE -CREATURE:GIANT_FOX:EYE -CREATURE:GIANT_FOX:BRAIN -CREATURE:GIANT_FOX:LUNG -CREATURE:GIANT_FOX:HEART -CREATURE:GIANT_FOX:LIVER -CREATURE:GIANT_FOX:GUT -CREATURE:GIANT_FOX:STOMACH -CREATURE:GIANT_FOX:GIZZARD -CREATURE:GIANT_FOX:PANCREAS -CREATURE:GIANT_FOX:SPLEEN -CREATURE:GIANT_FOX:KIDNEY -CREATURE:RACCOON:MUSCLE -CREATURE:RACCOON:EYE -CREATURE:RACCOON:BRAIN -CREATURE:RACCOON:LUNG -CREATURE:RACCOON:HEART -CREATURE:RACCOON:LIVER -CREATURE:RACCOON:GUT -CREATURE:RACCOON:STOMACH -CREATURE:RACCOON:GIZZARD -CREATURE:RACCOON:PANCREAS -CREATURE:RACCOON:SPLEEN -CREATURE:RACCOON:KIDNEY -CREATURE:RACCOON_MAN:MUSCLE -CREATURE:RACCOON_MAN:EYE -CREATURE:RACCOON_MAN:BRAIN -CREATURE:RACCOON_MAN:LUNG -CREATURE:RACCOON_MAN:HEART -CREATURE:RACCOON_MAN:LIVER -CREATURE:RACCOON_MAN:GUT -CREATURE:RACCOON_MAN:STOMACH -CREATURE:RACCOON_MAN:GIZZARD -CREATURE:RACCOON_MAN:PANCREAS -CREATURE:RACCOON_MAN:SPLEEN -CREATURE:RACCOON_MAN:KIDNEY -CREATURE:GIANT_RACCOON:MUSCLE -CREATURE:GIANT_RACCOON:EYE -CREATURE:GIANT_RACCOON:BRAIN -CREATURE:GIANT_RACCOON:LUNG -CREATURE:GIANT_RACCOON:HEART -CREATURE:GIANT_RACCOON:LIVER -CREATURE:GIANT_RACCOON:GUT -CREATURE:GIANT_RACCOON:STOMACH -CREATURE:GIANT_RACCOON:GIZZARD -CREATURE:GIANT_RACCOON:PANCREAS -CREATURE:GIANT_RACCOON:SPLEEN -CREATURE:GIANT_RACCOON:KIDNEY -CREATURE:MACAQUE_RHESUS:MUSCLE -CREATURE:MACAQUE_RHESUS:EYE -CREATURE:MACAQUE_RHESUS:BRAIN -CREATURE:MACAQUE_RHESUS:LUNG -CREATURE:MACAQUE_RHESUS:HEART -CREATURE:MACAQUE_RHESUS:LIVER -CREATURE:MACAQUE_RHESUS:GUT -CREATURE:MACAQUE_RHESUS:STOMACH -CREATURE:MACAQUE_RHESUS:GIZZARD - CREATURE:MACAQUE_RHESUS:PANCREAS -CREATURE:MACAQUE_RHESUS:SPLEEN -CREATURE:MACAQUE_RHESUS:KIDNEY -"CREATURE:MACAQUE_RHESUS_MAN:MUSCLE -CREATURE:MACAQUE_RHESUS_MAN:EYE -!CREATURE:MACAQUE_RHESUS_MAN:BRAIN - CREATURE:MACAQUE_RHESUS_MAN:LUNG -!CREATURE:MACAQUE_RHESUS_MAN:HEART -!CREATURE:MACAQUE_RHESUS_MAN:LIVER -CREATURE:MACAQUE_RHESUS_MAN:GUT -#CREATURE:MACAQUE_RHESUS_MAN:STOMACH -#CREATURE:MACAQUE_RHESUS_MAN:GIZZARD -$CREATURE:MACAQUE_RHESUS_MAN:PANCREAS -"CREATURE:MACAQUE_RHESUS_MAN:SPLEEN -"CREATURE:MACAQUE_RHESUS_MAN:KIDNEY -$CREATURE:GIANT_MACAQUE_RHESUS:MUSCLE -!CREATURE:GIANT_MACAQUE_RHESUS:EYE -#CREATURE:GIANT_MACAQUE_RHESUS:BRAIN -"CREATURE:GIANT_MACAQUE_RHESUS:LUNG -#CREATURE:GIANT_MACAQUE_RHESUS:HEART -#CREATURE:GIANT_MACAQUE_RHESUS:LIVER -!CREATURE:GIANT_MACAQUE_RHESUS:GUT -%CREATURE:GIANT_MACAQUE_RHESUS:STOMACH -%CREATURE:GIANT_MACAQUE_RHESUS:GIZZARD -&CREATURE:GIANT_MACAQUE_RHESUS:PANCREAS -$CREATURE:GIANT_MACAQUE_RHESUS:SPLEEN -$CREATURE:GIANT_MACAQUE_RHESUS:KIDNEY -CREATURE:COUGAR:MUSCLE -CREATURE:COUGAR:EYE -CREATURE:COUGAR:BRAIN -CREATURE:COUGAR:LUNG -CREATURE:COUGAR:HEART -CREATURE:COUGAR:LIVER -CREATURE:COUGAR:GUT -CREATURE:COUGAR:STOMACH -CREATURE:COUGAR:GIZZARD -CREATURE:COUGAR:PANCREAS -CREATURE:COUGAR:SPLEEN -CREATURE:COUGAR:KIDNEY -CREATURE:COUGAR_MAN:MUSCLE -CREATURE:COUGAR_MAN:EYE -CREATURE:COUGAR_MAN:BRAIN -CREATURE:COUGAR_MAN:LUNG -CREATURE:COUGAR_MAN:HEART -CREATURE:COUGAR_MAN:LIVER -CREATURE:COUGAR_MAN:GUT -CREATURE:COUGAR_MAN:STOMACH -CREATURE:COUGAR_MAN:GIZZARD -CREATURE:COUGAR_MAN:PANCREAS -CREATURE:COUGAR_MAN:SPLEEN -CREATURE:COUGAR_MAN:KIDNEY -CREATURE:GIANT_COUGAR:MUSCLE -CREATURE:GIANT_COUGAR:EYE -CREATURE:GIANT_COUGAR:BRAIN -CREATURE:GIANT_COUGAR:LUNG -CREATURE:GIANT_COUGAR:HEART -CREATURE:GIANT_COUGAR:LIVER -CREATURE:GIANT_COUGAR:GUT -CREATURE:GIANT_COUGAR:STOMACH -CREATURE:GIANT_COUGAR:GIZZARD -CREATURE:GIANT_COUGAR:PANCREAS -CREATURE:GIANT_COUGAR:SPLEEN -CREATURE:GIANT_COUGAR:KIDNEY -CREATURE:WOLF:MUSCLE -CREATURE:WOLF:EYE -CREATURE:WOLF:BRAIN -CREATURE:WOLF:LUNG -CREATURE:WOLF:HEART -CREATURE:WOLF:LIVER -CREATURE:WOLF:GUT -CREATURE:WOLF:STOMACH -CREATURE:WOLF:GIZZARD -CREATURE:WOLF:PANCREAS -CREATURE:WOLF:SPLEEN -CREATURE:WOLF:KIDNEY -CREATURE:WOLF_MAN:MUSCLE -CREATURE:WOLF_MAN:EYE -CREATURE:WOLF_MAN:BRAIN -CREATURE:WOLF_MAN:LUNG -CREATURE:WOLF_MAN:HEART -CREATURE:WOLF_MAN:LIVER -CREATURE:WOLF_MAN:GUT -CREATURE:WOLF_MAN:STOMACH -CREATURE:WOLF_MAN:GIZZARD -CREATURE:WOLF_MAN:PANCREAS -CREATURE:WOLF_MAN:SPLEEN -CREATURE:WOLF_MAN:KIDNEY -CREATURE:GIANT_WOLF:MUSCLE -CREATURE:GIANT_WOLF:EYE -CREATURE:GIANT_WOLF:BRAIN -CREATURE:GIANT_WOLF:LUNG -CREATURE:GIANT_WOLF:HEART -CREATURE:GIANT_WOLF:LIVER -CREATURE:GIANT_WOLF:GUT -CREATURE:GIANT_WOLF:STOMACH -CREATURE:GIANT_WOLF:GIZZARD -CREATURE:GIANT_WOLF:PANCREAS -CREATURE:GIANT_WOLF:SPLEEN -CREATURE:GIANT_WOLF:KIDNEY -CREATURE:GROUNDHOG:MUSCLE -CREATURE:GROUNDHOG:EYE -CREATURE:GROUNDHOG:BRAIN -CREATURE:GROUNDHOG:LUNG -CREATURE:GROUNDHOG:HEART -CREATURE:GROUNDHOG:LIVER -CREATURE:GROUNDHOG:GUT -CREATURE:GROUNDHOG:STOMACH -CREATURE:GROUNDHOG:GIZZARD -CREATURE:GROUNDHOG:PANCREAS -CREATURE:GROUNDHOG:SPLEEN -CREATURE:GROUNDHOG:KIDNEY -CREATURE:GROUNDHOG_MAN:MUSCLE -CREATURE:GROUNDHOG_MAN:EYE -CREATURE:GROUNDHOG_MAN:BRAIN -CREATURE:GROUNDHOG_MAN:LUNG -CREATURE:GROUNDHOG_MAN:HEART -CREATURE:GROUNDHOG_MAN:LIVER -CREATURE:GROUNDHOG_MAN:GUT -CREATURE:GROUNDHOG_MAN:STOMACH -CREATURE:GROUNDHOG_MAN:GIZZARD -CREATURE:GROUNDHOG_MAN:PANCREAS -CREATURE:GROUNDHOG_MAN:SPLEEN -CREATURE:GROUNDHOG_MAN:KIDNEY -CREATURE:GIANT_GROUNDHOG:MUSCLE -CREATURE:GIANT_GROUNDHOG:EYE -CREATURE:GIANT_GROUNDHOG:BRAIN -CREATURE:GIANT_GROUNDHOG:LUNG -CREATURE:GIANT_GROUNDHOG:HEART -CREATURE:GIANT_GROUNDHOG:LIVER -CREATURE:GIANT_GROUNDHOG:GUT - CREATURE:GIANT_GROUNDHOG:STOMACH - CREATURE:GIANT_GROUNDHOG:GIZZARD -!CREATURE:GIANT_GROUNDHOG:PANCREAS -CREATURE:GIANT_GROUNDHOG:SPLEEN -CREATURE:GIANT_GROUNDHOG:KIDNEY -CREATURE:ALLIGATOR:MUSCLE -CREATURE:ALLIGATOR:EYE -CREATURE:ALLIGATOR:BRAIN -CREATURE:ALLIGATOR:LUNG -CREATURE:ALLIGATOR:HEART -CREATURE:ALLIGATOR:LIVER -CREATURE:ALLIGATOR:GUT -CREATURE:ALLIGATOR:STOMACH -CREATURE:ALLIGATOR:GIZZARD -CREATURE:ALLIGATOR:PANCREAS -CREATURE:ALLIGATOR:SPLEEN -CREATURE:ALLIGATOR:KIDNEY -CREATURE:ALLIGATOR_MAN:MUSCLE -CREATURE:ALLIGATOR_MAN:EYE -CREATURE:ALLIGATOR_MAN:BRAIN -CREATURE:ALLIGATOR_MAN:LUNG -CREATURE:ALLIGATOR_MAN:HEART -CREATURE:ALLIGATOR_MAN:LIVER -CREATURE:ALLIGATOR_MAN:GUT -CREATURE:ALLIGATOR_MAN:STOMACH -CREATURE:ALLIGATOR_MAN:GIZZARD -CREATURE:ALLIGATOR_MAN:PANCREAS -CREATURE:ALLIGATOR_MAN:SPLEEN -CREATURE:ALLIGATOR_MAN:KIDNEY -CREATURE:GIANT_ALLIGATOR:MUSCLE -CREATURE:GIANT_ALLIGATOR:EYE -CREATURE:GIANT_ALLIGATOR:BRAIN -CREATURE:GIANT_ALLIGATOR:LUNG -CREATURE:GIANT_ALLIGATOR:HEART -CREATURE:GIANT_ALLIGATOR:LIVER -CREATURE:GIANT_ALLIGATOR:GUT - CREATURE:GIANT_ALLIGATOR:STOMACH - CREATURE:GIANT_ALLIGATOR:GIZZARD -!CREATURE:GIANT_ALLIGATOR:PANCREAS -CREATURE:GIANT_ALLIGATOR:SPLEEN -CREATURE:GIANT_ALLIGATOR:KIDNEY -CREATURE:BIRD_BUZZARD:MUSCLE -CREATURE:BIRD_BUZZARD:EYE -CREATURE:BIRD_BUZZARD:BRAIN -CREATURE:BIRD_BUZZARD:LUNG -CREATURE:BIRD_BUZZARD:HEART -CREATURE:BIRD_BUZZARD:LIVER -CREATURE:BIRD_BUZZARD:GUT -CREATURE:BIRD_BUZZARD:STOMACH -CREATURE:BIRD_BUZZARD:GIZZARD -CREATURE:BIRD_BUZZARD:PANCREAS -CREATURE:BIRD_BUZZARD:SPLEEN -CREATURE:BIRD_BUZZARD:KIDNEY -CREATURE:BUZZARD_MAN:MUSCLE -CREATURE:BUZZARD_MAN:EYE -CREATURE:BUZZARD_MAN:BRAIN -CREATURE:BUZZARD_MAN:LUNG -CREATURE:BUZZARD_MAN:HEART -CREATURE:BUZZARD_MAN:LIVER -CREATURE:BUZZARD_MAN:GUT -CREATURE:BUZZARD_MAN:STOMACH -CREATURE:BUZZARD_MAN:GIZZARD -CREATURE:BUZZARD_MAN:PANCREAS -CREATURE:BUZZARD_MAN:SPLEEN -CREATURE:BUZZARD_MAN:KIDNEY -CREATURE:GIANT_BUZZARD:MUSCLE -CREATURE:GIANT_BUZZARD:EYE -CREATURE:GIANT_BUZZARD:BRAIN -CREATURE:GIANT_BUZZARD:LUNG -CREATURE:GIANT_BUZZARD:HEART -CREATURE:GIANT_BUZZARD:LIVER -CREATURE:GIANT_BUZZARD:GUT -CREATURE:GIANT_BUZZARD:STOMACH -CREATURE:GIANT_BUZZARD:GIZZARD -CREATURE:GIANT_BUZZARD:PANCREAS -CREATURE:GIANT_BUZZARD:SPLEEN -CREATURE:GIANT_BUZZARD:KIDNEY -CREATURE:PANDA:MUSCLE -CREATURE:PANDA:EYE -CREATURE:PANDA:BRAIN -CREATURE:PANDA:LUNG -CREATURE:PANDA:HEART -CREATURE:PANDA:LIVER -CREATURE:PANDA:GUT -CREATURE:PANDA:STOMACH -CREATURE:PANDA:GIZZARD -CREATURE:PANDA:PANCREAS -CREATURE:PANDA:SPLEEN -CREATURE:PANDA:KIDNEY -CREATURE:PANDA, GIGANTIC:MUSCLE -CREATURE:PANDA, GIGANTIC:EYE -CREATURE:PANDA, GIGANTIC:BRAIN -CREATURE:PANDA, GIGANTIC:LUNG -CREATURE:PANDA, GIGANTIC:HEART -CREATURE:PANDA, GIGANTIC:LIVER -CREATURE:PANDA, GIGANTIC:GUT - CREATURE:PANDA, GIGANTIC:STOMACH - CREATURE:PANDA, GIGANTIC:GIZZARD -!CREATURE:PANDA, GIGANTIC:PANCREAS -CREATURE:PANDA, GIGANTIC:SPLEEN -CREATURE:PANDA, GIGANTIC:KIDNEY -CREATURE:PANDA MAN:MUSCLE -CREATURE:PANDA MAN:EYE -CREATURE:PANDA MAN:BRAIN -CREATURE:PANDA MAN:LUNG -CREATURE:PANDA MAN:HEART -CREATURE:PANDA MAN:LIVER -CREATURE:PANDA MAN:GUT -CREATURE:PANDA MAN:STOMACH -CREATURE:PANDA MAN:GIZZARD -CREATURE:PANDA MAN:PANCREAS -CREATURE:PANDA MAN:SPLEEN -CREATURE:PANDA MAN:KIDNEY -CREATURE:CAPYBARA:MUSCLE -CREATURE:CAPYBARA:EYE -CREATURE:CAPYBARA:BRAIN -CREATURE:CAPYBARA:LUNG -CREATURE:CAPYBARA:HEART -CREATURE:CAPYBARA:LIVER -CREATURE:CAPYBARA:GUT -CREATURE:CAPYBARA:STOMACH -CREATURE:CAPYBARA:GIZZARD -CREATURE:CAPYBARA:PANCREAS -CREATURE:CAPYBARA:SPLEEN -CREATURE:CAPYBARA:KIDNEY -CREATURE:CAPYBARA, GIANT:MUSCLE -CREATURE:CAPYBARA, GIANT:EYE -CREATURE:CAPYBARA, GIANT:BRAIN -CREATURE:CAPYBARA, GIANT:LUNG -CREATURE:CAPYBARA, GIANT:HEART -CREATURE:CAPYBARA, GIANT:LIVER -CREATURE:CAPYBARA, GIANT:GUT - CREATURE:CAPYBARA, GIANT:STOMACH - CREATURE:CAPYBARA, GIANT:GIZZARD -!CREATURE:CAPYBARA, GIANT:PANCREAS -CREATURE:CAPYBARA, GIANT:SPLEEN -CREATURE:CAPYBARA, GIANT:KIDNEY -CREATURE:CAPYBARA MAN:MUSCLE -CREATURE:CAPYBARA MAN:EYE -CREATURE:CAPYBARA MAN:BRAIN -CREATURE:CAPYBARA MAN:LUNG -CREATURE:CAPYBARA MAN:HEART -CREATURE:CAPYBARA MAN:LIVER -CREATURE:CAPYBARA MAN:GUT -CREATURE:CAPYBARA MAN:STOMACH -CREATURE:CAPYBARA MAN:GIZZARD -CREATURE:CAPYBARA MAN:PANCREAS -CREATURE:CAPYBARA MAN:SPLEEN -CREATURE:CAPYBARA MAN:KIDNEY -CREATURE:BADGER:MUSCLE -CREATURE:BADGER:EYE -CREATURE:BADGER:BRAIN -CREATURE:BADGER:LUNG -CREATURE:BADGER:HEART -CREATURE:BADGER:LIVER -CREATURE:BADGER:GUT -CREATURE:BADGER:STOMACH -CREATURE:BADGER:GIZZARD -CREATURE:BADGER:PANCREAS -CREATURE:BADGER:SPLEEN -CREATURE:BADGER:KIDNEY -CREATURE:BADGER MAN:MUSCLE -CREATURE:BADGER MAN:EYE -CREATURE:BADGER MAN:BRAIN -CREATURE:BADGER MAN:LUNG -CREATURE:BADGER MAN:HEART -CREATURE:BADGER MAN:LIVER -CREATURE:BADGER MAN:GUT -CREATURE:BADGER MAN:STOMACH -CREATURE:BADGER MAN:GIZZARD -CREATURE:BADGER MAN:PANCREAS -CREATURE:BADGER MAN:SPLEEN -CREATURE:BADGER MAN:KIDNEY -CREATURE:BADGER, GIANT:MUSCLE -CREATURE:BADGER, GIANT:EYE -CREATURE:BADGER, GIANT:BRAIN -CREATURE:BADGER, GIANT:LUNG -CREATURE:BADGER, GIANT:HEART -CREATURE:BADGER, GIANT:LIVER -CREATURE:BADGER, GIANT:GUT -CREATURE:BADGER, GIANT:STOMACH -CREATURE:BADGER, GIANT:GIZZARD -CREATURE:BADGER, GIANT:PANCREAS -CREATURE:BADGER, GIANT:SPLEEN -CREATURE:BADGER, GIANT:KIDNEY -CREATURE:MOOSE:MUSCLE -CREATURE:MOOSE:EYE -CREATURE:MOOSE:BRAIN -CREATURE:MOOSE:LUNG -CREATURE:MOOSE:HEART -CREATURE:MOOSE:LIVER -CREATURE:MOOSE:GUT -CREATURE:MOOSE:STOMACH -CREATURE:MOOSE:GIZZARD -CREATURE:MOOSE:PANCREAS -CREATURE:MOOSE:SPLEEN -CREATURE:MOOSE:KIDNEY -CREATURE:MOOSE MAN:MUSCLE -CREATURE:MOOSE MAN:EYE -CREATURE:MOOSE MAN:BRAIN -CREATURE:MOOSE MAN:LUNG -CREATURE:MOOSE MAN:HEART -CREATURE:MOOSE MAN:LIVER -CREATURE:MOOSE MAN:GUT -CREATURE:MOOSE MAN:STOMACH -CREATURE:MOOSE MAN:GIZZARD -CREATURE:MOOSE MAN:PANCREAS -CREATURE:MOOSE MAN:SPLEEN -CREATURE:MOOSE MAN:KIDNEY -CREATURE:MOOSE, GIANT:MUSCLE -CREATURE:MOOSE, GIANT:EYE -CREATURE:MOOSE, GIANT:BRAIN -CREATURE:MOOSE, GIANT:LUNG -CREATURE:MOOSE, GIANT:HEART -CREATURE:MOOSE, GIANT:LIVER -CREATURE:MOOSE, GIANT:GUT -CREATURE:MOOSE, GIANT:STOMACH -CREATURE:MOOSE, GIANT:GIZZARD -CREATURE:MOOSE, GIANT:PANCREAS -CREATURE:MOOSE, GIANT:SPLEEN -CREATURE:MOOSE, GIANT:KIDNEY -CREATURE:RED PANDA:MUSCLE -CREATURE:RED PANDA:EYE -CREATURE:RED PANDA:BRAIN -CREATURE:RED PANDA:LUNG -CREATURE:RED PANDA:HEART -CREATURE:RED PANDA:LIVER -CREATURE:RED PANDA:GUT -CREATURE:RED PANDA:STOMACH -CREATURE:RED PANDA:GIZZARD -CREATURE:RED PANDA:PANCREAS -CREATURE:RED PANDA:SPLEEN -CREATURE:RED PANDA:KIDNEY -CREATURE:RED PANDA MAN:MUSCLE -CREATURE:RED PANDA MAN:EYE -CREATURE:RED PANDA MAN:BRAIN -CREATURE:RED PANDA MAN:LUNG -CREATURE:RED PANDA MAN:HEART -CREATURE:RED PANDA MAN:LIVER -CREATURE:RED PANDA MAN:GUT -CREATURE:RED PANDA MAN:STOMACH -CREATURE:RED PANDA MAN:GIZZARD -CREATURE:RED PANDA MAN:PANCREAS -CREATURE:RED PANDA MAN:SPLEEN -CREATURE:RED PANDA MAN:KIDNEY - CREATURE:RED PANDA, GIANT:MUSCLE -CREATURE:RED PANDA, GIANT:EYE -CREATURE:RED PANDA, GIANT:BRAIN -CREATURE:RED PANDA, GIANT:LUNG -CREATURE:RED PANDA, GIANT:HEART -CREATURE:RED PANDA, GIANT:LIVER -CREATURE:RED PANDA, GIANT:GUT -!CREATURE:RED PANDA, GIANT:STOMACH -!CREATURE:RED PANDA, GIANT:GIZZARD -"CREATURE:RED PANDA, GIANT:PANCREAS - CREATURE:RED PANDA, GIANT:SPLEEN - CREATURE:RED PANDA, GIANT:KIDNEY -CREATURE:ELEPHANT:MUSCLE -CREATURE:ELEPHANT:EYE -CREATURE:ELEPHANT:BRAIN -CREATURE:ELEPHANT:LUNG -CREATURE:ELEPHANT:HEART -CREATURE:ELEPHANT:LIVER -CREATURE:ELEPHANT:GUT -CREATURE:ELEPHANT:STOMACH -CREATURE:ELEPHANT:GIZZARD -CREATURE:ELEPHANT:PANCREAS -CREATURE:ELEPHANT:SPLEEN -CREATURE:ELEPHANT:KIDNEY -CREATURE:ELEPHANT_MAN:MUSCLE -CREATURE:ELEPHANT_MAN:EYE -CREATURE:ELEPHANT_MAN:BRAIN -CREATURE:ELEPHANT_MAN:LUNG -CREATURE:ELEPHANT_MAN:HEART -CREATURE:ELEPHANT_MAN:LIVER -CREATURE:ELEPHANT_MAN:GUT -CREATURE:ELEPHANT_MAN:STOMACH -CREATURE:ELEPHANT_MAN:GIZZARD -CREATURE:ELEPHANT_MAN:PANCREAS -CREATURE:ELEPHANT_MAN:SPLEEN -CREATURE:ELEPHANT_MAN:KIDNEY -CREATURE:GIANT_ELEPHANT:MUSCLE -CREATURE:GIANT_ELEPHANT:EYE -CREATURE:GIANT_ELEPHANT:BRAIN -CREATURE:GIANT_ELEPHANT:LUNG -CREATURE:GIANT_ELEPHANT:HEART -CREATURE:GIANT_ELEPHANT:LIVER -CREATURE:GIANT_ELEPHANT:GUT -CREATURE:GIANT_ELEPHANT:STOMACH -CREATURE:GIANT_ELEPHANT:GIZZARD - CREATURE:GIANT_ELEPHANT:PANCREAS -CREATURE:GIANT_ELEPHANT:SPLEEN -CREATURE:GIANT_ELEPHANT:KIDNEY -CREATURE:WARTHOG:MUSCLE -CREATURE:WARTHOG:EYE -CREATURE:WARTHOG:BRAIN -CREATURE:WARTHOG:LUNG -CREATURE:WARTHOG:HEART -CREATURE:WARTHOG:LIVER -CREATURE:WARTHOG:GUT -CREATURE:WARTHOG:STOMACH -CREATURE:WARTHOG:GIZZARD -CREATURE:WARTHOG:PANCREAS -CREATURE:WARTHOG:SPLEEN -CREATURE:WARTHOG:KIDNEY -CREATURE:WARTHOG_MAN:MUSCLE -CREATURE:WARTHOG_MAN:EYE -CREATURE:WARTHOG_MAN:BRAIN -CREATURE:WARTHOG_MAN:LUNG -CREATURE:WARTHOG_MAN:HEART -CREATURE:WARTHOG_MAN:LIVER -CREATURE:WARTHOG_MAN:GUT -CREATURE:WARTHOG_MAN:STOMACH -CREATURE:WARTHOG_MAN:GIZZARD -CREATURE:WARTHOG_MAN:PANCREAS -CREATURE:WARTHOG_MAN:SPLEEN -CREATURE:WARTHOG_MAN:KIDNEY -CREATURE:GIANT_WARTHOG:MUSCLE -CREATURE:GIANT_WARTHOG:EYE -CREATURE:GIANT_WARTHOG:BRAIN -CREATURE:GIANT_WARTHOG:LUNG -CREATURE:GIANT_WARTHOG:HEART -CREATURE:GIANT_WARTHOG:LIVER -CREATURE:GIANT_WARTHOG:GUT -CREATURE:GIANT_WARTHOG:STOMACH -CREATURE:GIANT_WARTHOG:GIZZARD -CREATURE:GIANT_WARTHOG:PANCREAS -CREATURE:GIANT_WARTHOG:SPLEEN -CREATURE:GIANT_WARTHOG:KIDNEY -CREATURE:LION:MUSCLE -CREATURE:LION:EYE -CREATURE:LION:BRAIN -CREATURE:LION:LUNG -CREATURE:LION:HEART -CREATURE:LION:LIVER -CREATURE:LION:GUT -CREATURE:LION:STOMACH -CREATURE:LION:GIZZARD -CREATURE:LION:PANCREAS -CREATURE:LION:SPLEEN -CREATURE:LION:KIDNEY -CREATURE:LION_MAN:MUSCLE -CREATURE:LION_MAN:EYE -CREATURE:LION_MAN:BRAIN -CREATURE:LION_MAN:LUNG -CREATURE:LION_MAN:HEART -CREATURE:LION_MAN:LIVER -CREATURE:LION_MAN:GUT -CREATURE:LION_MAN:STOMACH -CREATURE:LION_MAN:GIZZARD -CREATURE:LION_MAN:PANCREAS -CREATURE:LION_MAN:SPLEEN -CREATURE:LION_MAN:KIDNEY -CREATURE:GIANT_LION:MUSCLE -CREATURE:GIANT_LION:EYE -CREATURE:GIANT_LION:BRAIN -CREATURE:GIANT_LION:LUNG -CREATURE:GIANT_LION:HEART -CREATURE:GIANT_LION:LIVER -CREATURE:GIANT_LION:GUT -CREATURE:GIANT_LION:STOMACH -CREATURE:GIANT_LION:GIZZARD -CREATURE:GIANT_LION:PANCREAS -CREATURE:GIANT_LION:SPLEEN -CREATURE:GIANT_LION:KIDNEY -CREATURE:LEOPARD:MUSCLE -CREATURE:LEOPARD:EYE -CREATURE:LEOPARD:BRAIN -CREATURE:LEOPARD:LUNG -CREATURE:LEOPARD:HEART -CREATURE:LEOPARD:LIVER -CREATURE:LEOPARD:GUT -CREATURE:LEOPARD:STOMACH -CREATURE:LEOPARD:GIZZARD -CREATURE:LEOPARD:PANCREAS -CREATURE:LEOPARD:SPLEEN -CREATURE:LEOPARD:KIDNEY -CREATURE:LEOPARD_MAN:MUSCLE -CREATURE:LEOPARD_MAN:EYE -CREATURE:LEOPARD_MAN:BRAIN -CREATURE:LEOPARD_MAN:LUNG -CREATURE:LEOPARD_MAN:HEART -CREATURE:LEOPARD_MAN:LIVER -CREATURE:LEOPARD_MAN:GUT -CREATURE:LEOPARD_MAN:STOMACH -CREATURE:LEOPARD_MAN:GIZZARD -CREATURE:LEOPARD_MAN:PANCREAS -CREATURE:LEOPARD_MAN:SPLEEN -CREATURE:LEOPARD_MAN:KIDNEY -CREATURE:GIANT_LEOPARD:MUSCLE -CREATURE:GIANT_LEOPARD:EYE -CREATURE:GIANT_LEOPARD:BRAIN -CREATURE:GIANT_LEOPARD:LUNG -CREATURE:GIANT_LEOPARD:HEART -CREATURE:GIANT_LEOPARD:LIVER -CREATURE:GIANT_LEOPARD:GUT -CREATURE:GIANT_LEOPARD:STOMACH -CREATURE:GIANT_LEOPARD:GIZZARD -CREATURE:GIANT_LEOPARD:PANCREAS -CREATURE:GIANT_LEOPARD:SPLEEN -CREATURE:GIANT_LEOPARD:KIDNEY -CREATURE:JAGUAR:MUSCLE -CREATURE:JAGUAR:EYE -CREATURE:JAGUAR:BRAIN -CREATURE:JAGUAR:LUNG -CREATURE:JAGUAR:HEART -CREATURE:JAGUAR:LIVER -CREATURE:JAGUAR:GUT -CREATURE:JAGUAR:STOMACH -CREATURE:JAGUAR:GIZZARD -CREATURE:JAGUAR:PANCREAS -CREATURE:JAGUAR:SPLEEN -CREATURE:JAGUAR:KIDNEY -CREATURE:JAGUAR_MAN:MUSCLE -CREATURE:JAGUAR_MAN:EYE -CREATURE:JAGUAR_MAN:BRAIN -CREATURE:JAGUAR_MAN:LUNG -CREATURE:JAGUAR_MAN:HEART -CREATURE:JAGUAR_MAN:LIVER -CREATURE:JAGUAR_MAN:GUT -CREATURE:JAGUAR_MAN:STOMACH -CREATURE:JAGUAR_MAN:GIZZARD -CREATURE:JAGUAR_MAN:PANCREAS -CREATURE:JAGUAR_MAN:SPLEEN -CREATURE:JAGUAR_MAN:KIDNEY -CREATURE:GIANT_JAGUAR:MUSCLE -CREATURE:GIANT_JAGUAR:EYE -CREATURE:GIANT_JAGUAR:BRAIN -CREATURE:GIANT_JAGUAR:LUNG -CREATURE:GIANT_JAGUAR:HEART -CREATURE:GIANT_JAGUAR:LIVER -CREATURE:GIANT_JAGUAR:GUT -CREATURE:GIANT_JAGUAR:STOMACH -CREATURE:GIANT_JAGUAR:GIZZARD -CREATURE:GIANT_JAGUAR:PANCREAS -CREATURE:GIANT_JAGUAR:SPLEEN -CREATURE:GIANT_JAGUAR:KIDNEY -CREATURE:TIGER:MUSCLE -CREATURE:TIGER:EYE -CREATURE:TIGER:BRAIN -CREATURE:TIGER:LUNG -CREATURE:TIGER:HEART -CREATURE:TIGER:LIVER -CREATURE:TIGER:GUT -CREATURE:TIGER:STOMACH -CREATURE:TIGER:GIZZARD -CREATURE:TIGER:PANCREAS -CREATURE:TIGER:SPLEEN -CREATURE:TIGER:KIDNEY -CREATURE:TIGER_MAN:MUSCLE -CREATURE:TIGER_MAN:EYE -CREATURE:TIGER_MAN:BRAIN -CREATURE:TIGER_MAN:LUNG -CREATURE:TIGER_MAN:HEART -CREATURE:TIGER_MAN:LIVER -CREATURE:TIGER_MAN:GUT -CREATURE:TIGER_MAN:STOMACH -CREATURE:TIGER_MAN:GIZZARD -CREATURE:TIGER_MAN:PANCREAS -CREATURE:TIGER_MAN:SPLEEN -CREATURE:TIGER_MAN:KIDNEY -CREATURE:GIANT_TIGER:MUSCLE -CREATURE:GIANT_TIGER:EYE -CREATURE:GIANT_TIGER:BRAIN -CREATURE:GIANT_TIGER:LUNG -CREATURE:GIANT_TIGER:HEART -CREATURE:GIANT_TIGER:LIVER -CREATURE:GIANT_TIGER:GUT -CREATURE:GIANT_TIGER:STOMACH -CREATURE:GIANT_TIGER:GIZZARD -CREATURE:GIANT_TIGER:PANCREAS -CREATURE:GIANT_TIGER:SPLEEN -CREATURE:GIANT_TIGER:KIDNEY -CREATURE:CHEETAH:MUSCLE -CREATURE:CHEETAH:EYE -CREATURE:CHEETAH:BRAIN -CREATURE:CHEETAH:LUNG -CREATURE:CHEETAH:HEART -CREATURE:CHEETAH:LIVER -CREATURE:CHEETAH:GUT -CREATURE:CHEETAH:STOMACH -CREATURE:CHEETAH:GIZZARD -CREATURE:CHEETAH:PANCREAS -CREATURE:CHEETAH:SPLEEN -CREATURE:CHEETAH:KIDNEY -CREATURE:CHEETAH_MAN:MUSCLE -CREATURE:CHEETAH_MAN:EYE -CREATURE:CHEETAH_MAN:BRAIN -CREATURE:CHEETAH_MAN:LUNG -CREATURE:CHEETAH_MAN:HEART -CREATURE:CHEETAH_MAN:LIVER -CREATURE:CHEETAH_MAN:GUT -CREATURE:CHEETAH_MAN:STOMACH -CREATURE:CHEETAH_MAN:GIZZARD -CREATURE:CHEETAH_MAN:PANCREAS -CREATURE:CHEETAH_MAN:SPLEEN -CREATURE:CHEETAH_MAN:KIDNEY -CREATURE:GIANT_CHEETAH:MUSCLE -CREATURE:GIANT_CHEETAH:EYE -CREATURE:GIANT_CHEETAH:BRAIN -CREATURE:GIANT_CHEETAH:LUNG -CREATURE:GIANT_CHEETAH:HEART -CREATURE:GIANT_CHEETAH:LIVER -CREATURE:GIANT_CHEETAH:GUT -CREATURE:GIANT_CHEETAH:STOMACH -CREATURE:GIANT_CHEETAH:GIZZARD -CREATURE:GIANT_CHEETAH:PANCREAS -CREATURE:GIANT_CHEETAH:SPLEEN -CREATURE:GIANT_CHEETAH:KIDNEY -CREATURE:GAZELLE:MUSCLE -CREATURE:GAZELLE:EYE -CREATURE:GAZELLE:BRAIN -CREATURE:GAZELLE:LUNG -CREATURE:GAZELLE:HEART -CREATURE:GAZELLE:LIVER -CREATURE:GAZELLE:GUT -CREATURE:GAZELLE:STOMACH -CREATURE:GAZELLE:GIZZARD -CREATURE:GAZELLE:PANCREAS -CREATURE:GAZELLE:SPLEEN -CREATURE:GAZELLE:KIDNEY -CREATURE:GAZELLE_MAN:MUSCLE -CREATURE:GAZELLE_MAN:EYE -CREATURE:GAZELLE_MAN:BRAIN -CREATURE:GAZELLE_MAN:LUNG -CREATURE:GAZELLE_MAN:HEART -CREATURE:GAZELLE_MAN:LIVER -CREATURE:GAZELLE_MAN:GUT -CREATURE:GAZELLE_MAN:STOMACH -CREATURE:GAZELLE_MAN:GIZZARD -CREATURE:GAZELLE_MAN:PANCREAS -CREATURE:GAZELLE_MAN:SPLEEN -CREATURE:GAZELLE_MAN:KIDNEY -CREATURE:GIANT_GAZELLE:MUSCLE -CREATURE:GIANT_GAZELLE:EYE -CREATURE:GIANT_GAZELLE:BRAIN -CREATURE:GIANT_GAZELLE:LUNG -CREATURE:GIANT_GAZELLE:HEART -CREATURE:GIANT_GAZELLE:LIVER -CREATURE:GIANT_GAZELLE:GUT -CREATURE:GIANT_GAZELLE:STOMACH -CREATURE:GIANT_GAZELLE:GIZZARD -CREATURE:GIANT_GAZELLE:PANCREAS -CREATURE:GIANT_GAZELLE:SPLEEN -CREATURE:GIANT_GAZELLE:KIDNEY -CREATURE:MANDRILL:MUSCLE -CREATURE:MANDRILL:EYE -CREATURE:MANDRILL:BRAIN -CREATURE:MANDRILL:LUNG -CREATURE:MANDRILL:HEART -CREATURE:MANDRILL:LIVER -CREATURE:MANDRILL:GUT -CREATURE:MANDRILL:STOMACH -CREATURE:MANDRILL:GIZZARD -CREATURE:MANDRILL:PANCREAS -CREATURE:MANDRILL:SPLEEN -CREATURE:MANDRILL:KIDNEY -CREATURE:MANDRILL_MAN:MUSCLE -CREATURE:MANDRILL_MAN:EYE -CREATURE:MANDRILL_MAN:BRAIN -CREATURE:MANDRILL_MAN:LUNG -CREATURE:MANDRILL_MAN:HEART -CREATURE:MANDRILL_MAN:LIVER -CREATURE:MANDRILL_MAN:GUT -CREATURE:MANDRILL_MAN:STOMACH -CREATURE:MANDRILL_MAN:GIZZARD -CREATURE:MANDRILL_MAN:PANCREAS -CREATURE:MANDRILL_MAN:SPLEEN -CREATURE:MANDRILL_MAN:KIDNEY -CREATURE:GIANT_MANDRILL:MUSCLE -CREATURE:GIANT_MANDRILL:EYE -CREATURE:GIANT_MANDRILL:BRAIN -CREATURE:GIANT_MANDRILL:LUNG -CREATURE:GIANT_MANDRILL:HEART -CREATURE:GIANT_MANDRILL:LIVER -CREATURE:GIANT_MANDRILL:GUT -CREATURE:GIANT_MANDRILL:STOMACH -CREATURE:GIANT_MANDRILL:GIZZARD - CREATURE:GIANT_MANDRILL:PANCREAS -CREATURE:GIANT_MANDRILL:SPLEEN -CREATURE:GIANT_MANDRILL:KIDNEY -CREATURE:CHIMPANZEE:MUSCLE -CREATURE:CHIMPANZEE:EYE -CREATURE:CHIMPANZEE:BRAIN -CREATURE:CHIMPANZEE:LUNG -CREATURE:CHIMPANZEE:HEART -CREATURE:CHIMPANZEE:LIVER -CREATURE:CHIMPANZEE:GUT -CREATURE:CHIMPANZEE:STOMACH -CREATURE:CHIMPANZEE:GIZZARD -CREATURE:CHIMPANZEE:PANCREAS -CREATURE:CHIMPANZEE:SPLEEN -CREATURE:CHIMPANZEE:KIDNEY -CREATURE:BONOBO:MUSCLE -CREATURE:BONOBO:EYE -CREATURE:BONOBO:BRAIN -CREATURE:BONOBO:LUNG -CREATURE:BONOBO:HEART -CREATURE:BONOBO:LIVER -CREATURE:BONOBO:GUT -CREATURE:BONOBO:STOMACH -CREATURE:BONOBO:GIZZARD -CREATURE:BONOBO:PANCREAS -CREATURE:BONOBO:SPLEEN -CREATURE:BONOBO:KIDNEY -CREATURE:GORILLA:MUSCLE -CREATURE:GORILLA:EYE -CREATURE:GORILLA:BRAIN -CREATURE:GORILLA:LUNG -CREATURE:GORILLA:HEART -CREATURE:GORILLA:LIVER -CREATURE:GORILLA:GUT -CREATURE:GORILLA:STOMACH -CREATURE:GORILLA:GIZZARD -CREATURE:GORILLA:PANCREAS -CREATURE:GORILLA:SPLEEN -CREATURE:GORILLA:KIDNEY -CREATURE:ORANGUTAN:MUSCLE -CREATURE:ORANGUTAN:EYE -CREATURE:ORANGUTAN:BRAIN -CREATURE:ORANGUTAN:LUNG -CREATURE:ORANGUTAN:HEART -CREATURE:ORANGUTAN:LIVER -CREATURE:ORANGUTAN:GUT -CREATURE:ORANGUTAN:STOMACH -CREATURE:ORANGUTAN:GIZZARD -CREATURE:ORANGUTAN:PANCREAS -CREATURE:ORANGUTAN:SPLEEN -CREATURE:ORANGUTAN:KIDNEY -CREATURE:GIBBON_SIAMANG:MUSCLE -CREATURE:GIBBON_SIAMANG:EYE -CREATURE:GIBBON_SIAMANG:BRAIN -CREATURE:GIBBON_SIAMANG:LUNG -CREATURE:GIBBON_SIAMANG:HEART -CREATURE:GIBBON_SIAMANG:LIVER -CREATURE:GIBBON_SIAMANG:GUT -CREATURE:GIBBON_SIAMANG:STOMACH -CREATURE:GIBBON_SIAMANG:GIZZARD - CREATURE:GIBBON_SIAMANG:PANCREAS -CREATURE:GIBBON_SIAMANG:SPLEEN -CREATURE:GIBBON_SIAMANG:KIDNEY -#CREATURE:GIBBON_WHITE_HANDED:MUSCLE - CREATURE:GIBBON_WHITE_HANDED:EYE -"CREATURE:GIBBON_WHITE_HANDED:BRAIN -!CREATURE:GIBBON_WHITE_HANDED:LUNG -"CREATURE:GIBBON_WHITE_HANDED:HEART -"CREATURE:GIBBON_WHITE_HANDED:LIVER - CREATURE:GIBBON_WHITE_HANDED:GUT -$CREATURE:GIBBON_WHITE_HANDED:STOMACH -$CREATURE:GIBBON_WHITE_HANDED:GIZZARD -%CREATURE:GIBBON_WHITE_HANDED:PANCREAS -#CREATURE:GIBBON_WHITE_HANDED:SPLEEN -#CREATURE:GIBBON_WHITE_HANDED:KIDNEY -#CREATURE:GIBBON_BLACK_HANDED:MUSCLE - CREATURE:GIBBON_BLACK_HANDED:EYE -"CREATURE:GIBBON_BLACK_HANDED:BRAIN -!CREATURE:GIBBON_BLACK_HANDED:LUNG -"CREATURE:GIBBON_BLACK_HANDED:HEART -"CREATURE:GIBBON_BLACK_HANDED:LIVER - CREATURE:GIBBON_BLACK_HANDED:GUT -$CREATURE:GIBBON_BLACK_HANDED:STOMACH -$CREATURE:GIBBON_BLACK_HANDED:GIZZARD -%CREATURE:GIBBON_BLACK_HANDED:PANCREAS -#CREATURE:GIBBON_BLACK_HANDED:SPLEEN -#CREATURE:GIBBON_BLACK_HANDED:KIDNEY -CREATURE:GIBBON_GRAY:MUSCLE -CREATURE:GIBBON_GRAY:EYE -CREATURE:GIBBON_GRAY:BRAIN -CREATURE:GIBBON_GRAY:LUNG -CREATURE:GIBBON_GRAY:HEART -CREATURE:GIBBON_GRAY:LIVER -CREATURE:GIBBON_GRAY:GUT -CREATURE:GIBBON_GRAY:STOMACH -CREATURE:GIBBON_GRAY:GIZZARD -CREATURE:GIBBON_GRAY:PANCREAS -CREATURE:GIBBON_GRAY:SPLEEN -CREATURE:GIBBON_GRAY:KIDNEY -CREATURE:GIBBON_SILVERY:MUSCLE -CREATURE:GIBBON_SILVERY:EYE -CREATURE:GIBBON_SILVERY:BRAIN -CREATURE:GIBBON_SILVERY:LUNG -CREATURE:GIBBON_SILVERY:HEART -CREATURE:GIBBON_SILVERY:LIVER -CREATURE:GIBBON_SILVERY:GUT -CREATURE:GIBBON_SILVERY:STOMACH -CREATURE:GIBBON_SILVERY:GIZZARD - CREATURE:GIBBON_SILVERY:PANCREAS -CREATURE:GIBBON_SILVERY:SPLEEN -CREATURE:GIBBON_SILVERY:KIDNEY -CREATURE:GIBBON_PILEATED:MUSCLE -CREATURE:GIBBON_PILEATED:EYE -CREATURE:GIBBON_PILEATED:BRAIN -CREATURE:GIBBON_PILEATED:LUNG -CREATURE:GIBBON_PILEATED:HEART -CREATURE:GIBBON_PILEATED:LIVER -CREATURE:GIBBON_PILEATED:GUT - CREATURE:GIBBON_PILEATED:STOMACH - CREATURE:GIBBON_PILEATED:GIZZARD -!CREATURE:GIBBON_PILEATED:PANCREAS -CREATURE:GIBBON_PILEATED:SPLEEN -CREATURE:GIBBON_PILEATED:KIDNEY -CREATURE:GIBBON_BILOU:MUSCLE -CREATURE:GIBBON_BILOU:EYE -CREATURE:GIBBON_BILOU:BRAIN -CREATURE:GIBBON_BILOU:LUNG -CREATURE:GIBBON_BILOU:HEART -CREATURE:GIBBON_BILOU:LIVER -CREATURE:GIBBON_BILOU:GUT -CREATURE:GIBBON_BILOU:STOMACH -CREATURE:GIBBON_BILOU:GIZZARD -CREATURE:GIBBON_BILOU:PANCREAS -CREATURE:GIBBON_BILOU:SPLEEN -CREATURE:GIBBON_BILOU:KIDNEY -#CREATURE:GIBBON_WHITE_BROWED:MUSCLE - CREATURE:GIBBON_WHITE_BROWED:EYE -"CREATURE:GIBBON_WHITE_BROWED:BRAIN -!CREATURE:GIBBON_WHITE_BROWED:LUNG -"CREATURE:GIBBON_WHITE_BROWED:HEART -"CREATURE:GIBBON_WHITE_BROWED:LIVER - CREATURE:GIBBON_WHITE_BROWED:GUT -$CREATURE:GIBBON_WHITE_BROWED:STOMACH -$CREATURE:GIBBON_WHITE_BROWED:GIZZARD -%CREATURE:GIBBON_WHITE_BROWED:PANCREAS -#CREATURE:GIBBON_WHITE_BROWED:SPLEEN -#CREATURE:GIBBON_WHITE_BROWED:KIDNEY -$CREATURE:GIBBON_BLACK_CRESTED:MUSCLE -!CREATURE:GIBBON_BLACK_CRESTED:EYE -#CREATURE:GIBBON_BLACK_CRESTED:BRAIN -"CREATURE:GIBBON_BLACK_CRESTED:LUNG -#CREATURE:GIBBON_BLACK_CRESTED:HEART -#CREATURE:GIBBON_BLACK_CRESTED:LIVER -!CREATURE:GIBBON_BLACK_CRESTED:GUT -%CREATURE:GIBBON_BLACK_CRESTED:STOMACH -%CREATURE:GIBBON_BLACK_CRESTED:GIZZARD -&CREATURE:GIBBON_BLACK_CRESTED:PANCREAS -$CREATURE:GIBBON_BLACK_CRESTED:SPLEEN -$CREATURE:GIBBON_BLACK_CRESTED:KIDNEY -CREATURE:CAMEL_1_HUMP:MUSCLE -CREATURE:CAMEL_1_HUMP:EYE -CREATURE:CAMEL_1_HUMP:BRAIN -CREATURE:CAMEL_1_HUMP:LUNG -CREATURE:CAMEL_1_HUMP:HEART -CREATURE:CAMEL_1_HUMP:LIVER -CREATURE:CAMEL_1_HUMP:GUT -CREATURE:CAMEL_1_HUMP:STOMACH -CREATURE:CAMEL_1_HUMP:GIZZARD -CREATURE:CAMEL_1_HUMP:PANCREAS -CREATURE:CAMEL_1_HUMP:SPLEEN -CREATURE:CAMEL_1_HUMP:KIDNEY - CREATURE:CAMEL_1_HUMP_MAN:MUSCLE -CREATURE:CAMEL_1_HUMP_MAN:EYE -CREATURE:CAMEL_1_HUMP_MAN:BRAIN -CREATURE:CAMEL_1_HUMP_MAN:LUNG -CREATURE:CAMEL_1_HUMP_MAN:HEART -CREATURE:CAMEL_1_HUMP_MAN:LIVER -CREATURE:CAMEL_1_HUMP_MAN:GUT -!CREATURE:CAMEL_1_HUMP_MAN:STOMACH -!CREATURE:CAMEL_1_HUMP_MAN:GIZZARD -"CREATURE:CAMEL_1_HUMP_MAN:PANCREAS - CREATURE:CAMEL_1_HUMP_MAN:SPLEEN - CREATURE:CAMEL_1_HUMP_MAN:KIDNEY -"CREATURE:GIANT_CAMEL_1_HUMP:MUSCLE -CREATURE:GIANT_CAMEL_1_HUMP:EYE -!CREATURE:GIANT_CAMEL_1_HUMP:BRAIN - CREATURE:GIANT_CAMEL_1_HUMP:LUNG -!CREATURE:GIANT_CAMEL_1_HUMP:HEART -!CREATURE:GIANT_CAMEL_1_HUMP:LIVER -CREATURE:GIANT_CAMEL_1_HUMP:GUT -#CREATURE:GIANT_CAMEL_1_HUMP:STOMACH -#CREATURE:GIANT_CAMEL_1_HUMP:GIZZARD -$CREATURE:GIANT_CAMEL_1_HUMP:PANCREAS -"CREATURE:GIANT_CAMEL_1_HUMP:SPLEEN -"CREATURE:GIANT_CAMEL_1_HUMP:KIDNEY -CREATURE:CAMEL_2_HUMP:MUSCLE -CREATURE:CAMEL_2_HUMP:EYE -CREATURE:CAMEL_2_HUMP:BRAIN -CREATURE:CAMEL_2_HUMP:LUNG -CREATURE:CAMEL_2_HUMP:HEART -CREATURE:CAMEL_2_HUMP:LIVER -CREATURE:CAMEL_2_HUMP:GUT -CREATURE:CAMEL_2_HUMP:STOMACH -CREATURE:CAMEL_2_HUMP:GIZZARD -CREATURE:CAMEL_2_HUMP:PANCREAS -CREATURE:CAMEL_2_HUMP:SPLEEN -CREATURE:CAMEL_2_HUMP:KIDNEY - CREATURE:CAMEL_2_HUMP_MAN:MUSCLE -CREATURE:CAMEL_2_HUMP_MAN:EYE -CREATURE:CAMEL_2_HUMP_MAN:BRAIN -CREATURE:CAMEL_2_HUMP_MAN:LUNG -CREATURE:CAMEL_2_HUMP_MAN:HEART -CREATURE:CAMEL_2_HUMP_MAN:LIVER -CREATURE:CAMEL_2_HUMP_MAN:GUT -!CREATURE:CAMEL_2_HUMP_MAN:STOMACH -!CREATURE:CAMEL_2_HUMP_MAN:GIZZARD -"CREATURE:CAMEL_2_HUMP_MAN:PANCREAS - CREATURE:CAMEL_2_HUMP_MAN:SPLEEN - CREATURE:CAMEL_2_HUMP_MAN:KIDNEY -"CREATURE:GIANT_CAMEL_2_HUMP:MUSCLE -CREATURE:GIANT_CAMEL_2_HUMP:EYE -!CREATURE:GIANT_CAMEL_2_HUMP:BRAIN - CREATURE:GIANT_CAMEL_2_HUMP:LUNG -!CREATURE:GIANT_CAMEL_2_HUMP:HEART -!CREATURE:GIANT_CAMEL_2_HUMP:LIVER -CREATURE:GIANT_CAMEL_2_HUMP:GUT -#CREATURE:GIANT_CAMEL_2_HUMP:STOMACH -#CREATURE:GIANT_CAMEL_2_HUMP:GIZZARD -$CREATURE:GIANT_CAMEL_2_HUMP:PANCREAS -"CREATURE:GIANT_CAMEL_2_HUMP:SPLEEN -"CREATURE:GIANT_CAMEL_2_HUMP:KIDNEY -#CREATURE:CROCODILE_SALTWATER:MUSCLE - CREATURE:CROCODILE_SALTWATER:EYE -"CREATURE:CROCODILE_SALTWATER:BRAIN -!CREATURE:CROCODILE_SALTWATER:LUNG -"CREATURE:CROCODILE_SALTWATER:HEART -"CREATURE:CROCODILE_SALTWATER:LIVER - CREATURE:CROCODILE_SALTWATER:GUT -$CREATURE:CROCODILE_SALTWATER:STOMACH -$CREATURE:CROCODILE_SALTWATER:GIZZARD -%CREATURE:CROCODILE_SALTWATER:PANCREAS -#CREATURE:CROCODILE_SALTWATER:SPLEEN -#CREATURE:CROCODILE_SALTWATER:KIDNEY -'CREATURE:CROCODILE_SALTWATER_MAN:MUSCLE -$CREATURE:CROCODILE_SALTWATER_MAN:EYE -&CREATURE:CROCODILE_SALTWATER_MAN:BRAIN -%CREATURE:CROCODILE_SALTWATER_MAN:LUNG -&CREATURE:CROCODILE_SALTWATER_MAN:HEART -&CREATURE:CROCODILE_SALTWATER_MAN:LIVER -$CREATURE:CROCODILE_SALTWATER_MAN:GUT -(CREATURE:CROCODILE_SALTWATER_MAN:STOMACH -(CREATURE:CROCODILE_SALTWATER_MAN:GIZZARD -)CREATURE:CROCODILE_SALTWATER_MAN:PANCREAS -'CREATURE:CROCODILE_SALTWATER_MAN:SPLEEN -'CREATURE:CROCODILE_SALTWATER_MAN:KIDNEY -)CREATURE:GIANT_CROCODILE_SALTWATER:MUSCLE -&CREATURE:GIANT_CROCODILE_SALTWATER:EYE -(CREATURE:GIANT_CROCODILE_SALTWATER:BRAIN -'CREATURE:GIANT_CROCODILE_SALTWATER:LUNG -(CREATURE:GIANT_CROCODILE_SALTWATER:HEART -(CREATURE:GIANT_CROCODILE_SALTWATER:LIVER -&CREATURE:GIANT_CROCODILE_SALTWATER:GUT -*CREATURE:GIANT_CROCODILE_SALTWATER:STOMACH -*CREATURE:GIANT_CROCODILE_SALTWATER:GIZZARD -+CREATURE:GIANT_CROCODILE_SALTWATER:PANCREAS -)CREATURE:GIANT_CROCODILE_SALTWATER:SPLEEN -)CREATURE:GIANT_CROCODILE_SALTWATER:KIDNEY -CREATURE:BIRD_VULTURE:MUSCLE -CREATURE:BIRD_VULTURE:EYE -CREATURE:BIRD_VULTURE:BRAIN -CREATURE:BIRD_VULTURE:LUNG -CREATURE:BIRD_VULTURE:HEART -CREATURE:BIRD_VULTURE:LIVER -CREATURE:BIRD_VULTURE:GUT -CREATURE:BIRD_VULTURE:STOMACH -CREATURE:BIRD_VULTURE:GIZZARD -CREATURE:BIRD_VULTURE:PANCREAS -CREATURE:BIRD_VULTURE:SPLEEN -CREATURE:BIRD_VULTURE:KIDNEY -CREATURE:VULTURE_MAN:MUSCLE -CREATURE:VULTURE_MAN:EYE -CREATURE:VULTURE_MAN:BRAIN -CREATURE:VULTURE_MAN:LUNG -CREATURE:VULTURE_MAN:HEART -CREATURE:VULTURE_MAN:LIVER -CREATURE:VULTURE_MAN:GUT -CREATURE:VULTURE_MAN:STOMACH -CREATURE:VULTURE_MAN:GIZZARD -CREATURE:VULTURE_MAN:PANCREAS -CREATURE:VULTURE_MAN:SPLEEN -CREATURE:VULTURE_MAN:KIDNEY -CREATURE:GIANT_VULTURE:MUSCLE -CREATURE:GIANT_VULTURE:EYE -CREATURE:GIANT_VULTURE:BRAIN -CREATURE:GIANT_VULTURE:LUNG -CREATURE:GIANT_VULTURE:HEART -CREATURE:GIANT_VULTURE:LIVER -CREATURE:GIANT_VULTURE:GUT -CREATURE:GIANT_VULTURE:STOMACH -CREATURE:GIANT_VULTURE:GIZZARD -CREATURE:GIANT_VULTURE:PANCREAS -CREATURE:GIANT_VULTURE:SPLEEN -CREATURE:GIANT_VULTURE:KIDNEY -CREATURE:RHINOCEROS:MUSCLE -CREATURE:RHINOCEROS:EYE -CREATURE:RHINOCEROS:BRAIN -CREATURE:RHINOCEROS:LUNG -CREATURE:RHINOCEROS:HEART -CREATURE:RHINOCEROS:LIVER -CREATURE:RHINOCEROS:GUT -CREATURE:RHINOCEROS:STOMACH -CREATURE:RHINOCEROS:GIZZARD -CREATURE:RHINOCEROS:PANCREAS -CREATURE:RHINOCEROS:SPLEEN -CREATURE:RHINOCEROS:KIDNEY -CREATURE:RHINOCEROS_MAN:MUSCLE -CREATURE:RHINOCEROS_MAN:EYE -CREATURE:RHINOCEROS_MAN:BRAIN -CREATURE:RHINOCEROS_MAN:LUNG -CREATURE:RHINOCEROS_MAN:HEART -CREATURE:RHINOCEROS_MAN:LIVER -CREATURE:RHINOCEROS_MAN:GUT -CREATURE:RHINOCEROS_MAN:STOMACH -CREATURE:RHINOCEROS_MAN:GIZZARD - CREATURE:RHINOCEROS_MAN:PANCREAS -CREATURE:RHINOCEROS_MAN:SPLEEN -CREATURE:RHINOCEROS_MAN:KIDNEY - CREATURE:GIANT_RHINOCEROS:MUSCLE -CREATURE:GIANT_RHINOCEROS:EYE -CREATURE:GIANT_RHINOCEROS:BRAIN -CREATURE:GIANT_RHINOCEROS:LUNG -CREATURE:GIANT_RHINOCEROS:HEART -CREATURE:GIANT_RHINOCEROS:LIVER -CREATURE:GIANT_RHINOCEROS:GUT -!CREATURE:GIANT_RHINOCEROS:STOMACH -!CREATURE:GIANT_RHINOCEROS:GIZZARD -"CREATURE:GIANT_RHINOCEROS:PANCREAS - CREATURE:GIANT_RHINOCEROS:SPLEEN - CREATURE:GIANT_RHINOCEROS:KIDNEY -CREATURE:GIRAFFE:MUSCLE -CREATURE:GIRAFFE:EYE -CREATURE:GIRAFFE:BRAIN -CREATURE:GIRAFFE:LUNG -CREATURE:GIRAFFE:HEART -CREATURE:GIRAFFE:LIVER -CREATURE:GIRAFFE:GUT -CREATURE:GIRAFFE:STOMACH -CREATURE:GIRAFFE:GIZZARD -CREATURE:GIRAFFE:PANCREAS -CREATURE:GIRAFFE:SPLEEN -CREATURE:GIRAFFE:KIDNEY -CREATURE:GIRAFFE_MAN:MUSCLE -CREATURE:GIRAFFE_MAN:EYE -CREATURE:GIRAFFE_MAN:BRAIN -CREATURE:GIRAFFE_MAN:LUNG -CREATURE:GIRAFFE_MAN:HEART -CREATURE:GIRAFFE_MAN:LIVER -CREATURE:GIRAFFE_MAN:GUT -CREATURE:GIRAFFE_MAN:STOMACH -CREATURE:GIRAFFE_MAN:GIZZARD -CREATURE:GIRAFFE_MAN:PANCREAS -CREATURE:GIRAFFE_MAN:SPLEEN -CREATURE:GIRAFFE_MAN:KIDNEY -CREATURE:GIANT_GIRAFFE:MUSCLE -CREATURE:GIANT_GIRAFFE:EYE -CREATURE:GIANT_GIRAFFE:BRAIN -CREATURE:GIANT_GIRAFFE:LUNG -CREATURE:GIANT_GIRAFFE:HEART -CREATURE:GIANT_GIRAFFE:LIVER -CREATURE:GIANT_GIRAFFE:GUT -CREATURE:GIANT_GIRAFFE:STOMACH -CREATURE:GIANT_GIRAFFE:GIZZARD -CREATURE:GIANT_GIRAFFE:PANCREAS -CREATURE:GIANT_GIRAFFE:SPLEEN -CREATURE:GIANT_GIRAFFE:KIDNEY -CREATURE:HONEY BADGER:MUSCLE -CREATURE:HONEY BADGER:EYE -CREATURE:HONEY BADGER:BRAIN -CREATURE:HONEY BADGER:LUNG -CREATURE:HONEY BADGER:HEART -CREATURE:HONEY BADGER:LIVER -CREATURE:HONEY BADGER:GUT -CREATURE:HONEY BADGER:STOMACH -CREATURE:HONEY BADGER:GIZZARD -CREATURE:HONEY BADGER:PANCREAS -CREATURE:HONEY BADGER:SPLEEN -CREATURE:HONEY BADGER:KIDNEY - CREATURE:HONEY BADGER MAN:MUSCLE -CREATURE:HONEY BADGER MAN:EYE -CREATURE:HONEY BADGER MAN:BRAIN -CREATURE:HONEY BADGER MAN:LUNG -CREATURE:HONEY BADGER MAN:HEART -CREATURE:HONEY BADGER MAN:LIVER -CREATURE:HONEY BADGER MAN:GUT -!CREATURE:HONEY BADGER MAN:STOMACH -!CREATURE:HONEY BADGER MAN:GIZZARD -"CREATURE:HONEY BADGER MAN:PANCREAS - CREATURE:HONEY BADGER MAN:SPLEEN - CREATURE:HONEY BADGER MAN:KIDNEY -#CREATURE:HONEY BADGER, GIANT:MUSCLE - CREATURE:HONEY BADGER, GIANT:EYE -"CREATURE:HONEY BADGER, GIANT:BRAIN -!CREATURE:HONEY BADGER, GIANT:LUNG -"CREATURE:HONEY BADGER, GIANT:HEART -"CREATURE:HONEY BADGER, GIANT:LIVER - CREATURE:HONEY BADGER, GIANT:GUT -$CREATURE:HONEY BADGER, GIANT:STOMACH -$CREATURE:HONEY BADGER, GIANT:GIZZARD -%CREATURE:HONEY BADGER, GIANT:PANCREAS -#CREATURE:HONEY BADGER, GIANT:SPLEEN -#CREATURE:HONEY BADGER, GIANT:KIDNEY -CREATURE:GIANT TORTOISE:MUSCLE -CREATURE:GIANT TORTOISE:EYE -CREATURE:GIANT TORTOISE:BRAIN -CREATURE:GIANT TORTOISE:LUNG -CREATURE:GIANT TORTOISE:HEART -CREATURE:GIANT TORTOISE:LIVER -CREATURE:GIANT TORTOISE:GUT -CREATURE:GIANT TORTOISE:STOMACH -CREATURE:GIANT TORTOISE:GIZZARD - CREATURE:GIANT TORTOISE:PANCREAS -CREATURE:GIANT TORTOISE:SPLEEN -CREATURE:GIANT TORTOISE:KIDNEY -"CREATURE:GIANT TORTOISE MAN:MUSCLE -CREATURE:GIANT TORTOISE MAN:EYE -!CREATURE:GIANT TORTOISE MAN:BRAIN - CREATURE:GIANT TORTOISE MAN:LUNG -!CREATURE:GIANT TORTOISE MAN:HEART -!CREATURE:GIANT TORTOISE MAN:LIVER -CREATURE:GIANT TORTOISE MAN:GUT -#CREATURE:GIANT TORTOISE MAN:STOMACH -#CREATURE:GIANT TORTOISE MAN:GIZZARD -$CREATURE:GIANT TORTOISE MAN:PANCREAS -"CREATURE:GIANT TORTOISE MAN:SPLEEN -"CREATURE:GIANT TORTOISE MAN:KIDNEY -!CREATURE:GIGANTIC TORTOISE:MUSCLE -CREATURE:GIGANTIC TORTOISE:EYE - CREATURE:GIGANTIC TORTOISE:BRAIN -CREATURE:GIGANTIC TORTOISE:LUNG - CREATURE:GIGANTIC TORTOISE:HEART - CREATURE:GIGANTIC TORTOISE:LIVER -CREATURE:GIGANTIC TORTOISE:GUT -"CREATURE:GIGANTIC TORTOISE:STOMACH -"CREATURE:GIGANTIC TORTOISE:GIZZARD -#CREATURE:GIGANTIC TORTOISE:PANCREAS -!CREATURE:GIGANTIC TORTOISE:SPLEEN -!CREATURE:GIGANTIC TORTOISE:KIDNEY -CREATURE:ARMADILLO:MUSCLE -CREATURE:ARMADILLO:EYE -CREATURE:ARMADILLO:BRAIN -CREATURE:ARMADILLO:LUNG -CREATURE:ARMADILLO:HEART -CREATURE:ARMADILLO:LIVER -CREATURE:ARMADILLO:GUT -CREATURE:ARMADILLO:STOMACH -CREATURE:ARMADILLO:GIZZARD -CREATURE:ARMADILLO:PANCREAS -CREATURE:ARMADILLO:SPLEEN -CREATURE:ARMADILLO:KIDNEY -CREATURE:ARMADILLO MAN:MUSCLE -CREATURE:ARMADILLO MAN:EYE -CREATURE:ARMADILLO MAN:BRAIN -CREATURE:ARMADILLO MAN:LUNG -CREATURE:ARMADILLO MAN:HEART -CREATURE:ARMADILLO MAN:LIVER -CREATURE:ARMADILLO MAN:GUT -CREATURE:ARMADILLO MAN:STOMACH -CREATURE:ARMADILLO MAN:GIZZARD -CREATURE:ARMADILLO MAN:PANCREAS -CREATURE:ARMADILLO MAN:SPLEEN -CREATURE:ARMADILLO MAN:KIDNEY - CREATURE:ARMADILLO, GIANT:MUSCLE -CREATURE:ARMADILLO, GIANT:EYE -CREATURE:ARMADILLO, GIANT:BRAIN -CREATURE:ARMADILLO, GIANT:LUNG -CREATURE:ARMADILLO, GIANT:HEART -CREATURE:ARMADILLO, GIANT:LIVER -CREATURE:ARMADILLO, GIANT:GUT -!CREATURE:ARMADILLO, GIANT:STOMACH -!CREATURE:ARMADILLO, GIANT:GIZZARD -"CREATURE:ARMADILLO, GIANT:PANCREAS - CREATURE:ARMADILLO, GIANT:SPLEEN - CREATURE:ARMADILLO, GIANT:KIDNEY -CREATURE:MUSKOX:MUSCLE -CREATURE:MUSKOX:EYE -CREATURE:MUSKOX:BRAIN -CREATURE:MUSKOX:LUNG -CREATURE:MUSKOX:HEART -CREATURE:MUSKOX:LIVER -CREATURE:MUSKOX:GUT -CREATURE:MUSKOX:STOMACH -CREATURE:MUSKOX:GIZZARD -CREATURE:MUSKOX:PANCREAS -CREATURE:MUSKOX:SPLEEN -CREATURE:MUSKOX:KIDNEY -CREATURE:MUSKOX_MAN:MUSCLE -CREATURE:MUSKOX_MAN:EYE -CREATURE:MUSKOX_MAN:BRAIN -CREATURE:MUSKOX_MAN:LUNG -CREATURE:MUSKOX_MAN:HEART -CREATURE:MUSKOX_MAN:LIVER -CREATURE:MUSKOX_MAN:GUT -CREATURE:MUSKOX_MAN:STOMACH -CREATURE:MUSKOX_MAN:GIZZARD -CREATURE:MUSKOX_MAN:PANCREAS -CREATURE:MUSKOX_MAN:SPLEEN -CREATURE:MUSKOX_MAN:KIDNEY -CREATURE:GIANT_MUSKOX:MUSCLE -CREATURE:GIANT_MUSKOX:EYE -CREATURE:GIANT_MUSKOX:BRAIN -CREATURE:GIANT_MUSKOX:LUNG -CREATURE:GIANT_MUSKOX:HEART -CREATURE:GIANT_MUSKOX:LIVER -CREATURE:GIANT_MUSKOX:GUT -CREATURE:GIANT_MUSKOX:STOMACH -CREATURE:GIANT_MUSKOX:GIZZARD -CREATURE:GIANT_MUSKOX:PANCREAS -CREATURE:GIANT_MUSKOX:SPLEEN -CREATURE:GIANT_MUSKOX:KIDNEY -CREATURE:ELK:MUSCLE -CREATURE:ELK:EYE -CREATURE:ELK:BRAIN -CREATURE:ELK:LUNG -CREATURE:ELK:HEART -CREATURE:ELK:LIVER -CREATURE:ELK:GUT -CREATURE:ELK:STOMACH -CREATURE:ELK:GIZZARD -CREATURE:ELK:PANCREAS -CREATURE:ELK:SPLEEN -CREATURE:ELK:KIDNEY -CREATURE:ELK_MAN:MUSCLE -CREATURE:ELK_MAN:EYE -CREATURE:ELK_MAN:BRAIN -CREATURE:ELK_MAN:LUNG -CREATURE:ELK_MAN:HEART -CREATURE:ELK_MAN:LIVER -CREATURE:ELK_MAN:GUT -CREATURE:ELK_MAN:STOMACH -CREATURE:ELK_MAN:GIZZARD -CREATURE:ELK_MAN:PANCREAS -CREATURE:ELK_MAN:SPLEEN -CREATURE:ELK_MAN:KIDNEY -CREATURE:GIANT_ELK:MUSCLE -CREATURE:GIANT_ELK:EYE -CREATURE:GIANT_ELK:BRAIN -CREATURE:GIANT_ELK:LUNG -CREATURE:GIANT_ELK:HEART -CREATURE:GIANT_ELK:LIVER -CREATURE:GIANT_ELK:GUT -CREATURE:GIANT_ELK:STOMACH -CREATURE:GIANT_ELK:GIZZARD -CREATURE:GIANT_ELK:PANCREAS -CREATURE:GIANT_ELK:SPLEEN -CREATURE:GIANT_ELK:KIDNEY -CREATURE:BEAR_POLAR:MUSCLE -CREATURE:BEAR_POLAR:EYE -CREATURE:BEAR_POLAR:BRAIN -CREATURE:BEAR_POLAR:LUNG -CREATURE:BEAR_POLAR:HEART -CREATURE:BEAR_POLAR:LIVER -CREATURE:BEAR_POLAR:GUT -CREATURE:BEAR_POLAR:STOMACH -CREATURE:BEAR_POLAR:GIZZARD -CREATURE:BEAR_POLAR:PANCREAS -CREATURE:BEAR_POLAR:SPLEEN -CREATURE:BEAR_POLAR:KIDNEY -CREATURE:BEAR_POLAR_MAN:MUSCLE -CREATURE:BEAR_POLAR_MAN:EYE -CREATURE:BEAR_POLAR_MAN:BRAIN -CREATURE:BEAR_POLAR_MAN:LUNG -CREATURE:BEAR_POLAR_MAN:HEART -CREATURE:BEAR_POLAR_MAN:LIVER -CREATURE:BEAR_POLAR_MAN:GUT -CREATURE:BEAR_POLAR_MAN:STOMACH -CREATURE:BEAR_POLAR_MAN:GIZZARD - CREATURE:BEAR_POLAR_MAN:PANCREAS -CREATURE:BEAR_POLAR_MAN:SPLEEN -CREATURE:BEAR_POLAR_MAN:KIDNEY - CREATURE:GIANT_BEAR_POLAR:MUSCLE -CREATURE:GIANT_BEAR_POLAR:EYE -CREATURE:GIANT_BEAR_POLAR:BRAIN -CREATURE:GIANT_BEAR_POLAR:LUNG -CREATURE:GIANT_BEAR_POLAR:HEART -CREATURE:GIANT_BEAR_POLAR:LIVER -CREATURE:GIANT_BEAR_POLAR:GUT -!CREATURE:GIANT_BEAR_POLAR:STOMACH -!CREATURE:GIANT_BEAR_POLAR:GIZZARD -"CREATURE:GIANT_BEAR_POLAR:PANCREAS - CREATURE:GIANT_BEAR_POLAR:SPLEEN - CREATURE:GIANT_BEAR_POLAR:KIDNEY -CREATURE:WOLVERINE:MUSCLE -CREATURE:WOLVERINE:EYE -CREATURE:WOLVERINE:BRAIN -CREATURE:WOLVERINE:LUNG -CREATURE:WOLVERINE:HEART -CREATURE:WOLVERINE:LIVER -CREATURE:WOLVERINE:GUT -CREATURE:WOLVERINE:STOMACH -CREATURE:WOLVERINE:GIZZARD -CREATURE:WOLVERINE:PANCREAS -CREATURE:WOLVERINE:SPLEEN -CREATURE:WOLVERINE:KIDNEY -CREATURE:WOLVERINE_MAN:MUSCLE -CREATURE:WOLVERINE_MAN:EYE -CREATURE:WOLVERINE_MAN:BRAIN -CREATURE:WOLVERINE_MAN:LUNG -CREATURE:WOLVERINE_MAN:HEART -CREATURE:WOLVERINE_MAN:LIVER -CREATURE:WOLVERINE_MAN:GUT -CREATURE:WOLVERINE_MAN:STOMACH -CREATURE:WOLVERINE_MAN:GIZZARD -CREATURE:WOLVERINE_MAN:PANCREAS -CREATURE:WOLVERINE_MAN:SPLEEN -CREATURE:WOLVERINE_MAN:KIDNEY -CREATURE:GIANT_WOLVERINE:MUSCLE -CREATURE:GIANT_WOLVERINE:EYE -CREATURE:GIANT_WOLVERINE:BRAIN -CREATURE:GIANT_WOLVERINE:LUNG -CREATURE:GIANT_WOLVERINE:HEART -CREATURE:GIANT_WOLVERINE:LIVER -CREATURE:GIANT_WOLVERINE:GUT - CREATURE:GIANT_WOLVERINE:STOMACH - CREATURE:GIANT_WOLVERINE:GIZZARD -!CREATURE:GIANT_WOLVERINE:PANCREAS -CREATURE:GIANT_WOLVERINE:SPLEEN -CREATURE:GIANT_WOLVERINE:KIDNEY -CREATURE:CHINCHILLA:MUSCLE -CREATURE:CHINCHILLA:EYE -CREATURE:CHINCHILLA:BRAIN -CREATURE:CHINCHILLA:LUNG -CREATURE:CHINCHILLA:HEART -CREATURE:CHINCHILLA:LIVER -CREATURE:CHINCHILLA:GUT -CREATURE:CHINCHILLA:STOMACH -CREATURE:CHINCHILLA:GIZZARD -CREATURE:CHINCHILLA:PANCREAS -CREATURE:CHINCHILLA:SPLEEN -CREATURE:CHINCHILLA:KIDNEY -CREATURE:CHINCHILLA_MAN:MUSCLE -CREATURE:CHINCHILLA_MAN:EYE -CREATURE:CHINCHILLA_MAN:BRAIN -CREATURE:CHINCHILLA_MAN:LUNG -CREATURE:CHINCHILLA_MAN:HEART -CREATURE:CHINCHILLA_MAN:LIVER -CREATURE:CHINCHILLA_MAN:GUT -CREATURE:CHINCHILLA_MAN:STOMACH -CREATURE:CHINCHILLA_MAN:GIZZARD - CREATURE:CHINCHILLA_MAN:PANCREAS -CREATURE:CHINCHILLA_MAN:SPLEEN -CREATURE:CHINCHILLA_MAN:KIDNEY - CREATURE:GIANT_CHINCHILLA:MUSCLE -CREATURE:GIANT_CHINCHILLA:EYE -CREATURE:GIANT_CHINCHILLA:BRAIN -CREATURE:GIANT_CHINCHILLA:LUNG -CREATURE:GIANT_CHINCHILLA:HEART -CREATURE:GIANT_CHINCHILLA:LIVER -CREATURE:GIANT_CHINCHILLA:GUT -!CREATURE:GIANT_CHINCHILLA:STOMACH -!CREATURE:GIANT_CHINCHILLA:GIZZARD -"CREATURE:GIANT_CHINCHILLA:PANCREAS - CREATURE:GIANT_CHINCHILLA:SPLEEN - CREATURE:GIANT_CHINCHILLA:KIDNEY -CREATURE:FLOATING_GUTS:MUSCLE -CREATURE:FLOATING_GUTS:EYE -CREATURE:FLOATING_GUTS:BRAIN -CREATURE:FLOATING_GUTS:LUNG -CREATURE:FLOATING_GUTS:HEART -CREATURE:FLOATING_GUTS:LIVER -CREATURE:FLOATING_GUTS:GUT -CREATURE:FLOATING_GUTS:STOMACH -CREATURE:FLOATING_GUTS:GIZZARD -CREATURE:FLOATING_GUTS:PANCREAS -CREATURE:FLOATING_GUTS:SPLEEN -CREATURE:FLOATING_GUTS:KIDNEY -CREATURE:DRUNIAN:MUSCLE -CREATURE:DRUNIAN:EYE -CREATURE:DRUNIAN:BRAIN -CREATURE:DRUNIAN:LUNG -CREATURE:DRUNIAN:HEART -CREATURE:DRUNIAN:LIVER -CREATURE:DRUNIAN:GUT -CREATURE:DRUNIAN:STOMACH -CREATURE:DRUNIAN:GIZZARD -CREATURE:DRUNIAN:PANCREAS -CREATURE:DRUNIAN:SPLEEN -CREATURE:DRUNIAN:KIDNEY -CREATURE:CREEPING_EYE:MUSCLE -CREATURE:CREEPING_EYE:EYE -CREATURE:CREEPING_EYE:BRAIN -CREATURE:CREEPING_EYE:LUNG -CREATURE:CREEPING_EYE:HEART -CREATURE:CREEPING_EYE:LIVER -CREATURE:CREEPING_EYE:GUT -CREATURE:CREEPING_EYE:STOMACH -CREATURE:CREEPING_EYE:GIZZARD -CREATURE:CREEPING_EYE:PANCREAS -CREATURE:CREEPING_EYE:SPLEEN -CREATURE:CREEPING_EYE:KIDNEY -&CREATURE:VORACIOUS_CAVE_CRAWLER:MUSCLE -#CREATURE:VORACIOUS_CAVE_CRAWLER:EYE -%CREATURE:VORACIOUS_CAVE_CRAWLER:BRAIN -$CREATURE:VORACIOUS_CAVE_CRAWLER:LUNG -%CREATURE:VORACIOUS_CAVE_CRAWLER:HEART -%CREATURE:VORACIOUS_CAVE_CRAWLER:LIVER -#CREATURE:VORACIOUS_CAVE_CRAWLER:GUT -'CREATURE:VORACIOUS_CAVE_CRAWLER:STOMACH -'CREATURE:VORACIOUS_CAVE_CRAWLER:GIZZARD -(CREATURE:VORACIOUS_CAVE_CRAWLER:PANCREAS -&CREATURE:VORACIOUS_CAVE_CRAWLER:SPLEEN -&CREATURE:VORACIOUS_CAVE_CRAWLER:KIDNEY -CREATURE:BLIND_CAVE_OGRE:MUSCLE -CREATURE:BLIND_CAVE_OGRE:EYE -CREATURE:BLIND_CAVE_OGRE:BRAIN -CREATURE:BLIND_CAVE_OGRE:LUNG -CREATURE:BLIND_CAVE_OGRE:HEART -CREATURE:BLIND_CAVE_OGRE:LIVER -CREATURE:BLIND_CAVE_OGRE:GUT - CREATURE:BLIND_CAVE_OGRE:STOMACH - CREATURE:BLIND_CAVE_OGRE:GIZZARD -!CREATURE:BLIND_CAVE_OGRE:PANCREAS -CREATURE:BLIND_CAVE_OGRE:SPLEEN -CREATURE:BLIND_CAVE_OGRE:KIDNEY -CREATURE:CAP_HOPPER:MUSCLE -CREATURE:CAP_HOPPER:EYE -CREATURE:CAP_HOPPER:BRAIN -CREATURE:CAP_HOPPER:LUNG -CREATURE:CAP_HOPPER:HEART -CREATURE:CAP_HOPPER:LIVER -CREATURE:CAP_HOPPER:GUT -CREATURE:CAP_HOPPER:STOMACH -CREATURE:CAP_HOPPER:GIZZARD -CREATURE:CAP_HOPPER:PANCREAS -CREATURE:CAP_HOPPER:SPLEEN -CREATURE:CAP_HOPPER:KIDNEY -CREATURE:MAGMA_CRAB:MUSCLE -CREATURE:MAGMA_CRAB:EYE -CREATURE:MAGMA_CRAB:BRAIN -CREATURE:MAGMA_CRAB:LUNG -CREATURE:MAGMA_CRAB:HEART -CREATURE:MAGMA_CRAB:LIVER -CREATURE:MAGMA_CRAB:GUT -CREATURE:MAGMA_CRAB:STOMACH -CREATURE:MAGMA_CRAB:GIZZARD -CREATURE:MAGMA_CRAB:PANCREAS -CREATURE:MAGMA_CRAB:SPLEEN -CREATURE:MAGMA_CRAB:KIDNEY -CREATURE:CRUNDLE:MUSCLE -CREATURE:CRUNDLE:EYE -CREATURE:CRUNDLE:BRAIN -CREATURE:CRUNDLE:LUNG -CREATURE:CRUNDLE:HEART -CREATURE:CRUNDLE:LIVER -CREATURE:CRUNDLE:GUT -CREATURE:CRUNDLE:STOMACH -CREATURE:CRUNDLE:GIZZARD -CREATURE:CRUNDLE:PANCREAS -CREATURE:CRUNDLE:SPLEEN -CREATURE:CRUNDLE:KIDNEY -CREATURE:HUNGRY_HEAD:MUSCLE -CREATURE:HUNGRY_HEAD:EYE -CREATURE:HUNGRY_HEAD:BRAIN -CREATURE:HUNGRY_HEAD:LUNG -CREATURE:HUNGRY_HEAD:HEART -CREATURE:HUNGRY_HEAD:LIVER -CREATURE:HUNGRY_HEAD:GUT -CREATURE:HUNGRY_HEAD:STOMACH -CREATURE:HUNGRY_HEAD:GIZZARD -CREATURE:HUNGRY_HEAD:PANCREAS -CREATURE:HUNGRY_HEAD:SPLEEN -CREATURE:HUNGRY_HEAD:KIDNEY -CREATURE:FLESH_BALL:MUSCLE -CREATURE:ELK_BIRD:MUSCLE -CREATURE:ELK_BIRD:EYE -CREATURE:ELK_BIRD:BRAIN -CREATURE:ELK_BIRD:LUNG -CREATURE:ELK_BIRD:HEART -CREATURE:ELK_BIRD:LIVER -CREATURE:ELK_BIRD:GUT -CREATURE:ELK_BIRD:STOMACH -CREATURE:ELK_BIRD:GIZZARD -CREATURE:ELK_BIRD:PANCREAS -CREATURE:ELK_BIRD:SPLEEN -CREATURE:ELK_BIRD:KIDNEY -CREATURE:HELMET_SNAKE:MUSCLE -CREATURE:HELMET_SNAKE:EYE -CREATURE:HELMET_SNAKE:BRAIN -CREATURE:HELMET_SNAKE:LUNG -CREATURE:HELMET_SNAKE:HEART -CREATURE:HELMET_SNAKE:LIVER -CREATURE:HELMET_SNAKE:GUT -CREATURE:HELMET_SNAKE:STOMACH -CREATURE:HELMET_SNAKE:GIZZARD -CREATURE:HELMET_SNAKE:PANCREAS -CREATURE:HELMET_SNAKE:SPLEEN -CREATURE:HELMET_SNAKE:KIDNEY -CREATURE:GREEN_DEVOURER:MUSCLE -CREATURE:GREEN_DEVOURER:EYE -CREATURE:GREEN_DEVOURER:BRAIN -CREATURE:GREEN_DEVOURER:LUNG -CREATURE:GREEN_DEVOURER:HEART -CREATURE:GREEN_DEVOURER:LIVER -CREATURE:GREEN_DEVOURER:GUT -CREATURE:GREEN_DEVOURER:STOMACH -CREATURE:GREEN_DEVOURER:GIZZARD - CREATURE:GREEN_DEVOURER:PANCREAS -CREATURE:GREEN_DEVOURER:SPLEEN -CREATURE:GREEN_DEVOURER:KIDNEY -CREATURE:RUTHERER:MUSCLE -CREATURE:RUTHERER:EYE -CREATURE:RUTHERER:BRAIN -CREATURE:RUTHERER:LUNG -CREATURE:RUTHERER:HEART -CREATURE:RUTHERER:LIVER -CREATURE:RUTHERER:GUT -CREATURE:RUTHERER:STOMACH -CREATURE:RUTHERER:GIZZARD -CREATURE:RUTHERER:PANCREAS -CREATURE:RUTHERER:SPLEEN -CREATURE:RUTHERER:KIDNEY -CREATURE:CREEPY_CRAWLER:MUSCLE -CREATURE:CREEPY_CRAWLER:EYE -CREATURE:CREEPY_CRAWLER:BRAIN -CREATURE:CREEPY_CRAWLER:LUNG -CREATURE:CREEPY_CRAWLER:HEART -CREATURE:CREEPY_CRAWLER:LIVER -CREATURE:CREEPY_CRAWLER:GUT -CREATURE:CREEPY_CRAWLER:STOMACH -CREATURE:CREEPY_CRAWLER:GIZZARD - CREATURE:CREEPY_CRAWLER:PANCREAS -CREATURE:CREEPY_CRAWLER:SPLEEN -CREATURE:CREEPY_CRAWLER:KIDNEY -CREATURE:DRALTHA:MUSCLE -CREATURE:DRALTHA:EYE -CREATURE:DRALTHA:BRAIN -CREATURE:DRALTHA:LUNG -CREATURE:DRALTHA:HEART -CREATURE:DRALTHA:LIVER -CREATURE:DRALTHA:GUT -CREATURE:DRALTHA:STOMACH -CREATURE:DRALTHA:GIZZARD -CREATURE:DRALTHA:PANCREAS -CREATURE:DRALTHA:SPLEEN -CREATURE:DRALTHA:KIDNEY -CREATURE:GIANT_EARTHWORM:MUSCLE -CREATURE:GIANT_EARTHWORM:EYE -CREATURE:GIANT_EARTHWORM:BRAIN -CREATURE:GIANT_EARTHWORM:LUNG -CREATURE:GIANT_EARTHWORM:HEART -CREATURE:GIANT_EARTHWORM:LIVER -CREATURE:GIANT_EARTHWORM:GUT - CREATURE:GIANT_EARTHWORM:STOMACH - CREATURE:GIANT_EARTHWORM:GIZZARD -!CREATURE:GIANT_EARTHWORM:PANCREAS -CREATURE:GIANT_EARTHWORM:SPLEEN -CREATURE:GIANT_EARTHWORM:KIDNEY -CREATURE:BUGBAT:MUSCLE -CREATURE:BUGBAT:EYE -CREATURE:BUGBAT:BRAIN -CREATURE:BUGBAT:LUNG -CREATURE:BUGBAT:HEART -CREATURE:BUGBAT:LIVER -CREATURE:BUGBAT:GUT -CREATURE:BUGBAT:STOMACH -CREATURE:BUGBAT:GIZZARD -CREATURE:BUGBAT:PANCREAS -CREATURE:BUGBAT:SPLEEN -CREATURE:BUGBAT:KIDNEY -CREATURE:MANERA:MUSCLE -CREATURE:MANERA:EYE -CREATURE:MANERA:BRAIN -CREATURE:MANERA:LUNG -CREATURE:MANERA:HEART -CREATURE:MANERA:LIVER -CREATURE:MANERA:GUT -CREATURE:MANERA:STOMACH -CREATURE:MANERA:GIZZARD -CREATURE:MANERA:PANCREAS -CREATURE:MANERA:SPLEEN -CREATURE:MANERA:KIDNEY -CREATURE:MOLEMARIAN:MUSCLE -CREATURE:MOLEMARIAN:EYE -CREATURE:MOLEMARIAN:BRAIN -CREATURE:MOLEMARIAN:LUNG -CREATURE:MOLEMARIAN:HEART -CREATURE:MOLEMARIAN:LIVER -CREATURE:MOLEMARIAN:GUT -CREATURE:MOLEMARIAN:STOMACH -CREATURE:MOLEMARIAN:GIZZARD -CREATURE:MOLEMARIAN:PANCREAS -CREATURE:MOLEMARIAN:SPLEEN -CREATURE:MOLEMARIAN:KIDNEY -CREATURE:JABBERER:MUSCLE -CREATURE:JABBERER:EYE -CREATURE:JABBERER:BRAIN -CREATURE:JABBERER:LUNG -CREATURE:JABBERER:HEART -CREATURE:JABBERER:LIVER -CREATURE:JABBERER:GUT -CREATURE:JABBERER:STOMACH -CREATURE:JABBERER:GIZZARD -CREATURE:JABBERER:PANCREAS -CREATURE:JABBERER:SPLEEN -CREATURE:JABBERER:KIDNEY -CREATURE:POND_GRABBER:MUSCLE -CREATURE:POND_GRABBER:EYE -CREATURE:POND_GRABBER:BRAIN -CREATURE:POND_GRABBER:LUNG -CREATURE:POND_GRABBER:HEART -CREATURE:POND_GRABBER:LIVER -CREATURE:POND_GRABBER:GUT -CREATURE:POND_GRABBER:STOMACH -CREATURE:POND_GRABBER:GIZZARD -CREATURE:POND_GRABBER:PANCREAS -CREATURE:POND_GRABBER:SPLEEN -CREATURE:POND_GRABBER:KIDNEY -CREATURE:BLIND_CAVE_BEAR:MUSCLE -CREATURE:BLIND_CAVE_BEAR:EYE -CREATURE:BLIND_CAVE_BEAR:BRAIN -CREATURE:BLIND_CAVE_BEAR:LUNG -CREATURE:BLIND_CAVE_BEAR:HEART -CREATURE:BLIND_CAVE_BEAR:LIVER -CREATURE:BLIND_CAVE_BEAR:GUT - CREATURE:BLIND_CAVE_BEAR:STOMACH - CREATURE:BLIND_CAVE_BEAR:GIZZARD -!CREATURE:BLIND_CAVE_BEAR:PANCREAS -CREATURE:BLIND_CAVE_BEAR:SPLEEN -CREATURE:BLIND_CAVE_BEAR:KIDNEY -CREATURE:CAVE_DRAGON:MUSCLE -CREATURE:CAVE_DRAGON:EYE -CREATURE:CAVE_DRAGON:BRAIN -CREATURE:CAVE_DRAGON:LUNG -CREATURE:CAVE_DRAGON:HEART -CREATURE:CAVE_DRAGON:LIVER -CREATURE:CAVE_DRAGON:GUT -CREATURE:CAVE_DRAGON:STOMACH -CREATURE:CAVE_DRAGON:GIZZARD -CREATURE:CAVE_DRAGON:PANCREAS -CREATURE:CAVE_DRAGON:SPLEEN -CREATURE:CAVE_DRAGON:KIDNEY -CREATURE:REACHER:MUSCLE -CREATURE:REACHER:EYE -CREATURE:REACHER:BRAIN -CREATURE:REACHER:LUNG -CREATURE:REACHER:HEART -CREATURE:REACHER:LIVER -CREATURE:REACHER:GUT -CREATURE:REACHER:STOMACH -CREATURE:REACHER:GIZZARD -CREATURE:REACHER:PANCREAS -CREATURE:REACHER:SPLEEN -CREATURE:REACHER:KIDNEY -CREATURE:GORLAK:MUSCLE -CREATURE:GORLAK:EYE -CREATURE:GORLAK:BRAIN -CREATURE:GORLAK:LUNG -CREATURE:GORLAK:HEART -CREATURE:GORLAK:LIVER -CREATURE:GORLAK:GUT -CREATURE:GORLAK:STOMACH -CREATURE:GORLAK:GIZZARD -CREATURE:GORLAK:PANCREAS -CREATURE:GORLAK:SPLEEN -CREATURE:GORLAK:KIDNEY -CREATURE:OCTOPUS:MUSCLE -CREATURE:OCTOPUS:EYE -CREATURE:OCTOPUS:BRAIN -CREATURE:OCTOPUS:LUNG -CREATURE:OCTOPUS:HEART -CREATURE:OCTOPUS:LIVER -CREATURE:OCTOPUS:GUT -CREATURE:OCTOPUS:STOMACH -CREATURE:OCTOPUS:GIZZARD -CREATURE:OCTOPUS:PANCREAS -CREATURE:OCTOPUS:SPLEEN -CREATURE:OCTOPUS:KIDNEY -CREATURE:OCTOPUS_MAN:MUSCLE -CREATURE:OCTOPUS_MAN:EYE -CREATURE:OCTOPUS_MAN:BRAIN -CREATURE:OCTOPUS_MAN:LUNG -CREATURE:OCTOPUS_MAN:HEART -CREATURE:OCTOPUS_MAN:LIVER -CREATURE:OCTOPUS_MAN:GUT -CREATURE:OCTOPUS_MAN:STOMACH -CREATURE:OCTOPUS_MAN:GIZZARD -CREATURE:OCTOPUS_MAN:PANCREAS -CREATURE:OCTOPUS_MAN:SPLEEN -CREATURE:OCTOPUS_MAN:KIDNEY -CREATURE:GIANT_OCTOPUS:MUSCLE -CREATURE:GIANT_OCTOPUS:EYE -CREATURE:GIANT_OCTOPUS:BRAIN -CREATURE:GIANT_OCTOPUS:LUNG -CREATURE:GIANT_OCTOPUS:HEART -CREATURE:GIANT_OCTOPUS:LIVER -CREATURE:GIANT_OCTOPUS:GUT -CREATURE:GIANT_OCTOPUS:STOMACH -CREATURE:GIANT_OCTOPUS:GIZZARD -CREATURE:GIANT_OCTOPUS:PANCREAS -CREATURE:GIANT_OCTOPUS:SPLEEN -CREATURE:GIANT_OCTOPUS:KIDNEY -CREATURE:CRAB:MUSCLE -CREATURE:CRAB:EYE -CREATURE:CRAB:BRAIN -CREATURE:CRAB:LUNG -CREATURE:CRAB:HEART -CREATURE:CRAB:LIVER -CREATURE:CRAB:GUT -CREATURE:CRAB:STOMACH -CREATURE:CRAB:GIZZARD -CREATURE:CRAB:PANCREAS -CREATURE:CRAB:SPLEEN -CREATURE:CRAB:KIDNEY -CREATURE:CRAB_MAN:MUSCLE -CREATURE:CRAB_MAN:EYE -CREATURE:CRAB_MAN:BRAIN -CREATURE:CRAB_MAN:LUNG -CREATURE:CRAB_MAN:HEART -CREATURE:CRAB_MAN:LIVER -CREATURE:CRAB_MAN:GUT -CREATURE:CRAB_MAN:STOMACH -CREATURE:CRAB_MAN:GIZZARD -CREATURE:CRAB_MAN:PANCREAS -CREATURE:CRAB_MAN:SPLEEN -CREATURE:CRAB_MAN:KIDNEY -CREATURE:GIANT_CRAB:MUSCLE -CREATURE:GIANT_CRAB:EYE -CREATURE:GIANT_CRAB:BRAIN -CREATURE:GIANT_CRAB:LUNG -CREATURE:GIANT_CRAB:HEART -CREATURE:GIANT_CRAB:LIVER -CREATURE:GIANT_CRAB:GUT -CREATURE:GIANT_CRAB:STOMACH -CREATURE:GIANT_CRAB:GIZZARD -CREATURE:GIANT_CRAB:PANCREAS -CREATURE:GIANT_CRAB:SPLEEN -CREATURE:GIANT_CRAB:KIDNEY -CREATURE:LEOPARD_SEAL:MUSCLE -CREATURE:LEOPARD_SEAL:EYE -CREATURE:LEOPARD_SEAL:BRAIN -CREATURE:LEOPARD_SEAL:LUNG -CREATURE:LEOPARD_SEAL:HEART -CREATURE:LEOPARD_SEAL:LIVER -CREATURE:LEOPARD_SEAL:GUT -CREATURE:LEOPARD_SEAL:STOMACH -CREATURE:LEOPARD_SEAL:GIZZARD -CREATURE:LEOPARD_SEAL:PANCREAS -CREATURE:LEOPARD_SEAL:SPLEEN -CREATURE:LEOPARD_SEAL:KIDNEY - CREATURE:LEOPARD_SEAL_MAN:MUSCLE -CREATURE:LEOPARD_SEAL_MAN:EYE -CREATURE:LEOPARD_SEAL_MAN:BRAIN -CREATURE:LEOPARD_SEAL_MAN:LUNG -CREATURE:LEOPARD_SEAL_MAN:HEART -CREATURE:LEOPARD_SEAL_MAN:LIVER -CREATURE:LEOPARD_SEAL_MAN:GUT -!CREATURE:LEOPARD_SEAL_MAN:STOMACH -!CREATURE:LEOPARD_SEAL_MAN:GIZZARD -"CREATURE:LEOPARD_SEAL_MAN:PANCREAS - CREATURE:LEOPARD_SEAL_MAN:SPLEEN - CREATURE:LEOPARD_SEAL_MAN:KIDNEY -"CREATURE:GIANT_LEOPARD_SEAL:MUSCLE -CREATURE:GIANT_LEOPARD_SEAL:EYE -!CREATURE:GIANT_LEOPARD_SEAL:BRAIN - CREATURE:GIANT_LEOPARD_SEAL:LUNG -!CREATURE:GIANT_LEOPARD_SEAL:HEART -!CREATURE:GIANT_LEOPARD_SEAL:LIVER -CREATURE:GIANT_LEOPARD_SEAL:GUT -#CREATURE:GIANT_LEOPARD_SEAL:STOMACH -#CREATURE:GIANT_LEOPARD_SEAL:GIZZARD -$CREATURE:GIANT_LEOPARD_SEAL:PANCREAS -"CREATURE:GIANT_LEOPARD_SEAL:SPLEEN -"CREATURE:GIANT_LEOPARD_SEAL:KIDNEY -CREATURE:CUTTLEFISH:MUSCLE -CREATURE:CUTTLEFISH:EYE -CREATURE:CUTTLEFISH:BRAIN -CREATURE:CUTTLEFISH:LUNG -CREATURE:CUTTLEFISH:HEART -CREATURE:CUTTLEFISH:LIVER -CREATURE:CUTTLEFISH:GUT -CREATURE:CUTTLEFISH:STOMACH -CREATURE:CUTTLEFISH:GIZZARD -CREATURE:CUTTLEFISH:PANCREAS -CREATURE:CUTTLEFISH:SPLEEN -CREATURE:CUTTLEFISH:KIDNEY -CREATURE:CUTTLEFISH_MAN:MUSCLE -CREATURE:CUTTLEFISH_MAN:EYE -CREATURE:CUTTLEFISH_MAN:BRAIN -CREATURE:CUTTLEFISH_MAN:LUNG -CREATURE:CUTTLEFISH_MAN:HEART -CREATURE:CUTTLEFISH_MAN:LIVER -CREATURE:CUTTLEFISH_MAN:GUT -CREATURE:CUTTLEFISH_MAN:STOMACH -CREATURE:CUTTLEFISH_MAN:GIZZARD - CREATURE:CUTTLEFISH_MAN:PANCREAS -CREATURE:CUTTLEFISH_MAN:SPLEEN -CREATURE:CUTTLEFISH_MAN:KIDNEY - CREATURE:GIANT_CUTTLEFISH:MUSCLE -CREATURE:GIANT_CUTTLEFISH:EYE -CREATURE:GIANT_CUTTLEFISH:BRAIN -CREATURE:GIANT_CUTTLEFISH:LUNG -CREATURE:GIANT_CUTTLEFISH:HEART -CREATURE:GIANT_CUTTLEFISH:LIVER -CREATURE:GIANT_CUTTLEFISH:GUT -!CREATURE:GIANT_CUTTLEFISH:STOMACH -!CREATURE:GIANT_CUTTLEFISH:GIZZARD -"CREATURE:GIANT_CUTTLEFISH:PANCREAS - CREATURE:GIANT_CUTTLEFISH:SPLEEN - CREATURE:GIANT_CUTTLEFISH:KIDNEY -CREATURE:ORCA:MUSCLE -CREATURE:ORCA:EYE -CREATURE:ORCA:BRAIN -CREATURE:ORCA:LUNG -CREATURE:ORCA:HEART -CREATURE:ORCA:LIVER -CREATURE:ORCA:GUT -CREATURE:ORCA:STOMACH -CREATURE:ORCA:GIZZARD -CREATURE:ORCA:PANCREAS -CREATURE:ORCA:SPLEEN -CREATURE:ORCA:KIDNEY -CREATURE:ORCA_MAN:MUSCLE -CREATURE:ORCA_MAN:EYE -CREATURE:ORCA_MAN:BRAIN -CREATURE:ORCA_MAN:LUNG -CREATURE:ORCA_MAN:HEART -CREATURE:ORCA_MAN:LIVER -CREATURE:ORCA_MAN:GUT -CREATURE:ORCA_MAN:STOMACH -CREATURE:ORCA_MAN:GIZZARD -CREATURE:ORCA_MAN:PANCREAS -CREATURE:ORCA_MAN:SPLEEN -CREATURE:ORCA_MAN:KIDNEY -CREATURE:GIANT_ORCA:MUSCLE -CREATURE:GIANT_ORCA:EYE -CREATURE:GIANT_ORCA:BRAIN -CREATURE:GIANT_ORCA:LUNG -CREATURE:GIANT_ORCA:HEART -CREATURE:GIANT_ORCA:LIVER -CREATURE:GIANT_ORCA:GUT -CREATURE:GIANT_ORCA:STOMACH -CREATURE:GIANT_ORCA:GIZZARD -CREATURE:GIANT_ORCA:PANCREAS -CREATURE:GIANT_ORCA:SPLEEN -CREATURE:GIANT_ORCA:KIDNEY -CREATURE:HORSESHOE_CRAB:MUSCLE -CREATURE:HORSESHOE_CRAB:EYE -CREATURE:HORSESHOE_CRAB:BRAIN -CREATURE:HORSESHOE_CRAB:LUNG -CREATURE:HORSESHOE_CRAB:HEART -CREATURE:HORSESHOE_CRAB:LIVER -CREATURE:HORSESHOE_CRAB:GUT -CREATURE:HORSESHOE_CRAB:STOMACH -CREATURE:HORSESHOE_CRAB:GIZZARD - CREATURE:HORSESHOE_CRAB:PANCREAS -CREATURE:HORSESHOE_CRAB:SPLEEN -CREATURE:HORSESHOE_CRAB:KIDNEY -"CREATURE:HORSESHOE_CRAB_MAN:MUSCLE -CREATURE:HORSESHOE_CRAB_MAN:EYE -!CREATURE:HORSESHOE_CRAB_MAN:BRAIN - CREATURE:HORSESHOE_CRAB_MAN:LUNG -!CREATURE:HORSESHOE_CRAB_MAN:HEART -!CREATURE:HORSESHOE_CRAB_MAN:LIVER -CREATURE:HORSESHOE_CRAB_MAN:GUT -#CREATURE:HORSESHOE_CRAB_MAN:STOMACH -#CREATURE:HORSESHOE_CRAB_MAN:GIZZARD -$CREATURE:HORSESHOE_CRAB_MAN:PANCREAS -"CREATURE:HORSESHOE_CRAB_MAN:SPLEEN -"CREATURE:HORSESHOE_CRAB_MAN:KIDNEY -$CREATURE:GIANT_HORSESHOE_CRAB:MUSCLE -!CREATURE:GIANT_HORSESHOE_CRAB:EYE -#CREATURE:GIANT_HORSESHOE_CRAB:BRAIN -"CREATURE:GIANT_HORSESHOE_CRAB:LUNG -#CREATURE:GIANT_HORSESHOE_CRAB:HEART -#CREATURE:GIANT_HORSESHOE_CRAB:LIVER -!CREATURE:GIANT_HORSESHOE_CRAB:GUT -%CREATURE:GIANT_HORSESHOE_CRAB:STOMACH -%CREATURE:GIANT_HORSESHOE_CRAB:GIZZARD -&CREATURE:GIANT_HORSESHOE_CRAB:PANCREAS -$CREATURE:GIANT_HORSESHOE_CRAB:SPLEEN -$CREATURE:GIANT_HORSESHOE_CRAB:KIDNEY -CREATURE:SPERM_WHALE:MUSCLE -CREATURE:SPERM_WHALE:EYE -CREATURE:SPERM_WHALE:BRAIN -CREATURE:SPERM_WHALE:LUNG -CREATURE:SPERM_WHALE:HEART -CREATURE:SPERM_WHALE:LIVER -CREATURE:SPERM_WHALE:GUT -CREATURE:SPERM_WHALE:STOMACH -CREATURE:SPERM_WHALE:GIZZARD -CREATURE:SPERM_WHALE:PANCREAS -CREATURE:SPERM_WHALE:SPLEEN -CREATURE:SPERM_WHALE:KIDNEY -CREATURE:SPERM_WHALE_MAN:MUSCLE -CREATURE:SPERM_WHALE_MAN:EYE -CREATURE:SPERM_WHALE_MAN:BRAIN -CREATURE:SPERM_WHALE_MAN:LUNG -CREATURE:SPERM_WHALE_MAN:HEART -CREATURE:SPERM_WHALE_MAN:LIVER -CREATURE:SPERM_WHALE_MAN:GUT - CREATURE:SPERM_WHALE_MAN:STOMACH - CREATURE:SPERM_WHALE_MAN:GIZZARD -!CREATURE:SPERM_WHALE_MAN:PANCREAS -CREATURE:SPERM_WHALE_MAN:SPLEEN -CREATURE:SPERM_WHALE_MAN:KIDNEY -!CREATURE:GIANT_SPERM_WHALE:MUSCLE -CREATURE:GIANT_SPERM_WHALE:EYE - CREATURE:GIANT_SPERM_WHALE:BRAIN -CREATURE:GIANT_SPERM_WHALE:LUNG - CREATURE:GIANT_SPERM_WHALE:HEART - CREATURE:GIANT_SPERM_WHALE:LIVER -CREATURE:GIANT_SPERM_WHALE:GUT -"CREATURE:GIANT_SPERM_WHALE:STOMACH -"CREATURE:GIANT_SPERM_WHALE:GIZZARD -#CREATURE:GIANT_SPERM_WHALE:PANCREAS -!CREATURE:GIANT_SPERM_WHALE:SPLEEN -!CREATURE:GIANT_SPERM_WHALE:KIDNEY -CREATURE:ELEPHANT_SEAL:MUSCLE -CREATURE:ELEPHANT_SEAL:EYE -CREATURE:ELEPHANT_SEAL:BRAIN -CREATURE:ELEPHANT_SEAL:LUNG -CREATURE:ELEPHANT_SEAL:HEART -CREATURE:ELEPHANT_SEAL:LIVER -CREATURE:ELEPHANT_SEAL:GUT -CREATURE:ELEPHANT_SEAL:STOMACH -CREATURE:ELEPHANT_SEAL:GIZZARD -CREATURE:ELEPHANT_SEAL:PANCREAS -CREATURE:ELEPHANT_SEAL:SPLEEN -CREATURE:ELEPHANT_SEAL:KIDNEY -!CREATURE:ELEPHANT_SEAL_MAN:MUSCLE -CREATURE:ELEPHANT_SEAL_MAN:EYE - CREATURE:ELEPHANT_SEAL_MAN:BRAIN -CREATURE:ELEPHANT_SEAL_MAN:LUNG - CREATURE:ELEPHANT_SEAL_MAN:HEART - CREATURE:ELEPHANT_SEAL_MAN:LIVER -CREATURE:ELEPHANT_SEAL_MAN:GUT -"CREATURE:ELEPHANT_SEAL_MAN:STOMACH -"CREATURE:ELEPHANT_SEAL_MAN:GIZZARD -#CREATURE:ELEPHANT_SEAL_MAN:PANCREAS -!CREATURE:ELEPHANT_SEAL_MAN:SPLEEN -!CREATURE:ELEPHANT_SEAL_MAN:KIDNEY -#CREATURE:GIANT_ELEPHANT_SEAL:MUSCLE - CREATURE:GIANT_ELEPHANT_SEAL:EYE -"CREATURE:GIANT_ELEPHANT_SEAL:BRAIN -!CREATURE:GIANT_ELEPHANT_SEAL:LUNG -"CREATURE:GIANT_ELEPHANT_SEAL:HEART -"CREATURE:GIANT_ELEPHANT_SEAL:LIVER - CREATURE:GIANT_ELEPHANT_SEAL:GUT -$CREATURE:GIANT_ELEPHANT_SEAL:STOMACH -$CREATURE:GIANT_ELEPHANT_SEAL:GIZZARD -%CREATURE:GIANT_ELEPHANT_SEAL:PANCREAS -#CREATURE:GIANT_ELEPHANT_SEAL:SPLEEN -#CREATURE:GIANT_ELEPHANT_SEAL:KIDNEY -CREATURE:HARP_SEAL:MUSCLE -CREATURE:HARP_SEAL:EYE -CREATURE:HARP_SEAL:BRAIN -CREATURE:HARP_SEAL:LUNG -CREATURE:HARP_SEAL:HEART -CREATURE:HARP_SEAL:LIVER -CREATURE:HARP_SEAL:GUT -CREATURE:HARP_SEAL:STOMACH -CREATURE:HARP_SEAL:GIZZARD -CREATURE:HARP_SEAL:PANCREAS -CREATURE:HARP_SEAL:SPLEEN -CREATURE:HARP_SEAL:KIDNEY -CREATURE:HARP_SEAL_MAN:MUSCLE -CREATURE:HARP_SEAL_MAN:EYE -CREATURE:HARP_SEAL_MAN:BRAIN -CREATURE:HARP_SEAL_MAN:LUNG -CREATURE:HARP_SEAL_MAN:HEART -CREATURE:HARP_SEAL_MAN:LIVER -CREATURE:HARP_SEAL_MAN:GUT -CREATURE:HARP_SEAL_MAN:STOMACH -CREATURE:HARP_SEAL_MAN:GIZZARD -CREATURE:HARP_SEAL_MAN:PANCREAS -CREATURE:HARP_SEAL_MAN:SPLEEN -CREATURE:HARP_SEAL_MAN:KIDNEY -CREATURE:GIANT_HARP_SEAL:MUSCLE -CREATURE:GIANT_HARP_SEAL:EYE -CREATURE:GIANT_HARP_SEAL:BRAIN -CREATURE:GIANT_HARP_SEAL:LUNG -CREATURE:GIANT_HARP_SEAL:HEART -CREATURE:GIANT_HARP_SEAL:LIVER -CREATURE:GIANT_HARP_SEAL:GUT - CREATURE:GIANT_HARP_SEAL:STOMACH - CREATURE:GIANT_HARP_SEAL:GIZZARD -!CREATURE:GIANT_HARP_SEAL:PANCREAS -CREATURE:GIANT_HARP_SEAL:SPLEEN -CREATURE:GIANT_HARP_SEAL:KIDNEY -CREATURE:NAUTILUS:MUSCLE -CREATURE:NAUTILUS:EYE -CREATURE:NAUTILUS:BRAIN -CREATURE:NAUTILUS:LUNG -CREATURE:NAUTILUS:HEART -CREATURE:NAUTILUS:LIVER -CREATURE:NAUTILUS:GUT -CREATURE:NAUTILUS:STOMACH -CREATURE:NAUTILUS:GIZZARD -CREATURE:NAUTILUS:PANCREAS -CREATURE:NAUTILUS:SPLEEN -CREATURE:NAUTILUS:KIDNEY -CREATURE:NAUTILUS_MAN:MUSCLE -CREATURE:NAUTILUS_MAN:EYE -CREATURE:NAUTILUS_MAN:BRAIN -CREATURE:NAUTILUS_MAN:LUNG -CREATURE:NAUTILUS_MAN:HEART -CREATURE:NAUTILUS_MAN:LIVER -CREATURE:NAUTILUS_MAN:GUT -CREATURE:NAUTILUS_MAN:STOMACH -CREATURE:NAUTILUS_MAN:GIZZARD -CREATURE:NAUTILUS_MAN:PANCREAS -CREATURE:NAUTILUS_MAN:SPLEEN -CREATURE:NAUTILUS_MAN:KIDNEY -CREATURE:GIANT_NAUTILUS:MUSCLE -CREATURE:GIANT_NAUTILUS:EYE -CREATURE:GIANT_NAUTILUS:BRAIN -CREATURE:GIANT_NAUTILUS:LUNG -CREATURE:GIANT_NAUTILUS:HEART -CREATURE:GIANT_NAUTILUS:LIVER -CREATURE:GIANT_NAUTILUS:GUT -CREATURE:GIANT_NAUTILUS:STOMACH -CREATURE:GIANT_NAUTILUS:GIZZARD - CREATURE:GIANT_NAUTILUS:PANCREAS -CREATURE:GIANT_NAUTILUS:SPLEEN -CREATURE:GIANT_NAUTILUS:KIDNEY -CREATURE:FOXSQUIRREL:MUSCLE -CREATURE:FOXSQUIRREL:EYE -CREATURE:FOXSQUIRREL:BRAIN -CREATURE:FOXSQUIRREL:LUNG -CREATURE:FOXSQUIRREL:HEART -CREATURE:FOXSQUIRREL:LIVER -CREATURE:FOXSQUIRREL:GUT -CREATURE:FOXSQUIRREL:STOMACH -CREATURE:FOXSQUIRREL:GIZZARD -CREATURE:FOXSQUIRREL:PANCREAS -CREATURE:FOXSQUIRREL:SPLEEN -CREATURE:FOXSQUIRREL:KIDNEY -CREATURE:MOGHOPPER:MUSCLE -CREATURE:MOGHOPPER:EYE -CREATURE:MOGHOPPER:BRAIN -CREATURE:MOGHOPPER:LUNG -CREATURE:MOGHOPPER:HEART -CREATURE:MOGHOPPER:LIVER -CREATURE:MOGHOPPER:GUT -CREATURE:MOGHOPPER:STOMACH -CREATURE:MOGHOPPER:GIZZARD -CREATURE:MOGHOPPER:PANCREAS -CREATURE:MOGHOPPER:SPLEEN -CREATURE:MOGHOPPER:KIDNEY -CREATURE:RAT_DEMON:MUSCLE -CREATURE:RAT_DEMON:EYE -CREATURE:RAT_DEMON:BRAIN -CREATURE:RAT_DEMON:LUNG -CREATURE:RAT_DEMON:HEART -CREATURE:RAT_DEMON:LIVER -CREATURE:RAT_DEMON:GUT -CREATURE:RAT_DEMON:STOMACH -CREATURE:RAT_DEMON:GIZZARD -CREATURE:RAT_DEMON:PANCREAS -CREATURE:RAT_DEMON:SPLEEN -CREATURE:RAT_DEMON:KIDNEY -CREATURE:WAMBLER_FLUFFY:EYE -'CREATURE:LIZARD_RHINO_TWO_LEGGED:MUSCLE -$CREATURE:LIZARD_RHINO_TWO_LEGGED:EYE -&CREATURE:LIZARD_RHINO_TWO_LEGGED:BRAIN -%CREATURE:LIZARD_RHINO_TWO_LEGGED:LUNG -&CREATURE:LIZARD_RHINO_TWO_LEGGED:HEART -&CREATURE:LIZARD_RHINO_TWO_LEGGED:LIVER -$CREATURE:LIZARD_RHINO_TWO_LEGGED:GUT -(CREATURE:LIZARD_RHINO_TWO_LEGGED:STOMACH -(CREATURE:LIZARD_RHINO_TWO_LEGGED:GIZZARD -)CREATURE:LIZARD_RHINO_TWO_LEGGED:PANCREAS -'CREATURE:LIZARD_RHINO_TWO_LEGGED:SPLEEN -'CREATURE:LIZARD_RHINO_TWO_LEGGED:KIDNEY -CREATURE:WORM_KNUCKLE:MUSCLE -CREATURE:WORM_KNUCKLE:EYE -CREATURE:WORM_KNUCKLE:BRAIN -CREATURE:WORM_KNUCKLE:LUNG -CREATURE:WORM_KNUCKLE:HEART -CREATURE:WORM_KNUCKLE:LIVER -CREATURE:WORM_KNUCKLE:GUT -CREATURE:WORM_KNUCKLE:STOMACH -CREATURE:WORM_KNUCKLE:GIZZARD -CREATURE:WORM_KNUCKLE:PANCREAS -CREATURE:WORM_KNUCKLE:SPLEEN -CREATURE:WORM_KNUCKLE:KIDNEY -CREATURE:SPIDER_PHANTOM:MUSCLE -CREATURE:SPIDER_PHANTOM:EYE -CREATURE:SPIDER_PHANTOM:BRAIN -CREATURE:SPIDER_PHANTOM:LUNG -CREATURE:SPIDER_PHANTOM:HEART -CREATURE:SPIDER_PHANTOM:LIVER -CREATURE:SPIDER_PHANTOM:GUT -CREATURE:SPIDER_PHANTOM:STOMACH -CREATURE:SPIDER_PHANTOM:GIZZARD - CREATURE:SPIDER_PHANTOM:PANCREAS -CREATURE:SPIDER_PHANTOM:SPLEEN -CREATURE:SPIDER_PHANTOM:KIDNEY -CREATURE:FLY_ACORN:MUSCLE -CREATURE:FLY_ACORN:EYE -CREATURE:FLY_ACORN:BRAIN -CREATURE:FLY_ACORN:LUNG -CREATURE:FLY_ACORN:HEART -CREATURE:FLY_ACORN:LIVER -CREATURE:FLY_ACORN:GUT -CREATURE:FLY_ACORN:STOMACH -CREATURE:FLY_ACORN:GIZZARD -CREATURE:FLY_ACORN:PANCREAS -CREATURE:FLY_ACORN:SPLEEN -CREATURE:FLY_ACORN:KIDNEY -CREATURE:GNAT_BLOOD:MUSCLE -CREATURE:GNAT_BLOOD:EYE -CREATURE:GNAT_BLOOD:BRAIN -CREATURE:GNAT_BLOOD:LUNG -CREATURE:GNAT_BLOOD:HEART -CREATURE:GNAT_BLOOD:LIVER -CREATURE:GNAT_BLOOD:GUT -CREATURE:GNAT_BLOOD:STOMACH -CREATURE:GNAT_BLOOD:GIZZARD -CREATURE:GNAT_BLOOD:PANCREAS -CREATURE:GNAT_BLOOD:SPLEEN -CREATURE:GNAT_BLOOD:KIDNEY -CREATURE:LIZARD:MUSCLE -CREATURE:LIZARD:EYE -CREATURE:LIZARD:BRAIN -CREATURE:LIZARD:LUNG -CREATURE:LIZARD:HEART -CREATURE:LIZARD:LIVER -CREATURE:LIZARD:GUT -CREATURE:LIZARD:STOMACH -CREATURE:LIZARD:GIZZARD -CREATURE:LIZARD:PANCREAS -CREATURE:LIZARD:SPLEEN -CREATURE:LIZARD:KIDNEY -CREATURE:LIZARD_MAN:MUSCLE -CREATURE:LIZARD_MAN:EYE -CREATURE:LIZARD_MAN:BRAIN -CREATURE:LIZARD_MAN:LUNG -CREATURE:LIZARD_MAN:HEART -CREATURE:LIZARD_MAN:LIVER -CREATURE:LIZARD_MAN:GUT -CREATURE:LIZARD_MAN:STOMACH -CREATURE:LIZARD_MAN:GIZZARD -CREATURE:LIZARD_MAN:PANCREAS -CREATURE:LIZARD_MAN:SPLEEN -CREATURE:LIZARD_MAN:KIDNEY -CREATURE:GIANT_LIZARD:MUSCLE -CREATURE:GIANT_LIZARD:EYE -CREATURE:GIANT_LIZARD:BRAIN -CREATURE:GIANT_LIZARD:LUNG -CREATURE:GIANT_LIZARD:HEART -CREATURE:GIANT_LIZARD:LIVER -CREATURE:GIANT_LIZARD:GUT -CREATURE:GIANT_LIZARD:STOMACH -CREATURE:GIANT_LIZARD:GIZZARD -CREATURE:GIANT_LIZARD:PANCREAS -CREATURE:GIANT_LIZARD:SPLEEN -CREATURE:GIANT_LIZARD:KIDNEY -CREATURE:SKINK:MUSCLE -CREATURE:SKINK:EYE -CREATURE:SKINK:BRAIN -CREATURE:SKINK:LUNG -CREATURE:SKINK:HEART -CREATURE:SKINK:LIVER -CREATURE:SKINK:GUT -CREATURE:SKINK:STOMACH -CREATURE:SKINK:GIZZARD -CREATURE:SKINK:PANCREAS -CREATURE:SKINK:SPLEEN -CREATURE:SKINK:KIDNEY -CREATURE:SKINK_MAN:MUSCLE -CREATURE:SKINK_MAN:EYE -CREATURE:SKINK_MAN:BRAIN -CREATURE:SKINK_MAN:LUNG -CREATURE:SKINK_MAN:HEART -CREATURE:SKINK_MAN:LIVER -CREATURE:SKINK_MAN:GUT -CREATURE:SKINK_MAN:STOMACH -CREATURE:SKINK_MAN:GIZZARD -CREATURE:SKINK_MAN:PANCREAS -CREATURE:SKINK_MAN:SPLEEN -CREATURE:SKINK_MAN:KIDNEY -CREATURE:GIANT_SKINK:MUSCLE -CREATURE:GIANT_SKINK:EYE -CREATURE:GIANT_SKINK:BRAIN -CREATURE:GIANT_SKINK:LUNG -CREATURE:GIANT_SKINK:HEART -CREATURE:GIANT_SKINK:LIVER -CREATURE:GIANT_SKINK:GUT -CREATURE:GIANT_SKINK:STOMACH -CREATURE:GIANT_SKINK:GIZZARD -CREATURE:GIANT_SKINK:PANCREAS -CREATURE:GIANT_SKINK:SPLEEN -CREATURE:GIANT_SKINK:KIDNEY -CREATURE:CHAMELEON:MUSCLE -CREATURE:CHAMELEON:EYE -CREATURE:CHAMELEON:BRAIN -CREATURE:CHAMELEON:LUNG -CREATURE:CHAMELEON:HEART -CREATURE:CHAMELEON:LIVER -CREATURE:CHAMELEON:GUT -CREATURE:CHAMELEON:STOMACH -CREATURE:CHAMELEON:GIZZARD -CREATURE:CHAMELEON:PANCREAS -CREATURE:CHAMELEON:SPLEEN -CREATURE:CHAMELEON:KIDNEY -CREATURE:CHAMELEON_MAN:MUSCLE -CREATURE:CHAMELEON_MAN:EYE -CREATURE:CHAMELEON_MAN:BRAIN -CREATURE:CHAMELEON_MAN:LUNG -CREATURE:CHAMELEON_MAN:HEART -CREATURE:CHAMELEON_MAN:LIVER -CREATURE:CHAMELEON_MAN:GUT -CREATURE:CHAMELEON_MAN:STOMACH -CREATURE:CHAMELEON_MAN:GIZZARD -CREATURE:CHAMELEON_MAN:PANCREAS -CREATURE:CHAMELEON_MAN:SPLEEN -CREATURE:CHAMELEON_MAN:KIDNEY -CREATURE:GIANT_CHAMELEON:MUSCLE -CREATURE:GIANT_CHAMELEON:EYE -CREATURE:GIANT_CHAMELEON:BRAIN -CREATURE:GIANT_CHAMELEON:LUNG -CREATURE:GIANT_CHAMELEON:HEART -CREATURE:GIANT_CHAMELEON:LIVER -CREATURE:GIANT_CHAMELEON:GUT - CREATURE:GIANT_CHAMELEON:STOMACH - CREATURE:GIANT_CHAMELEON:GIZZARD -!CREATURE:GIANT_CHAMELEON:PANCREAS -CREATURE:GIANT_CHAMELEON:SPLEEN -CREATURE:GIANT_CHAMELEON:KIDNEY -CREATURE:ANOLE:MUSCLE -CREATURE:ANOLE:EYE -CREATURE:ANOLE:BRAIN -CREATURE:ANOLE:LUNG -CREATURE:ANOLE:HEART -CREATURE:ANOLE:LIVER -CREATURE:ANOLE:GUT -CREATURE:ANOLE:STOMACH -CREATURE:ANOLE:GIZZARD -CREATURE:ANOLE:PANCREAS -CREATURE:ANOLE:SPLEEN -CREATURE:ANOLE:KIDNEY -CREATURE:ANOLE_MAN:MUSCLE -CREATURE:ANOLE_MAN:EYE -CREATURE:ANOLE_MAN:BRAIN -CREATURE:ANOLE_MAN:LUNG -CREATURE:ANOLE_MAN:HEART -CREATURE:ANOLE_MAN:LIVER -CREATURE:ANOLE_MAN:GUT -CREATURE:ANOLE_MAN:STOMACH -CREATURE:ANOLE_MAN:GIZZARD -CREATURE:ANOLE_MAN:PANCREAS -CREATURE:ANOLE_MAN:SPLEEN -CREATURE:ANOLE_MAN:KIDNEY -CREATURE:GIANT_ANOLE:MUSCLE -CREATURE:GIANT_ANOLE:EYE -CREATURE:GIANT_ANOLE:BRAIN -CREATURE:GIANT_ANOLE:LUNG -CREATURE:GIANT_ANOLE:HEART -CREATURE:GIANT_ANOLE:LIVER -CREATURE:GIANT_ANOLE:GUT -CREATURE:GIANT_ANOLE:STOMACH -CREATURE:GIANT_ANOLE:GIZZARD -CREATURE:GIANT_ANOLE:PANCREAS -CREATURE:GIANT_ANOLE:SPLEEN -CREATURE:GIANT_ANOLE:KIDNEY -CREATURE:IGUANA:MUSCLE -CREATURE:IGUANA:EYE -CREATURE:IGUANA:BRAIN -CREATURE:IGUANA:LUNG -CREATURE:IGUANA:HEART -CREATURE:IGUANA:LIVER -CREATURE:IGUANA:GUT -CREATURE:IGUANA:STOMACH -CREATURE:IGUANA:GIZZARD -CREATURE:IGUANA:PANCREAS -CREATURE:IGUANA:SPLEEN -CREATURE:IGUANA:KIDNEY -CREATURE:IGUANA_MAN:MUSCLE -CREATURE:IGUANA_MAN:EYE -CREATURE:IGUANA_MAN:BRAIN -CREATURE:IGUANA_MAN:LUNG -CREATURE:IGUANA_MAN:HEART -CREATURE:IGUANA_MAN:LIVER -CREATURE:IGUANA_MAN:GUT -CREATURE:IGUANA_MAN:STOMACH -CREATURE:IGUANA_MAN:GIZZARD -CREATURE:IGUANA_MAN:PANCREAS -CREATURE:IGUANA_MAN:SPLEEN -CREATURE:IGUANA_MAN:KIDNEY -CREATURE:GIANT_IGUANA:MUSCLE -CREATURE:GIANT_IGUANA:EYE -CREATURE:GIANT_IGUANA:BRAIN -CREATURE:GIANT_IGUANA:LUNG -CREATURE:GIANT_IGUANA:HEART -CREATURE:GIANT_IGUANA:LIVER -CREATURE:GIANT_IGUANA:GUT -CREATURE:GIANT_IGUANA:STOMACH -CREATURE:GIANT_IGUANA:GIZZARD -CREATURE:GIANT_IGUANA:PANCREAS -CREATURE:GIANT_IGUANA:SPLEEN -CREATURE:GIANT_IGUANA:KIDNEY -CREATURE:RIVER OTTER:MUSCLE -CREATURE:RIVER OTTER:EYE -CREATURE:RIVER OTTER:BRAIN -CREATURE:RIVER OTTER:LUNG -CREATURE:RIVER OTTER:HEART -CREATURE:RIVER OTTER:LIVER -CREATURE:RIVER OTTER:GUT -CREATURE:RIVER OTTER:STOMACH -CREATURE:RIVER OTTER:GIZZARD -CREATURE:RIVER OTTER:PANCREAS -CREATURE:RIVER OTTER:SPLEEN -CREATURE:RIVER OTTER:KIDNEY -CREATURE:SEA OTTER:MUSCLE -CREATURE:SEA OTTER:EYE -CREATURE:SEA OTTER:BRAIN -CREATURE:SEA OTTER:LUNG -CREATURE:SEA OTTER:HEART -CREATURE:SEA OTTER:LIVER -CREATURE:SEA OTTER:GUT -CREATURE:SEA OTTER:STOMACH -CREATURE:SEA OTTER:GIZZARD -CREATURE:SEA OTTER:PANCREAS -CREATURE:SEA OTTER:SPLEEN -CREATURE:SEA OTTER:KIDNEY -CREATURE:OTTER_MAN:MUSCLE -CREATURE:OTTER_MAN:EYE -CREATURE:OTTER_MAN:BRAIN -CREATURE:OTTER_MAN:LUNG -CREATURE:OTTER_MAN:HEART -CREATURE:OTTER_MAN:LIVER -CREATURE:OTTER_MAN:GUT -CREATURE:OTTER_MAN:STOMACH -CREATURE:OTTER_MAN:GIZZARD -CREATURE:OTTER_MAN:PANCREAS -CREATURE:OTTER_MAN:SPLEEN -CREATURE:OTTER_MAN:KIDNEY -CREATURE:GIANT_OTTER:MUSCLE -CREATURE:GIANT_OTTER:EYE -CREATURE:GIANT_OTTER:BRAIN -CREATURE:GIANT_OTTER:LUNG -CREATURE:GIANT_OTTER:HEART -CREATURE:GIANT_OTTER:LIVER -CREATURE:GIANT_OTTER:GUT -CREATURE:GIANT_OTTER:STOMACH -CREATURE:GIANT_OTTER:GIZZARD -CREATURE:GIANT_OTTER:PANCREAS -CREATURE:GIANT_OTTER:SPLEEN -CREATURE:GIANT_OTTER:KIDNEY -CREATURE:SNAPPING TURTLE:MUSCLE -CREATURE:SNAPPING TURTLE:EYE -CREATURE:SNAPPING TURTLE:BRAIN -CREATURE:SNAPPING TURTLE:LUNG -CREATURE:SNAPPING TURTLE:HEART -CREATURE:SNAPPING TURTLE:LIVER -CREATURE:SNAPPING TURTLE:GUT - CREATURE:SNAPPING TURTLE:STOMACH - CREATURE:SNAPPING TURTLE:GIZZARD -!CREATURE:SNAPPING TURTLE:PANCREAS -CREATURE:SNAPPING TURTLE:SPLEEN -CREATURE:SNAPPING TURTLE:KIDNEY -)CREATURE:ALLIGATOR SNAPPING TURTLE:MUSCLE -&CREATURE:ALLIGATOR SNAPPING TURTLE:EYE -(CREATURE:ALLIGATOR SNAPPING TURTLE:BRAIN -'CREATURE:ALLIGATOR SNAPPING TURTLE:LUNG -(CREATURE:ALLIGATOR SNAPPING TURTLE:HEART -(CREATURE:ALLIGATOR SNAPPING TURTLE:LIVER -&CREATURE:ALLIGATOR SNAPPING TURTLE:GUT -*CREATURE:ALLIGATOR SNAPPING TURTLE:STOMACH -*CREATURE:ALLIGATOR SNAPPING TURTLE:GIZZARD -+CREATURE:ALLIGATOR SNAPPING TURTLE:PANCREAS -)CREATURE:ALLIGATOR SNAPPING TURTLE:SPLEEN -)CREATURE:ALLIGATOR SNAPPING TURTLE:KIDNEY -#CREATURE:SNAPPING_TURTLE_MAN:MUSCLE - CREATURE:SNAPPING_TURTLE_MAN:EYE -"CREATURE:SNAPPING_TURTLE_MAN:BRAIN -!CREATURE:SNAPPING_TURTLE_MAN:LUNG -"CREATURE:SNAPPING_TURTLE_MAN:HEART -"CREATURE:SNAPPING_TURTLE_MAN:LIVER - CREATURE:SNAPPING_TURTLE_MAN:GUT -$CREATURE:SNAPPING_TURTLE_MAN:STOMACH -$CREATURE:SNAPPING_TURTLE_MAN:GIZZARD -%CREATURE:SNAPPING_TURTLE_MAN:PANCREAS -#CREATURE:SNAPPING_TURTLE_MAN:SPLEEN -#CREATURE:SNAPPING_TURTLE_MAN:KIDNEY -%CREATURE:GIANT_SNAPPING_TURTLE:MUSCLE -"CREATURE:GIANT_SNAPPING_TURTLE:EYE -$CREATURE:GIANT_SNAPPING_TURTLE:BRAIN -#CREATURE:GIANT_SNAPPING_TURTLE:LUNG -$CREATURE:GIANT_SNAPPING_TURTLE:HEART -$CREATURE:GIANT_SNAPPING_TURTLE:LIVER -"CREATURE:GIANT_SNAPPING_TURTLE:GUT -&CREATURE:GIANT_SNAPPING_TURTLE:STOMACH -&CREATURE:GIANT_SNAPPING_TURTLE:GIZZARD -'CREATURE:GIANT_SNAPPING_TURTLE:PANCREAS -%CREATURE:GIANT_SNAPPING_TURTLE:SPLEEN -%CREATURE:GIANT_SNAPPING_TURTLE:KIDNEY -CREATURE:BEAVER:MUSCLE -CREATURE:BEAVER:EYE -CREATURE:BEAVER:BRAIN -CREATURE:BEAVER:LUNG -CREATURE:BEAVER:HEART -CREATURE:BEAVER:LIVER -CREATURE:BEAVER:GUT -CREATURE:BEAVER:STOMACH -CREATURE:BEAVER:GIZZARD -CREATURE:BEAVER:PANCREAS -CREATURE:BEAVER:SPLEEN -CREATURE:BEAVER:KIDNEY -CREATURE:BEAVER_MAN:MUSCLE -CREATURE:BEAVER_MAN:EYE -CREATURE:BEAVER_MAN:BRAIN -CREATURE:BEAVER_MAN:LUNG -CREATURE:BEAVER_MAN:HEART -CREATURE:BEAVER_MAN:LIVER -CREATURE:BEAVER_MAN:GUT -CREATURE:BEAVER_MAN:STOMACH -CREATURE:BEAVER_MAN:GIZZARD -CREATURE:BEAVER_MAN:PANCREAS -CREATURE:BEAVER_MAN:SPLEEN -CREATURE:BEAVER_MAN:KIDNEY -CREATURE:GIANT_BEAVER:MUSCLE -CREATURE:GIANT_BEAVER:EYE -CREATURE:GIANT_BEAVER:BRAIN -CREATURE:GIANT_BEAVER:LUNG -CREATURE:GIANT_BEAVER:HEART -CREATURE:GIANT_BEAVER:LIVER -CREATURE:GIANT_BEAVER:GUT -CREATURE:GIANT_BEAVER:STOMACH -CREATURE:GIANT_BEAVER:GIZZARD -CREATURE:GIANT_BEAVER:PANCREAS -CREATURE:GIANT_BEAVER:SPLEEN -CREATURE:GIANT_BEAVER:KIDNEY -CREATURE:LEECH:MUSCLE -CREATURE:LEECH:EYE -CREATURE:LEECH:BRAIN -CREATURE:LEECH:LUNG -CREATURE:LEECH:HEART -CREATURE:LEECH:LIVER -CREATURE:LEECH:GUT -CREATURE:LEECH:STOMACH -CREATURE:LEECH:GIZZARD -CREATURE:LEECH:PANCREAS -CREATURE:LEECH:SPLEEN -CREATURE:LEECH:KIDNEY -CREATURE:LEECH_MAN:MUSCLE -CREATURE:LEECH_MAN:EYE -CREATURE:LEECH_MAN:BRAIN -CREATURE:LEECH_MAN:LUNG -CREATURE:LEECH_MAN:HEART -CREATURE:LEECH_MAN:LIVER -CREATURE:LEECH_MAN:GUT -CREATURE:LEECH_MAN:STOMACH -CREATURE:LEECH_MAN:GIZZARD -CREATURE:LEECH_MAN:PANCREAS -CREATURE:LEECH_MAN:SPLEEN -CREATURE:LEECH_MAN:KIDNEY -CREATURE:GIANT_LEECH:MUSCLE -CREATURE:GIANT_LEECH:EYE -CREATURE:GIANT_LEECH:BRAIN -CREATURE:GIANT_LEECH:LUNG -CREATURE:GIANT_LEECH:HEART -CREATURE:GIANT_LEECH:LIVER -CREATURE:GIANT_LEECH:GUT -CREATURE:GIANT_LEECH:STOMACH -CREATURE:GIANT_LEECH:GIZZARD -CREATURE:GIANT_LEECH:PANCREAS -CREATURE:GIANT_LEECH:SPLEEN -CREATURE:GIANT_LEECH:KIDNEY -CREATURE:AXOLOTL:MUSCLE -CREATURE:AXOLOTL:EYE -CREATURE:AXOLOTL:BRAIN -CREATURE:AXOLOTL:LUNG -CREATURE:AXOLOTL:HEART -CREATURE:AXOLOTL:LIVER -CREATURE:AXOLOTL:GUT -CREATURE:AXOLOTL:STOMACH -CREATURE:AXOLOTL:GIZZARD -CREATURE:AXOLOTL:PANCREAS -CREATURE:AXOLOTL:SPLEEN -CREATURE:AXOLOTL:KIDNEY -CREATURE:AXOLOTL_MAN:MUSCLE -CREATURE:AXOLOTL_MAN:EYE -CREATURE:AXOLOTL_MAN:BRAIN -CREATURE:AXOLOTL_MAN:LUNG -CREATURE:AXOLOTL_MAN:HEART -CREATURE:AXOLOTL_MAN:LIVER -CREATURE:AXOLOTL_MAN:GUT -CREATURE:AXOLOTL_MAN:STOMACH -CREATURE:AXOLOTL_MAN:GIZZARD -CREATURE:AXOLOTL_MAN:PANCREAS -CREATURE:AXOLOTL_MAN:SPLEEN -CREATURE:AXOLOTL_MAN:KIDNEY -CREATURE:GIANT_AXOLOTL:MUSCLE -CREATURE:GIANT_AXOLOTL:EYE -CREATURE:GIANT_AXOLOTL:BRAIN -CREATURE:GIANT_AXOLOTL:LUNG -CREATURE:GIANT_AXOLOTL:HEART -CREATURE:GIANT_AXOLOTL:LIVER -CREATURE:GIANT_AXOLOTL:GUT -CREATURE:GIANT_AXOLOTL:STOMACH -CREATURE:GIANT_AXOLOTL:GIZZARD -CREATURE:GIANT_AXOLOTL:PANCREAS -CREATURE:GIANT_AXOLOTL:SPLEEN -CREATURE:GIANT_AXOLOTL:KIDNEY -CREATURE:MINK:MUSCLE -CREATURE:MINK:EYE -CREATURE:MINK:BRAIN -CREATURE:MINK:LUNG -CREATURE:MINK:HEART -CREATURE:MINK:LIVER -CREATURE:MINK:GUT -CREATURE:MINK:STOMACH -CREATURE:MINK:GIZZARD -CREATURE:MINK:PANCREAS -CREATURE:MINK:SPLEEN -CREATURE:MINK:KIDNEY -CREATURE:MINK_MAN:MUSCLE -CREATURE:MINK_MAN:EYE -CREATURE:MINK_MAN:BRAIN -CREATURE:MINK_MAN:LUNG -CREATURE:MINK_MAN:HEART -CREATURE:MINK_MAN:LIVER -CREATURE:MINK_MAN:GUT -CREATURE:MINK_MAN:STOMACH -CREATURE:MINK_MAN:GIZZARD -CREATURE:MINK_MAN:PANCREAS -CREATURE:MINK_MAN:SPLEEN -CREATURE:MINK_MAN:KIDNEY -CREATURE:GIANT_MINK:MUSCLE -CREATURE:GIANT_MINK:EYE -CREATURE:GIANT_MINK:BRAIN -CREATURE:GIANT_MINK:LUNG -CREATURE:GIANT_MINK:HEART -CREATURE:GIANT_MINK:LIVER -CREATURE:GIANT_MINK:GUT -CREATURE:GIANT_MINK:STOMACH -CREATURE:GIANT_MINK:GIZZARD -CREATURE:GIANT_MINK:PANCREAS -CREATURE:GIANT_MINK:SPLEEN -CREATURE:GIANT_MINK:KIDNEY -CREATURE:POND_TURTLE:MUSCLE -CREATURE:POND_TURTLE:EYE -CREATURE:POND_TURTLE:BRAIN -CREATURE:POND_TURTLE:LUNG -CREATURE:POND_TURTLE:HEART -CREATURE:POND_TURTLE:LIVER -CREATURE:POND_TURTLE:GUT -CREATURE:POND_TURTLE:STOMACH -CREATURE:POND_TURTLE:GIZZARD -CREATURE:POND_TURTLE:PANCREAS -CREATURE:POND_TURTLE:SPLEEN -CREATURE:POND_TURTLE:KIDNEY -CREATURE:POND_TURTLE_MAN:MUSCLE -CREATURE:POND_TURTLE_MAN:EYE -CREATURE:POND_TURTLE_MAN:BRAIN -CREATURE:POND_TURTLE_MAN:LUNG -CREATURE:POND_TURTLE_MAN:HEART -CREATURE:POND_TURTLE_MAN:LIVER -CREATURE:POND_TURTLE_MAN:GUT - CREATURE:POND_TURTLE_MAN:STOMACH - CREATURE:POND_TURTLE_MAN:GIZZARD -!CREATURE:POND_TURTLE_MAN:PANCREAS -CREATURE:POND_TURTLE_MAN:SPLEEN -CREATURE:POND_TURTLE_MAN:KIDNEY -!CREATURE:GIANT_POND_TURTLE:MUSCLE -CREATURE:GIANT_POND_TURTLE:EYE - CREATURE:GIANT_POND_TURTLE:BRAIN -CREATURE:GIANT_POND_TURTLE:LUNG - CREATURE:GIANT_POND_TURTLE:HEART - CREATURE:GIANT_POND_TURTLE:LIVER -CREATURE:GIANT_POND_TURTLE:GUT -"CREATURE:GIANT_POND_TURTLE:STOMACH -"CREATURE:GIANT_POND_TURTLE:GIZZARD -#CREATURE:GIANT_POND_TURTLE:PANCREAS -!CREATURE:GIANT_POND_TURTLE:SPLEEN -!CREATURE:GIANT_POND_TURTLE:KIDNEY -CREATURE:RAT:MUSCLE -CREATURE:RAT:EYE -CREATURE:RAT:BRAIN -CREATURE:RAT:LUNG -CREATURE:RAT:HEART -CREATURE:RAT:LIVER -CREATURE:RAT:GUT -CREATURE:RAT:STOMACH -CREATURE:RAT:GIZZARD -CREATURE:RAT:PANCREAS -CREATURE:RAT:SPLEEN -CREATURE:RAT:KIDNEY -CREATURE:RAT_MAN:MUSCLE -CREATURE:RAT_MAN:EYE -CREATURE:RAT_MAN:BRAIN -CREATURE:RAT_MAN:LUNG -CREATURE:RAT_MAN:HEART -CREATURE:RAT_MAN:LIVER -CREATURE:RAT_MAN:GUT -CREATURE:RAT_MAN:STOMACH -CREATURE:RAT_MAN:GIZZARD -CREATURE:RAT_MAN:PANCREAS -CREATURE:RAT_MAN:SPLEEN -CREATURE:RAT_MAN:KIDNEY -CREATURE:SQUIRREL_GRAY:MUSCLE -CREATURE:SQUIRREL_GRAY:EYE -CREATURE:SQUIRREL_GRAY:BRAIN -CREATURE:SQUIRREL_GRAY:LUNG -CREATURE:SQUIRREL_GRAY:HEART -CREATURE:SQUIRREL_GRAY:LIVER -CREATURE:SQUIRREL_GRAY:GUT -CREATURE:SQUIRREL_GRAY:STOMACH -CREATURE:SQUIRREL_GRAY:GIZZARD -CREATURE:SQUIRREL_GRAY:PANCREAS -CREATURE:SQUIRREL_GRAY:SPLEEN -CREATURE:SQUIRREL_GRAY:KIDNEY -!CREATURE:SQUIRREL_GRAY_MAN:MUSCLE -CREATURE:SQUIRREL_GRAY_MAN:EYE - CREATURE:SQUIRREL_GRAY_MAN:BRAIN -CREATURE:SQUIRREL_GRAY_MAN:LUNG - CREATURE:SQUIRREL_GRAY_MAN:HEART - CREATURE:SQUIRREL_GRAY_MAN:LIVER -CREATURE:SQUIRREL_GRAY_MAN:GUT -"CREATURE:SQUIRREL_GRAY_MAN:STOMACH -"CREATURE:SQUIRREL_GRAY_MAN:GIZZARD -#CREATURE:SQUIRREL_GRAY_MAN:PANCREAS -!CREATURE:SQUIRREL_GRAY_MAN:SPLEEN -!CREATURE:SQUIRREL_GRAY_MAN:KIDNEY -#CREATURE:GIANT_SQUIRREL_GRAY:MUSCLE - CREATURE:GIANT_SQUIRREL_GRAY:EYE -"CREATURE:GIANT_SQUIRREL_GRAY:BRAIN -!CREATURE:GIANT_SQUIRREL_GRAY:LUNG -"CREATURE:GIANT_SQUIRREL_GRAY:HEART -"CREATURE:GIANT_SQUIRREL_GRAY:LIVER - CREATURE:GIANT_SQUIRREL_GRAY:GUT -$CREATURE:GIANT_SQUIRREL_GRAY:STOMACH -$CREATURE:GIANT_SQUIRREL_GRAY:GIZZARD -%CREATURE:GIANT_SQUIRREL_GRAY:PANCREAS -#CREATURE:GIANT_SQUIRREL_GRAY:SPLEEN -#CREATURE:GIANT_SQUIRREL_GRAY:KIDNEY -CREATURE:SQUIRREL_RED:MUSCLE -CREATURE:SQUIRREL_RED:EYE -CREATURE:SQUIRREL_RED:BRAIN -CREATURE:SQUIRREL_RED:LUNG -CREATURE:SQUIRREL_RED:HEART -CREATURE:SQUIRREL_RED:LIVER -CREATURE:SQUIRREL_RED:GUT -CREATURE:SQUIRREL_RED:STOMACH -CREATURE:SQUIRREL_RED:GIZZARD -CREATURE:SQUIRREL_RED:PANCREAS -CREATURE:SQUIRREL_RED:SPLEEN -CREATURE:SQUIRREL_RED:KIDNEY - CREATURE:SQUIRREL_RED_MAN:MUSCLE -CREATURE:SQUIRREL_RED_MAN:EYE -CREATURE:SQUIRREL_RED_MAN:BRAIN -CREATURE:SQUIRREL_RED_MAN:LUNG -CREATURE:SQUIRREL_RED_MAN:HEART -CREATURE:SQUIRREL_RED_MAN:LIVER -CREATURE:SQUIRREL_RED_MAN:GUT -!CREATURE:SQUIRREL_RED_MAN:STOMACH -!CREATURE:SQUIRREL_RED_MAN:GIZZARD -"CREATURE:SQUIRREL_RED_MAN:PANCREAS - CREATURE:SQUIRREL_RED_MAN:SPLEEN - CREATURE:SQUIRREL_RED_MAN:KIDNEY -"CREATURE:GIANT_SQUIRREL_RED:MUSCLE -CREATURE:GIANT_SQUIRREL_RED:EYE -!CREATURE:GIANT_SQUIRREL_RED:BRAIN - CREATURE:GIANT_SQUIRREL_RED:LUNG -!CREATURE:GIANT_SQUIRREL_RED:HEART -!CREATURE:GIANT_SQUIRREL_RED:LIVER -CREATURE:GIANT_SQUIRREL_RED:GUT -#CREATURE:GIANT_SQUIRREL_RED:STOMACH -#CREATURE:GIANT_SQUIRREL_RED:GIZZARD -$CREATURE:GIANT_SQUIRREL_RED:PANCREAS -"CREATURE:GIANT_SQUIRREL_RED:SPLEEN -"CREATURE:GIANT_SQUIRREL_RED:KIDNEY -CREATURE:CHIPMUNK:MUSCLE -CREATURE:CHIPMUNK:EYE -CREATURE:CHIPMUNK:BRAIN -CREATURE:CHIPMUNK:LUNG -CREATURE:CHIPMUNK:HEART -CREATURE:CHIPMUNK:LIVER -CREATURE:CHIPMUNK:GUT -CREATURE:CHIPMUNK:STOMACH -CREATURE:CHIPMUNK:GIZZARD -CREATURE:CHIPMUNK:PANCREAS -CREATURE:CHIPMUNK:SPLEEN -CREATURE:CHIPMUNK:KIDNEY -CREATURE:CHIPMUNK_MAN:MUSCLE -CREATURE:CHIPMUNK_MAN:EYE -CREATURE:CHIPMUNK_MAN:BRAIN -CREATURE:CHIPMUNK_MAN:LUNG -CREATURE:CHIPMUNK_MAN:HEART -CREATURE:CHIPMUNK_MAN:LIVER -CREATURE:CHIPMUNK_MAN:GUT -CREATURE:CHIPMUNK_MAN:STOMACH -CREATURE:CHIPMUNK_MAN:GIZZARD -CREATURE:CHIPMUNK_MAN:PANCREAS -CREATURE:CHIPMUNK_MAN:SPLEEN -CREATURE:CHIPMUNK_MAN:KIDNEY -CREATURE:GIANT_CHIPMUNK:MUSCLE -CREATURE:GIANT_CHIPMUNK:EYE -CREATURE:GIANT_CHIPMUNK:BRAIN -CREATURE:GIANT_CHIPMUNK:LUNG -CREATURE:GIANT_CHIPMUNK:HEART -CREATURE:GIANT_CHIPMUNK:LIVER -CREATURE:GIANT_CHIPMUNK:GUT -CREATURE:GIANT_CHIPMUNK:STOMACH -CREATURE:GIANT_CHIPMUNK:GIZZARD - CREATURE:GIANT_CHIPMUNK:PANCREAS -CREATURE:GIANT_CHIPMUNK:SPLEEN -CREATURE:GIANT_CHIPMUNK:KIDNEY -CREATURE:HAMSTER:MUSCLE -CREATURE:HAMSTER:EYE -CREATURE:HAMSTER:BRAIN -CREATURE:HAMSTER:LUNG -CREATURE:HAMSTER:HEART -CREATURE:HAMSTER:LIVER -CREATURE:HAMSTER:GUT -CREATURE:HAMSTER:STOMACH -CREATURE:HAMSTER:GIZZARD -CREATURE:HAMSTER:PANCREAS -CREATURE:HAMSTER:SPLEEN -CREATURE:HAMSTER:KIDNEY -CREATURE:HAMSTER_MAN:MUSCLE -CREATURE:HAMSTER_MAN:EYE -CREATURE:HAMSTER_MAN:BRAIN -CREATURE:HAMSTER_MAN:LUNG -CREATURE:HAMSTER_MAN:HEART -CREATURE:HAMSTER_MAN:LIVER -CREATURE:HAMSTER_MAN:GUT -CREATURE:HAMSTER_MAN:STOMACH -CREATURE:HAMSTER_MAN:GIZZARD -CREATURE:HAMSTER_MAN:PANCREAS -CREATURE:HAMSTER_MAN:SPLEEN -CREATURE:HAMSTER_MAN:KIDNEY -CREATURE:GIANT_HAMSTER:MUSCLE -CREATURE:GIANT_HAMSTER:EYE -CREATURE:GIANT_HAMSTER:BRAIN -CREATURE:GIANT_HAMSTER:LUNG -CREATURE:GIANT_HAMSTER:HEART -CREATURE:GIANT_HAMSTER:LIVER -CREATURE:GIANT_HAMSTER:GUT -CREATURE:GIANT_HAMSTER:STOMACH -CREATURE:GIANT_HAMSTER:GIZZARD -CREATURE:GIANT_HAMSTER:PANCREAS -CREATURE:GIANT_HAMSTER:SPLEEN -CREATURE:GIANT_HAMSTER:KIDNEY -CREATURE:HEDGEHOG:MUSCLE -CREATURE:HEDGEHOG:EYE -CREATURE:HEDGEHOG:BRAIN -CREATURE:HEDGEHOG:LUNG -CREATURE:HEDGEHOG:HEART -CREATURE:HEDGEHOG:LIVER -CREATURE:HEDGEHOG:GUT -CREATURE:HEDGEHOG:STOMACH -CREATURE:HEDGEHOG:GIZZARD -CREATURE:HEDGEHOG:PANCREAS -CREATURE:HEDGEHOG:SPLEEN -CREATURE:HEDGEHOG:KIDNEY -CREATURE:HEDGEHOG_MAN:MUSCLE -CREATURE:HEDGEHOG_MAN:EYE -CREATURE:HEDGEHOG_MAN:BRAIN -CREATURE:HEDGEHOG_MAN:LUNG -CREATURE:HEDGEHOG_MAN:HEART -CREATURE:HEDGEHOG_MAN:LIVER -CREATURE:HEDGEHOG_MAN:GUT -CREATURE:HEDGEHOG_MAN:STOMACH -CREATURE:HEDGEHOG_MAN:GIZZARD -CREATURE:HEDGEHOG_MAN:PANCREAS -CREATURE:HEDGEHOG_MAN:SPLEEN -CREATURE:HEDGEHOG_MAN:KIDNEY -CREATURE:GIANT_HEDGEHOG:MUSCLE -CREATURE:GIANT_HEDGEHOG:EYE -CREATURE:GIANT_HEDGEHOG:BRAIN -CREATURE:GIANT_HEDGEHOG:LUNG -CREATURE:GIANT_HEDGEHOG:HEART -CREATURE:GIANT_HEDGEHOG:LIVER -CREATURE:GIANT_HEDGEHOG:GUT -CREATURE:GIANT_HEDGEHOG:STOMACH -CREATURE:GIANT_HEDGEHOG:GIZZARD - CREATURE:GIANT_HEDGEHOG:PANCREAS -CREATURE:GIANT_HEDGEHOG:SPLEEN -CREATURE:GIANT_HEDGEHOG:KIDNEY -CREATURE:SQUIRREL_FLYING:MUSCLE -CREATURE:SQUIRREL_FLYING:EYE -CREATURE:SQUIRREL_FLYING:BRAIN -CREATURE:SQUIRREL_FLYING:LUNG -CREATURE:SQUIRREL_FLYING:HEART -CREATURE:SQUIRREL_FLYING:LIVER -CREATURE:SQUIRREL_FLYING:GUT - CREATURE:SQUIRREL_FLYING:STOMACH - CREATURE:SQUIRREL_FLYING:GIZZARD -!CREATURE:SQUIRREL_FLYING:PANCREAS -CREATURE:SQUIRREL_FLYING:SPLEEN -CREATURE:SQUIRREL_FLYING:KIDNEY -#CREATURE:FLYING_SQUIRREL_MAN:MUSCLE - CREATURE:FLYING_SQUIRREL_MAN:EYE -"CREATURE:FLYING_SQUIRREL_MAN:BRAIN -!CREATURE:FLYING_SQUIRREL_MAN:LUNG -"CREATURE:FLYING_SQUIRREL_MAN:HEART -"CREATURE:FLYING_SQUIRREL_MAN:LIVER - CREATURE:FLYING_SQUIRREL_MAN:GUT -$CREATURE:FLYING_SQUIRREL_MAN:STOMACH -$CREATURE:FLYING_SQUIRREL_MAN:GIZZARD -%CREATURE:FLYING_SQUIRREL_MAN:PANCREAS -#CREATURE:FLYING_SQUIRREL_MAN:SPLEEN -#CREATURE:FLYING_SQUIRREL_MAN:KIDNEY -%CREATURE:GIANT_FLYING_SQUIRREL:MUSCLE -"CREATURE:GIANT_FLYING_SQUIRREL:EYE -$CREATURE:GIANT_FLYING_SQUIRREL:BRAIN -#CREATURE:GIANT_FLYING_SQUIRREL:LUNG -$CREATURE:GIANT_FLYING_SQUIRREL:HEART -$CREATURE:GIANT_FLYING_SQUIRREL:LIVER -"CREATURE:GIANT_FLYING_SQUIRREL:GUT -&CREATURE:GIANT_FLYING_SQUIRREL:STOMACH -&CREATURE:GIANT_FLYING_SQUIRREL:GIZZARD -'CREATURE:GIANT_FLYING_SQUIRREL:PANCREAS -%CREATURE:GIANT_FLYING_SQUIRREL:SPLEEN -%CREATURE:GIANT_FLYING_SQUIRREL:KIDNEY -CREATURE:MUSSEL:MUSCLE -CREATURE:OYSTER:MUSCLE -CREATURE:FISH_SALMON:MUSCLE -CREATURE:FISH_SALMON:EYE -CREATURE:FISH_SALMON:BRAIN -CREATURE:FISH_SALMON:LUNG -CREATURE:FISH_SALMON:HEART -CREATURE:FISH_SALMON:LIVER -CREATURE:FISH_SALMON:GUT -CREATURE:FISH_SALMON:STOMACH -CREATURE:FISH_SALMON:GIZZARD -CREATURE:FISH_SALMON:PANCREAS -CREATURE:FISH_SALMON:SPLEEN -CREATURE:FISH_SALMON:KIDNEY -CREATURE:FISH_CLOWNFISH:MUSCLE -CREATURE:FISH_CLOWNFISH:EYE -CREATURE:FISH_CLOWNFISH:BRAIN -CREATURE:FISH_CLOWNFISH:LUNG -CREATURE:FISH_CLOWNFISH:HEART -CREATURE:FISH_CLOWNFISH:LIVER -CREATURE:FISH_CLOWNFISH:GUT -CREATURE:FISH_CLOWNFISH:STOMACH -CREATURE:FISH_CLOWNFISH:GIZZARD - CREATURE:FISH_CLOWNFISH:PANCREAS -CREATURE:FISH_CLOWNFISH:SPLEEN -CREATURE:FISH_CLOWNFISH:KIDNEY -CREATURE:FISH_HAGFISH:MUSCLE -CREATURE:FISH_HAGFISH:EYE -CREATURE:FISH_HAGFISH:BRAIN -CREATURE:FISH_HAGFISH:LUNG -CREATURE:FISH_HAGFISH:HEART -CREATURE:FISH_HAGFISH:LIVER -CREATURE:FISH_HAGFISH:GUT -CREATURE:FISH_HAGFISH:STOMACH -CREATURE:FISH_HAGFISH:GIZZARD -CREATURE:FISH_HAGFISH:PANCREAS -CREATURE:FISH_HAGFISH:SPLEEN -CREATURE:FISH_HAGFISH:KIDNEY -"CREATURE:FISH_LAMPREY_BROOK:MUSCLE -CREATURE:FISH_LAMPREY_BROOK:EYE -!CREATURE:FISH_LAMPREY_BROOK:BRAIN - CREATURE:FISH_LAMPREY_BROOK:LUNG -!CREATURE:FISH_LAMPREY_BROOK:HEART -!CREATURE:FISH_LAMPREY_BROOK:LIVER -CREATURE:FISH_LAMPREY_BROOK:GUT -#CREATURE:FISH_LAMPREY_BROOK:STOMACH -#CREATURE:FISH_LAMPREY_BROOK:GIZZARD -$CREATURE:FISH_LAMPREY_BROOK:PANCREAS -"CREATURE:FISH_LAMPREY_BROOK:SPLEEN -"CREATURE:FISH_LAMPREY_BROOK:KIDNEY -CREATURE:FISH_RAY_BAT:MUSCLE -CREATURE:FISH_RAY_BAT:EYE -CREATURE:FISH_RAY_BAT:BRAIN -CREATURE:FISH_RAY_BAT:LUNG -CREATURE:FISH_RAY_BAT:HEART -CREATURE:FISH_RAY_BAT:LIVER -CREATURE:FISH_RAY_BAT:GUT -CREATURE:FISH_RAY_BAT:STOMACH -CREATURE:FISH_RAY_BAT:GIZZARD -CREATURE:FISH_RAY_BAT:PANCREAS -CREATURE:FISH_RAY_BAT:SPLEEN -CREATURE:FISH_RAY_BAT:KIDNEY -"CREATURE:FISH_RAY_THORNBACK:MUSCLE -CREATURE:FISH_RAY_THORNBACK:EYE -!CREATURE:FISH_RAY_THORNBACK:BRAIN - CREATURE:FISH_RAY_THORNBACK:LUNG -!CREATURE:FISH_RAY_THORNBACK:HEART -!CREATURE:FISH_RAY_THORNBACK:LIVER -CREATURE:FISH_RAY_THORNBACK:GUT -#CREATURE:FISH_RAY_THORNBACK:STOMACH -#CREATURE:FISH_RAY_THORNBACK:GIZZARD -$CREATURE:FISH_RAY_THORNBACK:PANCREAS -"CREATURE:FISH_RAY_THORNBACK:SPLEEN -"CREATURE:FISH_RAY_THORNBACK:KIDNEY -$CREATURE:FISH_RATFISH_SPOTTED:MUSCLE -!CREATURE:FISH_RATFISH_SPOTTED:EYE -#CREATURE:FISH_RATFISH_SPOTTED:BRAIN -"CREATURE:FISH_RATFISH_SPOTTED:LUNG -#CREATURE:FISH_RATFISH_SPOTTED:HEART -#CREATURE:FISH_RATFISH_SPOTTED:LIVER -!CREATURE:FISH_RATFISH_SPOTTED:GUT -%CREATURE:FISH_RATFISH_SPOTTED:STOMACH -%CREATURE:FISH_RATFISH_SPOTTED:GIZZARD -&CREATURE:FISH_RATFISH_SPOTTED:PANCREAS -$CREATURE:FISH_RATFISH_SPOTTED:SPLEEN -$CREATURE:FISH_RATFISH_SPOTTED:KIDNEY -CREATURE:FISH_HERRING:MUSCLE -CREATURE:FISH_HERRING:EYE -CREATURE:FISH_HERRING:BRAIN -CREATURE:FISH_HERRING:LUNG -CREATURE:FISH_HERRING:HEART -CREATURE:FISH_HERRING:LIVER -CREATURE:FISH_HERRING:GUT -CREATURE:FISH_HERRING:STOMACH -CREATURE:FISH_HERRING:GIZZARD -CREATURE:FISH_HERRING:PANCREAS -CREATURE:FISH_HERRING:SPLEEN -CREATURE:FISH_HERRING:KIDNEY -CREATURE:FISH_SHAD:MUSCLE -CREATURE:FISH_SHAD:EYE -CREATURE:FISH_SHAD:BRAIN -CREATURE:FISH_SHAD:LUNG -CREATURE:FISH_SHAD:HEART -CREATURE:FISH_SHAD:LIVER -CREATURE:FISH_SHAD:GUT -CREATURE:FISH_SHAD:STOMACH -CREATURE:FISH_SHAD:GIZZARD -CREATURE:FISH_SHAD:PANCREAS -CREATURE:FISH_SHAD:SPLEEN -CREATURE:FISH_SHAD:KIDNEY -CREATURE:FISH_ANCHOVY:MUSCLE -CREATURE:FISH_ANCHOVY:EYE -CREATURE:FISH_ANCHOVY:BRAIN -CREATURE:FISH_ANCHOVY:LUNG -CREATURE:FISH_ANCHOVY:HEART -CREATURE:FISH_ANCHOVY:LIVER -CREATURE:FISH_ANCHOVY:GUT -CREATURE:FISH_ANCHOVY:STOMACH -CREATURE:FISH_ANCHOVY:GIZZARD -CREATURE:FISH_ANCHOVY:PANCREAS -CREATURE:FISH_ANCHOVY:SPLEEN -CREATURE:FISH_ANCHOVY:KIDNEY -$CREATURE:FISH_TROUT_STEELHEAD:MUSCLE -!CREATURE:FISH_TROUT_STEELHEAD:EYE -#CREATURE:FISH_TROUT_STEELHEAD:BRAIN -"CREATURE:FISH_TROUT_STEELHEAD:LUNG -#CREATURE:FISH_TROUT_STEELHEAD:HEART -#CREATURE:FISH_TROUT_STEELHEAD:LIVER -!CREATURE:FISH_TROUT_STEELHEAD:GUT -%CREATURE:FISH_TROUT_STEELHEAD:STOMACH -%CREATURE:FISH_TROUT_STEELHEAD:GIZZARD -&CREATURE:FISH_TROUT_STEELHEAD:PANCREAS -$CREATURE:FISH_TROUT_STEELHEAD:SPLEEN -$CREATURE:FISH_TROUT_STEELHEAD:KIDNEY -CREATURE:FISH_HAKE:MUSCLE -CREATURE:FISH_HAKE:EYE -CREATURE:FISH_HAKE:BRAIN -CREATURE:FISH_HAKE:LUNG -CREATURE:FISH_HAKE:HEART -CREATURE:FISH_HAKE:LIVER -CREATURE:FISH_HAKE:GUT -CREATURE:FISH_HAKE:STOMACH -CREATURE:FISH_HAKE:GIZZARD -CREATURE:FISH_HAKE:PANCREAS -CREATURE:FISH_HAKE:SPLEEN -CREATURE:FISH_HAKE:KIDNEY -CREATURE:FISH_SEAHORSE:MUSCLE -CREATURE:FISH_SEAHORSE:EYE -CREATURE:FISH_SEAHORSE:BRAIN -CREATURE:FISH_SEAHORSE:LUNG -CREATURE:FISH_SEAHORSE:HEART -CREATURE:FISH_SEAHORSE:LIVER -CREATURE:FISH_SEAHORSE:GUT -CREATURE:FISH_SEAHORSE:STOMACH -CREATURE:FISH_SEAHORSE:GIZZARD -CREATURE:FISH_SEAHORSE:PANCREAS -CREATURE:FISH_SEAHORSE:SPLEEN -CREATURE:FISH_SEAHORSE:KIDNEY -CREATURE:FISH_GLASSEYE:MUSCLE -CREATURE:FISH_GLASSEYE:EYE -CREATURE:FISH_GLASSEYE:BRAIN -CREATURE:FISH_GLASSEYE:LUNG -CREATURE:FISH_GLASSEYE:HEART -CREATURE:FISH_GLASSEYE:LIVER -CREATURE:FISH_GLASSEYE:GUT -CREATURE:FISH_GLASSEYE:STOMACH -CREATURE:FISH_GLASSEYE:GIZZARD -CREATURE:FISH_GLASSEYE:PANCREAS -CREATURE:FISH_GLASSEYE:SPLEEN -CREATURE:FISH_GLASSEYE:KIDNEY -)CREATURE:FISH_PUFFER_WHITE_SPOTTED:MUSCLE -&CREATURE:FISH_PUFFER_WHITE_SPOTTED:EYE -(CREATURE:FISH_PUFFER_WHITE_SPOTTED:BRAIN -'CREATURE:FISH_PUFFER_WHITE_SPOTTED:LUNG -(CREATURE:FISH_PUFFER_WHITE_SPOTTED:HEART -(CREATURE:FISH_PUFFER_WHITE_SPOTTED:LIVER -&CREATURE:FISH_PUFFER_WHITE_SPOTTED:GUT -*CREATURE:FISH_PUFFER_WHITE_SPOTTED:STOMACH -*CREATURE:FISH_PUFFER_WHITE_SPOTTED:GIZZARD -+CREATURE:FISH_PUFFER_WHITE_SPOTTED:PANCREAS -)CREATURE:FISH_PUFFER_WHITE_SPOTTED:SPLEEN -)CREATURE:FISH_PUFFER_WHITE_SPOTTED:KIDNEY -CREATURE:FISH_SOLE:MUSCLE -CREATURE:FISH_SOLE:EYE -CREATURE:FISH_SOLE:BRAIN -CREATURE:FISH_SOLE:LUNG -CREATURE:FISH_SOLE:HEART -CREATURE:FISH_SOLE:LIVER -CREATURE:FISH_SOLE:GUT -CREATURE:FISH_SOLE:STOMACH -CREATURE:FISH_SOLE:GIZZARD -CREATURE:FISH_SOLE:PANCREAS -CREATURE:FISH_SOLE:SPLEEN -CREATURE:FISH_SOLE:KIDNEY -CREATURE:FISH_FLOUNDER:MUSCLE -CREATURE:FISH_FLOUNDER:EYE -CREATURE:FISH_FLOUNDER:BRAIN -CREATURE:FISH_FLOUNDER:LUNG -CREATURE:FISH_FLOUNDER:HEART -CREATURE:FISH_FLOUNDER:LIVER -CREATURE:FISH_FLOUNDER:GUT -CREATURE:FISH_FLOUNDER:STOMACH -CREATURE:FISH_FLOUNDER:GIZZARD -CREATURE:FISH_FLOUNDER:PANCREAS -CREATURE:FISH_FLOUNDER:SPLEEN -CREATURE:FISH_FLOUNDER:KIDNEY -CREATURE:FISH_MACKEREL:MUSCLE -CREATURE:FISH_MACKEREL:EYE -CREATURE:FISH_MACKEREL:BRAIN -CREATURE:FISH_MACKEREL:LUNG -CREATURE:FISH_MACKEREL:HEART -CREATURE:FISH_MACKEREL:LIVER -CREATURE:FISH_MACKEREL:GUT -CREATURE:FISH_MACKEREL:STOMACH -CREATURE:FISH_MACKEREL:GIZZARD -CREATURE:FISH_MACKEREL:PANCREAS -CREATURE:FISH_MACKEREL:SPLEEN -CREATURE:FISH_MACKEREL:KIDNEY -$CREATURE:JELLYFISH_SEA_NETTLE:MUSCLE -!CREATURE:JELLYFISH_SEA_NETTLE:EYE -#CREATURE:JELLYFISH_SEA_NETTLE:BRAIN -"CREATURE:JELLYFISH_SEA_NETTLE:LUNG -#CREATURE:JELLYFISH_SEA_NETTLE:HEART -#CREATURE:JELLYFISH_SEA_NETTLE:LIVER -!CREATURE:JELLYFISH_SEA_NETTLE:GUT -%CREATURE:JELLYFISH_SEA_NETTLE:STOMACH -%CREATURE:JELLYFISH_SEA_NETTLE:GIZZARD -&CREATURE:JELLYFISH_SEA_NETTLE:PANCREAS -$CREATURE:JELLYFISH_SEA_NETTLE:SPLEEN -$CREATURE:JELLYFISH_SEA_NETTLE:KIDNEY -CREATURE:SQUID:MUSCLE -CREATURE:SQUID:EYE -CREATURE:SQUID:BRAIN -CREATURE:SQUID:LUNG -CREATURE:SQUID:HEART -CREATURE:SQUID:LIVER -CREATURE:SQUID:GUT -CREATURE:SQUID:STOMACH -CREATURE:SQUID:GIZZARD -CREATURE:SQUID:PANCREAS -CREATURE:SQUID:SPLEEN -CREATURE:SQUID:KIDNEY -CREATURE:SQUID MAN:MUSCLE -CREATURE:SQUID MAN:EYE -CREATURE:SQUID MAN:BRAIN -CREATURE:SQUID MAN:LUNG -CREATURE:SQUID MAN:HEART -CREATURE:SQUID MAN:LIVER -CREATURE:SQUID MAN:GUT -CREATURE:SQUID MAN:STOMACH -CREATURE:SQUID MAN:GIZZARD -CREATURE:SQUID MAN:PANCREAS -CREATURE:SQUID MAN:SPLEEN -CREATURE:SQUID MAN:KIDNEY -CREATURE:GIGANTIC SQUID:MUSCLE -CREATURE:GIGANTIC SQUID:EYE -CREATURE:GIGANTIC SQUID:BRAIN -CREATURE:GIGANTIC SQUID:LUNG -CREATURE:GIGANTIC SQUID:HEART -CREATURE:GIGANTIC SQUID:LIVER -CREATURE:GIGANTIC SQUID:GUT -CREATURE:GIGANTIC SQUID:STOMACH -CREATURE:GIGANTIC SQUID:GIZZARD - CREATURE:GIGANTIC SQUID:PANCREAS -CREATURE:GIGANTIC SQUID:SPLEEN -CREATURE:GIGANTIC SQUID:KIDNEY -CREATURE:FISH_LUNGFISH:MUSCLE -CREATURE:FISH_LUNGFISH:EYE -CREATURE:FISH_LUNGFISH:BRAIN -CREATURE:FISH_LUNGFISH:LUNG -CREATURE:FISH_LUNGFISH:HEART -CREATURE:FISH_LUNGFISH:LIVER -CREATURE:FISH_LUNGFISH:GUT -CREATURE:FISH_LUNGFISH:STOMACH -CREATURE:FISH_LUNGFISH:GIZZARD -CREATURE:FISH_LUNGFISH:PANCREAS -CREATURE:FISH_LUNGFISH:SPLEEN -CREATURE:FISH_LUNGFISH:KIDNEY - CREATURE:FISH_LOACH_CLOWN:MUSCLE -CREATURE:FISH_LOACH_CLOWN:EYE -CREATURE:FISH_LOACH_CLOWN:BRAIN -CREATURE:FISH_LOACH_CLOWN:LUNG -CREATURE:FISH_LOACH_CLOWN:HEART -CREATURE:FISH_LOACH_CLOWN:LIVER -CREATURE:FISH_LOACH_CLOWN:GUT -!CREATURE:FISH_LOACH_CLOWN:STOMACH -!CREATURE:FISH_LOACH_CLOWN:GIZZARD -"CREATURE:FISH_LOACH_CLOWN:PANCREAS - CREATURE:FISH_LOACH_CLOWN:SPLEEN - CREATURE:FISH_LOACH_CLOWN:KIDNEY -#CREATURE:FISH_BULLHEAD_BROWN:MUSCLE - CREATURE:FISH_BULLHEAD_BROWN:EYE -"CREATURE:FISH_BULLHEAD_BROWN:BRAIN -!CREATURE:FISH_BULLHEAD_BROWN:LUNG -"CREATURE:FISH_BULLHEAD_BROWN:HEART -"CREATURE:FISH_BULLHEAD_BROWN:LIVER - CREATURE:FISH_BULLHEAD_BROWN:GUT -$CREATURE:FISH_BULLHEAD_BROWN:STOMACH -$CREATURE:FISH_BULLHEAD_BROWN:GIZZARD -%CREATURE:FISH_BULLHEAD_BROWN:PANCREAS -#CREATURE:FISH_BULLHEAD_BROWN:SPLEEN -#CREATURE:FISH_BULLHEAD_BROWN:KIDNEY -$CREATURE:FISH_BULLHEAD_YELLOW:MUSCLE -!CREATURE:FISH_BULLHEAD_YELLOW:EYE -#CREATURE:FISH_BULLHEAD_YELLOW:BRAIN -"CREATURE:FISH_BULLHEAD_YELLOW:LUNG -#CREATURE:FISH_BULLHEAD_YELLOW:HEART -#CREATURE:FISH_BULLHEAD_YELLOW:LIVER -!CREATURE:FISH_BULLHEAD_YELLOW:GUT -%CREATURE:FISH_BULLHEAD_YELLOW:STOMACH -%CREATURE:FISH_BULLHEAD_YELLOW:GIZZARD -&CREATURE:FISH_BULLHEAD_YELLOW:PANCREAS -$CREATURE:FISH_BULLHEAD_YELLOW:SPLEEN -$CREATURE:FISH_BULLHEAD_YELLOW:KIDNEY -#CREATURE:FISH_BULLHEAD_BLACK:MUSCLE - CREATURE:FISH_BULLHEAD_BLACK:EYE -"CREATURE:FISH_BULLHEAD_BLACK:BRAIN -!CREATURE:FISH_BULLHEAD_BLACK:LUNG -"CREATURE:FISH_BULLHEAD_BLACK:HEART -"CREATURE:FISH_BULLHEAD_BLACK:LIVER - CREATURE:FISH_BULLHEAD_BLACK:GUT -$CREATURE:FISH_BULLHEAD_BLACK:STOMACH -$CREATURE:FISH_BULLHEAD_BLACK:GIZZARD -%CREATURE:FISH_BULLHEAD_BLACK:PANCREAS -#CREATURE:FISH_BULLHEAD_BLACK:SPLEEN -#CREATURE:FISH_BULLHEAD_BLACK:KIDNEY -%CREATURE:FISH_KNIFEFISH_BANDED:MUSCLE -"CREATURE:FISH_KNIFEFISH_BANDED:EYE -$CREATURE:FISH_KNIFEFISH_BANDED:BRAIN -#CREATURE:FISH_KNIFEFISH_BANDED:LUNG -$CREATURE:FISH_KNIFEFISH_BANDED:HEART -$CREATURE:FISH_KNIFEFISH_BANDED:LIVER -"CREATURE:FISH_KNIFEFISH_BANDED:GUT -&CREATURE:FISH_KNIFEFISH_BANDED:STOMACH -&CREATURE:FISH_KNIFEFISH_BANDED:GIZZARD -'CREATURE:FISH_KNIFEFISH_BANDED:PANCREAS -%CREATURE:FISH_KNIFEFISH_BANDED:SPLEEN -%CREATURE:FISH_KNIFEFISH_BANDED:KIDNEY -CREATURE:FISH_CHAR:MUSCLE -CREATURE:FISH_CHAR:EYE -CREATURE:FISH_CHAR:BRAIN -CREATURE:FISH_CHAR:LUNG -CREATURE:FISH_CHAR:HEART -CREATURE:FISH_CHAR:LIVER -CREATURE:FISH_CHAR:GUT -CREATURE:FISH_CHAR:STOMACH -CREATURE:FISH_CHAR:GIZZARD -CREATURE:FISH_CHAR:PANCREAS -CREATURE:FISH_CHAR:SPLEEN -CREATURE:FISH_CHAR:KIDNEY -"CREATURE:FISH_TROUT_RAINBOW:MUSCLE -CREATURE:FISH_TROUT_RAINBOW:EYE -!CREATURE:FISH_TROUT_RAINBOW:BRAIN - CREATURE:FISH_TROUT_RAINBOW:LUNG -!CREATURE:FISH_TROUT_RAINBOW:HEART -!CREATURE:FISH_TROUT_RAINBOW:LIVER -CREATURE:FISH_TROUT_RAINBOW:GUT -#CREATURE:FISH_TROUT_RAINBOW:STOMACH -#CREATURE:FISH_TROUT_RAINBOW:GIZZARD -$CREATURE:FISH_TROUT_RAINBOW:PANCREAS -"CREATURE:FISH_TROUT_RAINBOW:SPLEEN -"CREATURE:FISH_TROUT_RAINBOW:KIDNEY -"CREATURE:FISH_MOLLY_SAILFIN:MUSCLE -CREATURE:FISH_MOLLY_SAILFIN:EYE -!CREATURE:FISH_MOLLY_SAILFIN:BRAIN - CREATURE:FISH_MOLLY_SAILFIN:LUNG -!CREATURE:FISH_MOLLY_SAILFIN:HEART -!CREATURE:FISH_MOLLY_SAILFIN:LIVER -CREATURE:FISH_MOLLY_SAILFIN:GUT -#CREATURE:FISH_MOLLY_SAILFIN:STOMACH -#CREATURE:FISH_MOLLY_SAILFIN:GIZZARD -$CREATURE:FISH_MOLLY_SAILFIN:PANCREAS -"CREATURE:FISH_MOLLY_SAILFIN:SPLEEN -"CREATURE:FISH_MOLLY_SAILFIN:KIDNEY -CREATURE:FISH_GUPPY:MUSCLE -CREATURE:FISH_GUPPY:EYE -CREATURE:FISH_GUPPY:BRAIN -CREATURE:FISH_GUPPY:LUNG -CREATURE:FISH_GUPPY:HEART -CREATURE:FISH_GUPPY:LIVER -CREATURE:FISH_GUPPY:GUT -CREATURE:FISH_GUPPY:STOMACH -CREATURE:FISH_GUPPY:GIZZARD -CREATURE:FISH_GUPPY:PANCREAS -CREATURE:FISH_GUPPY:SPLEEN -CREATURE:FISH_GUPPY:KIDNEY -CREATURE:FISH_PERCH:MUSCLE -CREATURE:FISH_PERCH:EYE -CREATURE:FISH_PERCH:BRAIN -CREATURE:FISH_PERCH:LUNG -CREATURE:FISH_PERCH:HEART -CREATURE:FISH_PERCH:LIVER -CREATURE:FISH_PERCH:GUT -CREATURE:FISH_PERCH:STOMACH -CREATURE:FISH_PERCH:GIZZARD -CREATURE:FISH_PERCH:PANCREAS -CREATURE:FISH_PERCH:SPLEEN -CREATURE:FISH_PERCH:KIDNEY -CREATURE:DWARF:MUSCLE -CREATURE:DWARF:EYE -CREATURE:DWARF:BRAIN -CREATURE:DWARF:LUNG -CREATURE:DWARF:HEART -CREATURE:DWARF:LIVER -CREATURE:DWARF:GUT -CREATURE:DWARF:STOMACH -CREATURE:DWARF:GIZZARD -CREATURE:DWARF:PANCREAS -CREATURE:DWARF:SPLEEN -CREATURE:DWARF:KIDNEY -CREATURE:HUMAN:MUSCLE -CREATURE:HUMAN:EYE -CREATURE:HUMAN:BRAIN -CREATURE:HUMAN:LUNG -CREATURE:HUMAN:HEART -CREATURE:HUMAN:LIVER -CREATURE:HUMAN:GUT -CREATURE:HUMAN:STOMACH -CREATURE:HUMAN:GIZZARD -CREATURE:HUMAN:PANCREAS -CREATURE:HUMAN:SPLEEN -CREATURE:HUMAN:KIDNEY -CREATURE:ELF:MUSCLE -CREATURE:ELF:EYE -CREATURE:ELF:BRAIN -CREATURE:ELF:LUNG -CREATURE:ELF:HEART -CREATURE:ELF:LIVER -CREATURE:ELF:GUT -CREATURE:ELF:STOMACH -CREATURE:ELF:GIZZARD -CREATURE:ELF:PANCREAS -CREATURE:ELF:SPLEEN -CREATURE:ELF:KIDNEY -CREATURE:GOBLIN:MUSCLE -CREATURE:GOBLIN:EYE -CREATURE:GOBLIN:BRAIN -CREATURE:GOBLIN:LUNG -CREATURE:GOBLIN:HEART -CREATURE:GOBLIN:LIVER -CREATURE:GOBLIN:GUT -CREATURE:GOBLIN:STOMACH -CREATURE:GOBLIN:GIZZARD -CREATURE:GOBLIN:PANCREAS -CREATURE:GOBLIN:SPLEEN -CREATURE:GOBLIN:KIDNEY -CREATURE:KOBOLD:MUSCLE -CREATURE:KOBOLD:EYE -CREATURE:KOBOLD:BRAIN -CREATURE:KOBOLD:LUNG -CREATURE:KOBOLD:HEART -CREATURE:KOBOLD:LIVER -CREATURE:KOBOLD:GUT -CREATURE:KOBOLD:STOMACH -CREATURE:KOBOLD:GIZZARD -CREATURE:KOBOLD:PANCREAS -CREATURE:KOBOLD:SPLEEN -CREATURE:KOBOLD:KIDNEY -CREATURE:GREMLIN:MUSCLE -CREATURE:GREMLIN:EYE -CREATURE:GREMLIN:BRAIN -CREATURE:GREMLIN:LUNG -CREATURE:GREMLIN:HEART -CREATURE:GREMLIN:LIVER -CREATURE:GREMLIN:GUT -CREATURE:GREMLIN:STOMACH -CREATURE:GREMLIN:GIZZARD -CREATURE:GREMLIN:PANCREAS -CREATURE:GREMLIN:SPLEEN -CREATURE:GREMLIN:KIDNEY -CREATURE:TROLL:MUSCLE -CREATURE:TROLL:EYE -CREATURE:TROLL:BRAIN -CREATURE:TROLL:LUNG -CREATURE:TROLL:HEART -CREATURE:TROLL:LIVER -CREATURE:TROLL:GUT -CREATURE:TROLL:STOMACH -CREATURE:TROLL:GIZZARD -CREATURE:TROLL:PANCREAS -CREATURE:TROLL:SPLEEN -CREATURE:TROLL:KIDNEY -CREATURE:OGRE:MUSCLE -CREATURE:OGRE:EYE -CREATURE:OGRE:BRAIN -CREATURE:OGRE:LUNG -CREATURE:OGRE:HEART -CREATURE:OGRE:LIVER -CREATURE:OGRE:GUT -CREATURE:OGRE:STOMACH -CREATURE:OGRE:GIZZARD -CREATURE:OGRE:PANCREAS -CREATURE:OGRE:SPLEEN -CREATURE:OGRE:KIDNEY -CREATURE:UNICORN:MUSCLE -CREATURE:UNICORN:EYE -CREATURE:UNICORN:BRAIN -CREATURE:UNICORN:LUNG -CREATURE:UNICORN:HEART -CREATURE:UNICORN:LIVER -CREATURE:UNICORN:GUT -CREATURE:UNICORN:STOMACH -CREATURE:UNICORN:GIZZARD -CREATURE:UNICORN:PANCREAS -CREATURE:UNICORN:SPLEEN -CREATURE:UNICORN:KIDNEY -CREATURE:DRAGON:MUSCLE -CREATURE:DRAGON:EYE -CREATURE:DRAGON:BRAIN -CREATURE:DRAGON:LUNG -CREATURE:DRAGON:HEART -CREATURE:DRAGON:LIVER -CREATURE:DRAGON:GUT -CREATURE:DRAGON:STOMACH -CREATURE:DRAGON:GIZZARD -CREATURE:DRAGON:PANCREAS -CREATURE:DRAGON:SPLEEN -CREATURE:DRAGON:KIDNEY -CREATURE:SATYR:MUSCLE -CREATURE:SATYR:EYE -CREATURE:SATYR:BRAIN -CREATURE:SATYR:LUNG -CREATURE:SATYR:HEART -CREATURE:SATYR:LIVER -CREATURE:SATYR:GUT -CREATURE:SATYR:STOMACH -CREATURE:SATYR:GIZZARD -CREATURE:SATYR:PANCREAS -CREATURE:SATYR:SPLEEN -CREATURE:SATYR:KIDNEY -CREATURE:GIANT:MUSCLE -CREATURE:GIANT:EYE -CREATURE:GIANT:BRAIN -CREATURE:GIANT:LUNG -CREATURE:GIANT:HEART -CREATURE:GIANT:LIVER -CREATURE:GIANT:GUT -CREATURE:GIANT:STOMACH -CREATURE:GIANT:GIZZARD -CREATURE:GIANT:PANCREAS -CREATURE:GIANT:SPLEEN -CREATURE:GIANT:KIDNEY -CREATURE:CYCLOPS:MUSCLE -CREATURE:CYCLOPS:EYE -CREATURE:CYCLOPS:BRAIN -CREATURE:CYCLOPS:LUNG -CREATURE:CYCLOPS:HEART -CREATURE:CYCLOPS:LIVER -CREATURE:CYCLOPS:GUT -CREATURE:CYCLOPS:STOMACH -CREATURE:CYCLOPS:GIZZARD -CREATURE:CYCLOPS:PANCREAS -CREATURE:CYCLOPS:SPLEEN -CREATURE:CYCLOPS:KIDNEY -CREATURE:ETTIN:MUSCLE -CREATURE:ETTIN:EYE -CREATURE:ETTIN:BRAIN -CREATURE:ETTIN:LUNG -CREATURE:ETTIN:HEART -CREATURE:ETTIN:LIVER -CREATURE:ETTIN:GUT -CREATURE:ETTIN:STOMACH -CREATURE:ETTIN:GIZZARD -CREATURE:ETTIN:PANCREAS -CREATURE:ETTIN:SPLEEN -CREATURE:ETTIN:KIDNEY -CREATURE:MINOTAUR:MUSCLE -CREATURE:MINOTAUR:EYE -CREATURE:MINOTAUR:BRAIN -CREATURE:MINOTAUR:LUNG -CREATURE:MINOTAUR:HEART -CREATURE:MINOTAUR:LIVER -CREATURE:MINOTAUR:GUT -CREATURE:MINOTAUR:STOMACH -CREATURE:MINOTAUR:GIZZARD -CREATURE:MINOTAUR:PANCREAS -CREATURE:MINOTAUR:SPLEEN -CREATURE:MINOTAUR:KIDNEY -CREATURE:YETI:MUSCLE -CREATURE:YETI:EYE -CREATURE:YETI:BRAIN -CREATURE:YETI:LUNG -CREATURE:YETI:HEART -CREATURE:YETI:LIVER -CREATURE:YETI:GUT -CREATURE:YETI:STOMACH -CREATURE:YETI:GIZZARD -CREATURE:YETI:PANCREAS -CREATURE:YETI:SPLEEN -CREATURE:YETI:KIDNEY -CREATURE:SASQUATCH:MUSCLE -CREATURE:SASQUATCH:EYE -CREATURE:SASQUATCH:BRAIN -CREATURE:SASQUATCH:LUNG -CREATURE:SASQUATCH:HEART -CREATURE:SASQUATCH:LIVER -CREATURE:SASQUATCH:GUT -CREATURE:SASQUATCH:STOMACH -CREATURE:SASQUATCH:GIZZARD -CREATURE:SASQUATCH:PANCREAS -CREATURE:SASQUATCH:SPLEEN -CREATURE:SASQUATCH:KIDNEY -CREATURE:BLIZZARD_MAN:MUSCLE -CREATURE:BLIZZARD_MAN:EYE -CREATURE:BLIZZARD_MAN:BRAIN -CREATURE:BLIZZARD_MAN:LUNG -CREATURE:BLIZZARD_MAN:HEART -CREATURE:BLIZZARD_MAN:LIVER -CREATURE:BLIZZARD_MAN:GUT -CREATURE:BLIZZARD_MAN:STOMACH -CREATURE:BLIZZARD_MAN:GIZZARD -CREATURE:BLIZZARD_MAN:PANCREAS -CREATURE:BLIZZARD_MAN:SPLEEN -CREATURE:BLIZZARD_MAN:KIDNEY -CREATURE:WOLF_ICE:MUSCLE -CREATURE:WOLF_ICE:EYE -CREATURE:WOLF_ICE:BRAIN -CREATURE:WOLF_ICE:LUNG -CREATURE:WOLF_ICE:HEART -CREATURE:WOLF_ICE:LIVER -CREATURE:WOLF_ICE:GUT -CREATURE:WOLF_ICE:STOMACH -CREATURE:WOLF_ICE:GIZZARD -CREATURE:WOLF_ICE:PANCREAS -CREATURE:WOLF_ICE:SPLEEN -CREATURE:WOLF_ICE:KIDNEY -CREATURE:FAIRY:MUSCLE -CREATURE:FAIRY:EYE -CREATURE:FAIRY:BRAIN -CREATURE:FAIRY:LUNG -CREATURE:FAIRY:HEART -CREATURE:FAIRY:LIVER -CREATURE:FAIRY:GUT -CREATURE:FAIRY:STOMACH -CREATURE:FAIRY:GIZZARD -CREATURE:FAIRY:PANCREAS -CREATURE:FAIRY:SPLEEN -CREATURE:FAIRY:KIDNEY -CREATURE:PIXIE:MUSCLE -CREATURE:PIXIE:EYE -CREATURE:PIXIE:BRAIN -CREATURE:PIXIE:LUNG -CREATURE:PIXIE:HEART -CREATURE:PIXIE:LIVER -CREATURE:PIXIE:GUT -CREATURE:PIXIE:STOMACH -CREATURE:PIXIE:GIZZARD -CREATURE:PIXIE:PANCREAS -CREATURE:PIXIE:SPLEEN -CREATURE:PIXIE:KIDNEY -CREATURE:BEAK_DOG:MUSCLE -CREATURE:BEAK_DOG:EYE -CREATURE:BEAK_DOG:BRAIN -CREATURE:BEAK_DOG:LUNG -CREATURE:BEAK_DOG:HEART -CREATURE:BEAK_DOG:LIVER -CREATURE:BEAK_DOG:GUT -CREATURE:BEAK_DOG:STOMACH -CREATURE:BEAK_DOG:GIZZARD -CREATURE:BEAK_DOG:PANCREAS -CREATURE:BEAK_DOG:SPLEEN -CREATURE:BEAK_DOG:KIDNEY -CREATURE:GRIMELING:MUSCLE -CREATURE:GRIMELING:EYE -CREATURE:GRIMELING:BRAIN -CREATURE:GRIMELING:LUNG -CREATURE:GRIMELING:HEART -CREATURE:GRIMELING:LIVER -CREATURE:GRIMELING:GUT -CREATURE:GRIMELING:STOMACH -CREATURE:GRIMELING:GIZZARD -CREATURE:GRIMELING:PANCREAS -CREATURE:GRIMELING:SPLEEN -CREATURE:GRIMELING:KIDNEY -CREATURE:BLENDEC_FOUL:MUSCLE -CREATURE:BLENDEC_FOUL:EYE -CREATURE:BLENDEC_FOUL:BRAIN -CREATURE:BLENDEC_FOUL:LUNG -CREATURE:BLENDEC_FOUL:HEART -CREATURE:BLENDEC_FOUL:LIVER -CREATURE:BLENDEC_FOUL:GUT -CREATURE:BLENDEC_FOUL:STOMACH -CREATURE:BLENDEC_FOUL:GIZZARD -CREATURE:BLENDEC_FOUL:PANCREAS -CREATURE:BLENDEC_FOUL:SPLEEN -CREATURE:BLENDEC_FOUL:KIDNEY -CREATURE:STRANGLER:MUSCLE -CREATURE:STRANGLER:EYE -CREATURE:STRANGLER:BRAIN -CREATURE:STRANGLER:LUNG -CREATURE:STRANGLER:HEART -CREATURE:STRANGLER:LIVER -CREATURE:STRANGLER:GUT -CREATURE:STRANGLER:STOMACH -CREATURE:STRANGLER:GIZZARD -CREATURE:STRANGLER:PANCREAS -CREATURE:STRANGLER:SPLEEN -CREATURE:STRANGLER:KIDNEY -CREATURE:NIGHTWING:MUSCLE -CREATURE:NIGHTWING:EYE -CREATURE:NIGHTWING:BRAIN -CREATURE:NIGHTWING:LUNG -CREATURE:NIGHTWING:HEART -CREATURE:NIGHTWING:LIVER -CREATURE:NIGHTWING:GUT -CREATURE:NIGHTWING:STOMACH -CREATURE:NIGHTWING:GIZZARD -CREATURE:NIGHTWING:PANCREAS -CREATURE:NIGHTWING:SPLEEN -CREATURE:NIGHTWING:KIDNEY -CREATURE:HARPY:MUSCLE -CREATURE:HARPY:EYE -CREATURE:HARPY:BRAIN -CREATURE:HARPY:LUNG -CREATURE:HARPY:HEART -CREATURE:HARPY:LIVER -CREATURE:HARPY:GUT -CREATURE:HARPY:STOMACH -CREATURE:HARPY:GIZZARD -CREATURE:HARPY:PANCREAS -CREATURE:HARPY:SPLEEN -CREATURE:HARPY:KIDNEY -CREATURE:HYDRA:MUSCLE -CREATURE:HYDRA:EYE -CREATURE:HYDRA:BRAIN -CREATURE:HYDRA:LUNG -CREATURE:HYDRA:HEART -CREATURE:HYDRA:LIVER -CREATURE:HYDRA:GUT -CREATURE:HYDRA:STOMACH -CREATURE:HYDRA:GIZZARD -CREATURE:HYDRA:PANCREAS -CREATURE:HYDRA:SPLEEN -CREATURE:HYDRA:KIDNEY -CREATURE:MERPERSON:MUSCLE -CREATURE:MERPERSON:EYE -CREATURE:MERPERSON:BRAIN -CREATURE:MERPERSON:LUNG -CREATURE:MERPERSON:HEART -CREATURE:MERPERSON:LIVER -CREATURE:MERPERSON:GUT -CREATURE:MERPERSON:STOMACH -CREATURE:MERPERSON:GIZZARD -CREATURE:MERPERSON:PANCREAS -CREATURE:MERPERSON:SPLEEN -CREATURE:MERPERSON:KIDNEY -CREATURE:SEA_SERPENT:MUSCLE -CREATURE:SEA_SERPENT:EYE -CREATURE:SEA_SERPENT:BRAIN -CREATURE:SEA_SERPENT:LUNG -CREATURE:SEA_SERPENT:HEART -CREATURE:SEA_SERPENT:LIVER -CREATURE:SEA_SERPENT:GUT -CREATURE:SEA_SERPENT:STOMACH -CREATURE:SEA_SERPENT:GIZZARD -CREATURE:SEA_SERPENT:PANCREAS -CREATURE:SEA_SERPENT:SPLEEN -CREATURE:SEA_SERPENT:KIDNEY -CREATURE:SEA_MONSTER:MUSCLE -CREATURE:SEA_MONSTER:EYE -CREATURE:SEA_MONSTER:BRAIN -CREATURE:SEA_MONSTER:LUNG -CREATURE:SEA_MONSTER:HEART -CREATURE:SEA_MONSTER:LIVER -CREATURE:SEA_MONSTER:GUT -CREATURE:SEA_MONSTER:STOMACH -CREATURE:SEA_MONSTER:GIZZARD -CREATURE:SEA_MONSTER:PANCREAS -CREATURE:SEA_MONSTER:SPLEEN -CREATURE:SEA_MONSTER:KIDNEY -CREATURE:BIRD_ROC:MUSCLE -CREATURE:BIRD_ROC:EYE -CREATURE:BIRD_ROC:BRAIN -CREATURE:BIRD_ROC:LUNG -CREATURE:BIRD_ROC:HEART -CREATURE:BIRD_ROC:LIVER -CREATURE:BIRD_ROC:GUT -CREATURE:BIRD_ROC:STOMACH -CREATURE:BIRD_ROC:GIZZARD -CREATURE:BIRD_ROC:PANCREAS -CREATURE:BIRD_ROC:SPLEEN -CREATURE:BIRD_ROC:KIDNEY -CREATURE:CROCODILE_CAVE:MUSCLE -CREATURE:CROCODILE_CAVE:EYE -CREATURE:CROCODILE_CAVE:BRAIN -CREATURE:CROCODILE_CAVE:LUNG -CREATURE:CROCODILE_CAVE:HEART -CREATURE:CROCODILE_CAVE:LIVER -CREATURE:CROCODILE_CAVE:GUT -CREATURE:CROCODILE_CAVE:STOMACH -CREATURE:CROCODILE_CAVE:GIZZARD - CREATURE:CROCODILE_CAVE:PANCREAS -CREATURE:CROCODILE_CAVE:SPLEEN -CREATURE:CROCODILE_CAVE:KIDNEY -CREATURE:TOAD_GIANT_CAVE:MUSCLE -CREATURE:TOAD_GIANT_CAVE:EYE -CREATURE:TOAD_GIANT_CAVE:BRAIN -CREATURE:TOAD_GIANT_CAVE:LUNG -CREATURE:TOAD_GIANT_CAVE:HEART -CREATURE:TOAD_GIANT_CAVE:LIVER -CREATURE:TOAD_GIANT_CAVE:GUT - CREATURE:TOAD_GIANT_CAVE:STOMACH - CREATURE:TOAD_GIANT_CAVE:GIZZARD -!CREATURE:TOAD_GIANT_CAVE:PANCREAS -CREATURE:TOAD_GIANT_CAVE:SPLEEN -CREATURE:TOAD_GIANT_CAVE:KIDNEY -CREATURE:OLM_GIANT:MUSCLE -CREATURE:OLM_GIANT:EYE -CREATURE:OLM_GIANT:BRAIN -CREATURE:OLM_GIANT:LUNG -CREATURE:OLM_GIANT:HEART -CREATURE:OLM_GIANT:LIVER -CREATURE:OLM_GIANT:GUT -CREATURE:OLM_GIANT:STOMACH -CREATURE:OLM_GIANT:GIZZARD -CREATURE:OLM_GIANT:PANCREAS -CREATURE:OLM_GIANT:SPLEEN -CREATURE:OLM_GIANT:KIDNEY -CREATURE:BAT_GIANT:MUSCLE -CREATURE:BAT_GIANT:EYE -CREATURE:BAT_GIANT:BRAIN -CREATURE:BAT_GIANT:LUNG -CREATURE:BAT_GIANT:HEART -CREATURE:BAT_GIANT:LIVER -CREATURE:BAT_GIANT:GUT -CREATURE:BAT_GIANT:STOMACH -CREATURE:BAT_GIANT:GIZZARD -CREATURE:BAT_GIANT:PANCREAS -CREATURE:BAT_GIANT:SPLEEN -CREATURE:BAT_GIANT:KIDNEY -CREATURE:RAT_GIANT:MUSCLE -CREATURE:RAT_GIANT:EYE -CREATURE:RAT_GIANT:BRAIN -CREATURE:RAT_GIANT:LUNG -CREATURE:RAT_GIANT:HEART -CREATURE:RAT_GIANT:LIVER -CREATURE:RAT_GIANT:GUT -CREATURE:RAT_GIANT:STOMACH -CREATURE:RAT_GIANT:GIZZARD -CREATURE:RAT_GIANT:PANCREAS -CREATURE:RAT_GIANT:SPLEEN -CREATURE:RAT_GIANT:KIDNEY -CREATURE:RAT_LARGE:MUSCLE -CREATURE:RAT_LARGE:EYE -CREATURE:RAT_LARGE:BRAIN -CREATURE:RAT_LARGE:LUNG -CREATURE:RAT_LARGE:HEART -CREATURE:RAT_LARGE:LIVER -CREATURE:RAT_LARGE:GUT -CREATURE:RAT_LARGE:STOMACH -CREATURE:RAT_LARGE:GIZZARD -CREATURE:RAT_LARGE:PANCREAS -CREATURE:RAT_LARGE:SPLEEN -CREATURE:RAT_LARGE:KIDNEY -CREATURE:MOLE_DOG_NAKED:MUSCLE -CREATURE:MOLE_DOG_NAKED:EYE -CREATURE:MOLE_DOG_NAKED:BRAIN -CREATURE:MOLE_DOG_NAKED:LUNG -CREATURE:MOLE_DOG_NAKED:HEART -CREATURE:MOLE_DOG_NAKED:LIVER -CREATURE:MOLE_DOG_NAKED:GUT -CREATURE:MOLE_DOG_NAKED:STOMACH -CREATURE:MOLE_DOG_NAKED:GIZZARD - CREATURE:MOLE_DOG_NAKED:PANCREAS -CREATURE:MOLE_DOG_NAKED:SPLEEN -CREATURE:MOLE_DOG_NAKED:KIDNEY -CREATURE:TROGLODYTE:MUSCLE -CREATURE:TROGLODYTE:EYE -CREATURE:TROGLODYTE:BRAIN -CREATURE:TROGLODYTE:LUNG -CREATURE:TROGLODYTE:HEART -CREATURE:TROGLODYTE:LIVER -CREATURE:TROGLODYTE:GUT -CREATURE:TROGLODYTE:STOMACH -CREATURE:TROGLODYTE:GIZZARD -CREATURE:TROGLODYTE:PANCREAS -CREATURE:TROGLODYTE:SPLEEN -CREATURE:TROGLODYTE:KIDNEY -CREATURE:MOLE_GIANT:MUSCLE -CREATURE:MOLE_GIANT:EYE -CREATURE:MOLE_GIANT:BRAIN -CREATURE:MOLE_GIANT:LUNG -CREATURE:MOLE_GIANT:HEART -CREATURE:MOLE_GIANT:LIVER -CREATURE:MOLE_GIANT:GUT -CREATURE:MOLE_GIANT:STOMACH -CREATURE:MOLE_GIANT:GIZZARD -CREATURE:MOLE_GIANT:PANCREAS -CREATURE:MOLE_GIANT:SPLEEN -CREATURE:MOLE_GIANT:KIDNEY -CREATURE:IMP_FIRE:MUSCLE -CREATURE:IMP_FIRE:EYE -CREATURE:IMP_FIRE:BRAIN -CREATURE:IMP_FIRE:LUNG -CREATURE:IMP_FIRE:HEART -CREATURE:IMP_FIRE:LIVER -CREATURE:IMP_FIRE:GUT -CREATURE:IMP_FIRE:STOMACH -CREATURE:IMP_FIRE:GIZZARD -CREATURE:IMP_FIRE:PANCREAS -CREATURE:IMP_FIRE:SPLEEN -CREATURE:IMP_FIRE:KIDNEY -!CREATURE:SPIDER_CAVE_GIANT:MUSCLE -CREATURE:SPIDER_CAVE_GIANT:EYE - CREATURE:SPIDER_CAVE_GIANT:BRAIN -CREATURE:SPIDER_CAVE_GIANT:LUNG - CREATURE:SPIDER_CAVE_GIANT:HEART - CREATURE:SPIDER_CAVE_GIANT:LIVER -CREATURE:SPIDER_CAVE_GIANT:GUT -"CREATURE:SPIDER_CAVE_GIANT:STOMACH -"CREATURE:SPIDER_CAVE_GIANT:GIZZARD -#CREATURE:SPIDER_CAVE_GIANT:PANCREAS -!CREATURE:SPIDER_CAVE_GIANT:SPLEEN -!CREATURE:SPIDER_CAVE_GIANT:KIDNEY -CREATURE:SPIDER_CAVE:MUSCLE -CREATURE:SPIDER_CAVE:EYE -CREATURE:SPIDER_CAVE:BRAIN -CREATURE:SPIDER_CAVE:LUNG -CREATURE:SPIDER_CAVE:HEART -CREATURE:SPIDER_CAVE:LIVER -CREATURE:SPIDER_CAVE:GUT -CREATURE:SPIDER_CAVE:STOMACH -CREATURE:SPIDER_CAVE:GIZZARD -CREATURE:SPIDER_CAVE:PANCREAS -CREATURE:SPIDER_CAVE:SPLEEN -CREATURE:SPIDER_CAVE:KIDNEY -CREATURE:FISH_CAVE:MUSCLE -CREATURE:FISH_CAVE:BRAIN -CREATURE:FISH_CAVE:LUNG -CREATURE:FISH_CAVE:HEART -CREATURE:FISH_CAVE:LIVER -CREATURE:FISH_CAVE:GUT -CREATURE:FISH_CAVE:STOMACH -CREATURE:FISH_CAVE:GIZZARD -CREATURE:FISH_CAVE:PANCREAS -CREATURE:FISH_CAVE:SPLEEN -CREATURE:FISH_CAVE:KIDNEY -CREATURE:CAVE_FISH_MAN:MUSCLE -CREATURE:CAVE_FISH_MAN:BRAIN -CREATURE:CAVE_FISH_MAN:LUNG -CREATURE:CAVE_FISH_MAN:HEART -CREATURE:CAVE_FISH_MAN:LIVER -CREATURE:CAVE_FISH_MAN:GUT -CREATURE:CAVE_FISH_MAN:STOMACH -CREATURE:CAVE_FISH_MAN:GIZZARD -CREATURE:CAVE_FISH_MAN:PANCREAS -CREATURE:CAVE_FISH_MAN:SPLEEN -CREATURE:CAVE_FISH_MAN:KIDNEY -CREATURE:LOBSTER_CAVE:MUSCLE -CREATURE:LOBSTER_CAVE:EYE -CREATURE:LOBSTER_CAVE:BRAIN -CREATURE:LOBSTER_CAVE:LUNG -CREATURE:LOBSTER_CAVE:HEART -CREATURE:LOBSTER_CAVE:LIVER -CREATURE:LOBSTER_CAVE:GUT -CREATURE:LOBSTER_CAVE:STOMACH -CREATURE:LOBSTER_CAVE:GIZZARD -CREATURE:LOBSTER_CAVE:PANCREAS -CREATURE:LOBSTER_CAVE:SPLEEN -CREATURE:LOBSTER_CAVE:KIDNEY -CREATURE:OLM:MUSCLE -CREATURE:OLM:EYE -CREATURE:OLM:BRAIN -CREATURE:OLM:LUNG -CREATURE:OLM:HEART -CREATURE:OLM:LIVER -CREATURE:OLM:GUT -CREATURE:OLM:STOMACH -CREATURE:OLM:GIZZARD -CREATURE:OLM:PANCREAS -CREATURE:OLM:SPLEEN -CREATURE:OLM:KIDNEY -CREATURE:OLM_MAN:MUSCLE -CREATURE:OLM_MAN:EYE -CREATURE:OLM_MAN:BRAIN -CREATURE:OLM_MAN:LUNG -CREATURE:OLM_MAN:HEART -CREATURE:OLM_MAN:LIVER -CREATURE:OLM_MAN:GUT -CREATURE:OLM_MAN:STOMACH -CREATURE:OLM_MAN:GIZZARD -CREATURE:OLM_MAN:PANCREAS -CREATURE:OLM_MAN:SPLEEN -CREATURE:OLM_MAN:KIDNEY -CREATURE:BAT:MUSCLE -CREATURE:BAT:EYE -CREATURE:BAT:BRAIN -CREATURE:BAT:LUNG -CREATURE:BAT:HEART -CREATURE:BAT:LIVER -CREATURE:BAT:GUT -CREATURE:BAT:STOMACH -CREATURE:BAT:GIZZARD -CREATURE:BAT:PANCREAS -CREATURE:BAT:SPLEEN -CREATURE:BAT:KIDNEY -CREATURE:BAT_MAN:MUSCLE -CREATURE:BAT_MAN:EYE -CREATURE:BAT_MAN:BRAIN -CREATURE:BAT_MAN:LUNG -CREATURE:BAT_MAN:HEART -CREATURE:BAT_MAN:LIVER -CREATURE:BAT_MAN:GUT -CREATURE:BAT_MAN:STOMACH -CREATURE:BAT_MAN:GIZZARD -CREATURE:BAT_MAN:PANCREAS -CREATURE:BAT_MAN:SPLEEN -CREATURE:BAT_MAN:KIDNEY -CREATURE:MAGGOT_PURRING:MUSCLE -CREATURE:MAGGOT_PURRING:EYE -CREATURE:MAGGOT_PURRING:BRAIN -CREATURE:MAGGOT_PURRING:LUNG -CREATURE:MAGGOT_PURRING:HEART -CREATURE:MAGGOT_PURRING:LIVER -CREATURE:MAGGOT_PURRING:GUT -CREATURE:MAGGOT_PURRING:STOMACH -CREATURE:MAGGOT_PURRING:GIZZARD - CREATURE:MAGGOT_PURRING:PANCREAS -CREATURE:MAGGOT_PURRING:SPLEEN -CREATURE:MAGGOT_PURRING:KIDNEY -!CREATURE:BIRD_SWALLOW_CAVE:MUSCLE -CREATURE:BIRD_SWALLOW_CAVE:EYE - CREATURE:BIRD_SWALLOW_CAVE:BRAIN -CREATURE:BIRD_SWALLOW_CAVE:LUNG - CREATURE:BIRD_SWALLOW_CAVE:HEART - CREATURE:BIRD_SWALLOW_CAVE:LIVER -CREATURE:BIRD_SWALLOW_CAVE:GUT -"CREATURE:BIRD_SWALLOW_CAVE:STOMACH -"CREATURE:BIRD_SWALLOW_CAVE:GIZZARD -#CREATURE:BIRD_SWALLOW_CAVE:PANCREAS -!CREATURE:BIRD_SWALLOW_CAVE:SPLEEN -!CREATURE:BIRD_SWALLOW_CAVE:KIDNEY - CREATURE:CAVE_SWALLOW_MAN:MUSCLE -CREATURE:CAVE_SWALLOW_MAN:EYE -CREATURE:CAVE_SWALLOW_MAN:BRAIN -CREATURE:CAVE_SWALLOW_MAN:LUNG -CREATURE:CAVE_SWALLOW_MAN:HEART -CREATURE:CAVE_SWALLOW_MAN:LIVER -CREATURE:CAVE_SWALLOW_MAN:GUT -!CREATURE:CAVE_SWALLOW_MAN:STOMACH -!CREATURE:CAVE_SWALLOW_MAN:GIZZARD -"CREATURE:CAVE_SWALLOW_MAN:PANCREAS - CREATURE:CAVE_SWALLOW_MAN:SPLEEN - CREATURE:CAVE_SWALLOW_MAN:KIDNEY -'CREATURE:BIRD_SWALLOW_CAVE_GIANT:MUSCLE -$CREATURE:BIRD_SWALLOW_CAVE_GIANT:EYE -&CREATURE:BIRD_SWALLOW_CAVE_GIANT:BRAIN -%CREATURE:BIRD_SWALLOW_CAVE_GIANT:LUNG -&CREATURE:BIRD_SWALLOW_CAVE_GIANT:HEART -&CREATURE:BIRD_SWALLOW_CAVE_GIANT:LIVER -$CREATURE:BIRD_SWALLOW_CAVE_GIANT:GUT -(CREATURE:BIRD_SWALLOW_CAVE_GIANT:STOMACH -(CREATURE:BIRD_SWALLOW_CAVE_GIANT:GIZZARD -)CREATURE:BIRD_SWALLOW_CAVE_GIANT:PANCREAS -'CREATURE:BIRD_SWALLOW_CAVE_GIANT:SPLEEN -'CREATURE:BIRD_SWALLOW_CAVE_GIANT:KIDNEY -CREATURE:AMPHIBIAN_MAN:MUSCLE -CREATURE:AMPHIBIAN_MAN:EYE -CREATURE:AMPHIBIAN_MAN:BRAIN -CREATURE:AMPHIBIAN_MAN:LUNG -CREATURE:AMPHIBIAN_MAN:HEART -CREATURE:AMPHIBIAN_MAN:LIVER -CREATURE:AMPHIBIAN_MAN:GUT -CREATURE:AMPHIBIAN_MAN:STOMACH -CREATURE:AMPHIBIAN_MAN:GIZZARD -CREATURE:AMPHIBIAN_MAN:PANCREAS -CREATURE:AMPHIBIAN_MAN:SPLEEN -CREATURE:AMPHIBIAN_MAN:KIDNEY -CREATURE:REPTILE_MAN:MUSCLE -CREATURE:REPTILE_MAN:EYE -CREATURE:REPTILE_MAN:BRAIN -CREATURE:REPTILE_MAN:LUNG -CREATURE:REPTILE_MAN:HEART -CREATURE:REPTILE_MAN:LIVER -CREATURE:REPTILE_MAN:GUT -CREATURE:REPTILE_MAN:STOMACH -CREATURE:REPTILE_MAN:GIZZARD -CREATURE:REPTILE_MAN:PANCREAS -CREATURE:REPTILE_MAN:SPLEEN -CREATURE:REPTILE_MAN:KIDNEY -CREATURE:SERPENT_MAN:MUSCLE -CREATURE:SERPENT_MAN:EYE -CREATURE:SERPENT_MAN:BRAIN -CREATURE:SERPENT_MAN:LUNG -CREATURE:SERPENT_MAN:HEART -CREATURE:SERPENT_MAN:LIVER -CREATURE:SERPENT_MAN:GUT -CREATURE:SERPENT_MAN:STOMACH -CREATURE:SERPENT_MAN:GIZZARD -CREATURE:SERPENT_MAN:PANCREAS -CREATURE:SERPENT_MAN:SPLEEN -CREATURE:SERPENT_MAN:KIDNEY -CREATURE:ANT_MAN:MUSCLE -CREATURE:ANT_MAN:EYE -CREATURE:ANT_MAN:BRAIN -CREATURE:ANT_MAN:LUNG -CREATURE:ANT_MAN:HEART -CREATURE:ANT_MAN:LIVER -CREATURE:ANT_MAN:GUT -CREATURE:ANT_MAN:STOMACH -CREATURE:ANT_MAN:GIZZARD -CREATURE:ANT_MAN:PANCREAS -CREATURE:ANT_MAN:SPLEEN -CREATURE:ANT_MAN:KIDNEY -CREATURE:RODENT MAN:MUSCLE -CREATURE:RODENT MAN:EYE -CREATURE:RODENT MAN:BRAIN -CREATURE:RODENT MAN:LUNG -CREATURE:RODENT MAN:HEART -CREATURE:RODENT MAN:LIVER -CREATURE:RODENT MAN:GUT -CREATURE:RODENT MAN:STOMACH -CREATURE:RODENT MAN:GIZZARD -CREATURE:RODENT MAN:PANCREAS -CREATURE:RODENT MAN:SPLEEN -CREATURE:RODENT MAN:KIDNEY -CREATURE:WILD_BOAR:MUSCLE -CREATURE:WILD_BOAR:EYE -CREATURE:WILD_BOAR:BRAIN -CREATURE:WILD_BOAR:LUNG -CREATURE:WILD_BOAR:HEART -CREATURE:WILD_BOAR:LIVER -CREATURE:WILD_BOAR:GUT -CREATURE:WILD_BOAR:STOMACH -CREATURE:WILD_BOAR:GIZZARD -CREATURE:WILD_BOAR:PANCREAS -CREATURE:WILD_BOAR:SPLEEN -CREATURE:WILD_BOAR:KIDNEY -CREATURE:WILD_BOAR_MAN:MUSCLE -CREATURE:WILD_BOAR_MAN:EYE -CREATURE:WILD_BOAR_MAN:BRAIN -CREATURE:WILD_BOAR_MAN:LUNG -CREATURE:WILD_BOAR_MAN:HEART -CREATURE:WILD_BOAR_MAN:LIVER -CREATURE:WILD_BOAR_MAN:GUT -CREATURE:WILD_BOAR_MAN:STOMACH -CREATURE:WILD_BOAR_MAN:GIZZARD -CREATURE:WILD_BOAR_MAN:PANCREAS -CREATURE:WILD_BOAR_MAN:SPLEEN -CREATURE:WILD_BOAR_MAN:KIDNEY -CREATURE:GIANT_WILD_BOAR:MUSCLE -CREATURE:GIANT_WILD_BOAR:EYE -CREATURE:GIANT_WILD_BOAR:BRAIN -CREATURE:GIANT_WILD_BOAR:LUNG -CREATURE:GIANT_WILD_BOAR:HEART -CREATURE:GIANT_WILD_BOAR:LIVER -CREATURE:GIANT_WILD_BOAR:GUT - CREATURE:GIANT_WILD_BOAR:STOMACH - CREATURE:GIANT_WILD_BOAR:GIZZARD -!CREATURE:GIANT_WILD_BOAR:PANCREAS -CREATURE:GIANT_WILD_BOAR:SPLEEN -CREATURE:GIANT_WILD_BOAR:KIDNEY -CREATURE:COYOTE:MUSCLE -CREATURE:COYOTE:EYE -CREATURE:COYOTE:BRAIN -CREATURE:COYOTE:LUNG -CREATURE:COYOTE:HEART -CREATURE:COYOTE:LIVER -CREATURE:COYOTE:GUT -CREATURE:COYOTE:STOMACH -CREATURE:COYOTE:GIZZARD -CREATURE:COYOTE:PANCREAS -CREATURE:COYOTE:SPLEEN -CREATURE:COYOTE:KIDNEY -CREATURE:COYOTE_MAN:MUSCLE -CREATURE:COYOTE_MAN:EYE -CREATURE:COYOTE_MAN:BRAIN -CREATURE:COYOTE_MAN:LUNG -CREATURE:COYOTE_MAN:HEART -CREATURE:COYOTE_MAN:LIVER -CREATURE:COYOTE_MAN:GUT -CREATURE:COYOTE_MAN:STOMACH -CREATURE:COYOTE_MAN:GIZZARD -CREATURE:COYOTE_MAN:PANCREAS -CREATURE:COYOTE_MAN:SPLEEN -CREATURE:COYOTE_MAN:KIDNEY -CREATURE:GIANT_COYOTE:MUSCLE -CREATURE:GIANT_COYOTE:EYE -CREATURE:GIANT_COYOTE:BRAIN -CREATURE:GIANT_COYOTE:LUNG -CREATURE:GIANT_COYOTE:HEART -CREATURE:GIANT_COYOTE:LIVER -CREATURE:GIANT_COYOTE:GUT -CREATURE:GIANT_COYOTE:STOMACH -CREATURE:GIANT_COYOTE:GIZZARD -CREATURE:GIANT_COYOTE:PANCREAS -CREATURE:GIANT_COYOTE:SPLEEN -CREATURE:GIANT_COYOTE:KIDNEY -CREATURE:KANGAROO:MUSCLE -CREATURE:KANGAROO:EYE -CREATURE:KANGAROO:BRAIN -CREATURE:KANGAROO:LUNG -CREATURE:KANGAROO:HEART -CREATURE:KANGAROO:LIVER -CREATURE:KANGAROO:GUT -CREATURE:KANGAROO:STOMACH -CREATURE:KANGAROO:GIZZARD -CREATURE:KANGAROO:PANCREAS -CREATURE:KANGAROO:SPLEEN -CREATURE:KANGAROO:KIDNEY -CREATURE:KANGAROO_MAN:MUSCLE -CREATURE:KANGAROO_MAN:EYE -CREATURE:KANGAROO_MAN:BRAIN -CREATURE:KANGAROO_MAN:LUNG -CREATURE:KANGAROO_MAN:HEART -CREATURE:KANGAROO_MAN:LIVER -CREATURE:KANGAROO_MAN:GUT -CREATURE:KANGAROO_MAN:STOMACH -CREATURE:KANGAROO_MAN:GIZZARD -CREATURE:KANGAROO_MAN:PANCREAS -CREATURE:KANGAROO_MAN:SPLEEN -CREATURE:KANGAROO_MAN:KIDNEY -CREATURE:GIANT_KANGAROO:MUSCLE -CREATURE:GIANT_KANGAROO:EYE -CREATURE:GIANT_KANGAROO:BRAIN -CREATURE:GIANT_KANGAROO:LUNG -CREATURE:GIANT_KANGAROO:HEART -CREATURE:GIANT_KANGAROO:LIVER -CREATURE:GIANT_KANGAROO:GUT -CREATURE:GIANT_KANGAROO:STOMACH -CREATURE:GIANT_KANGAROO:GIZZARD - CREATURE:GIANT_KANGAROO:PANCREAS -CREATURE:GIANT_KANGAROO:SPLEEN -CREATURE:GIANT_KANGAROO:KIDNEY -CREATURE:KOALA:MUSCLE -CREATURE:KOALA:EYE -CREATURE:KOALA:BRAIN -CREATURE:KOALA:LUNG -CREATURE:KOALA:HEART -CREATURE:KOALA:LIVER -CREATURE:KOALA:GUT -CREATURE:KOALA:STOMACH -CREATURE:KOALA:GIZZARD -CREATURE:KOALA:PANCREAS -CREATURE:KOALA:SPLEEN -CREATURE:KOALA:KIDNEY -CREATURE:KOALA_MAN:MUSCLE -CREATURE:KOALA_MAN:EYE -CREATURE:KOALA_MAN:BRAIN -CREATURE:KOALA_MAN:LUNG -CREATURE:KOALA_MAN:HEART -CREATURE:KOALA_MAN:LIVER -CREATURE:KOALA_MAN:GUT -CREATURE:KOALA_MAN:STOMACH -CREATURE:KOALA_MAN:GIZZARD -CREATURE:KOALA_MAN:PANCREAS -CREATURE:KOALA_MAN:SPLEEN -CREATURE:KOALA_MAN:KIDNEY -CREATURE:GIANT_KOALA:MUSCLE -CREATURE:GIANT_KOALA:EYE -CREATURE:GIANT_KOALA:BRAIN -CREATURE:GIANT_KOALA:LUNG -CREATURE:GIANT_KOALA:HEART -CREATURE:GIANT_KOALA:LIVER -CREATURE:GIANT_KOALA:GUT -CREATURE:GIANT_KOALA:STOMACH -CREATURE:GIANT_KOALA:GIZZARD -CREATURE:GIANT_KOALA:PANCREAS -CREATURE:GIANT_KOALA:SPLEEN -CREATURE:GIANT_KOALA:KIDNEY -CREATURE:ADDER:MUSCLE -CREATURE:ADDER:EYE -CREATURE:ADDER:BRAIN -CREATURE:ADDER:LUNG -CREATURE:ADDER:HEART -CREATURE:ADDER:LIVER -CREATURE:ADDER:GUT -CREATURE:ADDER:STOMACH -CREATURE:ADDER:GIZZARD -CREATURE:ADDER:PANCREAS -CREATURE:ADDER:SPLEEN -CREATURE:ADDER:KIDNEY -CREATURE:ADDER_MAN:MUSCLE -CREATURE:ADDER_MAN:EYE -CREATURE:ADDER_MAN:BRAIN -CREATURE:ADDER_MAN:LUNG -CREATURE:ADDER_MAN:HEART -CREATURE:ADDER_MAN:LIVER -CREATURE:ADDER_MAN:GUT -CREATURE:ADDER_MAN:STOMACH -CREATURE:ADDER_MAN:GIZZARD -CREATURE:ADDER_MAN:PANCREAS -CREATURE:ADDER_MAN:SPLEEN -CREATURE:ADDER_MAN:KIDNEY -CREATURE:GIANT_ADDER:MUSCLE -CREATURE:GIANT_ADDER:EYE -CREATURE:GIANT_ADDER:BRAIN -CREATURE:GIANT_ADDER:LUNG -CREATURE:GIANT_ADDER:HEART -CREATURE:GIANT_ADDER:LIVER -CREATURE:GIANT_ADDER:GUT -CREATURE:GIANT_ADDER:STOMACH -CREATURE:GIANT_ADDER:GIZZARD -CREATURE:GIANT_ADDER:PANCREAS -CREATURE:GIANT_ADDER:SPLEEN -CREATURE:GIANT_ADDER:KIDNEY -CREATURE:ECHIDNA:MUSCLE -CREATURE:ECHIDNA:EYE -CREATURE:ECHIDNA:BRAIN -CREATURE:ECHIDNA:LUNG -CREATURE:ECHIDNA:HEART -CREATURE:ECHIDNA:LIVER -CREATURE:ECHIDNA:GUT -CREATURE:ECHIDNA:STOMACH -CREATURE:ECHIDNA:GIZZARD -CREATURE:ECHIDNA:PANCREAS -CREATURE:ECHIDNA:SPLEEN -CREATURE:ECHIDNA:KIDNEY -CREATURE:ECHIDNA_MAN:MUSCLE -CREATURE:ECHIDNA_MAN:EYE -CREATURE:ECHIDNA_MAN:BRAIN -CREATURE:ECHIDNA_MAN:LUNG -CREATURE:ECHIDNA_MAN:HEART -CREATURE:ECHIDNA_MAN:LIVER -CREATURE:ECHIDNA_MAN:GUT -CREATURE:ECHIDNA_MAN:STOMACH -CREATURE:ECHIDNA_MAN:GIZZARD -CREATURE:ECHIDNA_MAN:PANCREAS -CREATURE:ECHIDNA_MAN:SPLEEN -CREATURE:ECHIDNA_MAN:KIDNEY -CREATURE:GIANT_ECHIDNA:MUSCLE -CREATURE:GIANT_ECHIDNA:EYE -CREATURE:GIANT_ECHIDNA:BRAIN -CREATURE:GIANT_ECHIDNA:LUNG -CREATURE:GIANT_ECHIDNA:HEART -CREATURE:GIANT_ECHIDNA:LIVER -CREATURE:GIANT_ECHIDNA:GUT -CREATURE:GIANT_ECHIDNA:STOMACH -CREATURE:GIANT_ECHIDNA:GIZZARD -CREATURE:GIANT_ECHIDNA:PANCREAS -CREATURE:GIANT_ECHIDNA:SPLEEN -CREATURE:GIANT_ECHIDNA:KIDNEY -CREATURE:PORCUPINE:MUSCLE -CREATURE:PORCUPINE:EYE -CREATURE:PORCUPINE:BRAIN -CREATURE:PORCUPINE:LUNG -CREATURE:PORCUPINE:HEART -CREATURE:PORCUPINE:LIVER -CREATURE:PORCUPINE:GUT -CREATURE:PORCUPINE:STOMACH -CREATURE:PORCUPINE:GIZZARD -CREATURE:PORCUPINE:PANCREAS -CREATURE:PORCUPINE:SPLEEN -CREATURE:PORCUPINE:KIDNEY -CREATURE:PORCUPINE_MAN:MUSCLE -CREATURE:PORCUPINE_MAN:EYE -CREATURE:PORCUPINE_MAN:BRAIN -CREATURE:PORCUPINE_MAN:LUNG -CREATURE:PORCUPINE_MAN:HEART -CREATURE:PORCUPINE_MAN:LIVER -CREATURE:PORCUPINE_MAN:GUT -CREATURE:PORCUPINE_MAN:STOMACH -CREATURE:PORCUPINE_MAN:GIZZARD -CREATURE:PORCUPINE_MAN:PANCREAS -CREATURE:PORCUPINE_MAN:SPLEEN -CREATURE:PORCUPINE_MAN:KIDNEY -CREATURE:GIANT_PORCUPINE:MUSCLE -CREATURE:GIANT_PORCUPINE:EYE -CREATURE:GIANT_PORCUPINE:BRAIN -CREATURE:GIANT_PORCUPINE:LUNG -CREATURE:GIANT_PORCUPINE:HEART -CREATURE:GIANT_PORCUPINE:LIVER -CREATURE:GIANT_PORCUPINE:GUT - CREATURE:GIANT_PORCUPINE:STOMACH - CREATURE:GIANT_PORCUPINE:GIZZARD -!CREATURE:GIANT_PORCUPINE:PANCREAS -CREATURE:GIANT_PORCUPINE:SPLEEN -CREATURE:GIANT_PORCUPINE:KIDNEY -CREATURE:KINGSNAKE:MUSCLE -CREATURE:KINGSNAKE:EYE -CREATURE:KINGSNAKE:BRAIN -CREATURE:KINGSNAKE:LUNG -CREATURE:KINGSNAKE:HEART -CREATURE:KINGSNAKE:LIVER -CREATURE:KINGSNAKE:GUT -CREATURE:KINGSNAKE:STOMACH -CREATURE:KINGSNAKE:GIZZARD -CREATURE:KINGSNAKE:PANCREAS -CREATURE:KINGSNAKE:SPLEEN -CREATURE:KINGSNAKE:KIDNEY -CREATURE:KINGSNAKE_MAN:MUSCLE -CREATURE:KINGSNAKE_MAN:EYE -CREATURE:KINGSNAKE_MAN:BRAIN -CREATURE:KINGSNAKE_MAN:LUNG -CREATURE:KINGSNAKE_MAN:HEART -CREATURE:KINGSNAKE_MAN:LIVER -CREATURE:KINGSNAKE_MAN:GUT -CREATURE:KINGSNAKE_MAN:STOMACH -CREATURE:KINGSNAKE_MAN:GIZZARD -CREATURE:KINGSNAKE_MAN:PANCREAS -CREATURE:KINGSNAKE_MAN:SPLEEN -CREATURE:KINGSNAKE_MAN:KIDNEY -CREATURE:GIANT_KINGSNAKE:MUSCLE -CREATURE:GIANT_KINGSNAKE:EYE -CREATURE:GIANT_KINGSNAKE:BRAIN -CREATURE:GIANT_KINGSNAKE:LUNG -CREATURE:GIANT_KINGSNAKE:HEART -CREATURE:GIANT_KINGSNAKE:LIVER -CREATURE:GIANT_KINGSNAKE:GUT - CREATURE:GIANT_KINGSNAKE:STOMACH - CREATURE:GIANT_KINGSNAKE:GIZZARD -!CREATURE:GIANT_KINGSNAKE:PANCREAS -CREATURE:GIANT_KINGSNAKE:SPLEEN -CREATURE:GIANT_KINGSNAKE:KIDNEY -CREATURE:GRAY_LANGUR:MUSCLE -CREATURE:GRAY_LANGUR:EYE -CREATURE:GRAY_LANGUR:BRAIN -CREATURE:GRAY_LANGUR:LUNG -CREATURE:GRAY_LANGUR:HEART -CREATURE:GRAY_LANGUR:LIVER -CREATURE:GRAY_LANGUR:GUT -CREATURE:GRAY_LANGUR:STOMACH -CREATURE:GRAY_LANGUR:GIZZARD -CREATURE:GRAY_LANGUR:PANCREAS -CREATURE:GRAY_LANGUR:SPLEEN -CREATURE:GRAY_LANGUR:KIDNEY -CREATURE:GRAY_LANGUR_MAN:MUSCLE -CREATURE:GRAY_LANGUR_MAN:EYE -CREATURE:GRAY_LANGUR_MAN:BRAIN -CREATURE:GRAY_LANGUR_MAN:LUNG -CREATURE:GRAY_LANGUR_MAN:HEART -CREATURE:GRAY_LANGUR_MAN:LIVER -CREATURE:GRAY_LANGUR_MAN:GUT - CREATURE:GRAY_LANGUR_MAN:STOMACH - CREATURE:GRAY_LANGUR_MAN:GIZZARD -!CREATURE:GRAY_LANGUR_MAN:PANCREAS -CREATURE:GRAY_LANGUR_MAN:SPLEEN -CREATURE:GRAY_LANGUR_MAN:KIDNEY -!CREATURE:GIANT_GRAY_LANGUR:MUSCLE -CREATURE:GIANT_GRAY_LANGUR:EYE - CREATURE:GIANT_GRAY_LANGUR:BRAIN -CREATURE:GIANT_GRAY_LANGUR:LUNG - CREATURE:GIANT_GRAY_LANGUR:HEART - CREATURE:GIANT_GRAY_LANGUR:LIVER -CREATURE:GIANT_GRAY_LANGUR:GUT -"CREATURE:GIANT_GRAY_LANGUR:STOMACH -"CREATURE:GIANT_GRAY_LANGUR:GIZZARD -#CREATURE:GIANT_GRAY_LANGUR:PANCREAS -!CREATURE:GIANT_GRAY_LANGUR:SPLEEN -!CREATURE:GIANT_GRAY_LANGUR:KIDNEY -CREATURE:BOBCAT:MUSCLE -CREATURE:BOBCAT:EYE -CREATURE:BOBCAT:BRAIN -CREATURE:BOBCAT:LUNG -CREATURE:BOBCAT:HEART -CREATURE:BOBCAT:LIVER -CREATURE:BOBCAT:GUT -CREATURE:BOBCAT:STOMACH -CREATURE:BOBCAT:GIZZARD -CREATURE:BOBCAT:PANCREAS -CREATURE:BOBCAT:SPLEEN -CREATURE:BOBCAT:KIDNEY -CREATURE:BOBCAT_MAN:MUSCLE -CREATURE:BOBCAT_MAN:EYE -CREATURE:BOBCAT_MAN:BRAIN -CREATURE:BOBCAT_MAN:LUNG -CREATURE:BOBCAT_MAN:HEART -CREATURE:BOBCAT_MAN:LIVER -CREATURE:BOBCAT_MAN:GUT -CREATURE:BOBCAT_MAN:STOMACH -CREATURE:BOBCAT_MAN:GIZZARD -CREATURE:BOBCAT_MAN:PANCREAS -CREATURE:BOBCAT_MAN:SPLEEN -CREATURE:BOBCAT_MAN:KIDNEY -CREATURE:GIANT_BOBCAT:MUSCLE -CREATURE:GIANT_BOBCAT:EYE -CREATURE:GIANT_BOBCAT:BRAIN -CREATURE:GIANT_BOBCAT:LUNG -CREATURE:GIANT_BOBCAT:HEART -CREATURE:GIANT_BOBCAT:LIVER -CREATURE:GIANT_BOBCAT:GUT -CREATURE:GIANT_BOBCAT:STOMACH -CREATURE:GIANT_BOBCAT:GIZZARD -CREATURE:GIANT_BOBCAT:PANCREAS -CREATURE:GIANT_BOBCAT:SPLEEN -CREATURE:GIANT_BOBCAT:KIDNEY -CREATURE:SKUNK:MUSCLE -CREATURE:SKUNK:EYE -CREATURE:SKUNK:BRAIN -CREATURE:SKUNK:LUNG -CREATURE:SKUNK:HEART -CREATURE:SKUNK:LIVER -CREATURE:SKUNK:GUT -CREATURE:SKUNK:STOMACH -CREATURE:SKUNK:GIZZARD -CREATURE:SKUNK:PANCREAS -CREATURE:SKUNK:SPLEEN -CREATURE:SKUNK:KIDNEY -CREATURE:SKUNK_MAN:MUSCLE -CREATURE:SKUNK_MAN:EYE -CREATURE:SKUNK_MAN:BRAIN -CREATURE:SKUNK_MAN:LUNG -CREATURE:SKUNK_MAN:HEART -CREATURE:SKUNK_MAN:LIVER -CREATURE:SKUNK_MAN:GUT -CREATURE:SKUNK_MAN:STOMACH -CREATURE:SKUNK_MAN:GIZZARD -CREATURE:SKUNK_MAN:PANCREAS -CREATURE:SKUNK_MAN:SPLEEN -CREATURE:SKUNK_MAN:KIDNEY -CREATURE:GIANT_SKUNK:MUSCLE -CREATURE:GIANT_SKUNK:EYE -CREATURE:GIANT_SKUNK:BRAIN -CREATURE:GIANT_SKUNK:LUNG -CREATURE:GIANT_SKUNK:HEART -CREATURE:GIANT_SKUNK:LIVER -CREATURE:GIANT_SKUNK:GUT -CREATURE:GIANT_SKUNK:STOMACH -CREATURE:GIANT_SKUNK:GIZZARD -CREATURE:GIANT_SKUNK:PANCREAS -CREATURE:GIANT_SKUNK:SPLEEN -CREATURE:GIANT_SKUNK:KIDNEY -CREATURE:GREEN_TREE_FROG:MUSCLE -CREATURE:GREEN_TREE_FROG:EYE -CREATURE:GREEN_TREE_FROG:BRAIN -CREATURE:GREEN_TREE_FROG:LUNG -CREATURE:GREEN_TREE_FROG:HEART -CREATURE:GREEN_TREE_FROG:LIVER -CREATURE:GREEN_TREE_FROG:GUT - CREATURE:GREEN_TREE_FROG:STOMACH - CREATURE:GREEN_TREE_FROG:GIZZARD -!CREATURE:GREEN_TREE_FROG:PANCREAS -CREATURE:GREEN_TREE_FROG:SPLEEN -CREATURE:GREEN_TREE_FROG:KIDNEY -#CREATURE:GREEN_TREE_FROG_MAN:MUSCLE - CREATURE:GREEN_TREE_FROG_MAN:EYE -"CREATURE:GREEN_TREE_FROG_MAN:BRAIN -!CREATURE:GREEN_TREE_FROG_MAN:LUNG -"CREATURE:GREEN_TREE_FROG_MAN:HEART -"CREATURE:GREEN_TREE_FROG_MAN:LIVER - CREATURE:GREEN_TREE_FROG_MAN:GUT -$CREATURE:GREEN_TREE_FROG_MAN:STOMACH -$CREATURE:GREEN_TREE_FROG_MAN:GIZZARD -%CREATURE:GREEN_TREE_FROG_MAN:PANCREAS -#CREATURE:GREEN_TREE_FROG_MAN:SPLEEN -#CREATURE:GREEN_TREE_FROG_MAN:KIDNEY -%CREATURE:GIANT_GREEN_TREE_FROG:MUSCLE -"CREATURE:GIANT_GREEN_TREE_FROG:EYE -$CREATURE:GIANT_GREEN_TREE_FROG:BRAIN -#CREATURE:GIANT_GREEN_TREE_FROG:LUNG -$CREATURE:GIANT_GREEN_TREE_FROG:HEART -$CREATURE:GIANT_GREEN_TREE_FROG:LIVER -"CREATURE:GIANT_GREEN_TREE_FROG:GUT -&CREATURE:GIANT_GREEN_TREE_FROG:STOMACH -&CREATURE:GIANT_GREEN_TREE_FROG:GIZZARD -'CREATURE:GIANT_GREEN_TREE_FROG:PANCREAS -%CREATURE:GIANT_GREEN_TREE_FROG:SPLEEN -%CREATURE:GIANT_GREEN_TREE_FROG:KIDNEY -CREATURE:HARE:MUSCLE -CREATURE:HARE:EYE -CREATURE:HARE:BRAIN -CREATURE:HARE:LUNG -CREATURE:HARE:HEART -CREATURE:HARE:LIVER -CREATURE:HARE:GUT -CREATURE:HARE:STOMACH -CREATURE:HARE:GIZZARD -CREATURE:HARE:PANCREAS -CREATURE:HARE:SPLEEN -CREATURE:HARE:KIDNEY -CREATURE:HARE_MAN:MUSCLE -CREATURE:HARE_MAN:EYE -CREATURE:HARE_MAN:BRAIN -CREATURE:HARE_MAN:LUNG -CREATURE:HARE_MAN:HEART -CREATURE:HARE_MAN:LIVER -CREATURE:HARE_MAN:GUT -CREATURE:HARE_MAN:STOMACH -CREATURE:HARE_MAN:GIZZARD -CREATURE:HARE_MAN:PANCREAS -CREATURE:HARE_MAN:SPLEEN -CREATURE:HARE_MAN:KIDNEY -CREATURE:GIANT_HARE:MUSCLE -CREATURE:GIANT_HARE:EYE -CREATURE:GIANT_HARE:BRAIN -CREATURE:GIANT_HARE:LUNG -CREATURE:GIANT_HARE:HEART -CREATURE:GIANT_HARE:LIVER -CREATURE:GIANT_HARE:GUT -CREATURE:GIANT_HARE:STOMACH -CREATURE:GIANT_HARE:GIZZARD -CREATURE:GIANT_HARE:PANCREAS -CREATURE:GIANT_HARE:SPLEEN -CREATURE:GIANT_HARE:KIDNEY -CREATURE:RATTLESNAKE:MUSCLE -CREATURE:RATTLESNAKE:EYE -CREATURE:RATTLESNAKE:BRAIN -CREATURE:RATTLESNAKE:LUNG -CREATURE:RATTLESNAKE:HEART -CREATURE:RATTLESNAKE:LIVER -CREATURE:RATTLESNAKE:GUT -CREATURE:RATTLESNAKE:STOMACH -CREATURE:RATTLESNAKE:GIZZARD -CREATURE:RATTLESNAKE:PANCREAS -CREATURE:RATTLESNAKE:SPLEEN -CREATURE:RATTLESNAKE:KIDNEY -CREATURE:RATTLESNAKE_MAN:MUSCLE -CREATURE:RATTLESNAKE_MAN:EYE -CREATURE:RATTLESNAKE_MAN:BRAIN -CREATURE:RATTLESNAKE_MAN:LUNG -CREATURE:RATTLESNAKE_MAN:HEART -CREATURE:RATTLESNAKE_MAN:LIVER -CREATURE:RATTLESNAKE_MAN:GUT - CREATURE:RATTLESNAKE_MAN:STOMACH - CREATURE:RATTLESNAKE_MAN:GIZZARD -!CREATURE:RATTLESNAKE_MAN:PANCREAS -CREATURE:RATTLESNAKE_MAN:SPLEEN -CREATURE:RATTLESNAKE_MAN:KIDNEY -!CREATURE:GIANT_RATTLESNAKE:MUSCLE -CREATURE:GIANT_RATTLESNAKE:EYE - CREATURE:GIANT_RATTLESNAKE:BRAIN -CREATURE:GIANT_RATTLESNAKE:LUNG - CREATURE:GIANT_RATTLESNAKE:HEART - CREATURE:GIANT_RATTLESNAKE:LIVER -CREATURE:GIANT_RATTLESNAKE:GUT -"CREATURE:GIANT_RATTLESNAKE:STOMACH -"CREATURE:GIANT_RATTLESNAKE:GIZZARD -#CREATURE:GIANT_RATTLESNAKE:PANCREAS -!CREATURE:GIANT_RATTLESNAKE:SPLEEN -!CREATURE:GIANT_RATTLESNAKE:KIDNEY -CREATURE:WEASEL:MUSCLE -CREATURE:WEASEL:EYE -CREATURE:WEASEL:BRAIN -CREATURE:WEASEL:LUNG -CREATURE:WEASEL:HEART -CREATURE:WEASEL:LIVER -CREATURE:WEASEL:GUT -CREATURE:WEASEL:STOMACH -CREATURE:WEASEL:GIZZARD -CREATURE:WEASEL:PANCREAS -CREATURE:WEASEL:SPLEEN -CREATURE:WEASEL:KIDNEY -CREATURE:WEASEL_MAN:MUSCLE -CREATURE:WEASEL_MAN:EYE -CREATURE:WEASEL_MAN:BRAIN -CREATURE:WEASEL_MAN:LUNG -CREATURE:WEASEL_MAN:HEART -CREATURE:WEASEL_MAN:LIVER -CREATURE:WEASEL_MAN:GUT -CREATURE:WEASEL_MAN:STOMACH -CREATURE:WEASEL_MAN:GIZZARD -CREATURE:WEASEL_MAN:PANCREAS -CREATURE:WEASEL_MAN:SPLEEN -CREATURE:WEASEL_MAN:KIDNEY -CREATURE:GIANT_WEASEL:MUSCLE -CREATURE:GIANT_WEASEL:EYE -CREATURE:GIANT_WEASEL:BRAIN -CREATURE:GIANT_WEASEL:LUNG -CREATURE:GIANT_WEASEL:HEART -CREATURE:GIANT_WEASEL:LIVER -CREATURE:GIANT_WEASEL:GUT -CREATURE:GIANT_WEASEL:STOMACH -CREATURE:GIANT_WEASEL:GIZZARD -CREATURE:GIANT_WEASEL:PANCREAS -CREATURE:GIANT_WEASEL:SPLEEN -CREATURE:GIANT_WEASEL:KIDNEY - CREATURE:COPPERHEAD_SNAKE:MUSCLE -CREATURE:COPPERHEAD_SNAKE:EYE -CREATURE:COPPERHEAD_SNAKE:BRAIN -CREATURE:COPPERHEAD_SNAKE:LUNG -CREATURE:COPPERHEAD_SNAKE:HEART -CREATURE:COPPERHEAD_SNAKE:LIVER -CREATURE:COPPERHEAD_SNAKE:GUT -!CREATURE:COPPERHEAD_SNAKE:STOMACH -!CREATURE:COPPERHEAD_SNAKE:GIZZARD -"CREATURE:COPPERHEAD_SNAKE:PANCREAS - CREATURE:COPPERHEAD_SNAKE:SPLEEN - CREATURE:COPPERHEAD_SNAKE:KIDNEY -$CREATURE:COPPERHEAD_SNAKE_MAN:MUSCLE -!CREATURE:COPPERHEAD_SNAKE_MAN:EYE -#CREATURE:COPPERHEAD_SNAKE_MAN:BRAIN -"CREATURE:COPPERHEAD_SNAKE_MAN:LUNG -#CREATURE:COPPERHEAD_SNAKE_MAN:HEART -#CREATURE:COPPERHEAD_SNAKE_MAN:LIVER -!CREATURE:COPPERHEAD_SNAKE_MAN:GUT -%CREATURE:COPPERHEAD_SNAKE_MAN:STOMACH -%CREATURE:COPPERHEAD_SNAKE_MAN:GIZZARD -&CREATURE:COPPERHEAD_SNAKE_MAN:PANCREAS -$CREATURE:COPPERHEAD_SNAKE_MAN:SPLEEN -$CREATURE:COPPERHEAD_SNAKE_MAN:KIDNEY -&CREATURE:GIANT_COPPERHEAD_SNAKE:MUSCLE -#CREATURE:GIANT_COPPERHEAD_SNAKE:EYE -%CREATURE:GIANT_COPPERHEAD_SNAKE:BRAIN -$CREATURE:GIANT_COPPERHEAD_SNAKE:LUNG -%CREATURE:GIANT_COPPERHEAD_SNAKE:HEART -%CREATURE:GIANT_COPPERHEAD_SNAKE:LIVER -#CREATURE:GIANT_COPPERHEAD_SNAKE:GUT -'CREATURE:GIANT_COPPERHEAD_SNAKE:STOMACH -'CREATURE:GIANT_COPPERHEAD_SNAKE:GIZZARD -(CREATURE:GIANT_COPPERHEAD_SNAKE:PANCREAS -&CREATURE:GIANT_COPPERHEAD_SNAKE:SPLEEN -&CREATURE:GIANT_COPPERHEAD_SNAKE:KIDNEY -CREATURE:IBEX:MUSCLE -CREATURE:IBEX:EYE -CREATURE:IBEX:BRAIN -CREATURE:IBEX:LUNG -CREATURE:IBEX:HEART -CREATURE:IBEX:LIVER -CREATURE:IBEX:GUT -CREATURE:IBEX:STOMACH -CREATURE:IBEX:GIZZARD -CREATURE:IBEX:PANCREAS -CREATURE:IBEX:SPLEEN -CREATURE:IBEX:KIDNEY -CREATURE:IBEX_MAN:MUSCLE -CREATURE:IBEX_MAN:EYE -CREATURE:IBEX_MAN:BRAIN -CREATURE:IBEX_MAN:LUNG -CREATURE:IBEX_MAN:HEART -CREATURE:IBEX_MAN:LIVER -CREATURE:IBEX_MAN:GUT -CREATURE:IBEX_MAN:STOMACH -CREATURE:IBEX_MAN:GIZZARD -CREATURE:IBEX_MAN:PANCREAS -CREATURE:IBEX_MAN:SPLEEN -CREATURE:IBEX_MAN:KIDNEY -CREATURE:GIANT_IBEX:MUSCLE -CREATURE:GIANT_IBEX:EYE -CREATURE:GIANT_IBEX:BRAIN -CREATURE:GIANT_IBEX:LUNG -CREATURE:GIANT_IBEX:HEART -CREATURE:GIANT_IBEX:LIVER -CREATURE:GIANT_IBEX:GUT -CREATURE:GIANT_IBEX:STOMACH -CREATURE:GIANT_IBEX:GIZZARD -CREATURE:GIANT_IBEX:PANCREAS -CREATURE:GIANT_IBEX:SPLEEN -CREATURE:GIANT_IBEX:KIDNEY -CREATURE:WOMBAT:MUSCLE -CREATURE:WOMBAT:EYE -CREATURE:WOMBAT:BRAIN -CREATURE:WOMBAT:LUNG -CREATURE:WOMBAT:HEART -CREATURE:WOMBAT:LIVER -CREATURE:WOMBAT:GUT -CREATURE:WOMBAT:STOMACH -CREATURE:WOMBAT:GIZZARD -CREATURE:WOMBAT:PANCREAS -CREATURE:WOMBAT:SPLEEN -CREATURE:WOMBAT:KIDNEY -CREATURE:WOMBAT_MAN:MUSCLE -CREATURE:WOMBAT_MAN:EYE -CREATURE:WOMBAT_MAN:BRAIN -CREATURE:WOMBAT_MAN:LUNG -CREATURE:WOMBAT_MAN:HEART -CREATURE:WOMBAT_MAN:LIVER -CREATURE:WOMBAT_MAN:GUT -CREATURE:WOMBAT_MAN:STOMACH -CREATURE:WOMBAT_MAN:GIZZARD -CREATURE:WOMBAT_MAN:PANCREAS -CREATURE:WOMBAT_MAN:SPLEEN -CREATURE:WOMBAT_MAN:KIDNEY -CREATURE:GIANT_WOMBAT:MUSCLE -CREATURE:GIANT_WOMBAT:EYE -CREATURE:GIANT_WOMBAT:BRAIN -CREATURE:GIANT_WOMBAT:LUNG -CREATURE:GIANT_WOMBAT:HEART -CREATURE:GIANT_WOMBAT:LIVER -CREATURE:GIANT_WOMBAT:GUT -CREATURE:GIANT_WOMBAT:STOMACH -CREATURE:GIANT_WOMBAT:GIZZARD -CREATURE:GIANT_WOMBAT:PANCREAS -CREATURE:GIANT_WOMBAT:SPLEEN -CREATURE:GIANT_WOMBAT:KIDNEY -CREATURE:DINGO:MUSCLE -CREATURE:DINGO:EYE -CREATURE:DINGO:BRAIN -CREATURE:DINGO:LUNG -CREATURE:DINGO:HEART -CREATURE:DINGO:LIVER -CREATURE:DINGO:GUT -CREATURE:DINGO:STOMACH -CREATURE:DINGO:GIZZARD -CREATURE:DINGO:PANCREAS -CREATURE:DINGO:SPLEEN -CREATURE:DINGO:KIDNEY -CREATURE:DINGO_MAN:MUSCLE -CREATURE:DINGO_MAN:EYE -CREATURE:DINGO_MAN:BRAIN -CREATURE:DINGO_MAN:LUNG -CREATURE:DINGO_MAN:HEART -CREATURE:DINGO_MAN:LIVER -CREATURE:DINGO_MAN:GUT -CREATURE:DINGO_MAN:STOMACH -CREATURE:DINGO_MAN:GIZZARD -CREATURE:DINGO_MAN:PANCREAS -CREATURE:DINGO_MAN:SPLEEN -CREATURE:DINGO_MAN:KIDNEY -CREATURE:GIANT_DINGO:MUSCLE -CREATURE:GIANT_DINGO:EYE -CREATURE:GIANT_DINGO:BRAIN -CREATURE:GIANT_DINGO:LUNG -CREATURE:GIANT_DINGO:HEART -CREATURE:GIANT_DINGO:LIVER -CREATURE:GIANT_DINGO:GUT -CREATURE:GIANT_DINGO:STOMACH -CREATURE:GIANT_DINGO:GIZZARD -CREATURE:GIANT_DINGO:PANCREAS -CREATURE:GIANT_DINGO:SPLEEN -CREATURE:GIANT_DINGO:KIDNEY -CREATURE:COATI:MUSCLE -CREATURE:COATI:EYE -CREATURE:COATI:BRAIN -CREATURE:COATI:LUNG -CREATURE:COATI:HEART -CREATURE:COATI:LIVER -CREATURE:COATI:GUT -CREATURE:COATI:STOMACH -CREATURE:COATI:GIZZARD -CREATURE:COATI:PANCREAS -CREATURE:COATI:SPLEEN -CREATURE:COATI:KIDNEY -CREATURE:COATI_MAN:MUSCLE -CREATURE:COATI_MAN:EYE -CREATURE:COATI_MAN:BRAIN -CREATURE:COATI_MAN:LUNG -CREATURE:COATI_MAN:HEART -CREATURE:COATI_MAN:LIVER -CREATURE:COATI_MAN:GUT -CREATURE:COATI_MAN:STOMACH -CREATURE:COATI_MAN:GIZZARD -CREATURE:COATI_MAN:PANCREAS -CREATURE:COATI_MAN:SPLEEN -CREATURE:COATI_MAN:KIDNEY -CREATURE:GIANT_COATI:MUSCLE -CREATURE:GIANT_COATI:EYE -CREATURE:GIANT_COATI:BRAIN -CREATURE:GIANT_COATI:LUNG -CREATURE:GIANT_COATI:HEART -CREATURE:GIANT_COATI:LIVER -CREATURE:GIANT_COATI:GUT -CREATURE:GIANT_COATI:STOMACH -CREATURE:GIANT_COATI:GIZZARD -CREATURE:GIANT_COATI:PANCREAS -CREATURE:GIANT_COATI:SPLEEN -CREATURE:GIANT_COATI:KIDNEY -CREATURE:OPOSSUM:MUSCLE -CREATURE:OPOSSUM:EYE -CREATURE:OPOSSUM:BRAIN -CREATURE:OPOSSUM:LUNG -CREATURE:OPOSSUM:HEART -CREATURE:OPOSSUM:LIVER -CREATURE:OPOSSUM:GUT -CREATURE:OPOSSUM:STOMACH -CREATURE:OPOSSUM:GIZZARD -CREATURE:OPOSSUM:PANCREAS -CREATURE:OPOSSUM:SPLEEN -CREATURE:OPOSSUM:KIDNEY -CREATURE:OPOSSUM_MAN:MUSCLE -CREATURE:OPOSSUM_MAN:EYE -CREATURE:OPOSSUM_MAN:BRAIN -CREATURE:OPOSSUM_MAN:LUNG -CREATURE:OPOSSUM_MAN:HEART -CREATURE:OPOSSUM_MAN:LIVER -CREATURE:OPOSSUM_MAN:GUT -CREATURE:OPOSSUM_MAN:STOMACH -CREATURE:OPOSSUM_MAN:GIZZARD -CREATURE:OPOSSUM_MAN:PANCREAS -CREATURE:OPOSSUM_MAN:SPLEEN -CREATURE:OPOSSUM_MAN:KIDNEY -CREATURE:GIANT_OPOSSUM:MUSCLE -CREATURE:GIANT_OPOSSUM:EYE -CREATURE:GIANT_OPOSSUM:BRAIN -CREATURE:GIANT_OPOSSUM:LUNG -CREATURE:GIANT_OPOSSUM:HEART -CREATURE:GIANT_OPOSSUM:LIVER -CREATURE:GIANT_OPOSSUM:GUT -CREATURE:GIANT_OPOSSUM:STOMACH -CREATURE:GIANT_OPOSSUM:GIZZARD -CREATURE:GIANT_OPOSSUM:PANCREAS -CREATURE:GIANT_OPOSSUM:SPLEEN -CREATURE:GIANT_OPOSSUM:KIDNEY -CREATURE:MONGOOSE:MUSCLE -CREATURE:MONGOOSE:EYE -CREATURE:MONGOOSE:BRAIN -CREATURE:MONGOOSE:LUNG -CREATURE:MONGOOSE:HEART -CREATURE:MONGOOSE:LIVER -CREATURE:MONGOOSE:GUT -CREATURE:MONGOOSE:STOMACH -CREATURE:MONGOOSE:GIZZARD -CREATURE:MONGOOSE:PANCREAS -CREATURE:MONGOOSE:SPLEEN -CREATURE:MONGOOSE:KIDNEY -CREATURE:MONGOOSE_MAN:MUSCLE -CREATURE:MONGOOSE_MAN:EYE -CREATURE:MONGOOSE_MAN:BRAIN -CREATURE:MONGOOSE_MAN:LUNG -CREATURE:MONGOOSE_MAN:HEART -CREATURE:MONGOOSE_MAN:LIVER -CREATURE:MONGOOSE_MAN:GUT -CREATURE:MONGOOSE_MAN:STOMACH -CREATURE:MONGOOSE_MAN:GIZZARD -CREATURE:MONGOOSE_MAN:PANCREAS -CREATURE:MONGOOSE_MAN:SPLEEN -CREATURE:MONGOOSE_MAN:KIDNEY -CREATURE:GIANT_MONGOOSE:MUSCLE -CREATURE:GIANT_MONGOOSE:EYE -CREATURE:GIANT_MONGOOSE:BRAIN -CREATURE:GIANT_MONGOOSE:LUNG -CREATURE:GIANT_MONGOOSE:HEART -CREATURE:GIANT_MONGOOSE:LIVER -CREATURE:GIANT_MONGOOSE:GUT -CREATURE:GIANT_MONGOOSE:STOMACH -CREATURE:GIANT_MONGOOSE:GIZZARD - CREATURE:GIANT_MONGOOSE:PANCREAS -CREATURE:GIANT_MONGOOSE:SPLEEN -CREATURE:GIANT_MONGOOSE:KIDNEY -CREATURE:HYENA:MUSCLE -CREATURE:HYENA:EYE -CREATURE:HYENA:BRAIN -CREATURE:HYENA:LUNG -CREATURE:HYENA:HEART -CREATURE:HYENA:LIVER -CREATURE:HYENA:GUT -CREATURE:HYENA:STOMACH -CREATURE:HYENA:GIZZARD -CREATURE:HYENA:PANCREAS -CREATURE:HYENA:SPLEEN -CREATURE:HYENA:KIDNEY -CREATURE:HYENA_MAN:MUSCLE -CREATURE:HYENA_MAN:EYE -CREATURE:HYENA_MAN:BRAIN -CREATURE:HYENA_MAN:LUNG -CREATURE:HYENA_MAN:HEART -CREATURE:HYENA_MAN:LIVER -CREATURE:HYENA_MAN:GUT -CREATURE:HYENA_MAN:STOMACH -CREATURE:HYENA_MAN:GIZZARD -CREATURE:HYENA_MAN:PANCREAS -CREATURE:HYENA_MAN:SPLEEN -CREATURE:HYENA_MAN:KIDNEY -CREATURE:GIANT_HYENA:MUSCLE -CREATURE:GIANT_HYENA:EYE -CREATURE:GIANT_HYENA:BRAIN -CREATURE:GIANT_HYENA:LUNG -CREATURE:GIANT_HYENA:HEART -CREATURE:GIANT_HYENA:LIVER -CREATURE:GIANT_HYENA:GUT -CREATURE:GIANT_HYENA:STOMACH -CREATURE:GIANT_HYENA:GIZZARD -CREATURE:GIANT_HYENA:PANCREAS -CREATURE:GIANT_HYENA:SPLEEN -CREATURE:GIANT_HYENA:KIDNEY -CREATURE:ANACONDA:MUSCLE -CREATURE:ANACONDA:EYE -CREATURE:ANACONDA:BRAIN -CREATURE:ANACONDA:LUNG -CREATURE:ANACONDA:HEART -CREATURE:ANACONDA:LIVER -CREATURE:ANACONDA:GUT -CREATURE:ANACONDA:STOMACH -CREATURE:ANACONDA:GIZZARD -CREATURE:ANACONDA:PANCREAS -CREATURE:ANACONDA:SPLEEN -CREATURE:ANACONDA:KIDNEY -CREATURE:ANACONDA_MAN:MUSCLE -CREATURE:ANACONDA_MAN:EYE -CREATURE:ANACONDA_MAN:BRAIN -CREATURE:ANACONDA_MAN:LUNG -CREATURE:ANACONDA_MAN:HEART -CREATURE:ANACONDA_MAN:LIVER -CREATURE:ANACONDA_MAN:GUT -CREATURE:ANACONDA_MAN:STOMACH -CREATURE:ANACONDA_MAN:GIZZARD -CREATURE:ANACONDA_MAN:PANCREAS -CREATURE:ANACONDA_MAN:SPLEEN -CREATURE:ANACONDA_MAN:KIDNEY -CREATURE:GIANT_ANACONDA:MUSCLE -CREATURE:GIANT_ANACONDA:EYE -CREATURE:GIANT_ANACONDA:BRAIN -CREATURE:GIANT_ANACONDA:LUNG -CREATURE:GIANT_ANACONDA:HEART -CREATURE:GIANT_ANACONDA:LIVER -CREATURE:GIANT_ANACONDA:GUT -CREATURE:GIANT_ANACONDA:STOMACH -CREATURE:GIANT_ANACONDA:GIZZARD - CREATURE:GIANT_ANACONDA:PANCREAS -CREATURE:GIANT_ANACONDA:SPLEEN -CREATURE:GIANT_ANACONDA:KIDNEY -CREATURE:MONITOR_LIZARD:MUSCLE -CREATURE:MONITOR_LIZARD:EYE -CREATURE:MONITOR_LIZARD:BRAIN -CREATURE:MONITOR_LIZARD:LUNG -CREATURE:MONITOR_LIZARD:HEART -CREATURE:MONITOR_LIZARD:LIVER -CREATURE:MONITOR_LIZARD:GUT -CREATURE:MONITOR_LIZARD:STOMACH -CREATURE:MONITOR_LIZARD:GIZZARD - CREATURE:MONITOR_LIZARD:PANCREAS -CREATURE:MONITOR_LIZARD:SPLEEN -CREATURE:MONITOR_LIZARD:KIDNEY -"CREATURE:MONITOR_LIZARD_MAN:MUSCLE -CREATURE:MONITOR_LIZARD_MAN:EYE -!CREATURE:MONITOR_LIZARD_MAN:BRAIN - CREATURE:MONITOR_LIZARD_MAN:LUNG -!CREATURE:MONITOR_LIZARD_MAN:HEART -!CREATURE:MONITOR_LIZARD_MAN:LIVER -CREATURE:MONITOR_LIZARD_MAN:GUT -#CREATURE:MONITOR_LIZARD_MAN:STOMACH -#CREATURE:MONITOR_LIZARD_MAN:GIZZARD -$CREATURE:MONITOR_LIZARD_MAN:PANCREAS -"CREATURE:MONITOR_LIZARD_MAN:SPLEEN -"CREATURE:MONITOR_LIZARD_MAN:KIDNEY -$CREATURE:GIANT_MONITOR_LIZARD:MUSCLE -!CREATURE:GIANT_MONITOR_LIZARD:EYE -#CREATURE:GIANT_MONITOR_LIZARD:BRAIN -"CREATURE:GIANT_MONITOR_LIZARD:LUNG -#CREATURE:GIANT_MONITOR_LIZARD:HEART -#CREATURE:GIANT_MONITOR_LIZARD:LIVER -!CREATURE:GIANT_MONITOR_LIZARD:GUT -%CREATURE:GIANT_MONITOR_LIZARD:STOMACH -%CREATURE:GIANT_MONITOR_LIZARD:GIZZARD -&CREATURE:GIANT_MONITOR_LIZARD:PANCREAS -$CREATURE:GIANT_MONITOR_LIZARD:SPLEEN -$CREATURE:GIANT_MONITOR_LIZARD:KIDNEY -CREATURE:KING_COBRA:MUSCLE -CREATURE:KING_COBRA:EYE -CREATURE:KING_COBRA:BRAIN -CREATURE:KING_COBRA:LUNG -CREATURE:KING_COBRA:HEART -CREATURE:KING_COBRA:LIVER -CREATURE:KING_COBRA:GUT -CREATURE:KING_COBRA:STOMACH -CREATURE:KING_COBRA:GIZZARD -CREATURE:KING_COBRA:PANCREAS -CREATURE:KING_COBRA:SPLEEN -CREATURE:KING_COBRA:KIDNEY -CREATURE:KING_COBRA_MAN:MUSCLE -CREATURE:KING_COBRA_MAN:EYE -CREATURE:KING_COBRA_MAN:BRAIN -CREATURE:KING_COBRA_MAN:LUNG -CREATURE:KING_COBRA_MAN:HEART -CREATURE:KING_COBRA_MAN:LIVER -CREATURE:KING_COBRA_MAN:GUT -CREATURE:KING_COBRA_MAN:STOMACH -CREATURE:KING_COBRA_MAN:GIZZARD - CREATURE:KING_COBRA_MAN:PANCREAS -CREATURE:KING_COBRA_MAN:SPLEEN -CREATURE:KING_COBRA_MAN:KIDNEY - CREATURE:GIANT_KING_COBRA:MUSCLE -CREATURE:GIANT_KING_COBRA:EYE -CREATURE:GIANT_KING_COBRA:BRAIN -CREATURE:GIANT_KING_COBRA:LUNG -CREATURE:GIANT_KING_COBRA:HEART -CREATURE:GIANT_KING_COBRA:LIVER -CREATURE:GIANT_KING_COBRA:GUT -!CREATURE:GIANT_KING_COBRA:STOMACH -!CREATURE:GIANT_KING_COBRA:GIZZARD -"CREATURE:GIANT_KING_COBRA:PANCREAS - CREATURE:GIANT_KING_COBRA:SPLEEN - CREATURE:GIANT_KING_COBRA:KIDNEY -CREATURE:OCELOT:MUSCLE -CREATURE:OCELOT:EYE -CREATURE:OCELOT:BRAIN -CREATURE:OCELOT:LUNG -CREATURE:OCELOT:HEART -CREATURE:OCELOT:LIVER -CREATURE:OCELOT:GUT -CREATURE:OCELOT:STOMACH -CREATURE:OCELOT:GIZZARD -CREATURE:OCELOT:PANCREAS -CREATURE:OCELOT:SPLEEN -CREATURE:OCELOT:KIDNEY -CREATURE:OCELOT_MAN:MUSCLE -CREATURE:OCELOT_MAN:EYE -CREATURE:OCELOT_MAN:BRAIN -CREATURE:OCELOT_MAN:LUNG -CREATURE:OCELOT_MAN:HEART -CREATURE:OCELOT_MAN:LIVER -CREATURE:OCELOT_MAN:GUT -CREATURE:OCELOT_MAN:STOMACH -CREATURE:OCELOT_MAN:GIZZARD -CREATURE:OCELOT_MAN:PANCREAS -CREATURE:OCELOT_MAN:SPLEEN -CREATURE:OCELOT_MAN:KIDNEY -CREATURE:GIANT_OCELOT:MUSCLE -CREATURE:GIANT_OCELOT:EYE -CREATURE:GIANT_OCELOT:BRAIN -CREATURE:GIANT_OCELOT:LUNG -CREATURE:GIANT_OCELOT:HEART -CREATURE:GIANT_OCELOT:LIVER -CREATURE:GIANT_OCELOT:GUT -CREATURE:GIANT_OCELOT:STOMACH -CREATURE:GIANT_OCELOT:GIZZARD -CREATURE:GIANT_OCELOT:PANCREAS -CREATURE:GIANT_OCELOT:SPLEEN -CREATURE:GIANT_OCELOT:KIDNEY -CREATURE:JACKAL:MUSCLE -CREATURE:JACKAL:EYE -CREATURE:JACKAL:BRAIN -CREATURE:JACKAL:LUNG -CREATURE:JACKAL:HEART -CREATURE:JACKAL:LIVER -CREATURE:JACKAL:GUT -CREATURE:JACKAL:STOMACH -CREATURE:JACKAL:GIZZARD -CREATURE:JACKAL:PANCREAS -CREATURE:JACKAL:SPLEEN -CREATURE:JACKAL:KIDNEY -CREATURE:JACKAL_MAN:MUSCLE -CREATURE:JACKAL_MAN:EYE -CREATURE:JACKAL_MAN:BRAIN -CREATURE:JACKAL_MAN:LUNG -CREATURE:JACKAL_MAN:HEART -CREATURE:JACKAL_MAN:LIVER -CREATURE:JACKAL_MAN:GUT -CREATURE:JACKAL_MAN:STOMACH -CREATURE:JACKAL_MAN:GIZZARD -CREATURE:JACKAL_MAN:PANCREAS -CREATURE:JACKAL_MAN:SPLEEN -CREATURE:JACKAL_MAN:KIDNEY -CREATURE:GIANT_JACKAL:MUSCLE -CREATURE:GIANT_JACKAL:EYE -CREATURE:GIANT_JACKAL:BRAIN -CREATURE:GIANT_JACKAL:LUNG -CREATURE:GIANT_JACKAL:HEART -CREATURE:GIANT_JACKAL:LIVER -CREATURE:GIANT_JACKAL:GUT -CREATURE:GIANT_JACKAL:STOMACH -CREATURE:GIANT_JACKAL:GIZZARD -CREATURE:GIANT_JACKAL:PANCREAS -CREATURE:GIANT_JACKAL:SPLEEN -CREATURE:GIANT_JACKAL:KIDNEY -CREATURE:CAPUCHIN:MUSCLE -CREATURE:CAPUCHIN:EYE -CREATURE:CAPUCHIN:BRAIN -CREATURE:CAPUCHIN:LUNG -CREATURE:CAPUCHIN:HEART -CREATURE:CAPUCHIN:LIVER -CREATURE:CAPUCHIN:GUT -CREATURE:CAPUCHIN:STOMACH -CREATURE:CAPUCHIN:GIZZARD -CREATURE:CAPUCHIN:PANCREAS -CREATURE:CAPUCHIN:SPLEEN -CREATURE:CAPUCHIN:KIDNEY -CREATURE:CAPUCHIN_MAN:MUSCLE -CREATURE:CAPUCHIN_MAN:EYE -CREATURE:CAPUCHIN_MAN:BRAIN -CREATURE:CAPUCHIN_MAN:LUNG -CREATURE:CAPUCHIN_MAN:HEART -CREATURE:CAPUCHIN_MAN:LIVER -CREATURE:CAPUCHIN_MAN:GUT -CREATURE:CAPUCHIN_MAN:STOMACH -CREATURE:CAPUCHIN_MAN:GIZZARD -CREATURE:CAPUCHIN_MAN:PANCREAS -CREATURE:CAPUCHIN_MAN:SPLEEN -CREATURE:CAPUCHIN_MAN:KIDNEY -CREATURE:GIANT_CAPUCHIN:MUSCLE -CREATURE:GIANT_CAPUCHIN:EYE -CREATURE:GIANT_CAPUCHIN:BRAIN -CREATURE:GIANT_CAPUCHIN:LUNG -CREATURE:GIANT_CAPUCHIN:HEART -CREATURE:GIANT_CAPUCHIN:LIVER -CREATURE:GIANT_CAPUCHIN:GUT -CREATURE:GIANT_CAPUCHIN:STOMACH -CREATURE:GIANT_CAPUCHIN:GIZZARD - CREATURE:GIANT_CAPUCHIN:PANCREAS -CREATURE:GIANT_CAPUCHIN:SPLEEN -CREATURE:GIANT_CAPUCHIN:KIDNEY -CREATURE:SLOTH:MUSCLE -CREATURE:SLOTH:EYE -CREATURE:SLOTH:BRAIN -CREATURE:SLOTH:LUNG -CREATURE:SLOTH:HEART -CREATURE:SLOTH:LIVER -CREATURE:SLOTH:GUT -CREATURE:SLOTH:STOMACH -CREATURE:SLOTH:GIZZARD -CREATURE:SLOTH:PANCREAS -CREATURE:SLOTH:SPLEEN -CREATURE:SLOTH:KIDNEY -CREATURE:SLOTH_MAN:MUSCLE -CREATURE:SLOTH_MAN:EYE -CREATURE:SLOTH_MAN:BRAIN -CREATURE:SLOTH_MAN:LUNG -CREATURE:SLOTH_MAN:HEART -CREATURE:SLOTH_MAN:LIVER -CREATURE:SLOTH_MAN:GUT -CREATURE:SLOTH_MAN:STOMACH -CREATURE:SLOTH_MAN:GIZZARD -CREATURE:SLOTH_MAN:PANCREAS -CREATURE:SLOTH_MAN:SPLEEN -CREATURE:SLOTH_MAN:KIDNEY -CREATURE:GIANT_SLOTH:MUSCLE -CREATURE:GIANT_SLOTH:EYE -CREATURE:GIANT_SLOTH:BRAIN -CREATURE:GIANT_SLOTH:LUNG -CREATURE:GIANT_SLOTH:HEART -CREATURE:GIANT_SLOTH:LIVER -CREATURE:GIANT_SLOTH:GUT -CREATURE:GIANT_SLOTH:STOMACH -CREATURE:GIANT_SLOTH:GIZZARD -CREATURE:GIANT_SLOTH:PANCREAS -CREATURE:GIANT_SLOTH:SPLEEN -CREATURE:GIANT_SLOTH:KIDNEY -CREATURE:SPIDER_MONKEY:MUSCLE -CREATURE:SPIDER_MONKEY:EYE -CREATURE:SPIDER_MONKEY:BRAIN -CREATURE:SPIDER_MONKEY:LUNG -CREATURE:SPIDER_MONKEY:HEART -CREATURE:SPIDER_MONKEY:LIVER -CREATURE:SPIDER_MONKEY:GUT -CREATURE:SPIDER_MONKEY:STOMACH -CREATURE:SPIDER_MONKEY:GIZZARD -CREATURE:SPIDER_MONKEY:PANCREAS -CREATURE:SPIDER_MONKEY:SPLEEN -CREATURE:SPIDER_MONKEY:KIDNEY -!CREATURE:SPIDER_MONKEY_MAN:MUSCLE -CREATURE:SPIDER_MONKEY_MAN:EYE - CREATURE:SPIDER_MONKEY_MAN:BRAIN -CREATURE:SPIDER_MONKEY_MAN:LUNG - CREATURE:SPIDER_MONKEY_MAN:HEART - CREATURE:SPIDER_MONKEY_MAN:LIVER -CREATURE:SPIDER_MONKEY_MAN:GUT -"CREATURE:SPIDER_MONKEY_MAN:STOMACH -"CREATURE:SPIDER_MONKEY_MAN:GIZZARD -#CREATURE:SPIDER_MONKEY_MAN:PANCREAS -!CREATURE:SPIDER_MONKEY_MAN:SPLEEN -!CREATURE:SPIDER_MONKEY_MAN:KIDNEY -#CREATURE:GIANT_SPIDER_MONKEY:MUSCLE - CREATURE:GIANT_SPIDER_MONKEY:EYE -"CREATURE:GIANT_SPIDER_MONKEY:BRAIN -!CREATURE:GIANT_SPIDER_MONKEY:LUNG -"CREATURE:GIANT_SPIDER_MONKEY:HEART -"CREATURE:GIANT_SPIDER_MONKEY:LIVER - CREATURE:GIANT_SPIDER_MONKEY:GUT -$CREATURE:GIANT_SPIDER_MONKEY:STOMACH -$CREATURE:GIANT_SPIDER_MONKEY:GIZZARD -%CREATURE:GIANT_SPIDER_MONKEY:PANCREAS -#CREATURE:GIANT_SPIDER_MONKEY:SPLEEN -#CREATURE:GIANT_SPIDER_MONKEY:KIDNEY -CREATURE:PANGOLIN:MUSCLE -CREATURE:PANGOLIN:EYE -CREATURE:PANGOLIN:BRAIN -CREATURE:PANGOLIN:LUNG -CREATURE:PANGOLIN:HEART -CREATURE:PANGOLIN:LIVER -CREATURE:PANGOLIN:GUT -CREATURE:PANGOLIN:STOMACH -CREATURE:PANGOLIN:GIZZARD -CREATURE:PANGOLIN:PANCREAS -CREATURE:PANGOLIN:SPLEEN -CREATURE:PANGOLIN:KIDNEY -CREATURE:PANGOLIN_MAN:MUSCLE -CREATURE:PANGOLIN_MAN:EYE -CREATURE:PANGOLIN_MAN:BRAIN -CREATURE:PANGOLIN_MAN:LUNG -CREATURE:PANGOLIN_MAN:HEART -CREATURE:PANGOLIN_MAN:LIVER -CREATURE:PANGOLIN_MAN:GUT -CREATURE:PANGOLIN_MAN:STOMACH -CREATURE:PANGOLIN_MAN:GIZZARD -CREATURE:PANGOLIN_MAN:PANCREAS -CREATURE:PANGOLIN_MAN:SPLEEN -CREATURE:PANGOLIN_MAN:KIDNEY -CREATURE:GIANT_PANGOLIN:MUSCLE -CREATURE:GIANT_PANGOLIN:EYE -CREATURE:GIANT_PANGOLIN:BRAIN -CREATURE:GIANT_PANGOLIN:LUNG -CREATURE:GIANT_PANGOLIN:HEART -CREATURE:GIANT_PANGOLIN:LIVER -CREATURE:GIANT_PANGOLIN:GUT -CREATURE:GIANT_PANGOLIN:STOMACH -CREATURE:GIANT_PANGOLIN:GIZZARD - CREATURE:GIANT_PANGOLIN:PANCREAS -CREATURE:GIANT_PANGOLIN:SPLEEN -CREATURE:GIANT_PANGOLIN:KIDNEY -CREATURE:BLACK_MAMBA:MUSCLE -CREATURE:BLACK_MAMBA:EYE -CREATURE:BLACK_MAMBA:BRAIN -CREATURE:BLACK_MAMBA:LUNG -CREATURE:BLACK_MAMBA:HEART -CREATURE:BLACK_MAMBA:LIVER -CREATURE:BLACK_MAMBA:GUT -CREATURE:BLACK_MAMBA:STOMACH -CREATURE:BLACK_MAMBA:GIZZARD -CREATURE:BLACK_MAMBA:PANCREAS -CREATURE:BLACK_MAMBA:SPLEEN -CREATURE:BLACK_MAMBA:KIDNEY -CREATURE:BLACK_MAMBA_MAN:MUSCLE -CREATURE:BLACK_MAMBA_MAN:EYE -CREATURE:BLACK_MAMBA_MAN:BRAIN -CREATURE:BLACK_MAMBA_MAN:LUNG -CREATURE:BLACK_MAMBA_MAN:HEART -CREATURE:BLACK_MAMBA_MAN:LIVER -CREATURE:BLACK_MAMBA_MAN:GUT - CREATURE:BLACK_MAMBA_MAN:STOMACH - CREATURE:BLACK_MAMBA_MAN:GIZZARD -!CREATURE:BLACK_MAMBA_MAN:PANCREAS -CREATURE:BLACK_MAMBA_MAN:SPLEEN -CREATURE:BLACK_MAMBA_MAN:KIDNEY -!CREATURE:GIANT_BLACK_MAMBA:MUSCLE -CREATURE:GIANT_BLACK_MAMBA:EYE - CREATURE:GIANT_BLACK_MAMBA:BRAIN -CREATURE:GIANT_BLACK_MAMBA:LUNG - CREATURE:GIANT_BLACK_MAMBA:HEART - CREATURE:GIANT_BLACK_MAMBA:LIVER -CREATURE:GIANT_BLACK_MAMBA:GUT -"CREATURE:GIANT_BLACK_MAMBA:STOMACH -"CREATURE:GIANT_BLACK_MAMBA:GIZZARD -#CREATURE:GIANT_BLACK_MAMBA:PANCREAS -!CREATURE:GIANT_BLACK_MAMBA:SPLEEN -!CREATURE:GIANT_BLACK_MAMBA:KIDNEY -CREATURE:BEAR_SLOTH:MUSCLE -CREATURE:BEAR_SLOTH:EYE -CREATURE:BEAR_SLOTH:BRAIN -CREATURE:BEAR_SLOTH:LUNG -CREATURE:BEAR_SLOTH:HEART -CREATURE:BEAR_SLOTH:LIVER -CREATURE:BEAR_SLOTH:GUT -CREATURE:BEAR_SLOTH:STOMACH -CREATURE:BEAR_SLOTH:GIZZARD -CREATURE:BEAR_SLOTH:PANCREAS -CREATURE:BEAR_SLOTH:SPLEEN -CREATURE:BEAR_SLOTH:KIDNEY -CREATURE:SLOTH_BEAR_MAN:MUSCLE -CREATURE:SLOTH_BEAR_MAN:EYE -CREATURE:SLOTH_BEAR_MAN:BRAIN -CREATURE:SLOTH_BEAR_MAN:LUNG -CREATURE:SLOTH_BEAR_MAN:HEART -CREATURE:SLOTH_BEAR_MAN:LIVER -CREATURE:SLOTH_BEAR_MAN:GUT -CREATURE:SLOTH_BEAR_MAN:STOMACH -CREATURE:SLOTH_BEAR_MAN:GIZZARD - CREATURE:SLOTH_BEAR_MAN:PANCREAS -CREATURE:SLOTH_BEAR_MAN:SPLEEN -CREATURE:SLOTH_BEAR_MAN:KIDNEY - CREATURE:GIANT_SLOTH_BEAR:MUSCLE -CREATURE:GIANT_SLOTH_BEAR:EYE -CREATURE:GIANT_SLOTH_BEAR:BRAIN -CREATURE:GIANT_SLOTH_BEAR:LUNG -CREATURE:GIANT_SLOTH_BEAR:HEART -CREATURE:GIANT_SLOTH_BEAR:LIVER -CREATURE:GIANT_SLOTH_BEAR:GUT -!CREATURE:GIANT_SLOTH_BEAR:STOMACH -!CREATURE:GIANT_SLOTH_BEAR:GIZZARD -"CREATURE:GIANT_SLOTH_BEAR:PANCREAS - CREATURE:GIANT_SLOTH_BEAR:SPLEEN - CREATURE:GIANT_SLOTH_BEAR:KIDNEY -CREATURE:AYE-AYE:MUSCLE -CREATURE:AYE-AYE:EYE -CREATURE:AYE-AYE:BRAIN -CREATURE:AYE-AYE:LUNG -CREATURE:AYE-AYE:HEART -CREATURE:AYE-AYE:LIVER -CREATURE:AYE-AYE:GUT -CREATURE:AYE-AYE:STOMACH -CREATURE:AYE-AYE:GIZZARD -CREATURE:AYE-AYE:PANCREAS -CREATURE:AYE-AYE:SPLEEN -CREATURE:AYE-AYE:KIDNEY -CREATURE:AYE-AYE_MAN:MUSCLE -CREATURE:AYE-AYE_MAN:EYE -CREATURE:AYE-AYE_MAN:BRAIN -CREATURE:AYE-AYE_MAN:LUNG -CREATURE:AYE-AYE_MAN:HEART -CREATURE:AYE-AYE_MAN:LIVER -CREATURE:AYE-AYE_MAN:GUT -CREATURE:AYE-AYE_MAN:STOMACH -CREATURE:AYE-AYE_MAN:GIZZARD -CREATURE:AYE-AYE_MAN:PANCREAS -CREATURE:AYE-AYE_MAN:SPLEEN -CREATURE:AYE-AYE_MAN:KIDNEY -CREATURE:GIANT_AYE-AYE:MUSCLE -CREATURE:GIANT_AYE-AYE:EYE -CREATURE:GIANT_AYE-AYE:BRAIN -CREATURE:GIANT_AYE-AYE:LUNG -CREATURE:GIANT_AYE-AYE:HEART -CREATURE:GIANT_AYE-AYE:LIVER -CREATURE:GIANT_AYE-AYE:GUT -CREATURE:GIANT_AYE-AYE:STOMACH -CREATURE:GIANT_AYE-AYE:GIZZARD -CREATURE:GIANT_AYE-AYE:PANCREAS -CREATURE:GIANT_AYE-AYE:SPLEEN -CREATURE:GIANT_AYE-AYE:KIDNEY -CREATURE:BUSHMASTER:MUSCLE -CREATURE:BUSHMASTER:EYE -CREATURE:BUSHMASTER:BRAIN -CREATURE:BUSHMASTER:LUNG -CREATURE:BUSHMASTER:HEART -CREATURE:BUSHMASTER:LIVER -CREATURE:BUSHMASTER:GUT -CREATURE:BUSHMASTER:STOMACH -CREATURE:BUSHMASTER:GIZZARD -CREATURE:BUSHMASTER:PANCREAS -CREATURE:BUSHMASTER:SPLEEN -CREATURE:BUSHMASTER:KIDNEY -CREATURE:BUSHMASTER_MAN:MUSCLE -CREATURE:BUSHMASTER_MAN:EYE -CREATURE:BUSHMASTER_MAN:BRAIN -CREATURE:BUSHMASTER_MAN:LUNG -CREATURE:BUSHMASTER_MAN:HEART -CREATURE:BUSHMASTER_MAN:LIVER -CREATURE:BUSHMASTER_MAN:GUT -CREATURE:BUSHMASTER_MAN:STOMACH -CREATURE:BUSHMASTER_MAN:GIZZARD - CREATURE:BUSHMASTER_MAN:PANCREAS -CREATURE:BUSHMASTER_MAN:SPLEEN -CREATURE:BUSHMASTER_MAN:KIDNEY - CREATURE:GIANT_BUSHMASTER:MUSCLE -CREATURE:GIANT_BUSHMASTER:EYE -CREATURE:GIANT_BUSHMASTER:BRAIN -CREATURE:GIANT_BUSHMASTER:LUNG -CREATURE:GIANT_BUSHMASTER:HEART -CREATURE:GIANT_BUSHMASTER:LIVER -CREATURE:GIANT_BUSHMASTER:GUT -!CREATURE:GIANT_BUSHMASTER:STOMACH -!CREATURE:GIANT_BUSHMASTER:GIZZARD -"CREATURE:GIANT_BUSHMASTER:PANCREAS - CREATURE:GIANT_BUSHMASTER:SPLEEN - CREATURE:GIANT_BUSHMASTER:KIDNEY -CREATURE:PYTHON:MUSCLE -CREATURE:PYTHON:EYE -CREATURE:PYTHON:BRAIN -CREATURE:PYTHON:LUNG -CREATURE:PYTHON:HEART -CREATURE:PYTHON:LIVER -CREATURE:PYTHON:GUT -CREATURE:PYTHON:STOMACH -CREATURE:PYTHON:GIZZARD -CREATURE:PYTHON:PANCREAS -CREATURE:PYTHON:SPLEEN -CREATURE:PYTHON:KIDNEY -CREATURE:PYTHON_MAN:MUSCLE -CREATURE:PYTHON_MAN:EYE -CREATURE:PYTHON_MAN:BRAIN -CREATURE:PYTHON_MAN:LUNG -CREATURE:PYTHON_MAN:HEART -CREATURE:PYTHON_MAN:LIVER -CREATURE:PYTHON_MAN:GUT -CREATURE:PYTHON_MAN:STOMACH -CREATURE:PYTHON_MAN:GIZZARD -CREATURE:PYTHON_MAN:PANCREAS -CREATURE:PYTHON_MAN:SPLEEN -CREATURE:PYTHON_MAN:KIDNEY -CREATURE:GIANT_PYTHON:MUSCLE -CREATURE:GIANT_PYTHON:EYE -CREATURE:GIANT_PYTHON:BRAIN -CREATURE:GIANT_PYTHON:LUNG -CREATURE:GIANT_PYTHON:HEART -CREATURE:GIANT_PYTHON:LIVER -CREATURE:GIANT_PYTHON:GUT -CREATURE:GIANT_PYTHON:STOMACH -CREATURE:GIANT_PYTHON:GIZZARD -CREATURE:GIANT_PYTHON:PANCREAS -CREATURE:GIANT_PYTHON:SPLEEN -CREATURE:GIANT_PYTHON:KIDNEY -CREATURE:TAPIR:MUSCLE -CREATURE:TAPIR:EYE -CREATURE:TAPIR:BRAIN -CREATURE:TAPIR:LUNG -CREATURE:TAPIR:HEART -CREATURE:TAPIR:LIVER -CREATURE:TAPIR:GUT -CREATURE:TAPIR:STOMACH -CREATURE:TAPIR:GIZZARD -CREATURE:TAPIR:PANCREAS -CREATURE:TAPIR:SPLEEN -CREATURE:TAPIR:KIDNEY -CREATURE:TAPIR_MAN:MUSCLE -CREATURE:TAPIR_MAN:EYE -CREATURE:TAPIR_MAN:BRAIN -CREATURE:TAPIR_MAN:LUNG -CREATURE:TAPIR_MAN:HEART -CREATURE:TAPIR_MAN:LIVER -CREATURE:TAPIR_MAN:GUT -CREATURE:TAPIR_MAN:STOMACH -CREATURE:TAPIR_MAN:GIZZARD -CREATURE:TAPIR_MAN:PANCREAS -CREATURE:TAPIR_MAN:SPLEEN -CREATURE:TAPIR_MAN:KIDNEY -CREATURE:GIANT_TAPIR:MUSCLE -CREATURE:GIANT_TAPIR:EYE -CREATURE:GIANT_TAPIR:BRAIN -CREATURE:GIANT_TAPIR:LUNG -CREATURE:GIANT_TAPIR:HEART -CREATURE:GIANT_TAPIR:LIVER -CREATURE:GIANT_TAPIR:GUT -CREATURE:GIANT_TAPIR:STOMACH -CREATURE:GIANT_TAPIR:GIZZARD -CREATURE:GIANT_TAPIR:PANCREAS -CREATURE:GIANT_TAPIR:SPLEEN -CREATURE:GIANT_TAPIR:KIDNEY -CREATURE:IMPALA:MUSCLE -CREATURE:IMPALA:EYE -CREATURE:IMPALA:BRAIN -CREATURE:IMPALA:LUNG -CREATURE:IMPALA:HEART -CREATURE:IMPALA:LIVER -CREATURE:IMPALA:GUT -CREATURE:IMPALA:STOMACH -CREATURE:IMPALA:GIZZARD -CREATURE:IMPALA:PANCREAS -CREATURE:IMPALA:SPLEEN -CREATURE:IMPALA:KIDNEY -CREATURE:IMPALA_MAN:MUSCLE -CREATURE:IMPALA_MAN:EYE -CREATURE:IMPALA_MAN:BRAIN -CREATURE:IMPALA_MAN:LUNG -CREATURE:IMPALA_MAN:HEART -CREATURE:IMPALA_MAN:LIVER -CREATURE:IMPALA_MAN:GUT -CREATURE:IMPALA_MAN:STOMACH -CREATURE:IMPALA_MAN:GIZZARD -CREATURE:IMPALA_MAN:PANCREAS -CREATURE:IMPALA_MAN:SPLEEN -CREATURE:IMPALA_MAN:KIDNEY -CREATURE:GIANT_IMPALA:MUSCLE -CREATURE:GIANT_IMPALA:EYE -CREATURE:GIANT_IMPALA:BRAIN -CREATURE:GIANT_IMPALA:LUNG -CREATURE:GIANT_IMPALA:HEART -CREATURE:GIANT_IMPALA:LIVER -CREATURE:GIANT_IMPALA:GUT -CREATURE:GIANT_IMPALA:STOMACH -CREATURE:GIANT_IMPALA:GIZZARD -CREATURE:GIANT_IMPALA:PANCREAS -CREATURE:GIANT_IMPALA:SPLEEN -CREATURE:GIANT_IMPALA:KIDNEY -CREATURE:AARDVARK:MUSCLE -CREATURE:AARDVARK:EYE -CREATURE:AARDVARK:BRAIN -CREATURE:AARDVARK:LUNG -CREATURE:AARDVARK:HEART -CREATURE:AARDVARK:LIVER -CREATURE:AARDVARK:GUT -CREATURE:AARDVARK:STOMACH -CREATURE:AARDVARK:GIZZARD -CREATURE:AARDVARK:PANCREAS -CREATURE:AARDVARK:SPLEEN -CREATURE:AARDVARK:KIDNEY -CREATURE:AARDVARK_MAN:MUSCLE -CREATURE:AARDVARK_MAN:EYE -CREATURE:AARDVARK_MAN:BRAIN -CREATURE:AARDVARK_MAN:LUNG -CREATURE:AARDVARK_MAN:HEART -CREATURE:AARDVARK_MAN:LIVER -CREATURE:AARDVARK_MAN:GUT -CREATURE:AARDVARK_MAN:STOMACH -CREATURE:AARDVARK_MAN:GIZZARD -CREATURE:AARDVARK_MAN:PANCREAS -CREATURE:AARDVARK_MAN:SPLEEN -CREATURE:AARDVARK_MAN:KIDNEY -CREATURE:GIANT_AARDVARK:MUSCLE -CREATURE:GIANT_AARDVARK:EYE -CREATURE:GIANT_AARDVARK:BRAIN -CREATURE:GIANT_AARDVARK:LUNG -CREATURE:GIANT_AARDVARK:HEART -CREATURE:GIANT_AARDVARK:LIVER -CREATURE:GIANT_AARDVARK:GUT -CREATURE:GIANT_AARDVARK:STOMACH -CREATURE:GIANT_AARDVARK:GIZZARD - CREATURE:GIANT_AARDVARK:PANCREAS -CREATURE:GIANT_AARDVARK:SPLEEN -CREATURE:GIANT_AARDVARK:KIDNEY -CREATURE:LION_TAMARIN:MUSCLE -CREATURE:LION_TAMARIN:EYE -CREATURE:LION_TAMARIN:BRAIN -CREATURE:LION_TAMARIN:LUNG -CREATURE:LION_TAMARIN:HEART -CREATURE:LION_TAMARIN:LIVER -CREATURE:LION_TAMARIN:GUT -CREATURE:LION_TAMARIN:STOMACH -CREATURE:LION_TAMARIN:GIZZARD -CREATURE:LION_TAMARIN:PANCREAS -CREATURE:LION_TAMARIN:SPLEEN -CREATURE:LION_TAMARIN:KIDNEY - CREATURE:LION_TAMARIN_MAN:MUSCLE -CREATURE:LION_TAMARIN_MAN:EYE -CREATURE:LION_TAMARIN_MAN:BRAIN -CREATURE:LION_TAMARIN_MAN:LUNG -CREATURE:LION_TAMARIN_MAN:HEART -CREATURE:LION_TAMARIN_MAN:LIVER -CREATURE:LION_TAMARIN_MAN:GUT -!CREATURE:LION_TAMARIN_MAN:STOMACH -!CREATURE:LION_TAMARIN_MAN:GIZZARD -"CREATURE:LION_TAMARIN_MAN:PANCREAS - CREATURE:LION_TAMARIN_MAN:SPLEEN - CREATURE:LION_TAMARIN_MAN:KIDNEY -"CREATURE:GIANT_LION_TAMARIN:MUSCLE -CREATURE:GIANT_LION_TAMARIN:EYE -!CREATURE:GIANT_LION_TAMARIN:BRAIN - CREATURE:GIANT_LION_TAMARIN:LUNG -!CREATURE:GIANT_LION_TAMARIN:HEART -!CREATURE:GIANT_LION_TAMARIN:LIVER -CREATURE:GIANT_LION_TAMARIN:GUT -#CREATURE:GIANT_LION_TAMARIN:STOMACH -#CREATURE:GIANT_LION_TAMARIN:GIZZARD -$CREATURE:GIANT_LION_TAMARIN:PANCREAS -"CREATURE:GIANT_LION_TAMARIN:SPLEEN -"CREATURE:GIANT_LION_TAMARIN:KIDNEY -CREATURE:STOAT:MUSCLE -CREATURE:STOAT:EYE -CREATURE:STOAT:BRAIN -CREATURE:STOAT:LUNG -CREATURE:STOAT:HEART -CREATURE:STOAT:LIVER -CREATURE:STOAT:GUT -CREATURE:STOAT:STOMACH -CREATURE:STOAT:GIZZARD -CREATURE:STOAT:PANCREAS -CREATURE:STOAT:SPLEEN -CREATURE:STOAT:KIDNEY -CREATURE:STOAT_MAN:MUSCLE -CREATURE:STOAT_MAN:EYE -CREATURE:STOAT_MAN:BRAIN -CREATURE:STOAT_MAN:LUNG -CREATURE:STOAT_MAN:HEART -CREATURE:STOAT_MAN:LIVER -CREATURE:STOAT_MAN:GUT -CREATURE:STOAT_MAN:STOMACH -CREATURE:STOAT_MAN:GIZZARD -CREATURE:STOAT_MAN:PANCREAS -CREATURE:STOAT_MAN:SPLEEN -CREATURE:STOAT_MAN:KIDNEY -CREATURE:GIANT_STOAT:MUSCLE -CREATURE:GIANT_STOAT:EYE -CREATURE:GIANT_STOAT:BRAIN -CREATURE:GIANT_STOAT:LUNG -CREATURE:GIANT_STOAT:HEART -CREATURE:GIANT_STOAT:LIVER -CREATURE:GIANT_STOAT:GUT -CREATURE:GIANT_STOAT:STOMACH -CREATURE:GIANT_STOAT:GIZZARD -CREATURE:GIANT_STOAT:PANCREAS -CREATURE:GIANT_STOAT:SPLEEN -CREATURE:GIANT_STOAT:KIDNEY -CREATURE:LYNX:MUSCLE -CREATURE:LYNX:EYE -CREATURE:LYNX:BRAIN -CREATURE:LYNX:LUNG -CREATURE:LYNX:HEART -CREATURE:LYNX:LIVER -CREATURE:LYNX:GUT -CREATURE:LYNX:STOMACH -CREATURE:LYNX:GIZZARD -CREATURE:LYNX:PANCREAS -CREATURE:LYNX:SPLEEN -CREATURE:LYNX:KIDNEY -CREATURE:LYNX_MAN:MUSCLE -CREATURE:LYNX_MAN:EYE -CREATURE:LYNX_MAN:BRAIN -CREATURE:LYNX_MAN:LUNG -CREATURE:LYNX_MAN:HEART -CREATURE:LYNX_MAN:LIVER -CREATURE:LYNX_MAN:GUT -CREATURE:LYNX_MAN:STOMACH -CREATURE:LYNX_MAN:GIZZARD -CREATURE:LYNX_MAN:PANCREAS -CREATURE:LYNX_MAN:SPLEEN -CREATURE:LYNX_MAN:KIDNEY -CREATURE:GIANT_LYNX:MUSCLE -CREATURE:GIANT_LYNX:EYE -CREATURE:GIANT_LYNX:BRAIN -CREATURE:GIANT_LYNX:LUNG -CREATURE:GIANT_LYNX:HEART -CREATURE:GIANT_LYNX:LIVER -CREATURE:GIANT_LYNX:GUT -CREATURE:GIANT_LYNX:STOMACH -CREATURE:GIANT_LYNX:GIZZARD -CREATURE:GIANT_LYNX:PANCREAS -CREATURE:GIANT_LYNX:SPLEEN -CREATURE:GIANT_LYNX:KIDNEY -CREATURE:GNOLL:MUSCLE -CREATURE:GNOLL:EYE -CREATURE:GNOLL:BRAIN -CREATURE:GNOLL:LUNG -CREATURE:GNOLL:HEART -CREATURE:GNOLL:LIVER -CREATURE:GNOLL:GUT -CREATURE:GNOLL:STOMACH -CREATURE:GNOLL:GIZZARD -CREATURE:GNOLL:PANCREAS -CREATURE:GNOLL:SPLEEN -CREATURE:GNOLL:KIDNEY -CREATURE:NAGA:MUSCLE -CREATURE:NAGA:EYE -CREATURE:NAGA:BRAIN -CREATURE:NAGA:LUNG -CREATURE:NAGA:HEART -CREATURE:NAGA:LIVER -CREATURE:NAGA:GUT -CREATURE:NAGA:STOMACH -CREATURE:NAGA:GIZZARD -CREATURE:NAGA:PANCREAS -CREATURE:NAGA:SPLEEN -CREATURE:NAGA:KIDNEY -!CREATURE:FORGOTTEN_BEAST_2:MUSCLE -CREATURE:FORGOTTEN_BEAST_2:EYE - CREATURE:FORGOTTEN_BEAST_2:BRAIN -CREATURE:FORGOTTEN_BEAST_2:LUNG - CREATURE:FORGOTTEN_BEAST_2:HEART - CREATURE:FORGOTTEN_BEAST_2:LIVER -CREATURE:FORGOTTEN_BEAST_2:GUT -"CREATURE:FORGOTTEN_BEAST_2:STOMACH -"CREATURE:FORGOTTEN_BEAST_2:GIZZARD -#CREATURE:FORGOTTEN_BEAST_2:PANCREAS -!CREATURE:FORGOTTEN_BEAST_2:SPLEEN -!CREATURE:FORGOTTEN_BEAST_2:KIDNEY -!CREATURE:FORGOTTEN_BEAST_4:MUSCLE -CREATURE:FORGOTTEN_BEAST_4:EYE - CREATURE:FORGOTTEN_BEAST_4:BRAIN -CREATURE:FORGOTTEN_BEAST_4:LUNG - CREATURE:FORGOTTEN_BEAST_4:HEART - CREATURE:FORGOTTEN_BEAST_4:LIVER -CREATURE:FORGOTTEN_BEAST_4:GUT -"CREATURE:FORGOTTEN_BEAST_4:STOMACH -"CREATURE:FORGOTTEN_BEAST_4:GIZZARD -#CREATURE:FORGOTTEN_BEAST_4:PANCREAS -!CREATURE:FORGOTTEN_BEAST_4:SPLEEN -!CREATURE:FORGOTTEN_BEAST_4:KIDNEY -!CREATURE:FORGOTTEN_BEAST_5:MUSCLE -CREATURE:FORGOTTEN_BEAST_5:EYE - CREATURE:FORGOTTEN_BEAST_5:BRAIN -CREATURE:FORGOTTEN_BEAST_5:LUNG - CREATURE:FORGOTTEN_BEAST_5:HEART - CREATURE:FORGOTTEN_BEAST_5:LIVER -CREATURE:FORGOTTEN_BEAST_5:GUT -"CREATURE:FORGOTTEN_BEAST_5:STOMACH -"CREATURE:FORGOTTEN_BEAST_5:GIZZARD -#CREATURE:FORGOTTEN_BEAST_5:PANCREAS -!CREATURE:FORGOTTEN_BEAST_5:SPLEEN -!CREATURE:FORGOTTEN_BEAST_5:KIDNEY -!CREATURE:FORGOTTEN_BEAST_6:MUSCLE -CREATURE:FORGOTTEN_BEAST_6:EYE - CREATURE:FORGOTTEN_BEAST_6:BRAIN -CREATURE:FORGOTTEN_BEAST_6:LUNG - CREATURE:FORGOTTEN_BEAST_6:HEART - CREATURE:FORGOTTEN_BEAST_6:LIVER -CREATURE:FORGOTTEN_BEAST_6:GUT -"CREATURE:FORGOTTEN_BEAST_6:STOMACH -"CREATURE:FORGOTTEN_BEAST_6:GIZZARD -#CREATURE:FORGOTTEN_BEAST_6:PANCREAS -!CREATURE:FORGOTTEN_BEAST_6:SPLEEN -!CREATURE:FORGOTTEN_BEAST_6:KIDNEY -!CREATURE:FORGOTTEN_BEAST_7:MUSCLE -CREATURE:FORGOTTEN_BEAST_7:EYE - CREATURE:FORGOTTEN_BEAST_7:BRAIN -CREATURE:FORGOTTEN_BEAST_7:LUNG - CREATURE:FORGOTTEN_BEAST_7:HEART - CREATURE:FORGOTTEN_BEAST_7:LIVER -CREATURE:FORGOTTEN_BEAST_7:GUT -"CREATURE:FORGOTTEN_BEAST_7:STOMACH -"CREATURE:FORGOTTEN_BEAST_7:GIZZARD -#CREATURE:FORGOTTEN_BEAST_7:PANCREAS -!CREATURE:FORGOTTEN_BEAST_7:SPLEEN -!CREATURE:FORGOTTEN_BEAST_7:KIDNEY -"CREATURE:FORGOTTEN_BEAST_10:MUSCLE -CREATURE:FORGOTTEN_BEAST_10:EYE -!CREATURE:FORGOTTEN_BEAST_10:BRAIN - CREATURE:FORGOTTEN_BEAST_10:LUNG -!CREATURE:FORGOTTEN_BEAST_10:HEART -!CREATURE:FORGOTTEN_BEAST_10:LIVER -CREATURE:FORGOTTEN_BEAST_10:GUT -#CREATURE:FORGOTTEN_BEAST_10:STOMACH -#CREATURE:FORGOTTEN_BEAST_10:GIZZARD -$CREATURE:FORGOTTEN_BEAST_10:PANCREAS -"CREATURE:FORGOTTEN_BEAST_10:SPLEEN -"CREATURE:FORGOTTEN_BEAST_10:KIDNEY -"CREATURE:FORGOTTEN_BEAST_12:MUSCLE -CREATURE:FORGOTTEN_BEAST_12:EYE -!CREATURE:FORGOTTEN_BEAST_12:BRAIN - CREATURE:FORGOTTEN_BEAST_12:LUNG -!CREATURE:FORGOTTEN_BEAST_12:HEART -!CREATURE:FORGOTTEN_BEAST_12:LIVER -CREATURE:FORGOTTEN_BEAST_12:GUT -#CREATURE:FORGOTTEN_BEAST_12:STOMACH -#CREATURE:FORGOTTEN_BEAST_12:GIZZARD -$CREATURE:FORGOTTEN_BEAST_12:PANCREAS -"CREATURE:FORGOTTEN_BEAST_12:SPLEEN -"CREATURE:FORGOTTEN_BEAST_12:KIDNEY -"CREATURE:FORGOTTEN_BEAST_13:MUSCLE -CREATURE:FORGOTTEN_BEAST_13:EYE -!CREATURE:FORGOTTEN_BEAST_13:BRAIN - CREATURE:FORGOTTEN_BEAST_13:LUNG -!CREATURE:FORGOTTEN_BEAST_13:HEART -!CREATURE:FORGOTTEN_BEAST_13:LIVER -CREATURE:FORGOTTEN_BEAST_13:GUT -#CREATURE:FORGOTTEN_BEAST_13:STOMACH -#CREATURE:FORGOTTEN_BEAST_13:GIZZARD -$CREATURE:FORGOTTEN_BEAST_13:PANCREAS -"CREATURE:FORGOTTEN_BEAST_13:SPLEEN -"CREATURE:FORGOTTEN_BEAST_13:KIDNEY -"CREATURE:FORGOTTEN_BEAST_16:MUSCLE -CREATURE:FORGOTTEN_BEAST_16:EYE -!CREATURE:FORGOTTEN_BEAST_16:BRAIN - CREATURE:FORGOTTEN_BEAST_16:LUNG -!CREATURE:FORGOTTEN_BEAST_16:HEART -!CREATURE:FORGOTTEN_BEAST_16:LIVER -CREATURE:FORGOTTEN_BEAST_16:GUT -#CREATURE:FORGOTTEN_BEAST_16:STOMACH -#CREATURE:FORGOTTEN_BEAST_16:GIZZARD -$CREATURE:FORGOTTEN_BEAST_16:PANCREAS -"CREATURE:FORGOTTEN_BEAST_16:SPLEEN -"CREATURE:FORGOTTEN_BEAST_16:KIDNEY -"CREATURE:FORGOTTEN_BEAST_17:MUSCLE -CREATURE:FORGOTTEN_BEAST_17:EYE -!CREATURE:FORGOTTEN_BEAST_17:BRAIN - CREATURE:FORGOTTEN_BEAST_17:LUNG -!CREATURE:FORGOTTEN_BEAST_17:HEART -!CREATURE:FORGOTTEN_BEAST_17:LIVER -CREATURE:FORGOTTEN_BEAST_17:GUT -#CREATURE:FORGOTTEN_BEAST_17:STOMACH -#CREATURE:FORGOTTEN_BEAST_17:GIZZARD -$CREATURE:FORGOTTEN_BEAST_17:PANCREAS -"CREATURE:FORGOTTEN_BEAST_17:SPLEEN -"CREATURE:FORGOTTEN_BEAST_17:KIDNEY -"CREATURE:FORGOTTEN_BEAST_18:MUSCLE -CREATURE:FORGOTTEN_BEAST_18:EYE -!CREATURE:FORGOTTEN_BEAST_18:BRAIN - CREATURE:FORGOTTEN_BEAST_18:LUNG -!CREATURE:FORGOTTEN_BEAST_18:HEART -!CREATURE:FORGOTTEN_BEAST_18:LIVER -CREATURE:FORGOTTEN_BEAST_18:GUT -#CREATURE:FORGOTTEN_BEAST_18:STOMACH -#CREATURE:FORGOTTEN_BEAST_18:GIZZARD -$CREATURE:FORGOTTEN_BEAST_18:PANCREAS -"CREATURE:FORGOTTEN_BEAST_18:SPLEEN -"CREATURE:FORGOTTEN_BEAST_18:KIDNEY -"CREATURE:FORGOTTEN_BEAST_19:MUSCLE -CREATURE:FORGOTTEN_BEAST_19:EYE -!CREATURE:FORGOTTEN_BEAST_19:BRAIN - CREATURE:FORGOTTEN_BEAST_19:LUNG -!CREATURE:FORGOTTEN_BEAST_19:HEART -!CREATURE:FORGOTTEN_BEAST_19:LIVER -CREATURE:FORGOTTEN_BEAST_19:GUT -#CREATURE:FORGOTTEN_BEAST_19:STOMACH -#CREATURE:FORGOTTEN_BEAST_19:GIZZARD -$CREATURE:FORGOTTEN_BEAST_19:PANCREAS -"CREATURE:FORGOTTEN_BEAST_19:SPLEEN -"CREATURE:FORGOTTEN_BEAST_19:KIDNEY -"CREATURE:FORGOTTEN_BEAST_20:MUSCLE -CREATURE:FORGOTTEN_BEAST_20:EYE -!CREATURE:FORGOTTEN_BEAST_20:BRAIN - CREATURE:FORGOTTEN_BEAST_20:LUNG -!CREATURE:FORGOTTEN_BEAST_20:HEART -!CREATURE:FORGOTTEN_BEAST_20:LIVER -CREATURE:FORGOTTEN_BEAST_20:GUT -#CREATURE:FORGOTTEN_BEAST_20:STOMACH -#CREATURE:FORGOTTEN_BEAST_20:GIZZARD -$CREATURE:FORGOTTEN_BEAST_20:PANCREAS -"CREATURE:FORGOTTEN_BEAST_20:SPLEEN -"CREATURE:FORGOTTEN_BEAST_20:KIDNEY -"CREATURE:FORGOTTEN_BEAST_22:MUSCLE -CREATURE:FORGOTTEN_BEAST_22:EYE -!CREATURE:FORGOTTEN_BEAST_22:BRAIN - CREATURE:FORGOTTEN_BEAST_22:LUNG -!CREATURE:FORGOTTEN_BEAST_22:HEART -!CREATURE:FORGOTTEN_BEAST_22:LIVER -CREATURE:FORGOTTEN_BEAST_22:GUT -#CREATURE:FORGOTTEN_BEAST_22:STOMACH -#CREATURE:FORGOTTEN_BEAST_22:GIZZARD -$CREATURE:FORGOTTEN_BEAST_22:PANCREAS -"CREATURE:FORGOTTEN_BEAST_22:SPLEEN -"CREATURE:FORGOTTEN_BEAST_22:KIDNEY -"CREATURE:FORGOTTEN_BEAST_23:MUSCLE -CREATURE:FORGOTTEN_BEAST_23:EYE -!CREATURE:FORGOTTEN_BEAST_23:BRAIN - CREATURE:FORGOTTEN_BEAST_23:LUNG -!CREATURE:FORGOTTEN_BEAST_23:HEART -!CREATURE:FORGOTTEN_BEAST_23:LIVER -CREATURE:FORGOTTEN_BEAST_23:GUT -#CREATURE:FORGOTTEN_BEAST_23:STOMACH -#CREATURE:FORGOTTEN_BEAST_23:GIZZARD -$CREATURE:FORGOTTEN_BEAST_23:PANCREAS -"CREATURE:FORGOTTEN_BEAST_23:SPLEEN -"CREATURE:FORGOTTEN_BEAST_23:KIDNEY -"CREATURE:FORGOTTEN_BEAST_24:MUSCLE -CREATURE:FORGOTTEN_BEAST_24:EYE -!CREATURE:FORGOTTEN_BEAST_24:BRAIN - CREATURE:FORGOTTEN_BEAST_24:LUNG -!CREATURE:FORGOTTEN_BEAST_24:HEART -!CREATURE:FORGOTTEN_BEAST_24:LIVER -CREATURE:FORGOTTEN_BEAST_24:GUT -#CREATURE:FORGOTTEN_BEAST_24:STOMACH -#CREATURE:FORGOTTEN_BEAST_24:GIZZARD -$CREATURE:FORGOTTEN_BEAST_24:PANCREAS -"CREATURE:FORGOTTEN_BEAST_24:SPLEEN -"CREATURE:FORGOTTEN_BEAST_24:KIDNEY -"CREATURE:FORGOTTEN_BEAST_25:MUSCLE -CREATURE:FORGOTTEN_BEAST_25:EYE -!CREATURE:FORGOTTEN_BEAST_25:BRAIN - CREATURE:FORGOTTEN_BEAST_25:LUNG -!CREATURE:FORGOTTEN_BEAST_25:HEART -!CREATURE:FORGOTTEN_BEAST_25:LIVER -CREATURE:FORGOTTEN_BEAST_25:GUT -#CREATURE:FORGOTTEN_BEAST_25:STOMACH -#CREATURE:FORGOTTEN_BEAST_25:GIZZARD -$CREATURE:FORGOTTEN_BEAST_25:PANCREAS -"CREATURE:FORGOTTEN_BEAST_25:SPLEEN -"CREATURE:FORGOTTEN_BEAST_25:KIDNEY -"CREATURE:FORGOTTEN_BEAST_26:MUSCLE -CREATURE:FORGOTTEN_BEAST_26:EYE -!CREATURE:FORGOTTEN_BEAST_26:BRAIN - CREATURE:FORGOTTEN_BEAST_26:LUNG -!CREATURE:FORGOTTEN_BEAST_26:HEART -!CREATURE:FORGOTTEN_BEAST_26:LIVER -CREATURE:FORGOTTEN_BEAST_26:GUT -#CREATURE:FORGOTTEN_BEAST_26:STOMACH -#CREATURE:FORGOTTEN_BEAST_26:GIZZARD -$CREATURE:FORGOTTEN_BEAST_26:PANCREAS -"CREATURE:FORGOTTEN_BEAST_26:SPLEEN -"CREATURE:FORGOTTEN_BEAST_26:KIDNEY -"CREATURE:FORGOTTEN_BEAST_27:MUSCLE -CREATURE:FORGOTTEN_BEAST_27:EYE -!CREATURE:FORGOTTEN_BEAST_27:BRAIN - CREATURE:FORGOTTEN_BEAST_27:LUNG -!CREATURE:FORGOTTEN_BEAST_27:HEART -!CREATURE:FORGOTTEN_BEAST_27:LIVER -CREATURE:FORGOTTEN_BEAST_27:GUT -#CREATURE:FORGOTTEN_BEAST_27:STOMACH -#CREATURE:FORGOTTEN_BEAST_27:GIZZARD -$CREATURE:FORGOTTEN_BEAST_27:PANCREAS -"CREATURE:FORGOTTEN_BEAST_27:SPLEEN -"CREATURE:FORGOTTEN_BEAST_27:KIDNEY -"CREATURE:FORGOTTEN_BEAST_28:MUSCLE -CREATURE:FORGOTTEN_BEAST_28:EYE -!CREATURE:FORGOTTEN_BEAST_28:BRAIN - CREATURE:FORGOTTEN_BEAST_28:LUNG -!CREATURE:FORGOTTEN_BEAST_28:HEART -!CREATURE:FORGOTTEN_BEAST_28:LIVER -CREATURE:FORGOTTEN_BEAST_28:GUT -#CREATURE:FORGOTTEN_BEAST_28:STOMACH -#CREATURE:FORGOTTEN_BEAST_28:GIZZARD -$CREATURE:FORGOTTEN_BEAST_28:PANCREAS -"CREATURE:FORGOTTEN_BEAST_28:SPLEEN -"CREATURE:FORGOTTEN_BEAST_28:KIDNEY -"CREATURE:FORGOTTEN_BEAST_29:MUSCLE -CREATURE:FORGOTTEN_BEAST_29:EYE -!CREATURE:FORGOTTEN_BEAST_29:BRAIN - CREATURE:FORGOTTEN_BEAST_29:LUNG -!CREATURE:FORGOTTEN_BEAST_29:HEART -!CREATURE:FORGOTTEN_BEAST_29:LIVER -CREATURE:FORGOTTEN_BEAST_29:GUT -#CREATURE:FORGOTTEN_BEAST_29:STOMACH -#CREATURE:FORGOTTEN_BEAST_29:GIZZARD -$CREATURE:FORGOTTEN_BEAST_29:PANCREAS -"CREATURE:FORGOTTEN_BEAST_29:SPLEEN -"CREATURE:FORGOTTEN_BEAST_29:KIDNEY -"CREATURE:FORGOTTEN_BEAST_32:MUSCLE -CREATURE:FORGOTTEN_BEAST_32:EYE -!CREATURE:FORGOTTEN_BEAST_32:BRAIN - CREATURE:FORGOTTEN_BEAST_32:LUNG -!CREATURE:FORGOTTEN_BEAST_32:HEART -!CREATURE:FORGOTTEN_BEAST_32:LIVER -CREATURE:FORGOTTEN_BEAST_32:GUT -#CREATURE:FORGOTTEN_BEAST_32:STOMACH -#CREATURE:FORGOTTEN_BEAST_32:GIZZARD -$CREATURE:FORGOTTEN_BEAST_32:PANCREAS -"CREATURE:FORGOTTEN_BEAST_32:SPLEEN -"CREATURE:FORGOTTEN_BEAST_32:KIDNEY -"CREATURE:FORGOTTEN_BEAST_33:MUSCLE -CREATURE:FORGOTTEN_BEAST_33:EYE -!CREATURE:FORGOTTEN_BEAST_33:BRAIN - CREATURE:FORGOTTEN_BEAST_33:LUNG -!CREATURE:FORGOTTEN_BEAST_33:HEART -!CREATURE:FORGOTTEN_BEAST_33:LIVER -CREATURE:FORGOTTEN_BEAST_33:GUT -#CREATURE:FORGOTTEN_BEAST_33:STOMACH -#CREATURE:FORGOTTEN_BEAST_33:GIZZARD -$CREATURE:FORGOTTEN_BEAST_33:PANCREAS -"CREATURE:FORGOTTEN_BEAST_33:SPLEEN -"CREATURE:FORGOTTEN_BEAST_33:KIDNEY -"CREATURE:FORGOTTEN_BEAST_34:MUSCLE -CREATURE:FORGOTTEN_BEAST_34:EYE -!CREATURE:FORGOTTEN_BEAST_34:BRAIN - CREATURE:FORGOTTEN_BEAST_34:LUNG -!CREATURE:FORGOTTEN_BEAST_34:HEART -!CREATURE:FORGOTTEN_BEAST_34:LIVER -CREATURE:FORGOTTEN_BEAST_34:GUT -#CREATURE:FORGOTTEN_BEAST_34:STOMACH -#CREATURE:FORGOTTEN_BEAST_34:GIZZARD -$CREATURE:FORGOTTEN_BEAST_34:PANCREAS -"CREATURE:FORGOTTEN_BEAST_34:SPLEEN -"CREATURE:FORGOTTEN_BEAST_34:KIDNEY -"CREATURE:FORGOTTEN_BEAST_35:MUSCLE -CREATURE:FORGOTTEN_BEAST_35:EYE -!CREATURE:FORGOTTEN_BEAST_35:BRAIN - CREATURE:FORGOTTEN_BEAST_35:LUNG -!CREATURE:FORGOTTEN_BEAST_35:HEART -!CREATURE:FORGOTTEN_BEAST_35:LIVER -CREATURE:FORGOTTEN_BEAST_35:GUT -#CREATURE:FORGOTTEN_BEAST_35:STOMACH -#CREATURE:FORGOTTEN_BEAST_35:GIZZARD -$CREATURE:FORGOTTEN_BEAST_35:PANCREAS -"CREATURE:FORGOTTEN_BEAST_35:SPLEEN -"CREATURE:FORGOTTEN_BEAST_35:KIDNEY -"CREATURE:FORGOTTEN_BEAST_36:MUSCLE -CREATURE:FORGOTTEN_BEAST_36:EYE -!CREATURE:FORGOTTEN_BEAST_36:BRAIN - CREATURE:FORGOTTEN_BEAST_36:LUNG -!CREATURE:FORGOTTEN_BEAST_36:HEART -!CREATURE:FORGOTTEN_BEAST_36:LIVER -CREATURE:FORGOTTEN_BEAST_36:GUT -#CREATURE:FORGOTTEN_BEAST_36:STOMACH -#CREATURE:FORGOTTEN_BEAST_36:GIZZARD -$CREATURE:FORGOTTEN_BEAST_36:PANCREAS -"CREATURE:FORGOTTEN_BEAST_36:SPLEEN -"CREATURE:FORGOTTEN_BEAST_36:KIDNEY -"CREATURE:FORGOTTEN_BEAST_39:MUSCLE -CREATURE:FORGOTTEN_BEAST_39:EYE -!CREATURE:FORGOTTEN_BEAST_39:BRAIN - CREATURE:FORGOTTEN_BEAST_39:LUNG -!CREATURE:FORGOTTEN_BEAST_39:HEART -!CREATURE:FORGOTTEN_BEAST_39:LIVER -CREATURE:FORGOTTEN_BEAST_39:GUT -#CREATURE:FORGOTTEN_BEAST_39:STOMACH -#CREATURE:FORGOTTEN_BEAST_39:GIZZARD -$CREATURE:FORGOTTEN_BEAST_39:PANCREAS -"CREATURE:FORGOTTEN_BEAST_39:SPLEEN -"CREATURE:FORGOTTEN_BEAST_39:KIDNEY -"CREATURE:FORGOTTEN_BEAST_41:MUSCLE -CREATURE:FORGOTTEN_BEAST_41:EYE -!CREATURE:FORGOTTEN_BEAST_41:BRAIN - CREATURE:FORGOTTEN_BEAST_41:LUNG -!CREATURE:FORGOTTEN_BEAST_41:HEART -!CREATURE:FORGOTTEN_BEAST_41:LIVER -CREATURE:FORGOTTEN_BEAST_41:GUT -#CREATURE:FORGOTTEN_BEAST_41:STOMACH -#CREATURE:FORGOTTEN_BEAST_41:GIZZARD -$CREATURE:FORGOTTEN_BEAST_41:PANCREAS -"CREATURE:FORGOTTEN_BEAST_41:SPLEEN -"CREATURE:FORGOTTEN_BEAST_41:KIDNEY -"CREATURE:FORGOTTEN_BEAST_42:MUSCLE -CREATURE:FORGOTTEN_BEAST_42:EYE -!CREATURE:FORGOTTEN_BEAST_42:BRAIN - CREATURE:FORGOTTEN_BEAST_42:LUNG -!CREATURE:FORGOTTEN_BEAST_42:HEART -!CREATURE:FORGOTTEN_BEAST_42:LIVER -CREATURE:FORGOTTEN_BEAST_42:GUT -#CREATURE:FORGOTTEN_BEAST_42:STOMACH -#CREATURE:FORGOTTEN_BEAST_42:GIZZARD -$CREATURE:FORGOTTEN_BEAST_42:PANCREAS -"CREATURE:FORGOTTEN_BEAST_42:SPLEEN -"CREATURE:FORGOTTEN_BEAST_42:KIDNEY -"CREATURE:FORGOTTEN_BEAST_43:MUSCLE -CREATURE:FORGOTTEN_BEAST_43:EYE -!CREATURE:FORGOTTEN_BEAST_43:BRAIN - CREATURE:FORGOTTEN_BEAST_43:LUNG -!CREATURE:FORGOTTEN_BEAST_43:HEART -!CREATURE:FORGOTTEN_BEAST_43:LIVER -CREATURE:FORGOTTEN_BEAST_43:GUT -#CREATURE:FORGOTTEN_BEAST_43:STOMACH -#CREATURE:FORGOTTEN_BEAST_43:GIZZARD -$CREATURE:FORGOTTEN_BEAST_43:PANCREAS -"CREATURE:FORGOTTEN_BEAST_43:SPLEEN -"CREATURE:FORGOTTEN_BEAST_43:KIDNEY -"CREATURE:FORGOTTEN_BEAST_44:MUSCLE -CREATURE:FORGOTTEN_BEAST_44:EYE -!CREATURE:FORGOTTEN_BEAST_44:BRAIN - CREATURE:FORGOTTEN_BEAST_44:LUNG -!CREATURE:FORGOTTEN_BEAST_44:HEART -!CREATURE:FORGOTTEN_BEAST_44:LIVER -CREATURE:FORGOTTEN_BEAST_44:GUT -#CREATURE:FORGOTTEN_BEAST_44:STOMACH -#CREATURE:FORGOTTEN_BEAST_44:GIZZARD -$CREATURE:FORGOTTEN_BEAST_44:PANCREAS -"CREATURE:FORGOTTEN_BEAST_44:SPLEEN -"CREATURE:FORGOTTEN_BEAST_44:KIDNEY -"CREATURE:FORGOTTEN_BEAST_45:MUSCLE -CREATURE:FORGOTTEN_BEAST_45:EYE -!CREATURE:FORGOTTEN_BEAST_45:BRAIN - CREATURE:FORGOTTEN_BEAST_45:LUNG -!CREATURE:FORGOTTEN_BEAST_45:HEART -!CREATURE:FORGOTTEN_BEAST_45:LIVER -CREATURE:FORGOTTEN_BEAST_45:GUT -#CREATURE:FORGOTTEN_BEAST_45:STOMACH -#CREATURE:FORGOTTEN_BEAST_45:GIZZARD -$CREATURE:FORGOTTEN_BEAST_45:PANCREAS -"CREATURE:FORGOTTEN_BEAST_45:SPLEEN -"CREATURE:FORGOTTEN_BEAST_45:KIDNEY -"CREATURE:FORGOTTEN_BEAST_47:MUSCLE -CREATURE:FORGOTTEN_BEAST_47:EYE -!CREATURE:FORGOTTEN_BEAST_47:BRAIN - CREATURE:FORGOTTEN_BEAST_47:LUNG -!CREATURE:FORGOTTEN_BEAST_47:HEART -!CREATURE:FORGOTTEN_BEAST_47:LIVER -CREATURE:FORGOTTEN_BEAST_47:GUT -#CREATURE:FORGOTTEN_BEAST_47:STOMACH -#CREATURE:FORGOTTEN_BEAST_47:GIZZARD -$CREATURE:FORGOTTEN_BEAST_47:PANCREAS -"CREATURE:FORGOTTEN_BEAST_47:SPLEEN -"CREATURE:FORGOTTEN_BEAST_47:KIDNEY -"CREATURE:FORGOTTEN_BEAST_50:MUSCLE -CREATURE:FORGOTTEN_BEAST_50:EYE -!CREATURE:FORGOTTEN_BEAST_50:BRAIN - CREATURE:FORGOTTEN_BEAST_50:LUNG -!CREATURE:FORGOTTEN_BEAST_50:HEART -!CREATURE:FORGOTTEN_BEAST_50:LIVER -CREATURE:FORGOTTEN_BEAST_50:GUT -#CREATURE:FORGOTTEN_BEAST_50:STOMACH -#CREATURE:FORGOTTEN_BEAST_50:GIZZARD -$CREATURE:FORGOTTEN_BEAST_50:PANCREAS -"CREATURE:FORGOTTEN_BEAST_50:SPLEEN -"CREATURE:FORGOTTEN_BEAST_50:KIDNEY -"CREATURE:FORGOTTEN_BEAST_52:MUSCLE -CREATURE:FORGOTTEN_BEAST_52:EYE -!CREATURE:FORGOTTEN_BEAST_52:BRAIN - CREATURE:FORGOTTEN_BEAST_52:LUNG -!CREATURE:FORGOTTEN_BEAST_52:HEART -!CREATURE:FORGOTTEN_BEAST_52:LIVER -CREATURE:FORGOTTEN_BEAST_52:GUT -#CREATURE:FORGOTTEN_BEAST_52:STOMACH -#CREATURE:FORGOTTEN_BEAST_52:GIZZARD -$CREATURE:FORGOTTEN_BEAST_52:PANCREAS -"CREATURE:FORGOTTEN_BEAST_52:SPLEEN -"CREATURE:FORGOTTEN_BEAST_52:KIDNEY -"CREATURE:FORGOTTEN_BEAST_53:MUSCLE -CREATURE:FORGOTTEN_BEAST_53:EYE -!CREATURE:FORGOTTEN_BEAST_53:BRAIN - CREATURE:FORGOTTEN_BEAST_53:LUNG -!CREATURE:FORGOTTEN_BEAST_53:HEART -!CREATURE:FORGOTTEN_BEAST_53:LIVER -CREATURE:FORGOTTEN_BEAST_53:GUT -#CREATURE:FORGOTTEN_BEAST_53:STOMACH -#CREATURE:FORGOTTEN_BEAST_53:GIZZARD -$CREATURE:FORGOTTEN_BEAST_53:PANCREAS -"CREATURE:FORGOTTEN_BEAST_53:SPLEEN -"CREATURE:FORGOTTEN_BEAST_53:KIDNEY -"CREATURE:FORGOTTEN_BEAST_55:MUSCLE -CREATURE:FORGOTTEN_BEAST_55:EYE -!CREATURE:FORGOTTEN_BEAST_55:BRAIN - CREATURE:FORGOTTEN_BEAST_55:LUNG -!CREATURE:FORGOTTEN_BEAST_55:HEART -!CREATURE:FORGOTTEN_BEAST_55:LIVER -CREATURE:FORGOTTEN_BEAST_55:GUT -#CREATURE:FORGOTTEN_BEAST_55:STOMACH -#CREATURE:FORGOTTEN_BEAST_55:GIZZARD -$CREATURE:FORGOTTEN_BEAST_55:PANCREAS -"CREATURE:FORGOTTEN_BEAST_55:SPLEEN -"CREATURE:FORGOTTEN_BEAST_55:KIDNEY -"CREATURE:FORGOTTEN_BEAST_56:MUSCLE -CREATURE:FORGOTTEN_BEAST_56:EYE -!CREATURE:FORGOTTEN_BEAST_56:BRAIN - CREATURE:FORGOTTEN_BEAST_56:LUNG -!CREATURE:FORGOTTEN_BEAST_56:HEART -!CREATURE:FORGOTTEN_BEAST_56:LIVER -CREATURE:FORGOTTEN_BEAST_56:GUT -#CREATURE:FORGOTTEN_BEAST_56:STOMACH -#CREATURE:FORGOTTEN_BEAST_56:GIZZARD -$CREATURE:FORGOTTEN_BEAST_56:PANCREAS -"CREATURE:FORGOTTEN_BEAST_56:SPLEEN -"CREATURE:FORGOTTEN_BEAST_56:KIDNEY -"CREATURE:FORGOTTEN_BEAST_58:MUSCLE -CREATURE:FORGOTTEN_BEAST_58:EYE -!CREATURE:FORGOTTEN_BEAST_58:BRAIN - CREATURE:FORGOTTEN_BEAST_58:LUNG -!CREATURE:FORGOTTEN_BEAST_58:HEART -!CREATURE:FORGOTTEN_BEAST_58:LIVER -CREATURE:FORGOTTEN_BEAST_58:GUT -#CREATURE:FORGOTTEN_BEAST_58:STOMACH -#CREATURE:FORGOTTEN_BEAST_58:GIZZARD -$CREATURE:FORGOTTEN_BEAST_58:PANCREAS -"CREATURE:FORGOTTEN_BEAST_58:SPLEEN -"CREATURE:FORGOTTEN_BEAST_58:KIDNEY -"CREATURE:FORGOTTEN_BEAST_59:MUSCLE -CREATURE:FORGOTTEN_BEAST_59:EYE -!CREATURE:FORGOTTEN_BEAST_59:BRAIN - CREATURE:FORGOTTEN_BEAST_59:LUNG -!CREATURE:FORGOTTEN_BEAST_59:HEART -!CREATURE:FORGOTTEN_BEAST_59:LIVER -CREATURE:FORGOTTEN_BEAST_59:GUT -#CREATURE:FORGOTTEN_BEAST_59:STOMACH -#CREATURE:FORGOTTEN_BEAST_59:GIZZARD -$CREATURE:FORGOTTEN_BEAST_59:PANCREAS -"CREATURE:FORGOTTEN_BEAST_59:SPLEEN -"CREATURE:FORGOTTEN_BEAST_59:KIDNEY -"CREATURE:FORGOTTEN_BEAST_60:MUSCLE -CREATURE:FORGOTTEN_BEAST_60:EYE -!CREATURE:FORGOTTEN_BEAST_60:BRAIN - CREATURE:FORGOTTEN_BEAST_60:LUNG -!CREATURE:FORGOTTEN_BEAST_60:HEART -!CREATURE:FORGOTTEN_BEAST_60:LIVER -CREATURE:FORGOTTEN_BEAST_60:GUT -#CREATURE:FORGOTTEN_BEAST_60:STOMACH -#CREATURE:FORGOTTEN_BEAST_60:GIZZARD -$CREATURE:FORGOTTEN_BEAST_60:PANCREAS -"CREATURE:FORGOTTEN_BEAST_60:SPLEEN -"CREATURE:FORGOTTEN_BEAST_60:KIDNEY -"CREATURE:FORGOTTEN_BEAST_61:MUSCLE -CREATURE:FORGOTTEN_BEAST_61:EYE -!CREATURE:FORGOTTEN_BEAST_61:BRAIN - CREATURE:FORGOTTEN_BEAST_61:LUNG -!CREATURE:FORGOTTEN_BEAST_61:HEART -!CREATURE:FORGOTTEN_BEAST_61:LIVER -CREATURE:FORGOTTEN_BEAST_61:GUT -#CREATURE:FORGOTTEN_BEAST_61:STOMACH -#CREATURE:FORGOTTEN_BEAST_61:GIZZARD -$CREATURE:FORGOTTEN_BEAST_61:PANCREAS -"CREATURE:FORGOTTEN_BEAST_61:SPLEEN -"CREATURE:FORGOTTEN_BEAST_61:KIDNEY -"CREATURE:FORGOTTEN_BEAST_64:MUSCLE -CREATURE:FORGOTTEN_BEAST_64:EYE -!CREATURE:FORGOTTEN_BEAST_64:BRAIN - CREATURE:FORGOTTEN_BEAST_64:LUNG -!CREATURE:FORGOTTEN_BEAST_64:HEART -!CREATURE:FORGOTTEN_BEAST_64:LIVER -CREATURE:FORGOTTEN_BEAST_64:GUT -#CREATURE:FORGOTTEN_BEAST_64:STOMACH -#CREATURE:FORGOTTEN_BEAST_64:GIZZARD -$CREATURE:FORGOTTEN_BEAST_64:PANCREAS -"CREATURE:FORGOTTEN_BEAST_64:SPLEEN -"CREATURE:FORGOTTEN_BEAST_64:KIDNEY -"CREATURE:FORGOTTEN_BEAST_66:MUSCLE -CREATURE:FORGOTTEN_BEAST_66:EYE -!CREATURE:FORGOTTEN_BEAST_66:BRAIN - CREATURE:FORGOTTEN_BEAST_66:LUNG -!CREATURE:FORGOTTEN_BEAST_66:HEART -!CREATURE:FORGOTTEN_BEAST_66:LIVER -CREATURE:FORGOTTEN_BEAST_66:GUT -#CREATURE:FORGOTTEN_BEAST_66:STOMACH -#CREATURE:FORGOTTEN_BEAST_66:GIZZARD -$CREATURE:FORGOTTEN_BEAST_66:PANCREAS -"CREATURE:FORGOTTEN_BEAST_66:SPLEEN -"CREATURE:FORGOTTEN_BEAST_66:KIDNEY -"CREATURE:FORGOTTEN_BEAST_67:MUSCLE -CREATURE:FORGOTTEN_BEAST_67:EYE -!CREATURE:FORGOTTEN_BEAST_67:BRAIN - CREATURE:FORGOTTEN_BEAST_67:LUNG -!CREATURE:FORGOTTEN_BEAST_67:HEART -!CREATURE:FORGOTTEN_BEAST_67:LIVER -CREATURE:FORGOTTEN_BEAST_67:GUT -#CREATURE:FORGOTTEN_BEAST_67:STOMACH -#CREATURE:FORGOTTEN_BEAST_67:GIZZARD -$CREATURE:FORGOTTEN_BEAST_67:PANCREAS -"CREATURE:FORGOTTEN_BEAST_67:SPLEEN -"CREATURE:FORGOTTEN_BEAST_67:KIDNEY -"CREATURE:FORGOTTEN_BEAST_69:MUSCLE -CREATURE:FORGOTTEN_BEAST_69:EYE -!CREATURE:FORGOTTEN_BEAST_69:BRAIN - CREATURE:FORGOTTEN_BEAST_69:LUNG -!CREATURE:FORGOTTEN_BEAST_69:HEART -!CREATURE:FORGOTTEN_BEAST_69:LIVER -CREATURE:FORGOTTEN_BEAST_69:GUT -#CREATURE:FORGOTTEN_BEAST_69:STOMACH -#CREATURE:FORGOTTEN_BEAST_69:GIZZARD -$CREATURE:FORGOTTEN_BEAST_69:PANCREAS -"CREATURE:FORGOTTEN_BEAST_69:SPLEEN -"CREATURE:FORGOTTEN_BEAST_69:KIDNEY -"CREATURE:FORGOTTEN_BEAST_71:MUSCLE -CREATURE:FORGOTTEN_BEAST_71:EYE -!CREATURE:FORGOTTEN_BEAST_71:BRAIN - CREATURE:FORGOTTEN_BEAST_71:LUNG -!CREATURE:FORGOTTEN_BEAST_71:HEART -!CREATURE:FORGOTTEN_BEAST_71:LIVER -CREATURE:FORGOTTEN_BEAST_71:GUT -#CREATURE:FORGOTTEN_BEAST_71:STOMACH -#CREATURE:FORGOTTEN_BEAST_71:GIZZARD -$CREATURE:FORGOTTEN_BEAST_71:PANCREAS -"CREATURE:FORGOTTEN_BEAST_71:SPLEEN -"CREATURE:FORGOTTEN_BEAST_71:KIDNEY -"CREATURE:FORGOTTEN_BEAST_72:MUSCLE -CREATURE:FORGOTTEN_BEAST_72:EYE -!CREATURE:FORGOTTEN_BEAST_72:BRAIN - CREATURE:FORGOTTEN_BEAST_72:LUNG -!CREATURE:FORGOTTEN_BEAST_72:HEART -!CREATURE:FORGOTTEN_BEAST_72:LIVER -CREATURE:FORGOTTEN_BEAST_72:GUT -#CREATURE:FORGOTTEN_BEAST_72:STOMACH -#CREATURE:FORGOTTEN_BEAST_72:GIZZARD -$CREATURE:FORGOTTEN_BEAST_72:PANCREAS -"CREATURE:FORGOTTEN_BEAST_72:SPLEEN -"CREATURE:FORGOTTEN_BEAST_72:KIDNEY -"CREATURE:FORGOTTEN_BEAST_73:MUSCLE -CREATURE:FORGOTTEN_BEAST_73:EYE -!CREATURE:FORGOTTEN_BEAST_73:BRAIN - CREATURE:FORGOTTEN_BEAST_73:LUNG -!CREATURE:FORGOTTEN_BEAST_73:HEART -!CREATURE:FORGOTTEN_BEAST_73:LIVER -CREATURE:FORGOTTEN_BEAST_73:GUT -#CREATURE:FORGOTTEN_BEAST_73:STOMACH -#CREATURE:FORGOTTEN_BEAST_73:GIZZARD -$CREATURE:FORGOTTEN_BEAST_73:PANCREAS -"CREATURE:FORGOTTEN_BEAST_73:SPLEEN -"CREATURE:FORGOTTEN_BEAST_73:KIDNEY -"CREATURE:FORGOTTEN_BEAST_74:MUSCLE -CREATURE:FORGOTTEN_BEAST_74:EYE -!CREATURE:FORGOTTEN_BEAST_74:BRAIN - CREATURE:FORGOTTEN_BEAST_74:LUNG -!CREATURE:FORGOTTEN_BEAST_74:HEART -!CREATURE:FORGOTTEN_BEAST_74:LIVER -CREATURE:FORGOTTEN_BEAST_74:GUT -#CREATURE:FORGOTTEN_BEAST_74:STOMACH -#CREATURE:FORGOTTEN_BEAST_74:GIZZARD -$CREATURE:FORGOTTEN_BEAST_74:PANCREAS -"CREATURE:FORGOTTEN_BEAST_74:SPLEEN -"CREATURE:FORGOTTEN_BEAST_74:KIDNEY -"CREATURE:FORGOTTEN_BEAST_75:MUSCLE -CREATURE:FORGOTTEN_BEAST_75:EYE -!CREATURE:FORGOTTEN_BEAST_75:BRAIN - CREATURE:FORGOTTEN_BEAST_75:LUNG -!CREATURE:FORGOTTEN_BEAST_75:HEART -!CREATURE:FORGOTTEN_BEAST_75:LIVER -CREATURE:FORGOTTEN_BEAST_75:GUT -#CREATURE:FORGOTTEN_BEAST_75:STOMACH -#CREATURE:FORGOTTEN_BEAST_75:GIZZARD -$CREATURE:FORGOTTEN_BEAST_75:PANCREAS -"CREATURE:FORGOTTEN_BEAST_75:SPLEEN -"CREATURE:FORGOTTEN_BEAST_75:KIDNEY -"CREATURE:FORGOTTEN_BEAST_78:MUSCLE -CREATURE:FORGOTTEN_BEAST_78:EYE -!CREATURE:FORGOTTEN_BEAST_78:BRAIN - CREATURE:FORGOTTEN_BEAST_78:LUNG -!CREATURE:FORGOTTEN_BEAST_78:HEART -!CREATURE:FORGOTTEN_BEAST_78:LIVER -CREATURE:FORGOTTEN_BEAST_78:GUT -#CREATURE:FORGOTTEN_BEAST_78:STOMACH -#CREATURE:FORGOTTEN_BEAST_78:GIZZARD -$CREATURE:FORGOTTEN_BEAST_78:PANCREAS -"CREATURE:FORGOTTEN_BEAST_78:SPLEEN -"CREATURE:FORGOTTEN_BEAST_78:KIDNEY -"CREATURE:FORGOTTEN_BEAST_80:MUSCLE -CREATURE:FORGOTTEN_BEAST_80:EYE -!CREATURE:FORGOTTEN_BEAST_80:BRAIN - CREATURE:FORGOTTEN_BEAST_80:LUNG -!CREATURE:FORGOTTEN_BEAST_80:HEART -!CREATURE:FORGOTTEN_BEAST_80:LIVER -CREATURE:FORGOTTEN_BEAST_80:GUT -#CREATURE:FORGOTTEN_BEAST_80:STOMACH -#CREATURE:FORGOTTEN_BEAST_80:GIZZARD -$CREATURE:FORGOTTEN_BEAST_80:PANCREAS -"CREATURE:FORGOTTEN_BEAST_80:SPLEEN -"CREATURE:FORGOTTEN_BEAST_80:KIDNEY -"CREATURE:FORGOTTEN_BEAST_81:MUSCLE -CREATURE:FORGOTTEN_BEAST_81:EYE -!CREATURE:FORGOTTEN_BEAST_81:BRAIN - CREATURE:FORGOTTEN_BEAST_81:LUNG -!CREATURE:FORGOTTEN_BEAST_81:HEART -!CREATURE:FORGOTTEN_BEAST_81:LIVER -CREATURE:FORGOTTEN_BEAST_81:GUT -#CREATURE:FORGOTTEN_BEAST_81:STOMACH -#CREATURE:FORGOTTEN_BEAST_81:GIZZARD -$CREATURE:FORGOTTEN_BEAST_81:PANCREAS -"CREATURE:FORGOTTEN_BEAST_81:SPLEEN -"CREATURE:FORGOTTEN_BEAST_81:KIDNEY -"CREATURE:FORGOTTEN_BEAST_82:MUSCLE -CREATURE:FORGOTTEN_BEAST_82:EYE -!CREATURE:FORGOTTEN_BEAST_82:BRAIN - CREATURE:FORGOTTEN_BEAST_82:LUNG -!CREATURE:FORGOTTEN_BEAST_82:HEART -!CREATURE:FORGOTTEN_BEAST_82:LIVER -CREATURE:FORGOTTEN_BEAST_82:GUT -#CREATURE:FORGOTTEN_BEAST_82:STOMACH -#CREATURE:FORGOTTEN_BEAST_82:GIZZARD -$CREATURE:FORGOTTEN_BEAST_82:PANCREAS -"CREATURE:FORGOTTEN_BEAST_82:SPLEEN -"CREATURE:FORGOTTEN_BEAST_82:KIDNEY -"CREATURE:FORGOTTEN_BEAST_83:MUSCLE -CREATURE:FORGOTTEN_BEAST_83:EYE -!CREATURE:FORGOTTEN_BEAST_83:BRAIN - CREATURE:FORGOTTEN_BEAST_83:LUNG -!CREATURE:FORGOTTEN_BEAST_83:HEART -!CREATURE:FORGOTTEN_BEAST_83:LIVER -CREATURE:FORGOTTEN_BEAST_83:GUT -#CREATURE:FORGOTTEN_BEAST_83:STOMACH -#CREATURE:FORGOTTEN_BEAST_83:GIZZARD -$CREATURE:FORGOTTEN_BEAST_83:PANCREAS -"CREATURE:FORGOTTEN_BEAST_83:SPLEEN -"CREATURE:FORGOTTEN_BEAST_83:KIDNEY -"CREATURE:FORGOTTEN_BEAST_84:MUSCLE -CREATURE:FORGOTTEN_BEAST_84:EYE -!CREATURE:FORGOTTEN_BEAST_84:BRAIN - CREATURE:FORGOTTEN_BEAST_84:LUNG -!CREATURE:FORGOTTEN_BEAST_84:HEART -!CREATURE:FORGOTTEN_BEAST_84:LIVER -CREATURE:FORGOTTEN_BEAST_84:GUT -#CREATURE:FORGOTTEN_BEAST_84:STOMACH -#CREATURE:FORGOTTEN_BEAST_84:GIZZARD -$CREATURE:FORGOTTEN_BEAST_84:PANCREAS -"CREATURE:FORGOTTEN_BEAST_84:SPLEEN -"CREATURE:FORGOTTEN_BEAST_84:KIDNEY -"CREATURE:FORGOTTEN_BEAST_86:MUSCLE -CREATURE:FORGOTTEN_BEAST_86:EYE -!CREATURE:FORGOTTEN_BEAST_86:BRAIN - CREATURE:FORGOTTEN_BEAST_86:LUNG -!CREATURE:FORGOTTEN_BEAST_86:HEART -!CREATURE:FORGOTTEN_BEAST_86:LIVER -CREATURE:FORGOTTEN_BEAST_86:GUT -#CREATURE:FORGOTTEN_BEAST_86:STOMACH -#CREATURE:FORGOTTEN_BEAST_86:GIZZARD -$CREATURE:FORGOTTEN_BEAST_86:PANCREAS -"CREATURE:FORGOTTEN_BEAST_86:SPLEEN -"CREATURE:FORGOTTEN_BEAST_86:KIDNEY -"CREATURE:FORGOTTEN_BEAST_87:MUSCLE -CREATURE:FORGOTTEN_BEAST_87:EYE -!CREATURE:FORGOTTEN_BEAST_87:BRAIN - CREATURE:FORGOTTEN_BEAST_87:LUNG -!CREATURE:FORGOTTEN_BEAST_87:HEART -!CREATURE:FORGOTTEN_BEAST_87:LIVER -CREATURE:FORGOTTEN_BEAST_87:GUT -#CREATURE:FORGOTTEN_BEAST_87:STOMACH -#CREATURE:FORGOTTEN_BEAST_87:GIZZARD -$CREATURE:FORGOTTEN_BEAST_87:PANCREAS -"CREATURE:FORGOTTEN_BEAST_87:SPLEEN -"CREATURE:FORGOTTEN_BEAST_87:KIDNEY -"CREATURE:FORGOTTEN_BEAST_89:MUSCLE -CREATURE:FORGOTTEN_BEAST_89:EYE -!CREATURE:FORGOTTEN_BEAST_89:BRAIN - CREATURE:FORGOTTEN_BEAST_89:LUNG -!CREATURE:FORGOTTEN_BEAST_89:HEART -!CREATURE:FORGOTTEN_BEAST_89:LIVER -CREATURE:FORGOTTEN_BEAST_89:GUT -#CREATURE:FORGOTTEN_BEAST_89:STOMACH -#CREATURE:FORGOTTEN_BEAST_89:GIZZARD -$CREATURE:FORGOTTEN_BEAST_89:PANCREAS -"CREATURE:FORGOTTEN_BEAST_89:SPLEEN -"CREATURE:FORGOTTEN_BEAST_89:KIDNEY -"CREATURE:FORGOTTEN_BEAST_90:MUSCLE -CREATURE:FORGOTTEN_BEAST_90:EYE -!CREATURE:FORGOTTEN_BEAST_90:BRAIN - CREATURE:FORGOTTEN_BEAST_90:LUNG -!CREATURE:FORGOTTEN_BEAST_90:HEART -!CREATURE:FORGOTTEN_BEAST_90:LIVER -CREATURE:FORGOTTEN_BEAST_90:GUT -#CREATURE:FORGOTTEN_BEAST_90:STOMACH -#CREATURE:FORGOTTEN_BEAST_90:GIZZARD -$CREATURE:FORGOTTEN_BEAST_90:PANCREAS -"CREATURE:FORGOTTEN_BEAST_90:SPLEEN -"CREATURE:FORGOTTEN_BEAST_90:KIDNEY -"CREATURE:FORGOTTEN_BEAST_92:MUSCLE -CREATURE:FORGOTTEN_BEAST_92:EYE -!CREATURE:FORGOTTEN_BEAST_92:BRAIN - CREATURE:FORGOTTEN_BEAST_92:LUNG -!CREATURE:FORGOTTEN_BEAST_92:HEART -!CREATURE:FORGOTTEN_BEAST_92:LIVER -CREATURE:FORGOTTEN_BEAST_92:GUT -#CREATURE:FORGOTTEN_BEAST_92:STOMACH -#CREATURE:FORGOTTEN_BEAST_92:GIZZARD -$CREATURE:FORGOTTEN_BEAST_92:PANCREAS -"CREATURE:FORGOTTEN_BEAST_92:SPLEEN -"CREATURE:FORGOTTEN_BEAST_92:KIDNEY -"CREATURE:FORGOTTEN_BEAST_94:MUSCLE -CREATURE:FORGOTTEN_BEAST_94:EYE -!CREATURE:FORGOTTEN_BEAST_94:BRAIN - CREATURE:FORGOTTEN_BEAST_94:LUNG -!CREATURE:FORGOTTEN_BEAST_94:HEART -!CREATURE:FORGOTTEN_BEAST_94:LIVER -CREATURE:FORGOTTEN_BEAST_94:GUT -#CREATURE:FORGOTTEN_BEAST_94:STOMACH -#CREATURE:FORGOTTEN_BEAST_94:GIZZARD -$CREATURE:FORGOTTEN_BEAST_94:PANCREAS -"CREATURE:FORGOTTEN_BEAST_94:SPLEEN -"CREATURE:FORGOTTEN_BEAST_94:KIDNEY -"CREATURE:FORGOTTEN_BEAST_95:MUSCLE -CREATURE:FORGOTTEN_BEAST_95:EYE -!CREATURE:FORGOTTEN_BEAST_95:BRAIN - CREATURE:FORGOTTEN_BEAST_95:LUNG -!CREATURE:FORGOTTEN_BEAST_95:HEART -!CREATURE:FORGOTTEN_BEAST_95:LIVER -CREATURE:FORGOTTEN_BEAST_95:GUT -#CREATURE:FORGOTTEN_BEAST_95:STOMACH -#CREATURE:FORGOTTEN_BEAST_95:GIZZARD -$CREATURE:FORGOTTEN_BEAST_95:PANCREAS -"CREATURE:FORGOTTEN_BEAST_95:SPLEEN -"CREATURE:FORGOTTEN_BEAST_95:KIDNEY -"CREATURE:FORGOTTEN_BEAST_96:MUSCLE -CREATURE:FORGOTTEN_BEAST_96:EYE -!CREATURE:FORGOTTEN_BEAST_96:BRAIN - CREATURE:FORGOTTEN_BEAST_96:LUNG -!CREATURE:FORGOTTEN_BEAST_96:HEART -!CREATURE:FORGOTTEN_BEAST_96:LIVER -CREATURE:FORGOTTEN_BEAST_96:GUT -#CREATURE:FORGOTTEN_BEAST_96:STOMACH -#CREATURE:FORGOTTEN_BEAST_96:GIZZARD -$CREATURE:FORGOTTEN_BEAST_96:PANCREAS -"CREATURE:FORGOTTEN_BEAST_96:SPLEEN -"CREATURE:FORGOTTEN_BEAST_96:KIDNEY -"CREATURE:FORGOTTEN_BEAST_97:MUSCLE -CREATURE:FORGOTTEN_BEAST_97:EYE -!CREATURE:FORGOTTEN_BEAST_97:BRAIN - CREATURE:FORGOTTEN_BEAST_97:LUNG -!CREATURE:FORGOTTEN_BEAST_97:HEART -!CREATURE:FORGOTTEN_BEAST_97:LIVER -CREATURE:FORGOTTEN_BEAST_97:GUT -#CREATURE:FORGOTTEN_BEAST_97:STOMACH -#CREATURE:FORGOTTEN_BEAST_97:GIZZARD -$CREATURE:FORGOTTEN_BEAST_97:PANCREAS -"CREATURE:FORGOTTEN_BEAST_97:SPLEEN -"CREATURE:FORGOTTEN_BEAST_97:KIDNEY -"CREATURE:FORGOTTEN_BEAST_98:MUSCLE -CREATURE:FORGOTTEN_BEAST_98:EYE -!CREATURE:FORGOTTEN_BEAST_98:BRAIN - CREATURE:FORGOTTEN_BEAST_98:LUNG -!CREATURE:FORGOTTEN_BEAST_98:HEART -!CREATURE:FORGOTTEN_BEAST_98:LIVER -CREATURE:FORGOTTEN_BEAST_98:GUT -#CREATURE:FORGOTTEN_BEAST_98:STOMACH -#CREATURE:FORGOTTEN_BEAST_98:GIZZARD -$CREATURE:FORGOTTEN_BEAST_98:PANCREAS -"CREATURE:FORGOTTEN_BEAST_98:SPLEEN -"CREATURE:FORGOTTEN_BEAST_98:KIDNEY -#CREATURE:FORGOTTEN_BEAST_100:MUSCLE - CREATURE:FORGOTTEN_BEAST_100:EYE -"CREATURE:FORGOTTEN_BEAST_100:BRAIN -!CREATURE:FORGOTTEN_BEAST_100:LUNG -"CREATURE:FORGOTTEN_BEAST_100:HEART -"CREATURE:FORGOTTEN_BEAST_100:LIVER - CREATURE:FORGOTTEN_BEAST_100:GUT -$CREATURE:FORGOTTEN_BEAST_100:STOMACH -$CREATURE:FORGOTTEN_BEAST_100:GIZZARD -%CREATURE:FORGOTTEN_BEAST_100:PANCREAS -#CREATURE:FORGOTTEN_BEAST_100:SPLEEN -#CREATURE:FORGOTTEN_BEAST_100:KIDNEY -#CREATURE:FORGOTTEN_BEAST_105:MUSCLE - CREATURE:FORGOTTEN_BEAST_105:EYE -"CREATURE:FORGOTTEN_BEAST_105:BRAIN -!CREATURE:FORGOTTEN_BEAST_105:LUNG -"CREATURE:FORGOTTEN_BEAST_105:HEART -"CREATURE:FORGOTTEN_BEAST_105:LIVER - CREATURE:FORGOTTEN_BEAST_105:GUT -$CREATURE:FORGOTTEN_BEAST_105:STOMACH -$CREATURE:FORGOTTEN_BEAST_105:GIZZARD -%CREATURE:FORGOTTEN_BEAST_105:PANCREAS -#CREATURE:FORGOTTEN_BEAST_105:SPLEEN -#CREATURE:FORGOTTEN_BEAST_105:KIDNEY -#CREATURE:FORGOTTEN_BEAST_106:MUSCLE - CREATURE:FORGOTTEN_BEAST_106:EYE -"CREATURE:FORGOTTEN_BEAST_106:BRAIN -!CREATURE:FORGOTTEN_BEAST_106:LUNG -"CREATURE:FORGOTTEN_BEAST_106:HEART -"CREATURE:FORGOTTEN_BEAST_106:LIVER - CREATURE:FORGOTTEN_BEAST_106:GUT -$CREATURE:FORGOTTEN_BEAST_106:STOMACH -$CREATURE:FORGOTTEN_BEAST_106:GIZZARD -%CREATURE:FORGOTTEN_BEAST_106:PANCREAS -#CREATURE:FORGOTTEN_BEAST_106:SPLEEN -#CREATURE:FORGOTTEN_BEAST_106:KIDNEY -#CREATURE:FORGOTTEN_BEAST_107:MUSCLE - CREATURE:FORGOTTEN_BEAST_107:EYE -"CREATURE:FORGOTTEN_BEAST_107:BRAIN -!CREATURE:FORGOTTEN_BEAST_107:LUNG -"CREATURE:FORGOTTEN_BEAST_107:HEART -"CREATURE:FORGOTTEN_BEAST_107:LIVER - CREATURE:FORGOTTEN_BEAST_107:GUT -$CREATURE:FORGOTTEN_BEAST_107:STOMACH -$CREATURE:FORGOTTEN_BEAST_107:GIZZARD -%CREATURE:FORGOTTEN_BEAST_107:PANCREAS -#CREATURE:FORGOTTEN_BEAST_107:SPLEEN -#CREATURE:FORGOTTEN_BEAST_107:KIDNEY -#CREATURE:FORGOTTEN_BEAST_108:MUSCLE - CREATURE:FORGOTTEN_BEAST_108:EYE -"CREATURE:FORGOTTEN_BEAST_108:BRAIN -!CREATURE:FORGOTTEN_BEAST_108:LUNG -"CREATURE:FORGOTTEN_BEAST_108:HEART -"CREATURE:FORGOTTEN_BEAST_108:LIVER - CREATURE:FORGOTTEN_BEAST_108:GUT -$CREATURE:FORGOTTEN_BEAST_108:STOMACH -$CREATURE:FORGOTTEN_BEAST_108:GIZZARD -%CREATURE:FORGOTTEN_BEAST_108:PANCREAS -#CREATURE:FORGOTTEN_BEAST_108:SPLEEN -#CREATURE:FORGOTTEN_BEAST_108:KIDNEY -#CREATURE:FORGOTTEN_BEAST_109:MUSCLE - CREATURE:FORGOTTEN_BEAST_109:EYE -"CREATURE:FORGOTTEN_BEAST_109:BRAIN -!CREATURE:FORGOTTEN_BEAST_109:LUNG -"CREATURE:FORGOTTEN_BEAST_109:HEART -"CREATURE:FORGOTTEN_BEAST_109:LIVER - CREATURE:FORGOTTEN_BEAST_109:GUT -$CREATURE:FORGOTTEN_BEAST_109:STOMACH -$CREATURE:FORGOTTEN_BEAST_109:GIZZARD -%CREATURE:FORGOTTEN_BEAST_109:PANCREAS -#CREATURE:FORGOTTEN_BEAST_109:SPLEEN -#CREATURE:FORGOTTEN_BEAST_109:KIDNEY -#CREATURE:FORGOTTEN_BEAST_111:MUSCLE - CREATURE:FORGOTTEN_BEAST_111:EYE -"CREATURE:FORGOTTEN_BEAST_111:BRAIN -!CREATURE:FORGOTTEN_BEAST_111:LUNG -"CREATURE:FORGOTTEN_BEAST_111:HEART -"CREATURE:FORGOTTEN_BEAST_111:LIVER - CREATURE:FORGOTTEN_BEAST_111:GUT -$CREATURE:FORGOTTEN_BEAST_111:STOMACH -$CREATURE:FORGOTTEN_BEAST_111:GIZZARD -%CREATURE:FORGOTTEN_BEAST_111:PANCREAS -#CREATURE:FORGOTTEN_BEAST_111:SPLEEN -#CREATURE:FORGOTTEN_BEAST_111:KIDNEY -#CREATURE:FORGOTTEN_BEAST_112:MUSCLE - CREATURE:FORGOTTEN_BEAST_112:EYE -"CREATURE:FORGOTTEN_BEAST_112:BRAIN -!CREATURE:FORGOTTEN_BEAST_112:LUNG -"CREATURE:FORGOTTEN_BEAST_112:HEART -"CREATURE:FORGOTTEN_BEAST_112:LIVER - CREATURE:FORGOTTEN_BEAST_112:GUT -$CREATURE:FORGOTTEN_BEAST_112:STOMACH -$CREATURE:FORGOTTEN_BEAST_112:GIZZARD -%CREATURE:FORGOTTEN_BEAST_112:PANCREAS -#CREATURE:FORGOTTEN_BEAST_112:SPLEEN -#CREATURE:FORGOTTEN_BEAST_112:KIDNEY -#CREATURE:FORGOTTEN_BEAST_113:MUSCLE - CREATURE:FORGOTTEN_BEAST_113:EYE -"CREATURE:FORGOTTEN_BEAST_113:BRAIN -!CREATURE:FORGOTTEN_BEAST_113:LUNG -"CREATURE:FORGOTTEN_BEAST_113:HEART -"CREATURE:FORGOTTEN_BEAST_113:LIVER - CREATURE:FORGOTTEN_BEAST_113:GUT -$CREATURE:FORGOTTEN_BEAST_113:STOMACH -$CREATURE:FORGOTTEN_BEAST_113:GIZZARD -%CREATURE:FORGOTTEN_BEAST_113:PANCREAS -#CREATURE:FORGOTTEN_BEAST_113:SPLEEN -#CREATURE:FORGOTTEN_BEAST_113:KIDNEY -#CREATURE:FORGOTTEN_BEAST_114:MUSCLE - CREATURE:FORGOTTEN_BEAST_114:EYE -"CREATURE:FORGOTTEN_BEAST_114:BRAIN -!CREATURE:FORGOTTEN_BEAST_114:LUNG -"CREATURE:FORGOTTEN_BEAST_114:HEART -"CREATURE:FORGOTTEN_BEAST_114:LIVER - CREATURE:FORGOTTEN_BEAST_114:GUT -$CREATURE:FORGOTTEN_BEAST_114:STOMACH -$CREATURE:FORGOTTEN_BEAST_114:GIZZARD -%CREATURE:FORGOTTEN_BEAST_114:PANCREAS -#CREATURE:FORGOTTEN_BEAST_114:SPLEEN -#CREATURE:FORGOTTEN_BEAST_114:KIDNEY -#CREATURE:FORGOTTEN_BEAST_115:MUSCLE - CREATURE:FORGOTTEN_BEAST_115:EYE -"CREATURE:FORGOTTEN_BEAST_115:BRAIN -!CREATURE:FORGOTTEN_BEAST_115:LUNG -"CREATURE:FORGOTTEN_BEAST_115:HEART -"CREATURE:FORGOTTEN_BEAST_115:LIVER - CREATURE:FORGOTTEN_BEAST_115:GUT -$CREATURE:FORGOTTEN_BEAST_115:STOMACH -$CREATURE:FORGOTTEN_BEAST_115:GIZZARD -%CREATURE:FORGOTTEN_BEAST_115:PANCREAS -#CREATURE:FORGOTTEN_BEAST_115:SPLEEN -#CREATURE:FORGOTTEN_BEAST_115:KIDNEY -#CREATURE:FORGOTTEN_BEAST_116:MUSCLE - CREATURE:FORGOTTEN_BEAST_116:EYE -"CREATURE:FORGOTTEN_BEAST_116:BRAIN -!CREATURE:FORGOTTEN_BEAST_116:LUNG -"CREATURE:FORGOTTEN_BEAST_116:HEART -"CREATURE:FORGOTTEN_BEAST_116:LIVER - CREATURE:FORGOTTEN_BEAST_116:GUT -$CREATURE:FORGOTTEN_BEAST_116:STOMACH -$CREATURE:FORGOTTEN_BEAST_116:GIZZARD -%CREATURE:FORGOTTEN_BEAST_116:PANCREAS -#CREATURE:FORGOTTEN_BEAST_116:SPLEEN -#CREATURE:FORGOTTEN_BEAST_116:KIDNEY -#CREATURE:FORGOTTEN_BEAST_117:MUSCLE - CREATURE:FORGOTTEN_BEAST_117:EYE -"CREATURE:FORGOTTEN_BEAST_117:BRAIN -!CREATURE:FORGOTTEN_BEAST_117:LUNG -"CREATURE:FORGOTTEN_BEAST_117:HEART -"CREATURE:FORGOTTEN_BEAST_117:LIVER - CREATURE:FORGOTTEN_BEAST_117:GUT -$CREATURE:FORGOTTEN_BEAST_117:STOMACH -$CREATURE:FORGOTTEN_BEAST_117:GIZZARD -%CREATURE:FORGOTTEN_BEAST_117:PANCREAS -#CREATURE:FORGOTTEN_BEAST_117:SPLEEN -#CREATURE:FORGOTTEN_BEAST_117:KIDNEY -#CREATURE:FORGOTTEN_BEAST_118:MUSCLE - CREATURE:FORGOTTEN_BEAST_118:EYE -"CREATURE:FORGOTTEN_BEAST_118:BRAIN -!CREATURE:FORGOTTEN_BEAST_118:LUNG -"CREATURE:FORGOTTEN_BEAST_118:HEART -"CREATURE:FORGOTTEN_BEAST_118:LIVER - CREATURE:FORGOTTEN_BEAST_118:GUT -$CREATURE:FORGOTTEN_BEAST_118:STOMACH -$CREATURE:FORGOTTEN_BEAST_118:GIZZARD -%CREATURE:FORGOTTEN_BEAST_118:PANCREAS -#CREATURE:FORGOTTEN_BEAST_118:SPLEEN -#CREATURE:FORGOTTEN_BEAST_118:KIDNEY -#CREATURE:FORGOTTEN_BEAST_119:MUSCLE - CREATURE:FORGOTTEN_BEAST_119:EYE -"CREATURE:FORGOTTEN_BEAST_119:BRAIN -!CREATURE:FORGOTTEN_BEAST_119:LUNG -"CREATURE:FORGOTTEN_BEAST_119:HEART -"CREATURE:FORGOTTEN_BEAST_119:LIVER - CREATURE:FORGOTTEN_BEAST_119:GUT -$CREATURE:FORGOTTEN_BEAST_119:STOMACH -$CREATURE:FORGOTTEN_BEAST_119:GIZZARD -%CREATURE:FORGOTTEN_BEAST_119:PANCREAS -#CREATURE:FORGOTTEN_BEAST_119:SPLEEN -#CREATURE:FORGOTTEN_BEAST_119:KIDNEY -#CREATURE:FORGOTTEN_BEAST_120:MUSCLE - CREATURE:FORGOTTEN_BEAST_120:EYE -"CREATURE:FORGOTTEN_BEAST_120:BRAIN -!CREATURE:FORGOTTEN_BEAST_120:LUNG -"CREATURE:FORGOTTEN_BEAST_120:HEART -"CREATURE:FORGOTTEN_BEAST_120:LIVER - CREATURE:FORGOTTEN_BEAST_120:GUT -$CREATURE:FORGOTTEN_BEAST_120:STOMACH -$CREATURE:FORGOTTEN_BEAST_120:GIZZARD -%CREATURE:FORGOTTEN_BEAST_120:PANCREAS -#CREATURE:FORGOTTEN_BEAST_120:SPLEEN -#CREATURE:FORGOTTEN_BEAST_120:KIDNEY -#CREATURE:FORGOTTEN_BEAST_122:MUSCLE - CREATURE:FORGOTTEN_BEAST_122:EYE -"CREATURE:FORGOTTEN_BEAST_122:BRAIN -!CREATURE:FORGOTTEN_BEAST_122:LUNG -"CREATURE:FORGOTTEN_BEAST_122:HEART -"CREATURE:FORGOTTEN_BEAST_122:LIVER - CREATURE:FORGOTTEN_BEAST_122:GUT -$CREATURE:FORGOTTEN_BEAST_122:STOMACH -$CREATURE:FORGOTTEN_BEAST_122:GIZZARD -%CREATURE:FORGOTTEN_BEAST_122:PANCREAS -#CREATURE:FORGOTTEN_BEAST_122:SPLEEN -#CREATURE:FORGOTTEN_BEAST_122:KIDNEY -#CREATURE:FORGOTTEN_BEAST_123:MUSCLE - CREATURE:FORGOTTEN_BEAST_123:EYE -"CREATURE:FORGOTTEN_BEAST_123:BRAIN -!CREATURE:FORGOTTEN_BEAST_123:LUNG -"CREATURE:FORGOTTEN_BEAST_123:HEART -"CREATURE:FORGOTTEN_BEAST_123:LIVER - CREATURE:FORGOTTEN_BEAST_123:GUT -$CREATURE:FORGOTTEN_BEAST_123:STOMACH -$CREATURE:FORGOTTEN_BEAST_123:GIZZARD -%CREATURE:FORGOTTEN_BEAST_123:PANCREAS -#CREATURE:FORGOTTEN_BEAST_123:SPLEEN -#CREATURE:FORGOTTEN_BEAST_123:KIDNEY -#CREATURE:FORGOTTEN_BEAST_124:MUSCLE - CREATURE:FORGOTTEN_BEAST_124:EYE -"CREATURE:FORGOTTEN_BEAST_124:BRAIN -!CREATURE:FORGOTTEN_BEAST_124:LUNG -"CREATURE:FORGOTTEN_BEAST_124:HEART -"CREATURE:FORGOTTEN_BEAST_124:LIVER - CREATURE:FORGOTTEN_BEAST_124:GUT -$CREATURE:FORGOTTEN_BEAST_124:STOMACH -$CREATURE:FORGOTTEN_BEAST_124:GIZZARD -%CREATURE:FORGOTTEN_BEAST_124:PANCREAS -#CREATURE:FORGOTTEN_BEAST_124:SPLEEN -#CREATURE:FORGOTTEN_BEAST_124:KIDNEY -#CREATURE:FORGOTTEN_BEAST_125:MUSCLE - CREATURE:FORGOTTEN_BEAST_125:EYE -"CREATURE:FORGOTTEN_BEAST_125:BRAIN -!CREATURE:FORGOTTEN_BEAST_125:LUNG -"CREATURE:FORGOTTEN_BEAST_125:HEART -"CREATURE:FORGOTTEN_BEAST_125:LIVER - CREATURE:FORGOTTEN_BEAST_125:GUT -$CREATURE:FORGOTTEN_BEAST_125:STOMACH -$CREATURE:FORGOTTEN_BEAST_125:GIZZARD -%CREATURE:FORGOTTEN_BEAST_125:PANCREAS -#CREATURE:FORGOTTEN_BEAST_125:SPLEEN -#CREATURE:FORGOTTEN_BEAST_125:KIDNEY -#CREATURE:FORGOTTEN_BEAST_127:MUSCLE - CREATURE:FORGOTTEN_BEAST_127:EYE -"CREATURE:FORGOTTEN_BEAST_127:BRAIN -!CREATURE:FORGOTTEN_BEAST_127:LUNG -"CREATURE:FORGOTTEN_BEAST_127:HEART -"CREATURE:FORGOTTEN_BEAST_127:LIVER - CREATURE:FORGOTTEN_BEAST_127:GUT -$CREATURE:FORGOTTEN_BEAST_127:STOMACH -$CREATURE:FORGOTTEN_BEAST_127:GIZZARD -%CREATURE:FORGOTTEN_BEAST_127:PANCREAS -#CREATURE:FORGOTTEN_BEAST_127:SPLEEN -#CREATURE:FORGOTTEN_BEAST_127:KIDNEY -#CREATURE:FORGOTTEN_BEAST_128:MUSCLE - CREATURE:FORGOTTEN_BEAST_128:EYE -"CREATURE:FORGOTTEN_BEAST_128:BRAIN -!CREATURE:FORGOTTEN_BEAST_128:LUNG -"CREATURE:FORGOTTEN_BEAST_128:HEART -"CREATURE:FORGOTTEN_BEAST_128:LIVER - CREATURE:FORGOTTEN_BEAST_128:GUT -$CREATURE:FORGOTTEN_BEAST_128:STOMACH -$CREATURE:FORGOTTEN_BEAST_128:GIZZARD -%CREATURE:FORGOTTEN_BEAST_128:PANCREAS -#CREATURE:FORGOTTEN_BEAST_128:SPLEEN -#CREATURE:FORGOTTEN_BEAST_128:KIDNEY -#CREATURE:FORGOTTEN_BEAST_130:MUSCLE - CREATURE:FORGOTTEN_BEAST_130:EYE -"CREATURE:FORGOTTEN_BEAST_130:BRAIN -!CREATURE:FORGOTTEN_BEAST_130:LUNG -"CREATURE:FORGOTTEN_BEAST_130:HEART -"CREATURE:FORGOTTEN_BEAST_130:LIVER - CREATURE:FORGOTTEN_BEAST_130:GUT -$CREATURE:FORGOTTEN_BEAST_130:STOMACH -$CREATURE:FORGOTTEN_BEAST_130:GIZZARD -%CREATURE:FORGOTTEN_BEAST_130:PANCREAS -#CREATURE:FORGOTTEN_BEAST_130:SPLEEN -#CREATURE:FORGOTTEN_BEAST_130:KIDNEY -#CREATURE:FORGOTTEN_BEAST_131:MUSCLE - CREATURE:FORGOTTEN_BEAST_131:EYE -"CREATURE:FORGOTTEN_BEAST_131:BRAIN -!CREATURE:FORGOTTEN_BEAST_131:LUNG -"CREATURE:FORGOTTEN_BEAST_131:HEART -"CREATURE:FORGOTTEN_BEAST_131:LIVER - CREATURE:FORGOTTEN_BEAST_131:GUT -$CREATURE:FORGOTTEN_BEAST_131:STOMACH -$CREATURE:FORGOTTEN_BEAST_131:GIZZARD -%CREATURE:FORGOTTEN_BEAST_131:PANCREAS -#CREATURE:FORGOTTEN_BEAST_131:SPLEEN -#CREATURE:FORGOTTEN_BEAST_131:KIDNEY -#CREATURE:FORGOTTEN_BEAST_132:MUSCLE - CREATURE:FORGOTTEN_BEAST_132:EYE -"CREATURE:FORGOTTEN_BEAST_132:BRAIN -!CREATURE:FORGOTTEN_BEAST_132:LUNG -"CREATURE:FORGOTTEN_BEAST_132:HEART -"CREATURE:FORGOTTEN_BEAST_132:LIVER - CREATURE:FORGOTTEN_BEAST_132:GUT -$CREATURE:FORGOTTEN_BEAST_132:STOMACH -$CREATURE:FORGOTTEN_BEAST_132:GIZZARD -%CREATURE:FORGOTTEN_BEAST_132:PANCREAS -#CREATURE:FORGOTTEN_BEAST_132:SPLEEN -#CREATURE:FORGOTTEN_BEAST_132:KIDNEY -#CREATURE:FORGOTTEN_BEAST_133:MUSCLE - CREATURE:FORGOTTEN_BEAST_133:EYE -"CREATURE:FORGOTTEN_BEAST_133:BRAIN -!CREATURE:FORGOTTEN_BEAST_133:LUNG -"CREATURE:FORGOTTEN_BEAST_133:HEART -"CREATURE:FORGOTTEN_BEAST_133:LIVER - CREATURE:FORGOTTEN_BEAST_133:GUT -$CREATURE:FORGOTTEN_BEAST_133:STOMACH -$CREATURE:FORGOTTEN_BEAST_133:GIZZARD -%CREATURE:FORGOTTEN_BEAST_133:PANCREAS -#CREATURE:FORGOTTEN_BEAST_133:SPLEEN -#CREATURE:FORGOTTEN_BEAST_133:KIDNEY -#CREATURE:FORGOTTEN_BEAST_134:MUSCLE - CREATURE:FORGOTTEN_BEAST_134:EYE -"CREATURE:FORGOTTEN_BEAST_134:BRAIN -!CREATURE:FORGOTTEN_BEAST_134:LUNG -"CREATURE:FORGOTTEN_BEAST_134:HEART -"CREATURE:FORGOTTEN_BEAST_134:LIVER - CREATURE:FORGOTTEN_BEAST_134:GUT -$CREATURE:FORGOTTEN_BEAST_134:STOMACH -$CREATURE:FORGOTTEN_BEAST_134:GIZZARD -%CREATURE:FORGOTTEN_BEAST_134:PANCREAS -#CREATURE:FORGOTTEN_BEAST_134:SPLEEN -#CREATURE:FORGOTTEN_BEAST_134:KIDNEY -#CREATURE:FORGOTTEN_BEAST_135:MUSCLE - CREATURE:FORGOTTEN_BEAST_135:EYE -"CREATURE:FORGOTTEN_BEAST_135:BRAIN -!CREATURE:FORGOTTEN_BEAST_135:LUNG -"CREATURE:FORGOTTEN_BEAST_135:HEART -"CREATURE:FORGOTTEN_BEAST_135:LIVER - CREATURE:FORGOTTEN_BEAST_135:GUT -$CREATURE:FORGOTTEN_BEAST_135:STOMACH -$CREATURE:FORGOTTEN_BEAST_135:GIZZARD -%CREATURE:FORGOTTEN_BEAST_135:PANCREAS -#CREATURE:FORGOTTEN_BEAST_135:SPLEEN -#CREATURE:FORGOTTEN_BEAST_135:KIDNEY -#CREATURE:FORGOTTEN_BEAST_137:MUSCLE - CREATURE:FORGOTTEN_BEAST_137:EYE -"CREATURE:FORGOTTEN_BEAST_137:BRAIN -!CREATURE:FORGOTTEN_BEAST_137:LUNG -"CREATURE:FORGOTTEN_BEAST_137:HEART -"CREATURE:FORGOTTEN_BEAST_137:LIVER - CREATURE:FORGOTTEN_BEAST_137:GUT -$CREATURE:FORGOTTEN_BEAST_137:STOMACH -$CREATURE:FORGOTTEN_BEAST_137:GIZZARD -%CREATURE:FORGOTTEN_BEAST_137:PANCREAS -#CREATURE:FORGOTTEN_BEAST_137:SPLEEN -#CREATURE:FORGOTTEN_BEAST_137:KIDNEY -#CREATURE:FORGOTTEN_BEAST_138:MUSCLE - CREATURE:FORGOTTEN_BEAST_138:EYE -"CREATURE:FORGOTTEN_BEAST_138:BRAIN -!CREATURE:FORGOTTEN_BEAST_138:LUNG -"CREATURE:FORGOTTEN_BEAST_138:HEART -"CREATURE:FORGOTTEN_BEAST_138:LIVER - CREATURE:FORGOTTEN_BEAST_138:GUT -$CREATURE:FORGOTTEN_BEAST_138:STOMACH -$CREATURE:FORGOTTEN_BEAST_138:GIZZARD -%CREATURE:FORGOTTEN_BEAST_138:PANCREAS -#CREATURE:FORGOTTEN_BEAST_138:SPLEEN -#CREATURE:FORGOTTEN_BEAST_138:KIDNEY -#CREATURE:FORGOTTEN_BEAST_139:MUSCLE - CREATURE:FORGOTTEN_BEAST_139:EYE -"CREATURE:FORGOTTEN_BEAST_139:BRAIN -!CREATURE:FORGOTTEN_BEAST_139:LUNG -"CREATURE:FORGOTTEN_BEAST_139:HEART -"CREATURE:FORGOTTEN_BEAST_139:LIVER - CREATURE:FORGOTTEN_BEAST_139:GUT -$CREATURE:FORGOTTEN_BEAST_139:STOMACH -$CREATURE:FORGOTTEN_BEAST_139:GIZZARD -%CREATURE:FORGOTTEN_BEAST_139:PANCREAS -#CREATURE:FORGOTTEN_BEAST_139:SPLEEN -#CREATURE:FORGOTTEN_BEAST_139:KIDNEY -#CREATURE:FORGOTTEN_BEAST_141:MUSCLE - CREATURE:FORGOTTEN_BEAST_141:EYE -"CREATURE:FORGOTTEN_BEAST_141:BRAIN -!CREATURE:FORGOTTEN_BEAST_141:LUNG -"CREATURE:FORGOTTEN_BEAST_141:HEART -"CREATURE:FORGOTTEN_BEAST_141:LIVER - CREATURE:FORGOTTEN_BEAST_141:GUT -$CREATURE:FORGOTTEN_BEAST_141:STOMACH -$CREATURE:FORGOTTEN_BEAST_141:GIZZARD -%CREATURE:FORGOTTEN_BEAST_141:PANCREAS -#CREATURE:FORGOTTEN_BEAST_141:SPLEEN -#CREATURE:FORGOTTEN_BEAST_141:KIDNEY -#CREATURE:FORGOTTEN_BEAST_142:MUSCLE - CREATURE:FORGOTTEN_BEAST_142:EYE -"CREATURE:FORGOTTEN_BEAST_142:BRAIN -!CREATURE:FORGOTTEN_BEAST_142:LUNG -"CREATURE:FORGOTTEN_BEAST_142:HEART -"CREATURE:FORGOTTEN_BEAST_142:LIVER - CREATURE:FORGOTTEN_BEAST_142:GUT -$CREATURE:FORGOTTEN_BEAST_142:STOMACH -$CREATURE:FORGOTTEN_BEAST_142:GIZZARD -%CREATURE:FORGOTTEN_BEAST_142:PANCREAS -#CREATURE:FORGOTTEN_BEAST_142:SPLEEN -#CREATURE:FORGOTTEN_BEAST_142:KIDNEY -#CREATURE:FORGOTTEN_BEAST_144:MUSCLE - CREATURE:FORGOTTEN_BEAST_144:EYE -"CREATURE:FORGOTTEN_BEAST_144:BRAIN -!CREATURE:FORGOTTEN_BEAST_144:LUNG -"CREATURE:FORGOTTEN_BEAST_144:HEART -"CREATURE:FORGOTTEN_BEAST_144:LIVER - CREATURE:FORGOTTEN_BEAST_144:GUT -$CREATURE:FORGOTTEN_BEAST_144:STOMACH -$CREATURE:FORGOTTEN_BEAST_144:GIZZARD -%CREATURE:FORGOTTEN_BEAST_144:PANCREAS -#CREATURE:FORGOTTEN_BEAST_144:SPLEEN -#CREATURE:FORGOTTEN_BEAST_144:KIDNEY -#CREATURE:FORGOTTEN_BEAST_146:MUSCLE - CREATURE:FORGOTTEN_BEAST_146:EYE -"CREATURE:FORGOTTEN_BEAST_146:BRAIN -!CREATURE:FORGOTTEN_BEAST_146:LUNG -"CREATURE:FORGOTTEN_BEAST_146:HEART -"CREATURE:FORGOTTEN_BEAST_146:LIVER - CREATURE:FORGOTTEN_BEAST_146:GUT -$CREATURE:FORGOTTEN_BEAST_146:STOMACH -$CREATURE:FORGOTTEN_BEAST_146:GIZZARD -%CREATURE:FORGOTTEN_BEAST_146:PANCREAS -#CREATURE:FORGOTTEN_BEAST_146:SPLEEN -#CREATURE:FORGOTTEN_BEAST_146:KIDNEY -#CREATURE:FORGOTTEN_BEAST_148:MUSCLE - CREATURE:FORGOTTEN_BEAST_148:EYE -"CREATURE:FORGOTTEN_BEAST_148:BRAIN -!CREATURE:FORGOTTEN_BEAST_148:LUNG -"CREATURE:FORGOTTEN_BEAST_148:HEART -"CREATURE:FORGOTTEN_BEAST_148:LIVER - CREATURE:FORGOTTEN_BEAST_148:GUT -$CREATURE:FORGOTTEN_BEAST_148:STOMACH -$CREATURE:FORGOTTEN_BEAST_148:GIZZARD -%CREATURE:FORGOTTEN_BEAST_148:PANCREAS -#CREATURE:FORGOTTEN_BEAST_148:SPLEEN -#CREATURE:FORGOTTEN_BEAST_148:KIDNEY -#CREATURE:FORGOTTEN_BEAST_149:MUSCLE - CREATURE:FORGOTTEN_BEAST_149:EYE -"CREATURE:FORGOTTEN_BEAST_149:BRAIN -!CREATURE:FORGOTTEN_BEAST_149:LUNG -"CREATURE:FORGOTTEN_BEAST_149:HEART -"CREATURE:FORGOTTEN_BEAST_149:LIVER - CREATURE:FORGOTTEN_BEAST_149:GUT -$CREATURE:FORGOTTEN_BEAST_149:STOMACH -$CREATURE:FORGOTTEN_BEAST_149:GIZZARD -%CREATURE:FORGOTTEN_BEAST_149:PANCREAS -#CREATURE:FORGOTTEN_BEAST_149:SPLEEN -#CREATURE:FORGOTTEN_BEAST_149:KIDNEY -#CREATURE:FORGOTTEN_BEAST_150:MUSCLE - CREATURE:FORGOTTEN_BEAST_150:EYE -"CREATURE:FORGOTTEN_BEAST_150:BRAIN -!CREATURE:FORGOTTEN_BEAST_150:LUNG -"CREATURE:FORGOTTEN_BEAST_150:HEART -"CREATURE:FORGOTTEN_BEAST_150:LIVER - CREATURE:FORGOTTEN_BEAST_150:GUT -$CREATURE:FORGOTTEN_BEAST_150:STOMACH -$CREATURE:FORGOTTEN_BEAST_150:GIZZARD -%CREATURE:FORGOTTEN_BEAST_150:PANCREAS -#CREATURE:FORGOTTEN_BEAST_150:SPLEEN -#CREATURE:FORGOTTEN_BEAST_150:KIDNEY -#CREATURE:FORGOTTEN_BEAST_152:MUSCLE - CREATURE:FORGOTTEN_BEAST_152:EYE -"CREATURE:FORGOTTEN_BEAST_152:BRAIN -!CREATURE:FORGOTTEN_BEAST_152:LUNG -"CREATURE:FORGOTTEN_BEAST_152:HEART -"CREATURE:FORGOTTEN_BEAST_152:LIVER - CREATURE:FORGOTTEN_BEAST_152:GUT -$CREATURE:FORGOTTEN_BEAST_152:STOMACH -$CREATURE:FORGOTTEN_BEAST_152:GIZZARD -%CREATURE:FORGOTTEN_BEAST_152:PANCREAS -#CREATURE:FORGOTTEN_BEAST_152:SPLEEN -#CREATURE:FORGOTTEN_BEAST_152:KIDNEY -#CREATURE:FORGOTTEN_BEAST_154:MUSCLE - CREATURE:FORGOTTEN_BEAST_154:EYE -"CREATURE:FORGOTTEN_BEAST_154:BRAIN -!CREATURE:FORGOTTEN_BEAST_154:LUNG -"CREATURE:FORGOTTEN_BEAST_154:HEART -"CREATURE:FORGOTTEN_BEAST_154:LIVER - CREATURE:FORGOTTEN_BEAST_154:GUT -$CREATURE:FORGOTTEN_BEAST_154:STOMACH -$CREATURE:FORGOTTEN_BEAST_154:GIZZARD -%CREATURE:FORGOTTEN_BEAST_154:PANCREAS -#CREATURE:FORGOTTEN_BEAST_154:SPLEEN -#CREATURE:FORGOTTEN_BEAST_154:KIDNEY -#CREATURE:FORGOTTEN_BEAST_156:MUSCLE - CREATURE:FORGOTTEN_BEAST_156:EYE -"CREATURE:FORGOTTEN_BEAST_156:BRAIN -!CREATURE:FORGOTTEN_BEAST_156:LUNG -"CREATURE:FORGOTTEN_BEAST_156:HEART -"CREATURE:FORGOTTEN_BEAST_156:LIVER - CREATURE:FORGOTTEN_BEAST_156:GUT -$CREATURE:FORGOTTEN_BEAST_156:STOMACH -$CREATURE:FORGOTTEN_BEAST_156:GIZZARD -%CREATURE:FORGOTTEN_BEAST_156:PANCREAS -#CREATURE:FORGOTTEN_BEAST_156:SPLEEN -#CREATURE:FORGOTTEN_BEAST_156:KIDNEY -#CREATURE:FORGOTTEN_BEAST_157:MUSCLE - CREATURE:FORGOTTEN_BEAST_157:EYE -"CREATURE:FORGOTTEN_BEAST_157:BRAIN -!CREATURE:FORGOTTEN_BEAST_157:LUNG -"CREATURE:FORGOTTEN_BEAST_157:HEART -"CREATURE:FORGOTTEN_BEAST_157:LIVER - CREATURE:FORGOTTEN_BEAST_157:GUT -$CREATURE:FORGOTTEN_BEAST_157:STOMACH -$CREATURE:FORGOTTEN_BEAST_157:GIZZARD -%CREATURE:FORGOTTEN_BEAST_157:PANCREAS -#CREATURE:FORGOTTEN_BEAST_157:SPLEEN -#CREATURE:FORGOTTEN_BEAST_157:KIDNEY -#CREATURE:FORGOTTEN_BEAST_158:MUSCLE - CREATURE:FORGOTTEN_BEAST_158:EYE -"CREATURE:FORGOTTEN_BEAST_158:BRAIN -!CREATURE:FORGOTTEN_BEAST_158:LUNG -"CREATURE:FORGOTTEN_BEAST_158:HEART -"CREATURE:FORGOTTEN_BEAST_158:LIVER - CREATURE:FORGOTTEN_BEAST_158:GUT -$CREATURE:FORGOTTEN_BEAST_158:STOMACH -$CREATURE:FORGOTTEN_BEAST_158:GIZZARD -%CREATURE:FORGOTTEN_BEAST_158:PANCREAS -#CREATURE:FORGOTTEN_BEAST_158:SPLEEN -#CREATURE:FORGOTTEN_BEAST_158:KIDNEY -#CREATURE:FORGOTTEN_BEAST_159:MUSCLE - CREATURE:FORGOTTEN_BEAST_159:EYE -"CREATURE:FORGOTTEN_BEAST_159:BRAIN -!CREATURE:FORGOTTEN_BEAST_159:LUNG -"CREATURE:FORGOTTEN_BEAST_159:HEART -"CREATURE:FORGOTTEN_BEAST_159:LIVER - CREATURE:FORGOTTEN_BEAST_159:GUT -$CREATURE:FORGOTTEN_BEAST_159:STOMACH -$CREATURE:FORGOTTEN_BEAST_159:GIZZARD -%CREATURE:FORGOTTEN_BEAST_159:PANCREAS -#CREATURE:FORGOTTEN_BEAST_159:SPLEEN -#CREATURE:FORGOTTEN_BEAST_159:KIDNEY -#CREATURE:FORGOTTEN_BEAST_161:MUSCLE - CREATURE:FORGOTTEN_BEAST_161:EYE -"CREATURE:FORGOTTEN_BEAST_161:BRAIN -!CREATURE:FORGOTTEN_BEAST_161:LUNG -"CREATURE:FORGOTTEN_BEAST_161:HEART -"CREATURE:FORGOTTEN_BEAST_161:LIVER - CREATURE:FORGOTTEN_BEAST_161:GUT -$CREATURE:FORGOTTEN_BEAST_161:STOMACH -$CREATURE:FORGOTTEN_BEAST_161:GIZZARD -%CREATURE:FORGOTTEN_BEAST_161:PANCREAS -#CREATURE:FORGOTTEN_BEAST_161:SPLEEN -#CREATURE:FORGOTTEN_BEAST_161:KIDNEY -#CREATURE:FORGOTTEN_BEAST_162:MUSCLE - CREATURE:FORGOTTEN_BEAST_162:EYE -"CREATURE:FORGOTTEN_BEAST_162:BRAIN -!CREATURE:FORGOTTEN_BEAST_162:LUNG -"CREATURE:FORGOTTEN_BEAST_162:HEART -"CREATURE:FORGOTTEN_BEAST_162:LIVER - CREATURE:FORGOTTEN_BEAST_162:GUT -$CREATURE:FORGOTTEN_BEAST_162:STOMACH -$CREATURE:FORGOTTEN_BEAST_162:GIZZARD -%CREATURE:FORGOTTEN_BEAST_162:PANCREAS -#CREATURE:FORGOTTEN_BEAST_162:SPLEEN -#CREATURE:FORGOTTEN_BEAST_162:KIDNEY -#CREATURE:FORGOTTEN_BEAST_163:MUSCLE - CREATURE:FORGOTTEN_BEAST_163:EYE -"CREATURE:FORGOTTEN_BEAST_163:BRAIN -!CREATURE:FORGOTTEN_BEAST_163:LUNG -"CREATURE:FORGOTTEN_BEAST_163:HEART -"CREATURE:FORGOTTEN_BEAST_163:LIVER - CREATURE:FORGOTTEN_BEAST_163:GUT -$CREATURE:FORGOTTEN_BEAST_163:STOMACH -$CREATURE:FORGOTTEN_BEAST_163:GIZZARD -%CREATURE:FORGOTTEN_BEAST_163:PANCREAS -#CREATURE:FORGOTTEN_BEAST_163:SPLEEN -#CREATURE:FORGOTTEN_BEAST_163:KIDNEY -#CREATURE:FORGOTTEN_BEAST_165:MUSCLE - CREATURE:FORGOTTEN_BEAST_165:EYE -"CREATURE:FORGOTTEN_BEAST_165:BRAIN -!CREATURE:FORGOTTEN_BEAST_165:LUNG -"CREATURE:FORGOTTEN_BEAST_165:HEART -"CREATURE:FORGOTTEN_BEAST_165:LIVER - CREATURE:FORGOTTEN_BEAST_165:GUT -$CREATURE:FORGOTTEN_BEAST_165:STOMACH -$CREATURE:FORGOTTEN_BEAST_165:GIZZARD -%CREATURE:FORGOTTEN_BEAST_165:PANCREAS -#CREATURE:FORGOTTEN_BEAST_165:SPLEEN -#CREATURE:FORGOTTEN_BEAST_165:KIDNEY -#CREATURE:FORGOTTEN_BEAST_167:MUSCLE - CREATURE:FORGOTTEN_BEAST_167:EYE -"CREATURE:FORGOTTEN_BEAST_167:BRAIN -!CREATURE:FORGOTTEN_BEAST_167:LUNG -"CREATURE:FORGOTTEN_BEAST_167:HEART -"CREATURE:FORGOTTEN_BEAST_167:LIVER - CREATURE:FORGOTTEN_BEAST_167:GUT -$CREATURE:FORGOTTEN_BEAST_167:STOMACH -$CREATURE:FORGOTTEN_BEAST_167:GIZZARD -%CREATURE:FORGOTTEN_BEAST_167:PANCREAS -#CREATURE:FORGOTTEN_BEAST_167:SPLEEN -#CREATURE:FORGOTTEN_BEAST_167:KIDNEY -#CREATURE:FORGOTTEN_BEAST_168:MUSCLE - CREATURE:FORGOTTEN_BEAST_168:EYE -"CREATURE:FORGOTTEN_BEAST_168:BRAIN -!CREATURE:FORGOTTEN_BEAST_168:LUNG -"CREATURE:FORGOTTEN_BEAST_168:HEART -"CREATURE:FORGOTTEN_BEAST_168:LIVER - CREATURE:FORGOTTEN_BEAST_168:GUT -$CREATURE:FORGOTTEN_BEAST_168:STOMACH -$CREATURE:FORGOTTEN_BEAST_168:GIZZARD -%CREATURE:FORGOTTEN_BEAST_168:PANCREAS -#CREATURE:FORGOTTEN_BEAST_168:SPLEEN -#CREATURE:FORGOTTEN_BEAST_168:KIDNEY -#CREATURE:FORGOTTEN_BEAST_169:MUSCLE - CREATURE:FORGOTTEN_BEAST_169:EYE -"CREATURE:FORGOTTEN_BEAST_169:BRAIN -!CREATURE:FORGOTTEN_BEAST_169:LUNG -"CREATURE:FORGOTTEN_BEAST_169:HEART -"CREATURE:FORGOTTEN_BEAST_169:LIVER - CREATURE:FORGOTTEN_BEAST_169:GUT -$CREATURE:FORGOTTEN_BEAST_169:STOMACH -$CREATURE:FORGOTTEN_BEAST_169:GIZZARD -%CREATURE:FORGOTTEN_BEAST_169:PANCREAS -#CREATURE:FORGOTTEN_BEAST_169:SPLEEN -#CREATURE:FORGOTTEN_BEAST_169:KIDNEY -#CREATURE:FORGOTTEN_BEAST_170:MUSCLE - CREATURE:FORGOTTEN_BEAST_170:EYE -"CREATURE:FORGOTTEN_BEAST_170:BRAIN -!CREATURE:FORGOTTEN_BEAST_170:LUNG -"CREATURE:FORGOTTEN_BEAST_170:HEART -"CREATURE:FORGOTTEN_BEAST_170:LIVER - CREATURE:FORGOTTEN_BEAST_170:GUT -$CREATURE:FORGOTTEN_BEAST_170:STOMACH -$CREATURE:FORGOTTEN_BEAST_170:GIZZARD -%CREATURE:FORGOTTEN_BEAST_170:PANCREAS -#CREATURE:FORGOTTEN_BEAST_170:SPLEEN -#CREATURE:FORGOTTEN_BEAST_170:KIDNEY -#CREATURE:FORGOTTEN_BEAST_171:MUSCLE - CREATURE:FORGOTTEN_BEAST_171:EYE -"CREATURE:FORGOTTEN_BEAST_171:BRAIN -!CREATURE:FORGOTTEN_BEAST_171:LUNG -"CREATURE:FORGOTTEN_BEAST_171:HEART -"CREATURE:FORGOTTEN_BEAST_171:LIVER - CREATURE:FORGOTTEN_BEAST_171:GUT -$CREATURE:FORGOTTEN_BEAST_171:STOMACH -$CREATURE:FORGOTTEN_BEAST_171:GIZZARD -%CREATURE:FORGOTTEN_BEAST_171:PANCREAS -#CREATURE:FORGOTTEN_BEAST_171:SPLEEN -#CREATURE:FORGOTTEN_BEAST_171:KIDNEY -#CREATURE:FORGOTTEN_BEAST_172:MUSCLE - CREATURE:FORGOTTEN_BEAST_172:EYE -"CREATURE:FORGOTTEN_BEAST_172:BRAIN -!CREATURE:FORGOTTEN_BEAST_172:LUNG -"CREATURE:FORGOTTEN_BEAST_172:HEART -"CREATURE:FORGOTTEN_BEAST_172:LIVER - CREATURE:FORGOTTEN_BEAST_172:GUT -$CREATURE:FORGOTTEN_BEAST_172:STOMACH -$CREATURE:FORGOTTEN_BEAST_172:GIZZARD -%CREATURE:FORGOTTEN_BEAST_172:PANCREAS -#CREATURE:FORGOTTEN_BEAST_172:SPLEEN -#CREATURE:FORGOTTEN_BEAST_172:KIDNEY -#CREATURE:FORGOTTEN_BEAST_173:MUSCLE - CREATURE:FORGOTTEN_BEAST_173:EYE -"CREATURE:FORGOTTEN_BEAST_173:BRAIN -!CREATURE:FORGOTTEN_BEAST_173:LUNG -"CREATURE:FORGOTTEN_BEAST_173:HEART -"CREATURE:FORGOTTEN_BEAST_173:LIVER - CREATURE:FORGOTTEN_BEAST_173:GUT -$CREATURE:FORGOTTEN_BEAST_173:STOMACH -$CREATURE:FORGOTTEN_BEAST_173:GIZZARD -%CREATURE:FORGOTTEN_BEAST_173:PANCREAS -#CREATURE:FORGOTTEN_BEAST_173:SPLEEN -#CREATURE:FORGOTTEN_BEAST_173:KIDNEY -#CREATURE:FORGOTTEN_BEAST_176:MUSCLE - CREATURE:FORGOTTEN_BEAST_176:EYE -"CREATURE:FORGOTTEN_BEAST_176:BRAIN -!CREATURE:FORGOTTEN_BEAST_176:LUNG -"CREATURE:FORGOTTEN_BEAST_176:HEART -"CREATURE:FORGOTTEN_BEAST_176:LIVER - CREATURE:FORGOTTEN_BEAST_176:GUT -$CREATURE:FORGOTTEN_BEAST_176:STOMACH -$CREATURE:FORGOTTEN_BEAST_176:GIZZARD -%CREATURE:FORGOTTEN_BEAST_176:PANCREAS -#CREATURE:FORGOTTEN_BEAST_176:SPLEEN -#CREATURE:FORGOTTEN_BEAST_176:KIDNEY -#CREATURE:FORGOTTEN_BEAST_177:MUSCLE - CREATURE:FORGOTTEN_BEAST_177:EYE -"CREATURE:FORGOTTEN_BEAST_177:BRAIN -!CREATURE:FORGOTTEN_BEAST_177:LUNG -"CREATURE:FORGOTTEN_BEAST_177:HEART -"CREATURE:FORGOTTEN_BEAST_177:LIVER - CREATURE:FORGOTTEN_BEAST_177:GUT -$CREATURE:FORGOTTEN_BEAST_177:STOMACH -$CREATURE:FORGOTTEN_BEAST_177:GIZZARD -%CREATURE:FORGOTTEN_BEAST_177:PANCREAS -#CREATURE:FORGOTTEN_BEAST_177:SPLEEN -#CREATURE:FORGOTTEN_BEAST_177:KIDNEY -#CREATURE:FORGOTTEN_BEAST_178:MUSCLE - CREATURE:FORGOTTEN_BEAST_178:EYE -"CREATURE:FORGOTTEN_BEAST_178:BRAIN -!CREATURE:FORGOTTEN_BEAST_178:LUNG -"CREATURE:FORGOTTEN_BEAST_178:HEART -"CREATURE:FORGOTTEN_BEAST_178:LIVER - CREATURE:FORGOTTEN_BEAST_178:GUT -$CREATURE:FORGOTTEN_BEAST_178:STOMACH -$CREATURE:FORGOTTEN_BEAST_178:GIZZARD -%CREATURE:FORGOTTEN_BEAST_178:PANCREAS -#CREATURE:FORGOTTEN_BEAST_178:SPLEEN -#CREATURE:FORGOTTEN_BEAST_178:KIDNEY -#CREATURE:FORGOTTEN_BEAST_179:MUSCLE - CREATURE:FORGOTTEN_BEAST_179:EYE -"CREATURE:FORGOTTEN_BEAST_179:BRAIN -!CREATURE:FORGOTTEN_BEAST_179:LUNG -"CREATURE:FORGOTTEN_BEAST_179:HEART -"CREATURE:FORGOTTEN_BEAST_179:LIVER - CREATURE:FORGOTTEN_BEAST_179:GUT -$CREATURE:FORGOTTEN_BEAST_179:STOMACH -$CREATURE:FORGOTTEN_BEAST_179:GIZZARD -%CREATURE:FORGOTTEN_BEAST_179:PANCREAS -#CREATURE:FORGOTTEN_BEAST_179:SPLEEN -#CREATURE:FORGOTTEN_BEAST_179:KIDNEY -#CREATURE:FORGOTTEN_BEAST_180:MUSCLE - CREATURE:FORGOTTEN_BEAST_180:EYE -"CREATURE:FORGOTTEN_BEAST_180:BRAIN -!CREATURE:FORGOTTEN_BEAST_180:LUNG -"CREATURE:FORGOTTEN_BEAST_180:HEART -"CREATURE:FORGOTTEN_BEAST_180:LIVER - CREATURE:FORGOTTEN_BEAST_180:GUT -$CREATURE:FORGOTTEN_BEAST_180:STOMACH -$CREATURE:FORGOTTEN_BEAST_180:GIZZARD -%CREATURE:FORGOTTEN_BEAST_180:PANCREAS -#CREATURE:FORGOTTEN_BEAST_180:SPLEEN -#CREATURE:FORGOTTEN_BEAST_180:KIDNEY -#CREATURE:FORGOTTEN_BEAST_181:MUSCLE - CREATURE:FORGOTTEN_BEAST_181:EYE -"CREATURE:FORGOTTEN_BEAST_181:BRAIN -!CREATURE:FORGOTTEN_BEAST_181:LUNG -"CREATURE:FORGOTTEN_BEAST_181:HEART -"CREATURE:FORGOTTEN_BEAST_181:LIVER - CREATURE:FORGOTTEN_BEAST_181:GUT -$CREATURE:FORGOTTEN_BEAST_181:STOMACH -$CREATURE:FORGOTTEN_BEAST_181:GIZZARD -%CREATURE:FORGOTTEN_BEAST_181:PANCREAS -#CREATURE:FORGOTTEN_BEAST_181:SPLEEN -#CREATURE:FORGOTTEN_BEAST_181:KIDNEY -#CREATURE:FORGOTTEN_BEAST_182:MUSCLE - CREATURE:FORGOTTEN_BEAST_182:EYE -"CREATURE:FORGOTTEN_BEAST_182:BRAIN -!CREATURE:FORGOTTEN_BEAST_182:LUNG -"CREATURE:FORGOTTEN_BEAST_182:HEART -"CREATURE:FORGOTTEN_BEAST_182:LIVER - CREATURE:FORGOTTEN_BEAST_182:GUT -$CREATURE:FORGOTTEN_BEAST_182:STOMACH -$CREATURE:FORGOTTEN_BEAST_182:GIZZARD -%CREATURE:FORGOTTEN_BEAST_182:PANCREAS -#CREATURE:FORGOTTEN_BEAST_182:SPLEEN -#CREATURE:FORGOTTEN_BEAST_182:KIDNEY -#CREATURE:FORGOTTEN_BEAST_183:MUSCLE - CREATURE:FORGOTTEN_BEAST_183:EYE -"CREATURE:FORGOTTEN_BEAST_183:BRAIN -!CREATURE:FORGOTTEN_BEAST_183:LUNG -"CREATURE:FORGOTTEN_BEAST_183:HEART -"CREATURE:FORGOTTEN_BEAST_183:LIVER - CREATURE:FORGOTTEN_BEAST_183:GUT -$CREATURE:FORGOTTEN_BEAST_183:STOMACH -$CREATURE:FORGOTTEN_BEAST_183:GIZZARD -%CREATURE:FORGOTTEN_BEAST_183:PANCREAS -#CREATURE:FORGOTTEN_BEAST_183:SPLEEN -#CREATURE:FORGOTTEN_BEAST_183:KIDNEY -#CREATURE:FORGOTTEN_BEAST_184:MUSCLE - CREATURE:FORGOTTEN_BEAST_184:EYE -"CREATURE:FORGOTTEN_BEAST_184:BRAIN -!CREATURE:FORGOTTEN_BEAST_184:LUNG -"CREATURE:FORGOTTEN_BEAST_184:HEART -"CREATURE:FORGOTTEN_BEAST_184:LIVER - CREATURE:FORGOTTEN_BEAST_184:GUT -$CREATURE:FORGOTTEN_BEAST_184:STOMACH -$CREATURE:FORGOTTEN_BEAST_184:GIZZARD -%CREATURE:FORGOTTEN_BEAST_184:PANCREAS -#CREATURE:FORGOTTEN_BEAST_184:SPLEEN -#CREATURE:FORGOTTEN_BEAST_184:KIDNEY -#CREATURE:FORGOTTEN_BEAST_185:MUSCLE - CREATURE:FORGOTTEN_BEAST_185:EYE -"CREATURE:FORGOTTEN_BEAST_185:BRAIN -!CREATURE:FORGOTTEN_BEAST_185:LUNG -"CREATURE:FORGOTTEN_BEAST_185:HEART -"CREATURE:FORGOTTEN_BEAST_185:LIVER - CREATURE:FORGOTTEN_BEAST_185:GUT -$CREATURE:FORGOTTEN_BEAST_185:STOMACH -$CREATURE:FORGOTTEN_BEAST_185:GIZZARD -%CREATURE:FORGOTTEN_BEAST_185:PANCREAS -#CREATURE:FORGOTTEN_BEAST_185:SPLEEN -#CREATURE:FORGOTTEN_BEAST_185:KIDNEY -#CREATURE:FORGOTTEN_BEAST_186:MUSCLE - CREATURE:FORGOTTEN_BEAST_186:EYE -"CREATURE:FORGOTTEN_BEAST_186:BRAIN -!CREATURE:FORGOTTEN_BEAST_186:LUNG -"CREATURE:FORGOTTEN_BEAST_186:HEART -"CREATURE:FORGOTTEN_BEAST_186:LIVER - CREATURE:FORGOTTEN_BEAST_186:GUT -$CREATURE:FORGOTTEN_BEAST_186:STOMACH -$CREATURE:FORGOTTEN_BEAST_186:GIZZARD -%CREATURE:FORGOTTEN_BEAST_186:PANCREAS -#CREATURE:FORGOTTEN_BEAST_186:SPLEEN -#CREATURE:FORGOTTEN_BEAST_186:KIDNEY -#CREATURE:FORGOTTEN_BEAST_188:MUSCLE - CREATURE:FORGOTTEN_BEAST_188:EYE -"CREATURE:FORGOTTEN_BEAST_188:BRAIN -!CREATURE:FORGOTTEN_BEAST_188:LUNG -"CREATURE:FORGOTTEN_BEAST_188:HEART -"CREATURE:FORGOTTEN_BEAST_188:LIVER - CREATURE:FORGOTTEN_BEAST_188:GUT -$CREATURE:FORGOTTEN_BEAST_188:STOMACH -$CREATURE:FORGOTTEN_BEAST_188:GIZZARD -%CREATURE:FORGOTTEN_BEAST_188:PANCREAS -#CREATURE:FORGOTTEN_BEAST_188:SPLEEN -#CREATURE:FORGOTTEN_BEAST_188:KIDNEY -#CREATURE:FORGOTTEN_BEAST_189:MUSCLE - CREATURE:FORGOTTEN_BEAST_189:EYE -"CREATURE:FORGOTTEN_BEAST_189:BRAIN -!CREATURE:FORGOTTEN_BEAST_189:LUNG -"CREATURE:FORGOTTEN_BEAST_189:HEART -"CREATURE:FORGOTTEN_BEAST_189:LIVER - CREATURE:FORGOTTEN_BEAST_189:GUT -$CREATURE:FORGOTTEN_BEAST_189:STOMACH -$CREATURE:FORGOTTEN_BEAST_189:GIZZARD -%CREATURE:FORGOTTEN_BEAST_189:PANCREAS -#CREATURE:FORGOTTEN_BEAST_189:SPLEEN -#CREATURE:FORGOTTEN_BEAST_189:KIDNEY -#CREATURE:FORGOTTEN_BEAST_190:MUSCLE - CREATURE:FORGOTTEN_BEAST_190:EYE -"CREATURE:FORGOTTEN_BEAST_190:BRAIN -!CREATURE:FORGOTTEN_BEAST_190:LUNG -"CREATURE:FORGOTTEN_BEAST_190:HEART -"CREATURE:FORGOTTEN_BEAST_190:LIVER - CREATURE:FORGOTTEN_BEAST_190:GUT -$CREATURE:FORGOTTEN_BEAST_190:STOMACH -$CREATURE:FORGOTTEN_BEAST_190:GIZZARD -%CREATURE:FORGOTTEN_BEAST_190:PANCREAS -#CREATURE:FORGOTTEN_BEAST_190:SPLEEN -#CREATURE:FORGOTTEN_BEAST_190:KIDNEY -#CREATURE:FORGOTTEN_BEAST_191:MUSCLE - CREATURE:FORGOTTEN_BEAST_191:EYE -"CREATURE:FORGOTTEN_BEAST_191:BRAIN -!CREATURE:FORGOTTEN_BEAST_191:LUNG -"CREATURE:FORGOTTEN_BEAST_191:HEART -"CREATURE:FORGOTTEN_BEAST_191:LIVER - CREATURE:FORGOTTEN_BEAST_191:GUT -$CREATURE:FORGOTTEN_BEAST_191:STOMACH -$CREATURE:FORGOTTEN_BEAST_191:GIZZARD -%CREATURE:FORGOTTEN_BEAST_191:PANCREAS -#CREATURE:FORGOTTEN_BEAST_191:SPLEEN -#CREATURE:FORGOTTEN_BEAST_191:KIDNEY -#CREATURE:FORGOTTEN_BEAST_193:MUSCLE - CREATURE:FORGOTTEN_BEAST_193:EYE -"CREATURE:FORGOTTEN_BEAST_193:BRAIN -!CREATURE:FORGOTTEN_BEAST_193:LUNG -"CREATURE:FORGOTTEN_BEAST_193:HEART -"CREATURE:FORGOTTEN_BEAST_193:LIVER - CREATURE:FORGOTTEN_BEAST_193:GUT -$CREATURE:FORGOTTEN_BEAST_193:STOMACH -$CREATURE:FORGOTTEN_BEAST_193:GIZZARD -%CREATURE:FORGOTTEN_BEAST_193:PANCREAS -#CREATURE:FORGOTTEN_BEAST_193:SPLEEN -#CREATURE:FORGOTTEN_BEAST_193:KIDNEY -#CREATURE:FORGOTTEN_BEAST_194:MUSCLE - CREATURE:FORGOTTEN_BEAST_194:EYE -"CREATURE:FORGOTTEN_BEAST_194:BRAIN -!CREATURE:FORGOTTEN_BEAST_194:LUNG -"CREATURE:FORGOTTEN_BEAST_194:HEART -"CREATURE:FORGOTTEN_BEAST_194:LIVER - CREATURE:FORGOTTEN_BEAST_194:GUT -$CREATURE:FORGOTTEN_BEAST_194:STOMACH -$CREATURE:FORGOTTEN_BEAST_194:GIZZARD -%CREATURE:FORGOTTEN_BEAST_194:PANCREAS -#CREATURE:FORGOTTEN_BEAST_194:SPLEEN -#CREATURE:FORGOTTEN_BEAST_194:KIDNEY -#CREATURE:FORGOTTEN_BEAST_195:MUSCLE - CREATURE:FORGOTTEN_BEAST_195:EYE -"CREATURE:FORGOTTEN_BEAST_195:BRAIN -!CREATURE:FORGOTTEN_BEAST_195:LUNG -"CREATURE:FORGOTTEN_BEAST_195:HEART -"CREATURE:FORGOTTEN_BEAST_195:LIVER - CREATURE:FORGOTTEN_BEAST_195:GUT -$CREATURE:FORGOTTEN_BEAST_195:STOMACH -$CREATURE:FORGOTTEN_BEAST_195:GIZZARD -%CREATURE:FORGOTTEN_BEAST_195:PANCREAS -#CREATURE:FORGOTTEN_BEAST_195:SPLEEN -#CREATURE:FORGOTTEN_BEAST_195:KIDNEY -#CREATURE:FORGOTTEN_BEAST_196:MUSCLE - CREATURE:FORGOTTEN_BEAST_196:EYE -"CREATURE:FORGOTTEN_BEAST_196:BRAIN -!CREATURE:FORGOTTEN_BEAST_196:LUNG -"CREATURE:FORGOTTEN_BEAST_196:HEART -"CREATURE:FORGOTTEN_BEAST_196:LIVER - CREATURE:FORGOTTEN_BEAST_196:GUT -$CREATURE:FORGOTTEN_BEAST_196:STOMACH -$CREATURE:FORGOTTEN_BEAST_196:GIZZARD -%CREATURE:FORGOTTEN_BEAST_196:PANCREAS -#CREATURE:FORGOTTEN_BEAST_196:SPLEEN -#CREATURE:FORGOTTEN_BEAST_196:KIDNEY -#CREATURE:FORGOTTEN_BEAST_197:MUSCLE - CREATURE:FORGOTTEN_BEAST_197:EYE -"CREATURE:FORGOTTEN_BEAST_197:BRAIN -!CREATURE:FORGOTTEN_BEAST_197:LUNG -"CREATURE:FORGOTTEN_BEAST_197:HEART -"CREATURE:FORGOTTEN_BEAST_197:LIVER - CREATURE:FORGOTTEN_BEAST_197:GUT -$CREATURE:FORGOTTEN_BEAST_197:STOMACH -$CREATURE:FORGOTTEN_BEAST_197:GIZZARD -%CREATURE:FORGOTTEN_BEAST_197:PANCREAS -#CREATURE:FORGOTTEN_BEAST_197:SPLEEN -#CREATURE:FORGOTTEN_BEAST_197:KIDNEY -#CREATURE:FORGOTTEN_BEAST_199:MUSCLE - CREATURE:FORGOTTEN_BEAST_199:EYE -"CREATURE:FORGOTTEN_BEAST_199:BRAIN -!CREATURE:FORGOTTEN_BEAST_199:LUNG -"CREATURE:FORGOTTEN_BEAST_199:HEART -"CREATURE:FORGOTTEN_BEAST_199:LIVER - CREATURE:FORGOTTEN_BEAST_199:GUT -$CREATURE:FORGOTTEN_BEAST_199:STOMACH -$CREATURE:FORGOTTEN_BEAST_199:GIZZARD -%CREATURE:FORGOTTEN_BEAST_199:PANCREAS -#CREATURE:FORGOTTEN_BEAST_199:SPLEEN -#CREATURE:FORGOTTEN_BEAST_199:KIDNEY -#CREATURE:FORGOTTEN_BEAST_200:MUSCLE - CREATURE:FORGOTTEN_BEAST_200:EYE -"CREATURE:FORGOTTEN_BEAST_200:BRAIN -!CREATURE:FORGOTTEN_BEAST_200:LUNG -"CREATURE:FORGOTTEN_BEAST_200:HEART -"CREATURE:FORGOTTEN_BEAST_200:LIVER - CREATURE:FORGOTTEN_BEAST_200:GUT -$CREATURE:FORGOTTEN_BEAST_200:STOMACH -$CREATURE:FORGOTTEN_BEAST_200:GIZZARD -%CREATURE:FORGOTTEN_BEAST_200:PANCREAS -#CREATURE:FORGOTTEN_BEAST_200:SPLEEN -#CREATURE:FORGOTTEN_BEAST_200:KIDNEY -#CREATURE:FORGOTTEN_BEAST_201:MUSCLE - CREATURE:FORGOTTEN_BEAST_201:EYE -"CREATURE:FORGOTTEN_BEAST_201:BRAIN -!CREATURE:FORGOTTEN_BEAST_201:LUNG -"CREATURE:FORGOTTEN_BEAST_201:HEART -"CREATURE:FORGOTTEN_BEAST_201:LIVER - CREATURE:FORGOTTEN_BEAST_201:GUT -$CREATURE:FORGOTTEN_BEAST_201:STOMACH -$CREATURE:FORGOTTEN_BEAST_201:GIZZARD -%CREATURE:FORGOTTEN_BEAST_201:PANCREAS -#CREATURE:FORGOTTEN_BEAST_201:SPLEEN -#CREATURE:FORGOTTEN_BEAST_201:KIDNEY -#CREATURE:FORGOTTEN_BEAST_204:MUSCLE - CREATURE:FORGOTTEN_BEAST_204:EYE -"CREATURE:FORGOTTEN_BEAST_204:BRAIN -!CREATURE:FORGOTTEN_BEAST_204:LUNG -"CREATURE:FORGOTTEN_BEAST_204:HEART -"CREATURE:FORGOTTEN_BEAST_204:LIVER - CREATURE:FORGOTTEN_BEAST_204:GUT -$CREATURE:FORGOTTEN_BEAST_204:STOMACH -$CREATURE:FORGOTTEN_BEAST_204:GIZZARD -%CREATURE:FORGOTTEN_BEAST_204:PANCREAS -#CREATURE:FORGOTTEN_BEAST_204:SPLEEN -#CREATURE:FORGOTTEN_BEAST_204:KIDNEY -#CREATURE:FORGOTTEN_BEAST_205:MUSCLE - CREATURE:FORGOTTEN_BEAST_205:EYE -"CREATURE:FORGOTTEN_BEAST_205:BRAIN -!CREATURE:FORGOTTEN_BEAST_205:LUNG -"CREATURE:FORGOTTEN_BEAST_205:HEART -"CREATURE:FORGOTTEN_BEAST_205:LIVER - CREATURE:FORGOTTEN_BEAST_205:GUT -$CREATURE:FORGOTTEN_BEAST_205:STOMACH -$CREATURE:FORGOTTEN_BEAST_205:GIZZARD -%CREATURE:FORGOTTEN_BEAST_205:PANCREAS -#CREATURE:FORGOTTEN_BEAST_205:SPLEEN -#CREATURE:FORGOTTEN_BEAST_205:KIDNEY -#CREATURE:FORGOTTEN_BEAST_206:MUSCLE - CREATURE:FORGOTTEN_BEAST_206:EYE -"CREATURE:FORGOTTEN_BEAST_206:BRAIN -!CREATURE:FORGOTTEN_BEAST_206:LUNG -"CREATURE:FORGOTTEN_BEAST_206:HEART -"CREATURE:FORGOTTEN_BEAST_206:LIVER - CREATURE:FORGOTTEN_BEAST_206:GUT -$CREATURE:FORGOTTEN_BEAST_206:STOMACH -$CREATURE:FORGOTTEN_BEAST_206:GIZZARD -%CREATURE:FORGOTTEN_BEAST_206:PANCREAS -#CREATURE:FORGOTTEN_BEAST_206:SPLEEN -#CREATURE:FORGOTTEN_BEAST_206:KIDNEY -#CREATURE:FORGOTTEN_BEAST_207:MUSCLE - CREATURE:FORGOTTEN_BEAST_207:EYE -"CREATURE:FORGOTTEN_BEAST_207:BRAIN -!CREATURE:FORGOTTEN_BEAST_207:LUNG -"CREATURE:FORGOTTEN_BEAST_207:HEART -"CREATURE:FORGOTTEN_BEAST_207:LIVER - CREATURE:FORGOTTEN_BEAST_207:GUT -$CREATURE:FORGOTTEN_BEAST_207:STOMACH -$CREATURE:FORGOTTEN_BEAST_207:GIZZARD -%CREATURE:FORGOTTEN_BEAST_207:PANCREAS -#CREATURE:FORGOTTEN_BEAST_207:SPLEEN -#CREATURE:FORGOTTEN_BEAST_207:KIDNEY -#CREATURE:FORGOTTEN_BEAST_208:MUSCLE - CREATURE:FORGOTTEN_BEAST_208:EYE -"CREATURE:FORGOTTEN_BEAST_208:BRAIN -!CREATURE:FORGOTTEN_BEAST_208:LUNG -"CREATURE:FORGOTTEN_BEAST_208:HEART -"CREATURE:FORGOTTEN_BEAST_208:LIVER - CREATURE:FORGOTTEN_BEAST_208:GUT -$CREATURE:FORGOTTEN_BEAST_208:STOMACH -$CREATURE:FORGOTTEN_BEAST_208:GIZZARD -%CREATURE:FORGOTTEN_BEAST_208:PANCREAS -#CREATURE:FORGOTTEN_BEAST_208:SPLEEN -#CREATURE:FORGOTTEN_BEAST_208:KIDNEY -#CREATURE:FORGOTTEN_BEAST_209:MUSCLE - CREATURE:FORGOTTEN_BEAST_209:EYE -"CREATURE:FORGOTTEN_BEAST_209:BRAIN -!CREATURE:FORGOTTEN_BEAST_209:LUNG -"CREATURE:FORGOTTEN_BEAST_209:HEART -"CREATURE:FORGOTTEN_BEAST_209:LIVER - CREATURE:FORGOTTEN_BEAST_209:GUT -$CREATURE:FORGOTTEN_BEAST_209:STOMACH -$CREATURE:FORGOTTEN_BEAST_209:GIZZARD -%CREATURE:FORGOTTEN_BEAST_209:PANCREAS -#CREATURE:FORGOTTEN_BEAST_209:SPLEEN -#CREATURE:FORGOTTEN_BEAST_209:KIDNEY -#CREATURE:FORGOTTEN_BEAST_210:MUSCLE - CREATURE:FORGOTTEN_BEAST_210:EYE -"CREATURE:FORGOTTEN_BEAST_210:BRAIN -!CREATURE:FORGOTTEN_BEAST_210:LUNG -"CREATURE:FORGOTTEN_BEAST_210:HEART -"CREATURE:FORGOTTEN_BEAST_210:LIVER - CREATURE:FORGOTTEN_BEAST_210:GUT -$CREATURE:FORGOTTEN_BEAST_210:STOMACH -$CREATURE:FORGOTTEN_BEAST_210:GIZZARD -%CREATURE:FORGOTTEN_BEAST_210:PANCREAS -#CREATURE:FORGOTTEN_BEAST_210:SPLEEN -#CREATURE:FORGOTTEN_BEAST_210:KIDNEY -#CREATURE:FORGOTTEN_BEAST_211:MUSCLE - CREATURE:FORGOTTEN_BEAST_211:EYE -"CREATURE:FORGOTTEN_BEAST_211:BRAIN -!CREATURE:FORGOTTEN_BEAST_211:LUNG -"CREATURE:FORGOTTEN_BEAST_211:HEART -"CREATURE:FORGOTTEN_BEAST_211:LIVER - CREATURE:FORGOTTEN_BEAST_211:GUT -$CREATURE:FORGOTTEN_BEAST_211:STOMACH -$CREATURE:FORGOTTEN_BEAST_211:GIZZARD -%CREATURE:FORGOTTEN_BEAST_211:PANCREAS -#CREATURE:FORGOTTEN_BEAST_211:SPLEEN -#CREATURE:FORGOTTEN_BEAST_211:KIDNEY -#CREATURE:FORGOTTEN_BEAST_212:MUSCLE - CREATURE:FORGOTTEN_BEAST_212:EYE -"CREATURE:FORGOTTEN_BEAST_212:BRAIN -!CREATURE:FORGOTTEN_BEAST_212:LUNG -"CREATURE:FORGOTTEN_BEAST_212:HEART -"CREATURE:FORGOTTEN_BEAST_212:LIVER - CREATURE:FORGOTTEN_BEAST_212:GUT -$CREATURE:FORGOTTEN_BEAST_212:STOMACH -$CREATURE:FORGOTTEN_BEAST_212:GIZZARD -%CREATURE:FORGOTTEN_BEAST_212:PANCREAS -#CREATURE:FORGOTTEN_BEAST_212:SPLEEN -#CREATURE:FORGOTTEN_BEAST_212:KIDNEY -#CREATURE:FORGOTTEN_BEAST_213:MUSCLE - CREATURE:FORGOTTEN_BEAST_213:EYE -"CREATURE:FORGOTTEN_BEAST_213:BRAIN -!CREATURE:FORGOTTEN_BEAST_213:LUNG -"CREATURE:FORGOTTEN_BEAST_213:HEART -"CREATURE:FORGOTTEN_BEAST_213:LIVER - CREATURE:FORGOTTEN_BEAST_213:GUT -$CREATURE:FORGOTTEN_BEAST_213:STOMACH -$CREATURE:FORGOTTEN_BEAST_213:GIZZARD -%CREATURE:FORGOTTEN_BEAST_213:PANCREAS -#CREATURE:FORGOTTEN_BEAST_213:SPLEEN -#CREATURE:FORGOTTEN_BEAST_213:KIDNEY -#CREATURE:FORGOTTEN_BEAST_214:MUSCLE - CREATURE:FORGOTTEN_BEAST_214:EYE -"CREATURE:FORGOTTEN_BEAST_214:BRAIN -!CREATURE:FORGOTTEN_BEAST_214:LUNG -"CREATURE:FORGOTTEN_BEAST_214:HEART -"CREATURE:FORGOTTEN_BEAST_214:LIVER - CREATURE:FORGOTTEN_BEAST_214:GUT -$CREATURE:FORGOTTEN_BEAST_214:STOMACH -$CREATURE:FORGOTTEN_BEAST_214:GIZZARD -%CREATURE:FORGOTTEN_BEAST_214:PANCREAS -#CREATURE:FORGOTTEN_BEAST_214:SPLEEN -#CREATURE:FORGOTTEN_BEAST_214:KIDNEY -#CREATURE:FORGOTTEN_BEAST_215:MUSCLE - CREATURE:FORGOTTEN_BEAST_215:EYE -"CREATURE:FORGOTTEN_BEAST_215:BRAIN -!CREATURE:FORGOTTEN_BEAST_215:LUNG -"CREATURE:FORGOTTEN_BEAST_215:HEART -"CREATURE:FORGOTTEN_BEAST_215:LIVER - CREATURE:FORGOTTEN_BEAST_215:GUT -$CREATURE:FORGOTTEN_BEAST_215:STOMACH -$CREATURE:FORGOTTEN_BEAST_215:GIZZARD -%CREATURE:FORGOTTEN_BEAST_215:PANCREAS -#CREATURE:FORGOTTEN_BEAST_215:SPLEEN -#CREATURE:FORGOTTEN_BEAST_215:KIDNEY -#CREATURE:FORGOTTEN_BEAST_216:MUSCLE - CREATURE:FORGOTTEN_BEAST_216:EYE -"CREATURE:FORGOTTEN_BEAST_216:BRAIN -!CREATURE:FORGOTTEN_BEAST_216:LUNG -"CREATURE:FORGOTTEN_BEAST_216:HEART -"CREATURE:FORGOTTEN_BEAST_216:LIVER - CREATURE:FORGOTTEN_BEAST_216:GUT -$CREATURE:FORGOTTEN_BEAST_216:STOMACH -$CREATURE:FORGOTTEN_BEAST_216:GIZZARD -%CREATURE:FORGOTTEN_BEAST_216:PANCREAS -#CREATURE:FORGOTTEN_BEAST_216:SPLEEN -#CREATURE:FORGOTTEN_BEAST_216:KIDNEY -#CREATURE:FORGOTTEN_BEAST_217:MUSCLE - CREATURE:FORGOTTEN_BEAST_217:EYE -"CREATURE:FORGOTTEN_BEAST_217:BRAIN -!CREATURE:FORGOTTEN_BEAST_217:LUNG -"CREATURE:FORGOTTEN_BEAST_217:HEART -"CREATURE:FORGOTTEN_BEAST_217:LIVER - CREATURE:FORGOTTEN_BEAST_217:GUT -$CREATURE:FORGOTTEN_BEAST_217:STOMACH -$CREATURE:FORGOTTEN_BEAST_217:GIZZARD -%CREATURE:FORGOTTEN_BEAST_217:PANCREAS -#CREATURE:FORGOTTEN_BEAST_217:SPLEEN -#CREATURE:FORGOTTEN_BEAST_217:KIDNEY -#CREATURE:FORGOTTEN_BEAST_218:MUSCLE - CREATURE:FORGOTTEN_BEAST_218:EYE -"CREATURE:FORGOTTEN_BEAST_218:BRAIN -!CREATURE:FORGOTTEN_BEAST_218:LUNG -"CREATURE:FORGOTTEN_BEAST_218:HEART -"CREATURE:FORGOTTEN_BEAST_218:LIVER - CREATURE:FORGOTTEN_BEAST_218:GUT -$CREATURE:FORGOTTEN_BEAST_218:STOMACH -$CREATURE:FORGOTTEN_BEAST_218:GIZZARD -%CREATURE:FORGOTTEN_BEAST_218:PANCREAS -#CREATURE:FORGOTTEN_BEAST_218:SPLEEN -#CREATURE:FORGOTTEN_BEAST_218:KIDNEY -#CREATURE:FORGOTTEN_BEAST_220:MUSCLE - CREATURE:FORGOTTEN_BEAST_220:EYE -"CREATURE:FORGOTTEN_BEAST_220:BRAIN -!CREATURE:FORGOTTEN_BEAST_220:LUNG -"CREATURE:FORGOTTEN_BEAST_220:HEART -"CREATURE:FORGOTTEN_BEAST_220:LIVER - CREATURE:FORGOTTEN_BEAST_220:GUT -$CREATURE:FORGOTTEN_BEAST_220:STOMACH -$CREATURE:FORGOTTEN_BEAST_220:GIZZARD -%CREATURE:FORGOTTEN_BEAST_220:PANCREAS -#CREATURE:FORGOTTEN_BEAST_220:SPLEEN -#CREATURE:FORGOTTEN_BEAST_220:KIDNEY -#CREATURE:FORGOTTEN_BEAST_221:MUSCLE - CREATURE:FORGOTTEN_BEAST_221:EYE -"CREATURE:FORGOTTEN_BEAST_221:BRAIN -!CREATURE:FORGOTTEN_BEAST_221:LUNG -"CREATURE:FORGOTTEN_BEAST_221:HEART -"CREATURE:FORGOTTEN_BEAST_221:LIVER - CREATURE:FORGOTTEN_BEAST_221:GUT -$CREATURE:FORGOTTEN_BEAST_221:STOMACH -$CREATURE:FORGOTTEN_BEAST_221:GIZZARD -%CREATURE:FORGOTTEN_BEAST_221:PANCREAS -#CREATURE:FORGOTTEN_BEAST_221:SPLEEN -#CREATURE:FORGOTTEN_BEAST_221:KIDNEY -#CREATURE:FORGOTTEN_BEAST_224:MUSCLE - CREATURE:FORGOTTEN_BEAST_224:EYE -"CREATURE:FORGOTTEN_BEAST_224:BRAIN -!CREATURE:FORGOTTEN_BEAST_224:LUNG -"CREATURE:FORGOTTEN_BEAST_224:HEART -"CREATURE:FORGOTTEN_BEAST_224:LIVER - CREATURE:FORGOTTEN_BEAST_224:GUT -$CREATURE:FORGOTTEN_BEAST_224:STOMACH -$CREATURE:FORGOTTEN_BEAST_224:GIZZARD -%CREATURE:FORGOTTEN_BEAST_224:PANCREAS -#CREATURE:FORGOTTEN_BEAST_224:SPLEEN -#CREATURE:FORGOTTEN_BEAST_224:KIDNEY -#CREATURE:FORGOTTEN_BEAST_225:MUSCLE - CREATURE:FORGOTTEN_BEAST_225:EYE -"CREATURE:FORGOTTEN_BEAST_225:BRAIN -!CREATURE:FORGOTTEN_BEAST_225:LUNG -"CREATURE:FORGOTTEN_BEAST_225:HEART -"CREATURE:FORGOTTEN_BEAST_225:LIVER - CREATURE:FORGOTTEN_BEAST_225:GUT -$CREATURE:FORGOTTEN_BEAST_225:STOMACH -$CREATURE:FORGOTTEN_BEAST_225:GIZZARD -%CREATURE:FORGOTTEN_BEAST_225:PANCREAS -#CREATURE:FORGOTTEN_BEAST_225:SPLEEN -#CREATURE:FORGOTTEN_BEAST_225:KIDNEY -#CREATURE:FORGOTTEN_BEAST_228:MUSCLE - CREATURE:FORGOTTEN_BEAST_228:EYE -"CREATURE:FORGOTTEN_BEAST_228:BRAIN -!CREATURE:FORGOTTEN_BEAST_228:LUNG -"CREATURE:FORGOTTEN_BEAST_228:HEART -"CREATURE:FORGOTTEN_BEAST_228:LIVER - CREATURE:FORGOTTEN_BEAST_228:GUT -$CREATURE:FORGOTTEN_BEAST_228:STOMACH -$CREATURE:FORGOTTEN_BEAST_228:GIZZARD -%CREATURE:FORGOTTEN_BEAST_228:PANCREAS -#CREATURE:FORGOTTEN_BEAST_228:SPLEEN -#CREATURE:FORGOTTEN_BEAST_228:KIDNEY -#CREATURE:FORGOTTEN_BEAST_231:MUSCLE - CREATURE:FORGOTTEN_BEAST_231:EYE -"CREATURE:FORGOTTEN_BEAST_231:BRAIN -!CREATURE:FORGOTTEN_BEAST_231:LUNG -"CREATURE:FORGOTTEN_BEAST_231:HEART -"CREATURE:FORGOTTEN_BEAST_231:LIVER - CREATURE:FORGOTTEN_BEAST_231:GUT -$CREATURE:FORGOTTEN_BEAST_231:STOMACH -$CREATURE:FORGOTTEN_BEAST_231:GIZZARD -%CREATURE:FORGOTTEN_BEAST_231:PANCREAS -#CREATURE:FORGOTTEN_BEAST_231:SPLEEN -#CREATURE:FORGOTTEN_BEAST_231:KIDNEY -#CREATURE:FORGOTTEN_BEAST_232:MUSCLE - CREATURE:FORGOTTEN_BEAST_232:EYE -"CREATURE:FORGOTTEN_BEAST_232:BRAIN -!CREATURE:FORGOTTEN_BEAST_232:LUNG -"CREATURE:FORGOTTEN_BEAST_232:HEART -"CREATURE:FORGOTTEN_BEAST_232:LIVER - CREATURE:FORGOTTEN_BEAST_232:GUT -$CREATURE:FORGOTTEN_BEAST_232:STOMACH -$CREATURE:FORGOTTEN_BEAST_232:GIZZARD -%CREATURE:FORGOTTEN_BEAST_232:PANCREAS -#CREATURE:FORGOTTEN_BEAST_232:SPLEEN -#CREATURE:FORGOTTEN_BEAST_232:KIDNEY -#CREATURE:FORGOTTEN_BEAST_235:MUSCLE - CREATURE:FORGOTTEN_BEAST_235:EYE -"CREATURE:FORGOTTEN_BEAST_235:BRAIN -!CREATURE:FORGOTTEN_BEAST_235:LUNG -"CREATURE:FORGOTTEN_BEAST_235:HEART -"CREATURE:FORGOTTEN_BEAST_235:LIVER - CREATURE:FORGOTTEN_BEAST_235:GUT -$CREATURE:FORGOTTEN_BEAST_235:STOMACH -$CREATURE:FORGOTTEN_BEAST_235:GIZZARD -%CREATURE:FORGOTTEN_BEAST_235:PANCREAS -#CREATURE:FORGOTTEN_BEAST_235:SPLEEN -#CREATURE:FORGOTTEN_BEAST_235:KIDNEY -#CREATURE:FORGOTTEN_BEAST_236:MUSCLE - CREATURE:FORGOTTEN_BEAST_236:EYE -"CREATURE:FORGOTTEN_BEAST_236:BRAIN -!CREATURE:FORGOTTEN_BEAST_236:LUNG -"CREATURE:FORGOTTEN_BEAST_236:HEART -"CREATURE:FORGOTTEN_BEAST_236:LIVER - CREATURE:FORGOTTEN_BEAST_236:GUT -$CREATURE:FORGOTTEN_BEAST_236:STOMACH -$CREATURE:FORGOTTEN_BEAST_236:GIZZARD -%CREATURE:FORGOTTEN_BEAST_236:PANCREAS -#CREATURE:FORGOTTEN_BEAST_236:SPLEEN -#CREATURE:FORGOTTEN_BEAST_236:KIDNEY -#CREATURE:FORGOTTEN_BEAST_237:MUSCLE - CREATURE:FORGOTTEN_BEAST_237:EYE -"CREATURE:FORGOTTEN_BEAST_237:BRAIN -!CREATURE:FORGOTTEN_BEAST_237:LUNG -"CREATURE:FORGOTTEN_BEAST_237:HEART -"CREATURE:FORGOTTEN_BEAST_237:LIVER - CREATURE:FORGOTTEN_BEAST_237:GUT -$CREATURE:FORGOTTEN_BEAST_237:STOMACH -$CREATURE:FORGOTTEN_BEAST_237:GIZZARD -%CREATURE:FORGOTTEN_BEAST_237:PANCREAS -#CREATURE:FORGOTTEN_BEAST_237:SPLEEN -#CREATURE:FORGOTTEN_BEAST_237:KIDNEY -#CREATURE:FORGOTTEN_BEAST_239:MUSCLE - CREATURE:FORGOTTEN_BEAST_239:EYE -"CREATURE:FORGOTTEN_BEAST_239:BRAIN -!CREATURE:FORGOTTEN_BEAST_239:LUNG -"CREATURE:FORGOTTEN_BEAST_239:HEART -"CREATURE:FORGOTTEN_BEAST_239:LIVER - CREATURE:FORGOTTEN_BEAST_239:GUT -$CREATURE:FORGOTTEN_BEAST_239:STOMACH -$CREATURE:FORGOTTEN_BEAST_239:GIZZARD -%CREATURE:FORGOTTEN_BEAST_239:PANCREAS -#CREATURE:FORGOTTEN_BEAST_239:SPLEEN -#CREATURE:FORGOTTEN_BEAST_239:KIDNEY -#CREATURE:FORGOTTEN_BEAST_240:MUSCLE - CREATURE:FORGOTTEN_BEAST_240:EYE -"CREATURE:FORGOTTEN_BEAST_240:BRAIN -!CREATURE:FORGOTTEN_BEAST_240:LUNG -"CREATURE:FORGOTTEN_BEAST_240:HEART -"CREATURE:FORGOTTEN_BEAST_240:LIVER - CREATURE:FORGOTTEN_BEAST_240:GUT -$CREATURE:FORGOTTEN_BEAST_240:STOMACH -$CREATURE:FORGOTTEN_BEAST_240:GIZZARD -%CREATURE:FORGOTTEN_BEAST_240:PANCREAS -#CREATURE:FORGOTTEN_BEAST_240:SPLEEN -#CREATURE:FORGOTTEN_BEAST_240:KIDNEY -#CREATURE:FORGOTTEN_BEAST_242:MUSCLE - CREATURE:FORGOTTEN_BEAST_242:EYE -"CREATURE:FORGOTTEN_BEAST_242:BRAIN -!CREATURE:FORGOTTEN_BEAST_242:LUNG -"CREATURE:FORGOTTEN_BEAST_242:HEART -"CREATURE:FORGOTTEN_BEAST_242:LIVER - CREATURE:FORGOTTEN_BEAST_242:GUT -$CREATURE:FORGOTTEN_BEAST_242:STOMACH -$CREATURE:FORGOTTEN_BEAST_242:GIZZARD -%CREATURE:FORGOTTEN_BEAST_242:PANCREAS -#CREATURE:FORGOTTEN_BEAST_242:SPLEEN -#CREATURE:FORGOTTEN_BEAST_242:KIDNEY -#CREATURE:FORGOTTEN_BEAST_243:MUSCLE - CREATURE:FORGOTTEN_BEAST_243:EYE -"CREATURE:FORGOTTEN_BEAST_243:BRAIN -!CREATURE:FORGOTTEN_BEAST_243:LUNG -"CREATURE:FORGOTTEN_BEAST_243:HEART -"CREATURE:FORGOTTEN_BEAST_243:LIVER - CREATURE:FORGOTTEN_BEAST_243:GUT -$CREATURE:FORGOTTEN_BEAST_243:STOMACH -$CREATURE:FORGOTTEN_BEAST_243:GIZZARD -%CREATURE:FORGOTTEN_BEAST_243:PANCREAS -#CREATURE:FORGOTTEN_BEAST_243:SPLEEN -#CREATURE:FORGOTTEN_BEAST_243:KIDNEY -#CREATURE:FORGOTTEN_BEAST_244:MUSCLE - CREATURE:FORGOTTEN_BEAST_244:EYE -"CREATURE:FORGOTTEN_BEAST_244:BRAIN -!CREATURE:FORGOTTEN_BEAST_244:LUNG -"CREATURE:FORGOTTEN_BEAST_244:HEART -"CREATURE:FORGOTTEN_BEAST_244:LIVER - CREATURE:FORGOTTEN_BEAST_244:GUT -$CREATURE:FORGOTTEN_BEAST_244:STOMACH -$CREATURE:FORGOTTEN_BEAST_244:GIZZARD -%CREATURE:FORGOTTEN_BEAST_244:PANCREAS -#CREATURE:FORGOTTEN_BEAST_244:SPLEEN -#CREATURE:FORGOTTEN_BEAST_244:KIDNEY -#CREATURE:FORGOTTEN_BEAST_245:MUSCLE - CREATURE:FORGOTTEN_BEAST_245:EYE -"CREATURE:FORGOTTEN_BEAST_245:BRAIN -!CREATURE:FORGOTTEN_BEAST_245:LUNG -"CREATURE:FORGOTTEN_BEAST_245:HEART -"CREATURE:FORGOTTEN_BEAST_245:LIVER - CREATURE:FORGOTTEN_BEAST_245:GUT -$CREATURE:FORGOTTEN_BEAST_245:STOMACH -$CREATURE:FORGOTTEN_BEAST_245:GIZZARD -%CREATURE:FORGOTTEN_BEAST_245:PANCREAS -#CREATURE:FORGOTTEN_BEAST_245:SPLEEN -#CREATURE:FORGOTTEN_BEAST_245:KIDNEY -#CREATURE:FORGOTTEN_BEAST_246:MUSCLE - CREATURE:FORGOTTEN_BEAST_246:EYE -"CREATURE:FORGOTTEN_BEAST_246:BRAIN -!CREATURE:FORGOTTEN_BEAST_246:LUNG -"CREATURE:FORGOTTEN_BEAST_246:HEART -"CREATURE:FORGOTTEN_BEAST_246:LIVER - CREATURE:FORGOTTEN_BEAST_246:GUT -$CREATURE:FORGOTTEN_BEAST_246:STOMACH -$CREATURE:FORGOTTEN_BEAST_246:GIZZARD -%CREATURE:FORGOTTEN_BEAST_246:PANCREAS -#CREATURE:FORGOTTEN_BEAST_246:SPLEEN -#CREATURE:FORGOTTEN_BEAST_246:KIDNEY -#CREATURE:FORGOTTEN_BEAST_247:MUSCLE - CREATURE:FORGOTTEN_BEAST_247:EYE -"CREATURE:FORGOTTEN_BEAST_247:BRAIN -!CREATURE:FORGOTTEN_BEAST_247:LUNG -"CREATURE:FORGOTTEN_BEAST_247:HEART -"CREATURE:FORGOTTEN_BEAST_247:LIVER - CREATURE:FORGOTTEN_BEAST_247:GUT -$CREATURE:FORGOTTEN_BEAST_247:STOMACH -$CREATURE:FORGOTTEN_BEAST_247:GIZZARD -%CREATURE:FORGOTTEN_BEAST_247:PANCREAS -#CREATURE:FORGOTTEN_BEAST_247:SPLEEN -#CREATURE:FORGOTTEN_BEAST_247:KIDNEY -#CREATURE:FORGOTTEN_BEAST_248:MUSCLE - CREATURE:FORGOTTEN_BEAST_248:EYE -"CREATURE:FORGOTTEN_BEAST_248:BRAIN -!CREATURE:FORGOTTEN_BEAST_248:LUNG -"CREATURE:FORGOTTEN_BEAST_248:HEART -"CREATURE:FORGOTTEN_BEAST_248:LIVER - CREATURE:FORGOTTEN_BEAST_248:GUT -$CREATURE:FORGOTTEN_BEAST_248:STOMACH -$CREATURE:FORGOTTEN_BEAST_248:GIZZARD -%CREATURE:FORGOTTEN_BEAST_248:PANCREAS -#CREATURE:FORGOTTEN_BEAST_248:SPLEEN -#CREATURE:FORGOTTEN_BEAST_248:KIDNEY -#CREATURE:FORGOTTEN_BEAST_249:MUSCLE - CREATURE:FORGOTTEN_BEAST_249:EYE -"CREATURE:FORGOTTEN_BEAST_249:BRAIN -!CREATURE:FORGOTTEN_BEAST_249:LUNG -"CREATURE:FORGOTTEN_BEAST_249:HEART -"CREATURE:FORGOTTEN_BEAST_249:LIVER - CREATURE:FORGOTTEN_BEAST_249:GUT -$CREATURE:FORGOTTEN_BEAST_249:STOMACH -$CREATURE:FORGOTTEN_BEAST_249:GIZZARD -%CREATURE:FORGOTTEN_BEAST_249:PANCREAS -#CREATURE:FORGOTTEN_BEAST_249:SPLEEN -#CREATURE:FORGOTTEN_BEAST_249:KIDNEY -#CREATURE:FORGOTTEN_BEAST_253:MUSCLE - CREATURE:FORGOTTEN_BEAST_253:EYE -"CREATURE:FORGOTTEN_BEAST_253:BRAIN -!CREATURE:FORGOTTEN_BEAST_253:LUNG -"CREATURE:FORGOTTEN_BEAST_253:HEART -"CREATURE:FORGOTTEN_BEAST_253:LIVER - CREATURE:FORGOTTEN_BEAST_253:GUT -$CREATURE:FORGOTTEN_BEAST_253:STOMACH -$CREATURE:FORGOTTEN_BEAST_253:GIZZARD -%CREATURE:FORGOTTEN_BEAST_253:PANCREAS -#CREATURE:FORGOTTEN_BEAST_253:SPLEEN -#CREATURE:FORGOTTEN_BEAST_253:KIDNEY -#CREATURE:FORGOTTEN_BEAST_255:MUSCLE - CREATURE:FORGOTTEN_BEAST_255:EYE -"CREATURE:FORGOTTEN_BEAST_255:BRAIN -!CREATURE:FORGOTTEN_BEAST_255:LUNG -"CREATURE:FORGOTTEN_BEAST_255:HEART -"CREATURE:FORGOTTEN_BEAST_255:LIVER - CREATURE:FORGOTTEN_BEAST_255:GUT -$CREATURE:FORGOTTEN_BEAST_255:STOMACH -$CREATURE:FORGOTTEN_BEAST_255:GIZZARD -%CREATURE:FORGOTTEN_BEAST_255:PANCREAS -#CREATURE:FORGOTTEN_BEAST_255:SPLEEN -#CREATURE:FORGOTTEN_BEAST_255:KIDNEY -#CREATURE:FORGOTTEN_BEAST_256:MUSCLE - CREATURE:FORGOTTEN_BEAST_256:EYE -"CREATURE:FORGOTTEN_BEAST_256:BRAIN -!CREATURE:FORGOTTEN_BEAST_256:LUNG -"CREATURE:FORGOTTEN_BEAST_256:HEART -"CREATURE:FORGOTTEN_BEAST_256:LIVER - CREATURE:FORGOTTEN_BEAST_256:GUT -$CREATURE:FORGOTTEN_BEAST_256:STOMACH -$CREATURE:FORGOTTEN_BEAST_256:GIZZARD -%CREATURE:FORGOTTEN_BEAST_256:PANCREAS -#CREATURE:FORGOTTEN_BEAST_256:SPLEEN -#CREATURE:FORGOTTEN_BEAST_256:KIDNEY -#CREATURE:FORGOTTEN_BEAST_259:MUSCLE - CREATURE:FORGOTTEN_BEAST_259:EYE -"CREATURE:FORGOTTEN_BEAST_259:BRAIN -!CREATURE:FORGOTTEN_BEAST_259:LUNG -"CREATURE:FORGOTTEN_BEAST_259:HEART -"CREATURE:FORGOTTEN_BEAST_259:LIVER - CREATURE:FORGOTTEN_BEAST_259:GUT -$CREATURE:FORGOTTEN_BEAST_259:STOMACH -$CREATURE:FORGOTTEN_BEAST_259:GIZZARD -%CREATURE:FORGOTTEN_BEAST_259:PANCREAS -#CREATURE:FORGOTTEN_BEAST_259:SPLEEN -#CREATURE:FORGOTTEN_BEAST_259:KIDNEY -#CREATURE:FORGOTTEN_BEAST_260:MUSCLE - CREATURE:FORGOTTEN_BEAST_260:EYE -"CREATURE:FORGOTTEN_BEAST_260:BRAIN -!CREATURE:FORGOTTEN_BEAST_260:LUNG -"CREATURE:FORGOTTEN_BEAST_260:HEART -"CREATURE:FORGOTTEN_BEAST_260:LIVER - CREATURE:FORGOTTEN_BEAST_260:GUT -$CREATURE:FORGOTTEN_BEAST_260:STOMACH -$CREATURE:FORGOTTEN_BEAST_260:GIZZARD -%CREATURE:FORGOTTEN_BEAST_260:PANCREAS -#CREATURE:FORGOTTEN_BEAST_260:SPLEEN -#CREATURE:FORGOTTEN_BEAST_260:KIDNEY -#CREATURE:FORGOTTEN_BEAST_263:MUSCLE - CREATURE:FORGOTTEN_BEAST_263:EYE -"CREATURE:FORGOTTEN_BEAST_263:BRAIN -!CREATURE:FORGOTTEN_BEAST_263:LUNG -"CREATURE:FORGOTTEN_BEAST_263:HEART -"CREATURE:FORGOTTEN_BEAST_263:LIVER - CREATURE:FORGOTTEN_BEAST_263:GUT -$CREATURE:FORGOTTEN_BEAST_263:STOMACH -$CREATURE:FORGOTTEN_BEAST_263:GIZZARD -%CREATURE:FORGOTTEN_BEAST_263:PANCREAS -#CREATURE:FORGOTTEN_BEAST_263:SPLEEN -#CREATURE:FORGOTTEN_BEAST_263:KIDNEY -#CREATURE:FORGOTTEN_BEAST_264:MUSCLE - CREATURE:FORGOTTEN_BEAST_264:EYE -"CREATURE:FORGOTTEN_BEAST_264:BRAIN -!CREATURE:FORGOTTEN_BEAST_264:LUNG -"CREATURE:FORGOTTEN_BEAST_264:HEART -"CREATURE:FORGOTTEN_BEAST_264:LIVER - CREATURE:FORGOTTEN_BEAST_264:GUT -$CREATURE:FORGOTTEN_BEAST_264:STOMACH -$CREATURE:FORGOTTEN_BEAST_264:GIZZARD -%CREATURE:FORGOTTEN_BEAST_264:PANCREAS -#CREATURE:FORGOTTEN_BEAST_264:SPLEEN -#CREATURE:FORGOTTEN_BEAST_264:KIDNEY -#CREATURE:FORGOTTEN_BEAST_265:MUSCLE - CREATURE:FORGOTTEN_BEAST_265:EYE -"CREATURE:FORGOTTEN_BEAST_265:BRAIN -!CREATURE:FORGOTTEN_BEAST_265:LUNG -"CREATURE:FORGOTTEN_BEAST_265:HEART -"CREATURE:FORGOTTEN_BEAST_265:LIVER - CREATURE:FORGOTTEN_BEAST_265:GUT -$CREATURE:FORGOTTEN_BEAST_265:STOMACH -$CREATURE:FORGOTTEN_BEAST_265:GIZZARD -%CREATURE:FORGOTTEN_BEAST_265:PANCREAS -#CREATURE:FORGOTTEN_BEAST_265:SPLEEN -#CREATURE:FORGOTTEN_BEAST_265:KIDNEY -#CREATURE:FORGOTTEN_BEAST_266:MUSCLE - CREATURE:FORGOTTEN_BEAST_266:EYE -"CREATURE:FORGOTTEN_BEAST_266:BRAIN -!CREATURE:FORGOTTEN_BEAST_266:LUNG -"CREATURE:FORGOTTEN_BEAST_266:HEART -"CREATURE:FORGOTTEN_BEAST_266:LIVER - CREATURE:FORGOTTEN_BEAST_266:GUT -$CREATURE:FORGOTTEN_BEAST_266:STOMACH -$CREATURE:FORGOTTEN_BEAST_266:GIZZARD -%CREATURE:FORGOTTEN_BEAST_266:PANCREAS -#CREATURE:FORGOTTEN_BEAST_266:SPLEEN -#CREATURE:FORGOTTEN_BEAST_266:KIDNEY -#CREATURE:FORGOTTEN_BEAST_268:MUSCLE - CREATURE:FORGOTTEN_BEAST_268:EYE -"CREATURE:FORGOTTEN_BEAST_268:BRAIN -!CREATURE:FORGOTTEN_BEAST_268:LUNG -"CREATURE:FORGOTTEN_BEAST_268:HEART -"CREATURE:FORGOTTEN_BEAST_268:LIVER - CREATURE:FORGOTTEN_BEAST_268:GUT -$CREATURE:FORGOTTEN_BEAST_268:STOMACH -$CREATURE:FORGOTTEN_BEAST_268:GIZZARD -%CREATURE:FORGOTTEN_BEAST_268:PANCREAS -#CREATURE:FORGOTTEN_BEAST_268:SPLEEN -#CREATURE:FORGOTTEN_BEAST_268:KIDNEY -#CREATURE:FORGOTTEN_BEAST_269:MUSCLE - CREATURE:FORGOTTEN_BEAST_269:EYE -"CREATURE:FORGOTTEN_BEAST_269:BRAIN -!CREATURE:FORGOTTEN_BEAST_269:LUNG -"CREATURE:FORGOTTEN_BEAST_269:HEART -"CREATURE:FORGOTTEN_BEAST_269:LIVER - CREATURE:FORGOTTEN_BEAST_269:GUT -$CREATURE:FORGOTTEN_BEAST_269:STOMACH -$CREATURE:FORGOTTEN_BEAST_269:GIZZARD -%CREATURE:FORGOTTEN_BEAST_269:PANCREAS -#CREATURE:FORGOTTEN_BEAST_269:SPLEEN -#CREATURE:FORGOTTEN_BEAST_269:KIDNEY -#CREATURE:FORGOTTEN_BEAST_270:MUSCLE - CREATURE:FORGOTTEN_BEAST_270:EYE -"CREATURE:FORGOTTEN_BEAST_270:BRAIN -!CREATURE:FORGOTTEN_BEAST_270:LUNG -"CREATURE:FORGOTTEN_BEAST_270:HEART -"CREATURE:FORGOTTEN_BEAST_270:LIVER - CREATURE:FORGOTTEN_BEAST_270:GUT -$CREATURE:FORGOTTEN_BEAST_270:STOMACH -$CREATURE:FORGOTTEN_BEAST_270:GIZZARD -%CREATURE:FORGOTTEN_BEAST_270:PANCREAS -#CREATURE:FORGOTTEN_BEAST_270:SPLEEN -#CREATURE:FORGOTTEN_BEAST_270:KIDNEY -#CREATURE:FORGOTTEN_BEAST_271:MUSCLE - CREATURE:FORGOTTEN_BEAST_271:EYE -"CREATURE:FORGOTTEN_BEAST_271:BRAIN -!CREATURE:FORGOTTEN_BEAST_271:LUNG -"CREATURE:FORGOTTEN_BEAST_271:HEART -"CREATURE:FORGOTTEN_BEAST_271:LIVER - CREATURE:FORGOTTEN_BEAST_271:GUT -$CREATURE:FORGOTTEN_BEAST_271:STOMACH -$CREATURE:FORGOTTEN_BEAST_271:GIZZARD -%CREATURE:FORGOTTEN_BEAST_271:PANCREAS -#CREATURE:FORGOTTEN_BEAST_271:SPLEEN -#CREATURE:FORGOTTEN_BEAST_271:KIDNEY -#CREATURE:FORGOTTEN_BEAST_272:MUSCLE - CREATURE:FORGOTTEN_BEAST_272:EYE -"CREATURE:FORGOTTEN_BEAST_272:BRAIN -!CREATURE:FORGOTTEN_BEAST_272:LUNG -"CREATURE:FORGOTTEN_BEAST_272:HEART -"CREATURE:FORGOTTEN_BEAST_272:LIVER - CREATURE:FORGOTTEN_BEAST_272:GUT -$CREATURE:FORGOTTEN_BEAST_272:STOMACH -$CREATURE:FORGOTTEN_BEAST_272:GIZZARD -%CREATURE:FORGOTTEN_BEAST_272:PANCREAS -#CREATURE:FORGOTTEN_BEAST_272:SPLEEN -#CREATURE:FORGOTTEN_BEAST_272:KIDNEY -#CREATURE:FORGOTTEN_BEAST_273:MUSCLE - CREATURE:FORGOTTEN_BEAST_273:EYE -"CREATURE:FORGOTTEN_BEAST_273:BRAIN -!CREATURE:FORGOTTEN_BEAST_273:LUNG -"CREATURE:FORGOTTEN_BEAST_273:HEART -"CREATURE:FORGOTTEN_BEAST_273:LIVER - CREATURE:FORGOTTEN_BEAST_273:GUT -$CREATURE:FORGOTTEN_BEAST_273:STOMACH -$CREATURE:FORGOTTEN_BEAST_273:GIZZARD -%CREATURE:FORGOTTEN_BEAST_273:PANCREAS -#CREATURE:FORGOTTEN_BEAST_273:SPLEEN -#CREATURE:FORGOTTEN_BEAST_273:KIDNEY -#CREATURE:FORGOTTEN_BEAST_274:MUSCLE - CREATURE:FORGOTTEN_BEAST_274:EYE -"CREATURE:FORGOTTEN_BEAST_274:BRAIN -!CREATURE:FORGOTTEN_BEAST_274:LUNG -"CREATURE:FORGOTTEN_BEAST_274:HEART -"CREATURE:FORGOTTEN_BEAST_274:LIVER - CREATURE:FORGOTTEN_BEAST_274:GUT -$CREATURE:FORGOTTEN_BEAST_274:STOMACH -$CREATURE:FORGOTTEN_BEAST_274:GIZZARD -%CREATURE:FORGOTTEN_BEAST_274:PANCREAS -#CREATURE:FORGOTTEN_BEAST_274:SPLEEN -#CREATURE:FORGOTTEN_BEAST_274:KIDNEY -#CREATURE:FORGOTTEN_BEAST_275:MUSCLE - CREATURE:FORGOTTEN_BEAST_275:EYE -"CREATURE:FORGOTTEN_BEAST_275:BRAIN -!CREATURE:FORGOTTEN_BEAST_275:LUNG -"CREATURE:FORGOTTEN_BEAST_275:HEART -"CREATURE:FORGOTTEN_BEAST_275:LIVER - CREATURE:FORGOTTEN_BEAST_275:GUT -$CREATURE:FORGOTTEN_BEAST_275:STOMACH -$CREATURE:FORGOTTEN_BEAST_275:GIZZARD -%CREATURE:FORGOTTEN_BEAST_275:PANCREAS -#CREATURE:FORGOTTEN_BEAST_275:SPLEEN -#CREATURE:FORGOTTEN_BEAST_275:KIDNEY -#CREATURE:FORGOTTEN_BEAST_276:MUSCLE - CREATURE:FORGOTTEN_BEAST_276:EYE -"CREATURE:FORGOTTEN_BEAST_276:BRAIN -!CREATURE:FORGOTTEN_BEAST_276:LUNG -"CREATURE:FORGOTTEN_BEAST_276:HEART -"CREATURE:FORGOTTEN_BEAST_276:LIVER - CREATURE:FORGOTTEN_BEAST_276:GUT -$CREATURE:FORGOTTEN_BEAST_276:STOMACH -$CREATURE:FORGOTTEN_BEAST_276:GIZZARD -%CREATURE:FORGOTTEN_BEAST_276:PANCREAS -#CREATURE:FORGOTTEN_BEAST_276:SPLEEN -#CREATURE:FORGOTTEN_BEAST_276:KIDNEY -#CREATURE:FORGOTTEN_BEAST_277:MUSCLE - CREATURE:FORGOTTEN_BEAST_277:EYE -"CREATURE:FORGOTTEN_BEAST_277:BRAIN -!CREATURE:FORGOTTEN_BEAST_277:LUNG -"CREATURE:FORGOTTEN_BEAST_277:HEART -"CREATURE:FORGOTTEN_BEAST_277:LIVER - CREATURE:FORGOTTEN_BEAST_277:GUT -$CREATURE:FORGOTTEN_BEAST_277:STOMACH -$CREATURE:FORGOTTEN_BEAST_277:GIZZARD -%CREATURE:FORGOTTEN_BEAST_277:PANCREAS -#CREATURE:FORGOTTEN_BEAST_277:SPLEEN -#CREATURE:FORGOTTEN_BEAST_277:KIDNEY -#CREATURE:FORGOTTEN_BEAST_279:MUSCLE - CREATURE:FORGOTTEN_BEAST_279:EYE -"CREATURE:FORGOTTEN_BEAST_279:BRAIN -!CREATURE:FORGOTTEN_BEAST_279:LUNG -"CREATURE:FORGOTTEN_BEAST_279:HEART -"CREATURE:FORGOTTEN_BEAST_279:LIVER - CREATURE:FORGOTTEN_BEAST_279:GUT -$CREATURE:FORGOTTEN_BEAST_279:STOMACH -$CREATURE:FORGOTTEN_BEAST_279:GIZZARD -%CREATURE:FORGOTTEN_BEAST_279:PANCREAS -#CREATURE:FORGOTTEN_BEAST_279:SPLEEN -#CREATURE:FORGOTTEN_BEAST_279:KIDNEY -#CREATURE:FORGOTTEN_BEAST_280:MUSCLE - CREATURE:FORGOTTEN_BEAST_280:EYE -"CREATURE:FORGOTTEN_BEAST_280:BRAIN -!CREATURE:FORGOTTEN_BEAST_280:LUNG -"CREATURE:FORGOTTEN_BEAST_280:HEART -"CREATURE:FORGOTTEN_BEAST_280:LIVER - CREATURE:FORGOTTEN_BEAST_280:GUT -$CREATURE:FORGOTTEN_BEAST_280:STOMACH -$CREATURE:FORGOTTEN_BEAST_280:GIZZARD -%CREATURE:FORGOTTEN_BEAST_280:PANCREAS -#CREATURE:FORGOTTEN_BEAST_280:SPLEEN -#CREATURE:FORGOTTEN_BEAST_280:KIDNEY -#CREATURE:FORGOTTEN_BEAST_281:MUSCLE - CREATURE:FORGOTTEN_BEAST_281:EYE -"CREATURE:FORGOTTEN_BEAST_281:BRAIN -!CREATURE:FORGOTTEN_BEAST_281:LUNG -"CREATURE:FORGOTTEN_BEAST_281:HEART -"CREATURE:FORGOTTEN_BEAST_281:LIVER - CREATURE:FORGOTTEN_BEAST_281:GUT -$CREATURE:FORGOTTEN_BEAST_281:STOMACH -$CREATURE:FORGOTTEN_BEAST_281:GIZZARD -%CREATURE:FORGOTTEN_BEAST_281:PANCREAS -#CREATURE:FORGOTTEN_BEAST_281:SPLEEN -#CREATURE:FORGOTTEN_BEAST_281:KIDNEY -#CREATURE:FORGOTTEN_BEAST_282:MUSCLE - CREATURE:FORGOTTEN_BEAST_282:EYE -"CREATURE:FORGOTTEN_BEAST_282:BRAIN -!CREATURE:FORGOTTEN_BEAST_282:LUNG -"CREATURE:FORGOTTEN_BEAST_282:HEART -"CREATURE:FORGOTTEN_BEAST_282:LIVER - CREATURE:FORGOTTEN_BEAST_282:GUT -$CREATURE:FORGOTTEN_BEAST_282:STOMACH -$CREATURE:FORGOTTEN_BEAST_282:GIZZARD -%CREATURE:FORGOTTEN_BEAST_282:PANCREAS -#CREATURE:FORGOTTEN_BEAST_282:SPLEEN -#CREATURE:FORGOTTEN_BEAST_282:KIDNEY -#CREATURE:FORGOTTEN_BEAST_283:MUSCLE - CREATURE:FORGOTTEN_BEAST_283:EYE -"CREATURE:FORGOTTEN_BEAST_283:BRAIN -!CREATURE:FORGOTTEN_BEAST_283:LUNG -"CREATURE:FORGOTTEN_BEAST_283:HEART -"CREATURE:FORGOTTEN_BEAST_283:LIVER - CREATURE:FORGOTTEN_BEAST_283:GUT -$CREATURE:FORGOTTEN_BEAST_283:STOMACH -$CREATURE:FORGOTTEN_BEAST_283:GIZZARD -%CREATURE:FORGOTTEN_BEAST_283:PANCREAS -#CREATURE:FORGOTTEN_BEAST_283:SPLEEN -#CREATURE:FORGOTTEN_BEAST_283:KIDNEY -#CREATURE:FORGOTTEN_BEAST_285:MUSCLE - CREATURE:FORGOTTEN_BEAST_285:EYE -"CREATURE:FORGOTTEN_BEAST_285:BRAIN -!CREATURE:FORGOTTEN_BEAST_285:LUNG -"CREATURE:FORGOTTEN_BEAST_285:HEART -"CREATURE:FORGOTTEN_BEAST_285:LIVER - CREATURE:FORGOTTEN_BEAST_285:GUT -$CREATURE:FORGOTTEN_BEAST_285:STOMACH -$CREATURE:FORGOTTEN_BEAST_285:GIZZARD -%CREATURE:FORGOTTEN_BEAST_285:PANCREAS -#CREATURE:FORGOTTEN_BEAST_285:SPLEEN -#CREATURE:FORGOTTEN_BEAST_285:KIDNEY -#CREATURE:FORGOTTEN_BEAST_286:MUSCLE - CREATURE:FORGOTTEN_BEAST_286:EYE -"CREATURE:FORGOTTEN_BEAST_286:BRAIN -!CREATURE:FORGOTTEN_BEAST_286:LUNG -"CREATURE:FORGOTTEN_BEAST_286:HEART -"CREATURE:FORGOTTEN_BEAST_286:LIVER - CREATURE:FORGOTTEN_BEAST_286:GUT -$CREATURE:FORGOTTEN_BEAST_286:STOMACH -$CREATURE:FORGOTTEN_BEAST_286:GIZZARD -%CREATURE:FORGOTTEN_BEAST_286:PANCREAS -#CREATURE:FORGOTTEN_BEAST_286:SPLEEN -#CREATURE:FORGOTTEN_BEAST_286:KIDNEY -#CREATURE:FORGOTTEN_BEAST_287:MUSCLE - CREATURE:FORGOTTEN_BEAST_287:EYE -"CREATURE:FORGOTTEN_BEAST_287:BRAIN -!CREATURE:FORGOTTEN_BEAST_287:LUNG -"CREATURE:FORGOTTEN_BEAST_287:HEART -"CREATURE:FORGOTTEN_BEAST_287:LIVER - CREATURE:FORGOTTEN_BEAST_287:GUT -$CREATURE:FORGOTTEN_BEAST_287:STOMACH -$CREATURE:FORGOTTEN_BEAST_287:GIZZARD -%CREATURE:FORGOTTEN_BEAST_287:PANCREAS -#CREATURE:FORGOTTEN_BEAST_287:SPLEEN -#CREATURE:FORGOTTEN_BEAST_287:KIDNEY -#CREATURE:FORGOTTEN_BEAST_288:MUSCLE - CREATURE:FORGOTTEN_BEAST_288:EYE -"CREATURE:FORGOTTEN_BEAST_288:BRAIN -!CREATURE:FORGOTTEN_BEAST_288:LUNG -"CREATURE:FORGOTTEN_BEAST_288:HEART -"CREATURE:FORGOTTEN_BEAST_288:LIVER - CREATURE:FORGOTTEN_BEAST_288:GUT -$CREATURE:FORGOTTEN_BEAST_288:STOMACH -$CREATURE:FORGOTTEN_BEAST_288:GIZZARD -%CREATURE:FORGOTTEN_BEAST_288:PANCREAS -#CREATURE:FORGOTTEN_BEAST_288:SPLEEN -#CREATURE:FORGOTTEN_BEAST_288:KIDNEY -#CREATURE:FORGOTTEN_BEAST_289:MUSCLE - CREATURE:FORGOTTEN_BEAST_289:EYE -"CREATURE:FORGOTTEN_BEAST_289:BRAIN -!CREATURE:FORGOTTEN_BEAST_289:LUNG -"CREATURE:FORGOTTEN_BEAST_289:HEART -"CREATURE:FORGOTTEN_BEAST_289:LIVER - CREATURE:FORGOTTEN_BEAST_289:GUT -$CREATURE:FORGOTTEN_BEAST_289:STOMACH -$CREATURE:FORGOTTEN_BEAST_289:GIZZARD -%CREATURE:FORGOTTEN_BEAST_289:PANCREAS -#CREATURE:FORGOTTEN_BEAST_289:SPLEEN -#CREATURE:FORGOTTEN_BEAST_289:KIDNEY -#CREATURE:FORGOTTEN_BEAST_290:MUSCLE - CREATURE:FORGOTTEN_BEAST_290:EYE -"CREATURE:FORGOTTEN_BEAST_290:BRAIN -!CREATURE:FORGOTTEN_BEAST_290:LUNG -"CREATURE:FORGOTTEN_BEAST_290:HEART -"CREATURE:FORGOTTEN_BEAST_290:LIVER - CREATURE:FORGOTTEN_BEAST_290:GUT -$CREATURE:FORGOTTEN_BEAST_290:STOMACH -$CREATURE:FORGOTTEN_BEAST_290:GIZZARD -%CREATURE:FORGOTTEN_BEAST_290:PANCREAS -#CREATURE:FORGOTTEN_BEAST_290:SPLEEN -#CREATURE:FORGOTTEN_BEAST_290:KIDNEY -#CREATURE:FORGOTTEN_BEAST_293:MUSCLE - CREATURE:FORGOTTEN_BEAST_293:EYE -"CREATURE:FORGOTTEN_BEAST_293:BRAIN -!CREATURE:FORGOTTEN_BEAST_293:LUNG -"CREATURE:FORGOTTEN_BEAST_293:HEART -"CREATURE:FORGOTTEN_BEAST_293:LIVER - CREATURE:FORGOTTEN_BEAST_293:GUT -$CREATURE:FORGOTTEN_BEAST_293:STOMACH -$CREATURE:FORGOTTEN_BEAST_293:GIZZARD -%CREATURE:FORGOTTEN_BEAST_293:PANCREAS -#CREATURE:FORGOTTEN_BEAST_293:SPLEEN -#CREATURE:FORGOTTEN_BEAST_293:KIDNEY -#CREATURE:FORGOTTEN_BEAST_295:MUSCLE - CREATURE:FORGOTTEN_BEAST_295:EYE -"CREATURE:FORGOTTEN_BEAST_295:BRAIN -!CREATURE:FORGOTTEN_BEAST_295:LUNG -"CREATURE:FORGOTTEN_BEAST_295:HEART -"CREATURE:FORGOTTEN_BEAST_295:LIVER - CREATURE:FORGOTTEN_BEAST_295:GUT -$CREATURE:FORGOTTEN_BEAST_295:STOMACH -$CREATURE:FORGOTTEN_BEAST_295:GIZZARD -%CREATURE:FORGOTTEN_BEAST_295:PANCREAS -#CREATURE:FORGOTTEN_BEAST_295:SPLEEN -#CREATURE:FORGOTTEN_BEAST_295:KIDNEY -#CREATURE:FORGOTTEN_BEAST_297:MUSCLE - CREATURE:FORGOTTEN_BEAST_297:EYE -"CREATURE:FORGOTTEN_BEAST_297:BRAIN -!CREATURE:FORGOTTEN_BEAST_297:LUNG -"CREATURE:FORGOTTEN_BEAST_297:HEART -"CREATURE:FORGOTTEN_BEAST_297:LIVER - CREATURE:FORGOTTEN_BEAST_297:GUT -$CREATURE:FORGOTTEN_BEAST_297:STOMACH -$CREATURE:FORGOTTEN_BEAST_297:GIZZARD -%CREATURE:FORGOTTEN_BEAST_297:PANCREAS -#CREATURE:FORGOTTEN_BEAST_297:SPLEEN -#CREATURE:FORGOTTEN_BEAST_297:KIDNEY -#CREATURE:FORGOTTEN_BEAST_300:MUSCLE - CREATURE:FORGOTTEN_BEAST_300:EYE -"CREATURE:FORGOTTEN_BEAST_300:BRAIN -!CREATURE:FORGOTTEN_BEAST_300:LUNG -"CREATURE:FORGOTTEN_BEAST_300:HEART -"CREATURE:FORGOTTEN_BEAST_300:LIVER - CREATURE:FORGOTTEN_BEAST_300:GUT -$CREATURE:FORGOTTEN_BEAST_300:STOMACH -$CREATURE:FORGOTTEN_BEAST_300:GIZZARD -%CREATURE:FORGOTTEN_BEAST_300:PANCREAS -#CREATURE:FORGOTTEN_BEAST_300:SPLEEN -#CREATURE:FORGOTTEN_BEAST_300:KIDNEY -#CREATURE:FORGOTTEN_BEAST_302:MUSCLE - CREATURE:FORGOTTEN_BEAST_302:EYE -"CREATURE:FORGOTTEN_BEAST_302:BRAIN -!CREATURE:FORGOTTEN_BEAST_302:LUNG -"CREATURE:FORGOTTEN_BEAST_302:HEART -"CREATURE:FORGOTTEN_BEAST_302:LIVER - CREATURE:FORGOTTEN_BEAST_302:GUT -$CREATURE:FORGOTTEN_BEAST_302:STOMACH -$CREATURE:FORGOTTEN_BEAST_302:GIZZARD -%CREATURE:FORGOTTEN_BEAST_302:PANCREAS -#CREATURE:FORGOTTEN_BEAST_302:SPLEEN -#CREATURE:FORGOTTEN_BEAST_302:KIDNEY -#CREATURE:FORGOTTEN_BEAST_306:MUSCLE - CREATURE:FORGOTTEN_BEAST_306:EYE -"CREATURE:FORGOTTEN_BEAST_306:BRAIN -!CREATURE:FORGOTTEN_BEAST_306:LUNG -"CREATURE:FORGOTTEN_BEAST_306:HEART -"CREATURE:FORGOTTEN_BEAST_306:LIVER - CREATURE:FORGOTTEN_BEAST_306:GUT -$CREATURE:FORGOTTEN_BEAST_306:STOMACH -$CREATURE:FORGOTTEN_BEAST_306:GIZZARD -%CREATURE:FORGOTTEN_BEAST_306:PANCREAS -#CREATURE:FORGOTTEN_BEAST_306:SPLEEN -#CREATURE:FORGOTTEN_BEAST_306:KIDNEY -#CREATURE:FORGOTTEN_BEAST_307:MUSCLE - CREATURE:FORGOTTEN_BEAST_307:EYE -"CREATURE:FORGOTTEN_BEAST_307:BRAIN -!CREATURE:FORGOTTEN_BEAST_307:LUNG -"CREATURE:FORGOTTEN_BEAST_307:HEART -"CREATURE:FORGOTTEN_BEAST_307:LIVER - CREATURE:FORGOTTEN_BEAST_307:GUT -$CREATURE:FORGOTTEN_BEAST_307:STOMACH -$CREATURE:FORGOTTEN_BEAST_307:GIZZARD -%CREATURE:FORGOTTEN_BEAST_307:PANCREAS -#CREATURE:FORGOTTEN_BEAST_307:SPLEEN -#CREATURE:FORGOTTEN_BEAST_307:KIDNEY -#CREATURE:FORGOTTEN_BEAST_310:MUSCLE - CREATURE:FORGOTTEN_BEAST_310:EYE -"CREATURE:FORGOTTEN_BEAST_310:BRAIN -!CREATURE:FORGOTTEN_BEAST_310:LUNG -"CREATURE:FORGOTTEN_BEAST_310:HEART -"CREATURE:FORGOTTEN_BEAST_310:LIVER - CREATURE:FORGOTTEN_BEAST_310:GUT -$CREATURE:FORGOTTEN_BEAST_310:STOMACH -$CREATURE:FORGOTTEN_BEAST_310:GIZZARD -%CREATURE:FORGOTTEN_BEAST_310:PANCREAS -#CREATURE:FORGOTTEN_BEAST_310:SPLEEN -#CREATURE:FORGOTTEN_BEAST_310:KIDNEY -#CREATURE:FORGOTTEN_BEAST_311:MUSCLE - CREATURE:FORGOTTEN_BEAST_311:EYE -"CREATURE:FORGOTTEN_BEAST_311:BRAIN -!CREATURE:FORGOTTEN_BEAST_311:LUNG -"CREATURE:FORGOTTEN_BEAST_311:HEART -"CREATURE:FORGOTTEN_BEAST_311:LIVER - CREATURE:FORGOTTEN_BEAST_311:GUT -$CREATURE:FORGOTTEN_BEAST_311:STOMACH -$CREATURE:FORGOTTEN_BEAST_311:GIZZARD -%CREATURE:FORGOTTEN_BEAST_311:PANCREAS -#CREATURE:FORGOTTEN_BEAST_311:SPLEEN -#CREATURE:FORGOTTEN_BEAST_311:KIDNEY -#CREATURE:FORGOTTEN_BEAST_312:MUSCLE - CREATURE:FORGOTTEN_BEAST_312:EYE -"CREATURE:FORGOTTEN_BEAST_312:BRAIN -!CREATURE:FORGOTTEN_BEAST_312:LUNG -"CREATURE:FORGOTTEN_BEAST_312:HEART -"CREATURE:FORGOTTEN_BEAST_312:LIVER - CREATURE:FORGOTTEN_BEAST_312:GUT -$CREATURE:FORGOTTEN_BEAST_312:STOMACH -$CREATURE:FORGOTTEN_BEAST_312:GIZZARD -%CREATURE:FORGOTTEN_BEAST_312:PANCREAS -#CREATURE:FORGOTTEN_BEAST_312:SPLEEN -#CREATURE:FORGOTTEN_BEAST_312:KIDNEY -#CREATURE:FORGOTTEN_BEAST_314:MUSCLE - CREATURE:FORGOTTEN_BEAST_314:EYE -"CREATURE:FORGOTTEN_BEAST_314:BRAIN -!CREATURE:FORGOTTEN_BEAST_314:LUNG -"CREATURE:FORGOTTEN_BEAST_314:HEART -"CREATURE:FORGOTTEN_BEAST_314:LIVER - CREATURE:FORGOTTEN_BEAST_314:GUT -$CREATURE:FORGOTTEN_BEAST_314:STOMACH -$CREATURE:FORGOTTEN_BEAST_314:GIZZARD -%CREATURE:FORGOTTEN_BEAST_314:PANCREAS -#CREATURE:FORGOTTEN_BEAST_314:SPLEEN -#CREATURE:FORGOTTEN_BEAST_314:KIDNEY -#CREATURE:FORGOTTEN_BEAST_316:MUSCLE - CREATURE:FORGOTTEN_BEAST_316:EYE -"CREATURE:FORGOTTEN_BEAST_316:BRAIN -!CREATURE:FORGOTTEN_BEAST_316:LUNG -"CREATURE:FORGOTTEN_BEAST_316:HEART -"CREATURE:FORGOTTEN_BEAST_316:LIVER - CREATURE:FORGOTTEN_BEAST_316:GUT -$CREATURE:FORGOTTEN_BEAST_316:STOMACH -$CREATURE:FORGOTTEN_BEAST_316:GIZZARD -%CREATURE:FORGOTTEN_BEAST_316:PANCREAS -#CREATURE:FORGOTTEN_BEAST_316:SPLEEN -#CREATURE:FORGOTTEN_BEAST_316:KIDNEY -#CREATURE:FORGOTTEN_BEAST_317:MUSCLE - CREATURE:FORGOTTEN_BEAST_317:EYE -"CREATURE:FORGOTTEN_BEAST_317:BRAIN -!CREATURE:FORGOTTEN_BEAST_317:LUNG -"CREATURE:FORGOTTEN_BEAST_317:HEART -"CREATURE:FORGOTTEN_BEAST_317:LIVER - CREATURE:FORGOTTEN_BEAST_317:GUT -$CREATURE:FORGOTTEN_BEAST_317:STOMACH -$CREATURE:FORGOTTEN_BEAST_317:GIZZARD -%CREATURE:FORGOTTEN_BEAST_317:PANCREAS -#CREATURE:FORGOTTEN_BEAST_317:SPLEEN -#CREATURE:FORGOTTEN_BEAST_317:KIDNEY -#CREATURE:FORGOTTEN_BEAST_318:MUSCLE - CREATURE:FORGOTTEN_BEAST_318:EYE -"CREATURE:FORGOTTEN_BEAST_318:BRAIN -!CREATURE:FORGOTTEN_BEAST_318:LUNG -"CREATURE:FORGOTTEN_BEAST_318:HEART -"CREATURE:FORGOTTEN_BEAST_318:LIVER - CREATURE:FORGOTTEN_BEAST_318:GUT -$CREATURE:FORGOTTEN_BEAST_318:STOMACH -$CREATURE:FORGOTTEN_BEAST_318:GIZZARD -%CREATURE:FORGOTTEN_BEAST_318:PANCREAS -#CREATURE:FORGOTTEN_BEAST_318:SPLEEN -#CREATURE:FORGOTTEN_BEAST_318:KIDNEY -#CREATURE:FORGOTTEN_BEAST_320:MUSCLE - CREATURE:FORGOTTEN_BEAST_320:EYE -"CREATURE:FORGOTTEN_BEAST_320:BRAIN -!CREATURE:FORGOTTEN_BEAST_320:LUNG -"CREATURE:FORGOTTEN_BEAST_320:HEART -"CREATURE:FORGOTTEN_BEAST_320:LIVER - CREATURE:FORGOTTEN_BEAST_320:GUT -$CREATURE:FORGOTTEN_BEAST_320:STOMACH -$CREATURE:FORGOTTEN_BEAST_320:GIZZARD -%CREATURE:FORGOTTEN_BEAST_320:PANCREAS -#CREATURE:FORGOTTEN_BEAST_320:SPLEEN -#CREATURE:FORGOTTEN_BEAST_320:KIDNEY -#CREATURE:FORGOTTEN_BEAST_321:MUSCLE - CREATURE:FORGOTTEN_BEAST_321:EYE -"CREATURE:FORGOTTEN_BEAST_321:BRAIN -!CREATURE:FORGOTTEN_BEAST_321:LUNG -"CREATURE:FORGOTTEN_BEAST_321:HEART -"CREATURE:FORGOTTEN_BEAST_321:LIVER - CREATURE:FORGOTTEN_BEAST_321:GUT -$CREATURE:FORGOTTEN_BEAST_321:STOMACH -$CREATURE:FORGOTTEN_BEAST_321:GIZZARD -%CREATURE:FORGOTTEN_BEAST_321:PANCREAS -#CREATURE:FORGOTTEN_BEAST_321:SPLEEN -#CREATURE:FORGOTTEN_BEAST_321:KIDNEY -#CREATURE:FORGOTTEN_BEAST_322:MUSCLE - CREATURE:FORGOTTEN_BEAST_322:EYE -"CREATURE:FORGOTTEN_BEAST_322:BRAIN -!CREATURE:FORGOTTEN_BEAST_322:LUNG -"CREATURE:FORGOTTEN_BEAST_322:HEART -"CREATURE:FORGOTTEN_BEAST_322:LIVER - CREATURE:FORGOTTEN_BEAST_322:GUT -$CREATURE:FORGOTTEN_BEAST_322:STOMACH -$CREATURE:FORGOTTEN_BEAST_322:GIZZARD -%CREATURE:FORGOTTEN_BEAST_322:PANCREAS -#CREATURE:FORGOTTEN_BEAST_322:SPLEEN -#CREATURE:FORGOTTEN_BEAST_322:KIDNEY -#CREATURE:FORGOTTEN_BEAST_323:MUSCLE - CREATURE:FORGOTTEN_BEAST_323:EYE -"CREATURE:FORGOTTEN_BEAST_323:BRAIN -!CREATURE:FORGOTTEN_BEAST_323:LUNG -"CREATURE:FORGOTTEN_BEAST_323:HEART -"CREATURE:FORGOTTEN_BEAST_323:LIVER - CREATURE:FORGOTTEN_BEAST_323:GUT -$CREATURE:FORGOTTEN_BEAST_323:STOMACH -$CREATURE:FORGOTTEN_BEAST_323:GIZZARD -%CREATURE:FORGOTTEN_BEAST_323:PANCREAS -#CREATURE:FORGOTTEN_BEAST_323:SPLEEN -#CREATURE:FORGOTTEN_BEAST_323:KIDNEY -#CREATURE:FORGOTTEN_BEAST_324:MUSCLE - CREATURE:FORGOTTEN_BEAST_324:EYE -"CREATURE:FORGOTTEN_BEAST_324:BRAIN -!CREATURE:FORGOTTEN_BEAST_324:LUNG -"CREATURE:FORGOTTEN_BEAST_324:HEART -"CREATURE:FORGOTTEN_BEAST_324:LIVER - CREATURE:FORGOTTEN_BEAST_324:GUT -$CREATURE:FORGOTTEN_BEAST_324:STOMACH -$CREATURE:FORGOTTEN_BEAST_324:GIZZARD -%CREATURE:FORGOTTEN_BEAST_324:PANCREAS -#CREATURE:FORGOTTEN_BEAST_324:SPLEEN -#CREATURE:FORGOTTEN_BEAST_324:KIDNEY -#CREATURE:FORGOTTEN_BEAST_325:MUSCLE - CREATURE:FORGOTTEN_BEAST_325:EYE -"CREATURE:FORGOTTEN_BEAST_325:BRAIN -!CREATURE:FORGOTTEN_BEAST_325:LUNG -"CREATURE:FORGOTTEN_BEAST_325:HEART -"CREATURE:FORGOTTEN_BEAST_325:LIVER - CREATURE:FORGOTTEN_BEAST_325:GUT -$CREATURE:FORGOTTEN_BEAST_325:STOMACH -$CREATURE:FORGOTTEN_BEAST_325:GIZZARD -%CREATURE:FORGOTTEN_BEAST_325:PANCREAS -#CREATURE:FORGOTTEN_BEAST_325:SPLEEN -#CREATURE:FORGOTTEN_BEAST_325:KIDNEY -#CREATURE:FORGOTTEN_BEAST_326:MUSCLE - CREATURE:FORGOTTEN_BEAST_326:EYE -"CREATURE:FORGOTTEN_BEAST_326:BRAIN -!CREATURE:FORGOTTEN_BEAST_326:LUNG -"CREATURE:FORGOTTEN_BEAST_326:HEART -"CREATURE:FORGOTTEN_BEAST_326:LIVER - CREATURE:FORGOTTEN_BEAST_326:GUT -$CREATURE:FORGOTTEN_BEAST_326:STOMACH -$CREATURE:FORGOTTEN_BEAST_326:GIZZARD -%CREATURE:FORGOTTEN_BEAST_326:PANCREAS -#CREATURE:FORGOTTEN_BEAST_326:SPLEEN -#CREATURE:FORGOTTEN_BEAST_326:KIDNEY -#CREATURE:FORGOTTEN_BEAST_327:MUSCLE - CREATURE:FORGOTTEN_BEAST_327:EYE -"CREATURE:FORGOTTEN_BEAST_327:BRAIN -!CREATURE:FORGOTTEN_BEAST_327:LUNG -"CREATURE:FORGOTTEN_BEAST_327:HEART -"CREATURE:FORGOTTEN_BEAST_327:LIVER - CREATURE:FORGOTTEN_BEAST_327:GUT -$CREATURE:FORGOTTEN_BEAST_327:STOMACH -$CREATURE:FORGOTTEN_BEAST_327:GIZZARD -%CREATURE:FORGOTTEN_BEAST_327:PANCREAS -#CREATURE:FORGOTTEN_BEAST_327:SPLEEN -#CREATURE:FORGOTTEN_BEAST_327:KIDNEY -#CREATURE:FORGOTTEN_BEAST_328:MUSCLE - CREATURE:FORGOTTEN_BEAST_328:EYE -"CREATURE:FORGOTTEN_BEAST_328:BRAIN -!CREATURE:FORGOTTEN_BEAST_328:LUNG -"CREATURE:FORGOTTEN_BEAST_328:HEART -"CREATURE:FORGOTTEN_BEAST_328:LIVER - CREATURE:FORGOTTEN_BEAST_328:GUT -$CREATURE:FORGOTTEN_BEAST_328:STOMACH -$CREATURE:FORGOTTEN_BEAST_328:GIZZARD -%CREATURE:FORGOTTEN_BEAST_328:PANCREAS -#CREATURE:FORGOTTEN_BEAST_328:SPLEEN -#CREATURE:FORGOTTEN_BEAST_328:KIDNEY -#CREATURE:FORGOTTEN_BEAST_329:MUSCLE - CREATURE:FORGOTTEN_BEAST_329:EYE -"CREATURE:FORGOTTEN_BEAST_329:BRAIN -!CREATURE:FORGOTTEN_BEAST_329:LUNG -"CREATURE:FORGOTTEN_BEAST_329:HEART -"CREATURE:FORGOTTEN_BEAST_329:LIVER - CREATURE:FORGOTTEN_BEAST_329:GUT -$CREATURE:FORGOTTEN_BEAST_329:STOMACH -$CREATURE:FORGOTTEN_BEAST_329:GIZZARD -%CREATURE:FORGOTTEN_BEAST_329:PANCREAS -#CREATURE:FORGOTTEN_BEAST_329:SPLEEN -#CREATURE:FORGOTTEN_BEAST_329:KIDNEY -#CREATURE:FORGOTTEN_BEAST_330:MUSCLE - CREATURE:FORGOTTEN_BEAST_330:EYE -"CREATURE:FORGOTTEN_BEAST_330:BRAIN -!CREATURE:FORGOTTEN_BEAST_330:LUNG -"CREATURE:FORGOTTEN_BEAST_330:HEART -"CREATURE:FORGOTTEN_BEAST_330:LIVER - CREATURE:FORGOTTEN_BEAST_330:GUT -$CREATURE:FORGOTTEN_BEAST_330:STOMACH -$CREATURE:FORGOTTEN_BEAST_330:GIZZARD -%CREATURE:FORGOTTEN_BEAST_330:PANCREAS -#CREATURE:FORGOTTEN_BEAST_330:SPLEEN -#CREATURE:FORGOTTEN_BEAST_330:KIDNEY -#CREATURE:FORGOTTEN_BEAST_332:MUSCLE - CREATURE:FORGOTTEN_BEAST_332:EYE -"CREATURE:FORGOTTEN_BEAST_332:BRAIN -!CREATURE:FORGOTTEN_BEAST_332:LUNG -"CREATURE:FORGOTTEN_BEAST_332:HEART -"CREATURE:FORGOTTEN_BEAST_332:LIVER - CREATURE:FORGOTTEN_BEAST_332:GUT -$CREATURE:FORGOTTEN_BEAST_332:STOMACH -$CREATURE:FORGOTTEN_BEAST_332:GIZZARD -%CREATURE:FORGOTTEN_BEAST_332:PANCREAS -#CREATURE:FORGOTTEN_BEAST_332:SPLEEN -#CREATURE:FORGOTTEN_BEAST_332:KIDNEY -#CREATURE:FORGOTTEN_BEAST_333:MUSCLE - CREATURE:FORGOTTEN_BEAST_333:EYE -"CREATURE:FORGOTTEN_BEAST_333:BRAIN -!CREATURE:FORGOTTEN_BEAST_333:LUNG -"CREATURE:FORGOTTEN_BEAST_333:HEART -"CREATURE:FORGOTTEN_BEAST_333:LIVER - CREATURE:FORGOTTEN_BEAST_333:GUT -$CREATURE:FORGOTTEN_BEAST_333:STOMACH -$CREATURE:FORGOTTEN_BEAST_333:GIZZARD -%CREATURE:FORGOTTEN_BEAST_333:PANCREAS -#CREATURE:FORGOTTEN_BEAST_333:SPLEEN -#CREATURE:FORGOTTEN_BEAST_333:KIDNEY -#CREATURE:FORGOTTEN_BEAST_335:MUSCLE - CREATURE:FORGOTTEN_BEAST_335:EYE -"CREATURE:FORGOTTEN_BEAST_335:BRAIN -!CREATURE:FORGOTTEN_BEAST_335:LUNG -"CREATURE:FORGOTTEN_BEAST_335:HEART -"CREATURE:FORGOTTEN_BEAST_335:LIVER - CREATURE:FORGOTTEN_BEAST_335:GUT -$CREATURE:FORGOTTEN_BEAST_335:STOMACH -$CREATURE:FORGOTTEN_BEAST_335:GIZZARD -%CREATURE:FORGOTTEN_BEAST_335:PANCREAS -#CREATURE:FORGOTTEN_BEAST_335:SPLEEN -#CREATURE:FORGOTTEN_BEAST_335:KIDNEY -#CREATURE:FORGOTTEN_BEAST_336:MUSCLE - CREATURE:FORGOTTEN_BEAST_336:EYE -"CREATURE:FORGOTTEN_BEAST_336:BRAIN -!CREATURE:FORGOTTEN_BEAST_336:LUNG -"CREATURE:FORGOTTEN_BEAST_336:HEART -"CREATURE:FORGOTTEN_BEAST_336:LIVER - CREATURE:FORGOTTEN_BEAST_336:GUT -$CREATURE:FORGOTTEN_BEAST_336:STOMACH -$CREATURE:FORGOTTEN_BEAST_336:GIZZARD -%CREATURE:FORGOTTEN_BEAST_336:PANCREAS -#CREATURE:FORGOTTEN_BEAST_336:SPLEEN -#CREATURE:FORGOTTEN_BEAST_336:KIDNEY -#CREATURE:FORGOTTEN_BEAST_337:MUSCLE - CREATURE:FORGOTTEN_BEAST_337:EYE -"CREATURE:FORGOTTEN_BEAST_337:BRAIN -!CREATURE:FORGOTTEN_BEAST_337:LUNG -"CREATURE:FORGOTTEN_BEAST_337:HEART -"CREATURE:FORGOTTEN_BEAST_337:LIVER - CREATURE:FORGOTTEN_BEAST_337:GUT -$CREATURE:FORGOTTEN_BEAST_337:STOMACH -$CREATURE:FORGOTTEN_BEAST_337:GIZZARD -%CREATURE:FORGOTTEN_BEAST_337:PANCREAS -#CREATURE:FORGOTTEN_BEAST_337:SPLEEN -#CREATURE:FORGOTTEN_BEAST_337:KIDNEY -#CREATURE:FORGOTTEN_BEAST_338:MUSCLE - CREATURE:FORGOTTEN_BEAST_338:EYE -"CREATURE:FORGOTTEN_BEAST_338:BRAIN -!CREATURE:FORGOTTEN_BEAST_338:LUNG -"CREATURE:FORGOTTEN_BEAST_338:HEART -"CREATURE:FORGOTTEN_BEAST_338:LIVER - CREATURE:FORGOTTEN_BEAST_338:GUT -$CREATURE:FORGOTTEN_BEAST_338:STOMACH -$CREATURE:FORGOTTEN_BEAST_338:GIZZARD -%CREATURE:FORGOTTEN_BEAST_338:PANCREAS -#CREATURE:FORGOTTEN_BEAST_338:SPLEEN -#CREATURE:FORGOTTEN_BEAST_338:KIDNEY -#CREATURE:FORGOTTEN_BEAST_339:MUSCLE - CREATURE:FORGOTTEN_BEAST_339:EYE -"CREATURE:FORGOTTEN_BEAST_339:BRAIN -!CREATURE:FORGOTTEN_BEAST_339:LUNG -"CREATURE:FORGOTTEN_BEAST_339:HEART -"CREATURE:FORGOTTEN_BEAST_339:LIVER - CREATURE:FORGOTTEN_BEAST_339:GUT -$CREATURE:FORGOTTEN_BEAST_339:STOMACH -$CREATURE:FORGOTTEN_BEAST_339:GIZZARD -%CREATURE:FORGOTTEN_BEAST_339:PANCREAS -#CREATURE:FORGOTTEN_BEAST_339:SPLEEN -#CREATURE:FORGOTTEN_BEAST_339:KIDNEY -#CREATURE:FORGOTTEN_BEAST_341:MUSCLE - CREATURE:FORGOTTEN_BEAST_341:EYE -"CREATURE:FORGOTTEN_BEAST_341:BRAIN -!CREATURE:FORGOTTEN_BEAST_341:LUNG -"CREATURE:FORGOTTEN_BEAST_341:HEART -"CREATURE:FORGOTTEN_BEAST_341:LIVER - CREATURE:FORGOTTEN_BEAST_341:GUT -$CREATURE:FORGOTTEN_BEAST_341:STOMACH -$CREATURE:FORGOTTEN_BEAST_341:GIZZARD -%CREATURE:FORGOTTEN_BEAST_341:PANCREAS -#CREATURE:FORGOTTEN_BEAST_341:SPLEEN -#CREATURE:FORGOTTEN_BEAST_341:KIDNEY -#CREATURE:FORGOTTEN_BEAST_342:MUSCLE - CREATURE:FORGOTTEN_BEAST_342:EYE -"CREATURE:FORGOTTEN_BEAST_342:BRAIN -!CREATURE:FORGOTTEN_BEAST_342:LUNG -"CREATURE:FORGOTTEN_BEAST_342:HEART -"CREATURE:FORGOTTEN_BEAST_342:LIVER - CREATURE:FORGOTTEN_BEAST_342:GUT -$CREATURE:FORGOTTEN_BEAST_342:STOMACH -$CREATURE:FORGOTTEN_BEAST_342:GIZZARD -%CREATURE:FORGOTTEN_BEAST_342:PANCREAS -#CREATURE:FORGOTTEN_BEAST_342:SPLEEN -#CREATURE:FORGOTTEN_BEAST_342:KIDNEY -#CREATURE:FORGOTTEN_BEAST_343:MUSCLE - CREATURE:FORGOTTEN_BEAST_343:EYE -"CREATURE:FORGOTTEN_BEAST_343:BRAIN -!CREATURE:FORGOTTEN_BEAST_343:LUNG -"CREATURE:FORGOTTEN_BEAST_343:HEART -"CREATURE:FORGOTTEN_BEAST_343:LIVER - CREATURE:FORGOTTEN_BEAST_343:GUT -$CREATURE:FORGOTTEN_BEAST_343:STOMACH -$CREATURE:FORGOTTEN_BEAST_343:GIZZARD -%CREATURE:FORGOTTEN_BEAST_343:PANCREAS -#CREATURE:FORGOTTEN_BEAST_343:SPLEEN -#CREATURE:FORGOTTEN_BEAST_343:KIDNEY -#CREATURE:FORGOTTEN_BEAST_344:MUSCLE - CREATURE:FORGOTTEN_BEAST_344:EYE -"CREATURE:FORGOTTEN_BEAST_344:BRAIN -!CREATURE:FORGOTTEN_BEAST_344:LUNG -"CREATURE:FORGOTTEN_BEAST_344:HEART -"CREATURE:FORGOTTEN_BEAST_344:LIVER - CREATURE:FORGOTTEN_BEAST_344:GUT -$CREATURE:FORGOTTEN_BEAST_344:STOMACH -$CREATURE:FORGOTTEN_BEAST_344:GIZZARD -%CREATURE:FORGOTTEN_BEAST_344:PANCREAS -#CREATURE:FORGOTTEN_BEAST_344:SPLEEN -#CREATURE:FORGOTTEN_BEAST_344:KIDNEY -#CREATURE:FORGOTTEN_BEAST_347:MUSCLE - CREATURE:FORGOTTEN_BEAST_347:EYE -"CREATURE:FORGOTTEN_BEAST_347:BRAIN -!CREATURE:FORGOTTEN_BEAST_347:LUNG -"CREATURE:FORGOTTEN_BEAST_347:HEART -"CREATURE:FORGOTTEN_BEAST_347:LIVER - CREATURE:FORGOTTEN_BEAST_347:GUT -$CREATURE:FORGOTTEN_BEAST_347:STOMACH -$CREATURE:FORGOTTEN_BEAST_347:GIZZARD -%CREATURE:FORGOTTEN_BEAST_347:PANCREAS -#CREATURE:FORGOTTEN_BEAST_347:SPLEEN -#CREATURE:FORGOTTEN_BEAST_347:KIDNEY -#CREATURE:FORGOTTEN_BEAST_348:MUSCLE - CREATURE:FORGOTTEN_BEAST_348:EYE -"CREATURE:FORGOTTEN_BEAST_348:BRAIN -!CREATURE:FORGOTTEN_BEAST_348:LUNG -"CREATURE:FORGOTTEN_BEAST_348:HEART -"CREATURE:FORGOTTEN_BEAST_348:LIVER - CREATURE:FORGOTTEN_BEAST_348:GUT -$CREATURE:FORGOTTEN_BEAST_348:STOMACH -$CREATURE:FORGOTTEN_BEAST_348:GIZZARD -%CREATURE:FORGOTTEN_BEAST_348:PANCREAS -#CREATURE:FORGOTTEN_BEAST_348:SPLEEN -#CREATURE:FORGOTTEN_BEAST_348:KIDNEY -#CREATURE:FORGOTTEN_BEAST_349:MUSCLE - CREATURE:FORGOTTEN_BEAST_349:EYE -"CREATURE:FORGOTTEN_BEAST_349:BRAIN -!CREATURE:FORGOTTEN_BEAST_349:LUNG -"CREATURE:FORGOTTEN_BEAST_349:HEART -"CREATURE:FORGOTTEN_BEAST_349:LIVER - CREATURE:FORGOTTEN_BEAST_349:GUT -$CREATURE:FORGOTTEN_BEAST_349:STOMACH -$CREATURE:FORGOTTEN_BEAST_349:GIZZARD -%CREATURE:FORGOTTEN_BEAST_349:PANCREAS -#CREATURE:FORGOTTEN_BEAST_349:SPLEEN -#CREATURE:FORGOTTEN_BEAST_349:KIDNEY -#CREATURE:FORGOTTEN_BEAST_351:MUSCLE - CREATURE:FORGOTTEN_BEAST_351:EYE -"CREATURE:FORGOTTEN_BEAST_351:BRAIN -!CREATURE:FORGOTTEN_BEAST_351:LUNG -"CREATURE:FORGOTTEN_BEAST_351:HEART -"CREATURE:FORGOTTEN_BEAST_351:LIVER - CREATURE:FORGOTTEN_BEAST_351:GUT -$CREATURE:FORGOTTEN_BEAST_351:STOMACH -$CREATURE:FORGOTTEN_BEAST_351:GIZZARD -%CREATURE:FORGOTTEN_BEAST_351:PANCREAS -#CREATURE:FORGOTTEN_BEAST_351:SPLEEN -#CREATURE:FORGOTTEN_BEAST_351:KIDNEY -#CREATURE:FORGOTTEN_BEAST_352:MUSCLE - CREATURE:FORGOTTEN_BEAST_352:EYE -"CREATURE:FORGOTTEN_BEAST_352:BRAIN -!CREATURE:FORGOTTEN_BEAST_352:LUNG -"CREATURE:FORGOTTEN_BEAST_352:HEART -"CREATURE:FORGOTTEN_BEAST_352:LIVER - CREATURE:FORGOTTEN_BEAST_352:GUT -$CREATURE:FORGOTTEN_BEAST_352:STOMACH -$CREATURE:FORGOTTEN_BEAST_352:GIZZARD -%CREATURE:FORGOTTEN_BEAST_352:PANCREAS -#CREATURE:FORGOTTEN_BEAST_352:SPLEEN -#CREATURE:FORGOTTEN_BEAST_352:KIDNEY -#CREATURE:FORGOTTEN_BEAST_353:MUSCLE - CREATURE:FORGOTTEN_BEAST_353:EYE -"CREATURE:FORGOTTEN_BEAST_353:BRAIN -!CREATURE:FORGOTTEN_BEAST_353:LUNG -"CREATURE:FORGOTTEN_BEAST_353:HEART -"CREATURE:FORGOTTEN_BEAST_353:LIVER - CREATURE:FORGOTTEN_BEAST_353:GUT -$CREATURE:FORGOTTEN_BEAST_353:STOMACH -$CREATURE:FORGOTTEN_BEAST_353:GIZZARD -%CREATURE:FORGOTTEN_BEAST_353:PANCREAS -#CREATURE:FORGOTTEN_BEAST_353:SPLEEN -#CREATURE:FORGOTTEN_BEAST_353:KIDNEY -#CREATURE:FORGOTTEN_BEAST_354:MUSCLE - CREATURE:FORGOTTEN_BEAST_354:EYE -"CREATURE:FORGOTTEN_BEAST_354:BRAIN -!CREATURE:FORGOTTEN_BEAST_354:LUNG -"CREATURE:FORGOTTEN_BEAST_354:HEART -"CREATURE:FORGOTTEN_BEAST_354:LIVER - CREATURE:FORGOTTEN_BEAST_354:GUT -$CREATURE:FORGOTTEN_BEAST_354:STOMACH -$CREATURE:FORGOTTEN_BEAST_354:GIZZARD -%CREATURE:FORGOTTEN_BEAST_354:PANCREAS -#CREATURE:FORGOTTEN_BEAST_354:SPLEEN -#CREATURE:FORGOTTEN_BEAST_354:KIDNEY -#CREATURE:FORGOTTEN_BEAST_355:MUSCLE - CREATURE:FORGOTTEN_BEAST_355:EYE -"CREATURE:FORGOTTEN_BEAST_355:BRAIN -!CREATURE:FORGOTTEN_BEAST_355:LUNG -"CREATURE:FORGOTTEN_BEAST_355:HEART -"CREATURE:FORGOTTEN_BEAST_355:LIVER - CREATURE:FORGOTTEN_BEAST_355:GUT -$CREATURE:FORGOTTEN_BEAST_355:STOMACH -$CREATURE:FORGOTTEN_BEAST_355:GIZZARD -%CREATURE:FORGOTTEN_BEAST_355:PANCREAS -#CREATURE:FORGOTTEN_BEAST_355:SPLEEN -#CREATURE:FORGOTTEN_BEAST_355:KIDNEY -#CREATURE:FORGOTTEN_BEAST_356:MUSCLE - CREATURE:FORGOTTEN_BEAST_356:EYE -"CREATURE:FORGOTTEN_BEAST_356:BRAIN -!CREATURE:FORGOTTEN_BEAST_356:LUNG -"CREATURE:FORGOTTEN_BEAST_356:HEART -"CREATURE:FORGOTTEN_BEAST_356:LIVER - CREATURE:FORGOTTEN_BEAST_356:GUT -$CREATURE:FORGOTTEN_BEAST_356:STOMACH -$CREATURE:FORGOTTEN_BEAST_356:GIZZARD -%CREATURE:FORGOTTEN_BEAST_356:PANCREAS -#CREATURE:FORGOTTEN_BEAST_356:SPLEEN -#CREATURE:FORGOTTEN_BEAST_356:KIDNEY -#CREATURE:FORGOTTEN_BEAST_357:MUSCLE - CREATURE:FORGOTTEN_BEAST_357:EYE -"CREATURE:FORGOTTEN_BEAST_357:BRAIN -!CREATURE:FORGOTTEN_BEAST_357:LUNG -"CREATURE:FORGOTTEN_BEAST_357:HEART -"CREATURE:FORGOTTEN_BEAST_357:LIVER - CREATURE:FORGOTTEN_BEAST_357:GUT -$CREATURE:FORGOTTEN_BEAST_357:STOMACH -$CREATURE:FORGOTTEN_BEAST_357:GIZZARD -%CREATURE:FORGOTTEN_BEAST_357:PANCREAS -#CREATURE:FORGOTTEN_BEAST_357:SPLEEN -#CREATURE:FORGOTTEN_BEAST_357:KIDNEY -#CREATURE:FORGOTTEN_BEAST_358:MUSCLE - CREATURE:FORGOTTEN_BEAST_358:EYE -"CREATURE:FORGOTTEN_BEAST_358:BRAIN -!CREATURE:FORGOTTEN_BEAST_358:LUNG -"CREATURE:FORGOTTEN_BEAST_358:HEART -"CREATURE:FORGOTTEN_BEAST_358:LIVER - CREATURE:FORGOTTEN_BEAST_358:GUT -$CREATURE:FORGOTTEN_BEAST_358:STOMACH -$CREATURE:FORGOTTEN_BEAST_358:GIZZARD -%CREATURE:FORGOTTEN_BEAST_358:PANCREAS -#CREATURE:FORGOTTEN_BEAST_358:SPLEEN -#CREATURE:FORGOTTEN_BEAST_358:KIDNEY -#CREATURE:FORGOTTEN_BEAST_359:MUSCLE - CREATURE:FORGOTTEN_BEAST_359:EYE -"CREATURE:FORGOTTEN_BEAST_359:BRAIN -!CREATURE:FORGOTTEN_BEAST_359:LUNG -"CREATURE:FORGOTTEN_BEAST_359:HEART -"CREATURE:FORGOTTEN_BEAST_359:LIVER - CREATURE:FORGOTTEN_BEAST_359:GUT -$CREATURE:FORGOTTEN_BEAST_359:STOMACH -$CREATURE:FORGOTTEN_BEAST_359:GIZZARD -%CREATURE:FORGOTTEN_BEAST_359:PANCREAS -#CREATURE:FORGOTTEN_BEAST_359:SPLEEN -#CREATURE:FORGOTTEN_BEAST_359:KIDNEY -#CREATURE:FORGOTTEN_BEAST_361:MUSCLE - CREATURE:FORGOTTEN_BEAST_361:EYE -"CREATURE:FORGOTTEN_BEAST_361:BRAIN -!CREATURE:FORGOTTEN_BEAST_361:LUNG -"CREATURE:FORGOTTEN_BEAST_361:HEART -"CREATURE:FORGOTTEN_BEAST_361:LIVER - CREATURE:FORGOTTEN_BEAST_361:GUT -$CREATURE:FORGOTTEN_BEAST_361:STOMACH -$CREATURE:FORGOTTEN_BEAST_361:GIZZARD -%CREATURE:FORGOTTEN_BEAST_361:PANCREAS -#CREATURE:FORGOTTEN_BEAST_361:SPLEEN -#CREATURE:FORGOTTEN_BEAST_361:KIDNEY -#CREATURE:FORGOTTEN_BEAST_363:MUSCLE - CREATURE:FORGOTTEN_BEAST_363:EYE -"CREATURE:FORGOTTEN_BEAST_363:BRAIN -!CREATURE:FORGOTTEN_BEAST_363:LUNG -"CREATURE:FORGOTTEN_BEAST_363:HEART -"CREATURE:FORGOTTEN_BEAST_363:LIVER - CREATURE:FORGOTTEN_BEAST_363:GUT -$CREATURE:FORGOTTEN_BEAST_363:STOMACH -$CREATURE:FORGOTTEN_BEAST_363:GIZZARD -%CREATURE:FORGOTTEN_BEAST_363:PANCREAS -#CREATURE:FORGOTTEN_BEAST_363:SPLEEN -#CREATURE:FORGOTTEN_BEAST_363:KIDNEY -#CREATURE:FORGOTTEN_BEAST_364:MUSCLE - CREATURE:FORGOTTEN_BEAST_364:EYE -"CREATURE:FORGOTTEN_BEAST_364:BRAIN -!CREATURE:FORGOTTEN_BEAST_364:LUNG -"CREATURE:FORGOTTEN_BEAST_364:HEART -"CREATURE:FORGOTTEN_BEAST_364:LIVER - CREATURE:FORGOTTEN_BEAST_364:GUT -$CREATURE:FORGOTTEN_BEAST_364:STOMACH -$CREATURE:FORGOTTEN_BEAST_364:GIZZARD -%CREATURE:FORGOTTEN_BEAST_364:PANCREAS -#CREATURE:FORGOTTEN_BEAST_364:SPLEEN -#CREATURE:FORGOTTEN_BEAST_364:KIDNEY -#CREATURE:FORGOTTEN_BEAST_365:MUSCLE - CREATURE:FORGOTTEN_BEAST_365:EYE -"CREATURE:FORGOTTEN_BEAST_365:BRAIN -!CREATURE:FORGOTTEN_BEAST_365:LUNG -"CREATURE:FORGOTTEN_BEAST_365:HEART -"CREATURE:FORGOTTEN_BEAST_365:LIVER - CREATURE:FORGOTTEN_BEAST_365:GUT -$CREATURE:FORGOTTEN_BEAST_365:STOMACH -$CREATURE:FORGOTTEN_BEAST_365:GIZZARD -%CREATURE:FORGOTTEN_BEAST_365:PANCREAS -#CREATURE:FORGOTTEN_BEAST_365:SPLEEN -#CREATURE:FORGOTTEN_BEAST_365:KIDNEY -#CREATURE:FORGOTTEN_BEAST_366:MUSCLE - CREATURE:FORGOTTEN_BEAST_366:EYE -"CREATURE:FORGOTTEN_BEAST_366:BRAIN -!CREATURE:FORGOTTEN_BEAST_366:LUNG -"CREATURE:FORGOTTEN_BEAST_366:HEART -"CREATURE:FORGOTTEN_BEAST_366:LIVER - CREATURE:FORGOTTEN_BEAST_366:GUT -$CREATURE:FORGOTTEN_BEAST_366:STOMACH -$CREATURE:FORGOTTEN_BEAST_366:GIZZARD -%CREATURE:FORGOTTEN_BEAST_366:PANCREAS -#CREATURE:FORGOTTEN_BEAST_366:SPLEEN -#CREATURE:FORGOTTEN_BEAST_366:KIDNEY -#CREATURE:FORGOTTEN_BEAST_367:MUSCLE - CREATURE:FORGOTTEN_BEAST_367:EYE -"CREATURE:FORGOTTEN_BEAST_367:BRAIN -!CREATURE:FORGOTTEN_BEAST_367:LUNG -"CREATURE:FORGOTTEN_BEAST_367:HEART -"CREATURE:FORGOTTEN_BEAST_367:LIVER - CREATURE:FORGOTTEN_BEAST_367:GUT -$CREATURE:FORGOTTEN_BEAST_367:STOMACH -$CREATURE:FORGOTTEN_BEAST_367:GIZZARD -%CREATURE:FORGOTTEN_BEAST_367:PANCREAS -#CREATURE:FORGOTTEN_BEAST_367:SPLEEN -#CREATURE:FORGOTTEN_BEAST_367:KIDNEY -#CREATURE:FORGOTTEN_BEAST_368:MUSCLE - CREATURE:FORGOTTEN_BEAST_368:EYE -"CREATURE:FORGOTTEN_BEAST_368:BRAIN -!CREATURE:FORGOTTEN_BEAST_368:LUNG -"CREATURE:FORGOTTEN_BEAST_368:HEART -"CREATURE:FORGOTTEN_BEAST_368:LIVER - CREATURE:FORGOTTEN_BEAST_368:GUT -$CREATURE:FORGOTTEN_BEAST_368:STOMACH -$CREATURE:FORGOTTEN_BEAST_368:GIZZARD -%CREATURE:FORGOTTEN_BEAST_368:PANCREAS -#CREATURE:FORGOTTEN_BEAST_368:SPLEEN -#CREATURE:FORGOTTEN_BEAST_368:KIDNEY -#CREATURE:FORGOTTEN_BEAST_370:MUSCLE - CREATURE:FORGOTTEN_BEAST_370:EYE -"CREATURE:FORGOTTEN_BEAST_370:BRAIN -!CREATURE:FORGOTTEN_BEAST_370:LUNG -"CREATURE:FORGOTTEN_BEAST_370:HEART -"CREATURE:FORGOTTEN_BEAST_370:LIVER - CREATURE:FORGOTTEN_BEAST_370:GUT -$CREATURE:FORGOTTEN_BEAST_370:STOMACH -$CREATURE:FORGOTTEN_BEAST_370:GIZZARD -%CREATURE:FORGOTTEN_BEAST_370:PANCREAS -#CREATURE:FORGOTTEN_BEAST_370:SPLEEN -#CREATURE:FORGOTTEN_BEAST_370:KIDNEY -#CREATURE:FORGOTTEN_BEAST_372:MUSCLE - CREATURE:FORGOTTEN_BEAST_372:EYE -"CREATURE:FORGOTTEN_BEAST_372:BRAIN -!CREATURE:FORGOTTEN_BEAST_372:LUNG -"CREATURE:FORGOTTEN_BEAST_372:HEART -"CREATURE:FORGOTTEN_BEAST_372:LIVER - CREATURE:FORGOTTEN_BEAST_372:GUT -$CREATURE:FORGOTTEN_BEAST_372:STOMACH -$CREATURE:FORGOTTEN_BEAST_372:GIZZARD -%CREATURE:FORGOTTEN_BEAST_372:PANCREAS -#CREATURE:FORGOTTEN_BEAST_372:SPLEEN -#CREATURE:FORGOTTEN_BEAST_372:KIDNEY -#CREATURE:FORGOTTEN_BEAST_374:MUSCLE - CREATURE:FORGOTTEN_BEAST_374:EYE -"CREATURE:FORGOTTEN_BEAST_374:BRAIN -!CREATURE:FORGOTTEN_BEAST_374:LUNG -"CREATURE:FORGOTTEN_BEAST_374:HEART -"CREATURE:FORGOTTEN_BEAST_374:LIVER - CREATURE:FORGOTTEN_BEAST_374:GUT -$CREATURE:FORGOTTEN_BEAST_374:STOMACH -$CREATURE:FORGOTTEN_BEAST_374:GIZZARD -%CREATURE:FORGOTTEN_BEAST_374:PANCREAS -#CREATURE:FORGOTTEN_BEAST_374:SPLEEN -#CREATURE:FORGOTTEN_BEAST_374:KIDNEY -#CREATURE:FORGOTTEN_BEAST_375:MUSCLE - CREATURE:FORGOTTEN_BEAST_375:EYE -"CREATURE:FORGOTTEN_BEAST_375:BRAIN -!CREATURE:FORGOTTEN_BEAST_375:LUNG -"CREATURE:FORGOTTEN_BEAST_375:HEART -"CREATURE:FORGOTTEN_BEAST_375:LIVER - CREATURE:FORGOTTEN_BEAST_375:GUT -$CREATURE:FORGOTTEN_BEAST_375:STOMACH -$CREATURE:FORGOTTEN_BEAST_375:GIZZARD -%CREATURE:FORGOTTEN_BEAST_375:PANCREAS -#CREATURE:FORGOTTEN_BEAST_375:SPLEEN -#CREATURE:FORGOTTEN_BEAST_375:KIDNEY -#CREATURE:FORGOTTEN_BEAST_377:MUSCLE - CREATURE:FORGOTTEN_BEAST_377:EYE -"CREATURE:FORGOTTEN_BEAST_377:BRAIN -!CREATURE:FORGOTTEN_BEAST_377:LUNG -"CREATURE:FORGOTTEN_BEAST_377:HEART -"CREATURE:FORGOTTEN_BEAST_377:LIVER - CREATURE:FORGOTTEN_BEAST_377:GUT -$CREATURE:FORGOTTEN_BEAST_377:STOMACH -$CREATURE:FORGOTTEN_BEAST_377:GIZZARD -%CREATURE:FORGOTTEN_BEAST_377:PANCREAS -#CREATURE:FORGOTTEN_BEAST_377:SPLEEN -#CREATURE:FORGOTTEN_BEAST_377:KIDNEY -#CREATURE:FORGOTTEN_BEAST_378:MUSCLE - CREATURE:FORGOTTEN_BEAST_378:EYE -"CREATURE:FORGOTTEN_BEAST_378:BRAIN -!CREATURE:FORGOTTEN_BEAST_378:LUNG -"CREATURE:FORGOTTEN_BEAST_378:HEART -"CREATURE:FORGOTTEN_BEAST_378:LIVER - CREATURE:FORGOTTEN_BEAST_378:GUT -$CREATURE:FORGOTTEN_BEAST_378:STOMACH -$CREATURE:FORGOTTEN_BEAST_378:GIZZARD -%CREATURE:FORGOTTEN_BEAST_378:PANCREAS -#CREATURE:FORGOTTEN_BEAST_378:SPLEEN -#CREATURE:FORGOTTEN_BEAST_378:KIDNEY -#CREATURE:FORGOTTEN_BEAST_379:MUSCLE - CREATURE:FORGOTTEN_BEAST_379:EYE -"CREATURE:FORGOTTEN_BEAST_379:BRAIN -!CREATURE:FORGOTTEN_BEAST_379:LUNG -"CREATURE:FORGOTTEN_BEAST_379:HEART -"CREATURE:FORGOTTEN_BEAST_379:LIVER - CREATURE:FORGOTTEN_BEAST_379:GUT -$CREATURE:FORGOTTEN_BEAST_379:STOMACH -$CREATURE:FORGOTTEN_BEAST_379:GIZZARD -%CREATURE:FORGOTTEN_BEAST_379:PANCREAS -#CREATURE:FORGOTTEN_BEAST_379:SPLEEN -#CREATURE:FORGOTTEN_BEAST_379:KIDNEY -#CREATURE:FORGOTTEN_BEAST_380:MUSCLE - CREATURE:FORGOTTEN_BEAST_380:EYE -"CREATURE:FORGOTTEN_BEAST_380:BRAIN -!CREATURE:FORGOTTEN_BEAST_380:LUNG -"CREATURE:FORGOTTEN_BEAST_380:HEART -"CREATURE:FORGOTTEN_BEAST_380:LIVER - CREATURE:FORGOTTEN_BEAST_380:GUT -$CREATURE:FORGOTTEN_BEAST_380:STOMACH -$CREATURE:FORGOTTEN_BEAST_380:GIZZARD -%CREATURE:FORGOTTEN_BEAST_380:PANCREAS -#CREATURE:FORGOTTEN_BEAST_380:SPLEEN -#CREATURE:FORGOTTEN_BEAST_380:KIDNEY -#CREATURE:FORGOTTEN_BEAST_381:MUSCLE - CREATURE:FORGOTTEN_BEAST_381:EYE -"CREATURE:FORGOTTEN_BEAST_381:BRAIN -!CREATURE:FORGOTTEN_BEAST_381:LUNG -"CREATURE:FORGOTTEN_BEAST_381:HEART -"CREATURE:FORGOTTEN_BEAST_381:LIVER - CREATURE:FORGOTTEN_BEAST_381:GUT -$CREATURE:FORGOTTEN_BEAST_381:STOMACH -$CREATURE:FORGOTTEN_BEAST_381:GIZZARD -%CREATURE:FORGOTTEN_BEAST_381:PANCREAS -#CREATURE:FORGOTTEN_BEAST_381:SPLEEN -#CREATURE:FORGOTTEN_BEAST_381:KIDNEY -#CREATURE:FORGOTTEN_BEAST_382:MUSCLE - CREATURE:FORGOTTEN_BEAST_382:EYE -"CREATURE:FORGOTTEN_BEAST_382:BRAIN -!CREATURE:FORGOTTEN_BEAST_382:LUNG -"CREATURE:FORGOTTEN_BEAST_382:HEART -"CREATURE:FORGOTTEN_BEAST_382:LIVER - CREATURE:FORGOTTEN_BEAST_382:GUT -$CREATURE:FORGOTTEN_BEAST_382:STOMACH -$CREATURE:FORGOTTEN_BEAST_382:GIZZARD -%CREATURE:FORGOTTEN_BEAST_382:PANCREAS -#CREATURE:FORGOTTEN_BEAST_382:SPLEEN -#CREATURE:FORGOTTEN_BEAST_382:KIDNEY -#CREATURE:FORGOTTEN_BEAST_383:MUSCLE - CREATURE:FORGOTTEN_BEAST_383:EYE -"CREATURE:FORGOTTEN_BEAST_383:BRAIN -!CREATURE:FORGOTTEN_BEAST_383:LUNG -"CREATURE:FORGOTTEN_BEAST_383:HEART -"CREATURE:FORGOTTEN_BEAST_383:LIVER - CREATURE:FORGOTTEN_BEAST_383:GUT -$CREATURE:FORGOTTEN_BEAST_383:STOMACH -$CREATURE:FORGOTTEN_BEAST_383:GIZZARD -%CREATURE:FORGOTTEN_BEAST_383:PANCREAS -#CREATURE:FORGOTTEN_BEAST_383:SPLEEN -#CREATURE:FORGOTTEN_BEAST_383:KIDNEY -#CREATURE:FORGOTTEN_BEAST_384:MUSCLE - CREATURE:FORGOTTEN_BEAST_384:EYE -"CREATURE:FORGOTTEN_BEAST_384:BRAIN -!CREATURE:FORGOTTEN_BEAST_384:LUNG -"CREATURE:FORGOTTEN_BEAST_384:HEART -"CREATURE:FORGOTTEN_BEAST_384:LIVER - CREATURE:FORGOTTEN_BEAST_384:GUT -$CREATURE:FORGOTTEN_BEAST_384:STOMACH -$CREATURE:FORGOTTEN_BEAST_384:GIZZARD -%CREATURE:FORGOTTEN_BEAST_384:PANCREAS -#CREATURE:FORGOTTEN_BEAST_384:SPLEEN -#CREATURE:FORGOTTEN_BEAST_384:KIDNEY -#CREATURE:FORGOTTEN_BEAST_385:MUSCLE - CREATURE:FORGOTTEN_BEAST_385:EYE -"CREATURE:FORGOTTEN_BEAST_385:BRAIN -!CREATURE:FORGOTTEN_BEAST_385:LUNG -"CREATURE:FORGOTTEN_BEAST_385:HEART -"CREATURE:FORGOTTEN_BEAST_385:LIVER - CREATURE:FORGOTTEN_BEAST_385:GUT -$CREATURE:FORGOTTEN_BEAST_385:STOMACH -$CREATURE:FORGOTTEN_BEAST_385:GIZZARD -%CREATURE:FORGOTTEN_BEAST_385:PANCREAS -#CREATURE:FORGOTTEN_BEAST_385:SPLEEN -#CREATURE:FORGOTTEN_BEAST_385:KIDNEY -#CREATURE:FORGOTTEN_BEAST_386:MUSCLE - CREATURE:FORGOTTEN_BEAST_386:EYE -"CREATURE:FORGOTTEN_BEAST_386:BRAIN -!CREATURE:FORGOTTEN_BEAST_386:LUNG -"CREATURE:FORGOTTEN_BEAST_386:HEART -"CREATURE:FORGOTTEN_BEAST_386:LIVER - CREATURE:FORGOTTEN_BEAST_386:GUT -$CREATURE:FORGOTTEN_BEAST_386:STOMACH -$CREATURE:FORGOTTEN_BEAST_386:GIZZARD -%CREATURE:FORGOTTEN_BEAST_386:PANCREAS -#CREATURE:FORGOTTEN_BEAST_386:SPLEEN -#CREATURE:FORGOTTEN_BEAST_386:KIDNEY -#CREATURE:FORGOTTEN_BEAST_387:MUSCLE - CREATURE:FORGOTTEN_BEAST_387:EYE -"CREATURE:FORGOTTEN_BEAST_387:BRAIN -!CREATURE:FORGOTTEN_BEAST_387:LUNG -"CREATURE:FORGOTTEN_BEAST_387:HEART -"CREATURE:FORGOTTEN_BEAST_387:LIVER - CREATURE:FORGOTTEN_BEAST_387:GUT -$CREATURE:FORGOTTEN_BEAST_387:STOMACH -$CREATURE:FORGOTTEN_BEAST_387:GIZZARD -%CREATURE:FORGOTTEN_BEAST_387:PANCREAS -#CREATURE:FORGOTTEN_BEAST_387:SPLEEN -#CREATURE:FORGOTTEN_BEAST_387:KIDNEY -#CREATURE:FORGOTTEN_BEAST_388:MUSCLE - CREATURE:FORGOTTEN_BEAST_388:EYE -"CREATURE:FORGOTTEN_BEAST_388:BRAIN -!CREATURE:FORGOTTEN_BEAST_388:LUNG -"CREATURE:FORGOTTEN_BEAST_388:HEART -"CREATURE:FORGOTTEN_BEAST_388:LIVER - CREATURE:FORGOTTEN_BEAST_388:GUT -$CREATURE:FORGOTTEN_BEAST_388:STOMACH -$CREATURE:FORGOTTEN_BEAST_388:GIZZARD -%CREATURE:FORGOTTEN_BEAST_388:PANCREAS -#CREATURE:FORGOTTEN_BEAST_388:SPLEEN -#CREATURE:FORGOTTEN_BEAST_388:KIDNEY -#CREATURE:FORGOTTEN_BEAST_389:MUSCLE - CREATURE:FORGOTTEN_BEAST_389:EYE -"CREATURE:FORGOTTEN_BEAST_389:BRAIN -!CREATURE:FORGOTTEN_BEAST_389:LUNG -"CREATURE:FORGOTTEN_BEAST_389:HEART -"CREATURE:FORGOTTEN_BEAST_389:LIVER - CREATURE:FORGOTTEN_BEAST_389:GUT -$CREATURE:FORGOTTEN_BEAST_389:STOMACH -$CREATURE:FORGOTTEN_BEAST_389:GIZZARD -%CREATURE:FORGOTTEN_BEAST_389:PANCREAS -#CREATURE:FORGOTTEN_BEAST_389:SPLEEN -#CREATURE:FORGOTTEN_BEAST_389:KIDNEY -#CREATURE:FORGOTTEN_BEAST_390:MUSCLE - CREATURE:FORGOTTEN_BEAST_390:EYE -"CREATURE:FORGOTTEN_BEAST_390:BRAIN -!CREATURE:FORGOTTEN_BEAST_390:LUNG -"CREATURE:FORGOTTEN_BEAST_390:HEART -"CREATURE:FORGOTTEN_BEAST_390:LIVER - CREATURE:FORGOTTEN_BEAST_390:GUT -$CREATURE:FORGOTTEN_BEAST_390:STOMACH -$CREATURE:FORGOTTEN_BEAST_390:GIZZARD -%CREATURE:FORGOTTEN_BEAST_390:PANCREAS -#CREATURE:FORGOTTEN_BEAST_390:SPLEEN -#CREATURE:FORGOTTEN_BEAST_390:KIDNEY -#CREATURE:FORGOTTEN_BEAST_391:MUSCLE - CREATURE:FORGOTTEN_BEAST_391:EYE -"CREATURE:FORGOTTEN_BEAST_391:BRAIN -!CREATURE:FORGOTTEN_BEAST_391:LUNG -"CREATURE:FORGOTTEN_BEAST_391:HEART -"CREATURE:FORGOTTEN_BEAST_391:LIVER - CREATURE:FORGOTTEN_BEAST_391:GUT -$CREATURE:FORGOTTEN_BEAST_391:STOMACH -$CREATURE:FORGOTTEN_BEAST_391:GIZZARD -%CREATURE:FORGOTTEN_BEAST_391:PANCREAS -#CREATURE:FORGOTTEN_BEAST_391:SPLEEN -#CREATURE:FORGOTTEN_BEAST_391:KIDNEY -#CREATURE:FORGOTTEN_BEAST_392:MUSCLE - CREATURE:FORGOTTEN_BEAST_392:EYE -"CREATURE:FORGOTTEN_BEAST_392:BRAIN -!CREATURE:FORGOTTEN_BEAST_392:LUNG -"CREATURE:FORGOTTEN_BEAST_392:HEART -"CREATURE:FORGOTTEN_BEAST_392:LIVER - CREATURE:FORGOTTEN_BEAST_392:GUT -$CREATURE:FORGOTTEN_BEAST_392:STOMACH -$CREATURE:FORGOTTEN_BEAST_392:GIZZARD -%CREATURE:FORGOTTEN_BEAST_392:PANCREAS -#CREATURE:FORGOTTEN_BEAST_392:SPLEEN -#CREATURE:FORGOTTEN_BEAST_392:KIDNEY -#CREATURE:FORGOTTEN_BEAST_393:MUSCLE - CREATURE:FORGOTTEN_BEAST_393:EYE -"CREATURE:FORGOTTEN_BEAST_393:BRAIN -!CREATURE:FORGOTTEN_BEAST_393:LUNG -"CREATURE:FORGOTTEN_BEAST_393:HEART -"CREATURE:FORGOTTEN_BEAST_393:LIVER - CREATURE:FORGOTTEN_BEAST_393:GUT -$CREATURE:FORGOTTEN_BEAST_393:STOMACH -$CREATURE:FORGOTTEN_BEAST_393:GIZZARD -%CREATURE:FORGOTTEN_BEAST_393:PANCREAS -#CREATURE:FORGOTTEN_BEAST_393:SPLEEN -#CREATURE:FORGOTTEN_BEAST_393:KIDNEY -#CREATURE:FORGOTTEN_BEAST_396:MUSCLE - CREATURE:FORGOTTEN_BEAST_396:EYE -"CREATURE:FORGOTTEN_BEAST_396:BRAIN -!CREATURE:FORGOTTEN_BEAST_396:LUNG -"CREATURE:FORGOTTEN_BEAST_396:HEART -"CREATURE:FORGOTTEN_BEAST_396:LIVER - CREATURE:FORGOTTEN_BEAST_396:GUT -$CREATURE:FORGOTTEN_BEAST_396:STOMACH -$CREATURE:FORGOTTEN_BEAST_396:GIZZARD -%CREATURE:FORGOTTEN_BEAST_396:PANCREAS -#CREATURE:FORGOTTEN_BEAST_396:SPLEEN -#CREATURE:FORGOTTEN_BEAST_396:KIDNEY -#CREATURE:FORGOTTEN_BEAST_397:MUSCLE - CREATURE:FORGOTTEN_BEAST_397:EYE -"CREATURE:FORGOTTEN_BEAST_397:BRAIN -!CREATURE:FORGOTTEN_BEAST_397:LUNG -"CREATURE:FORGOTTEN_BEAST_397:HEART -"CREATURE:FORGOTTEN_BEAST_397:LIVER - CREATURE:FORGOTTEN_BEAST_397:GUT -$CREATURE:FORGOTTEN_BEAST_397:STOMACH -$CREATURE:FORGOTTEN_BEAST_397:GIZZARD -%CREATURE:FORGOTTEN_BEAST_397:PANCREAS -#CREATURE:FORGOTTEN_BEAST_397:SPLEEN -#CREATURE:FORGOTTEN_BEAST_397:KIDNEY -#CREATURE:FORGOTTEN_BEAST_398:MUSCLE - CREATURE:FORGOTTEN_BEAST_398:EYE -"CREATURE:FORGOTTEN_BEAST_398:BRAIN -!CREATURE:FORGOTTEN_BEAST_398:LUNG -"CREATURE:FORGOTTEN_BEAST_398:HEART -"CREATURE:FORGOTTEN_BEAST_398:LIVER - CREATURE:FORGOTTEN_BEAST_398:GUT -$CREATURE:FORGOTTEN_BEAST_398:STOMACH -$CREATURE:FORGOTTEN_BEAST_398:GIZZARD -%CREATURE:FORGOTTEN_BEAST_398:PANCREAS -#CREATURE:FORGOTTEN_BEAST_398:SPLEEN -#CREATURE:FORGOTTEN_BEAST_398:KIDNEY -#CREATURE:FORGOTTEN_BEAST_400:MUSCLE - CREATURE:FORGOTTEN_BEAST_400:EYE -"CREATURE:FORGOTTEN_BEAST_400:BRAIN -!CREATURE:FORGOTTEN_BEAST_400:LUNG -"CREATURE:FORGOTTEN_BEAST_400:HEART -"CREATURE:FORGOTTEN_BEAST_400:LIVER - CREATURE:FORGOTTEN_BEAST_400:GUT -$CREATURE:FORGOTTEN_BEAST_400:STOMACH -$CREATURE:FORGOTTEN_BEAST_400:GIZZARD -%CREATURE:FORGOTTEN_BEAST_400:PANCREAS -#CREATURE:FORGOTTEN_BEAST_400:SPLEEN -#CREATURE:FORGOTTEN_BEAST_400:KIDNEY -#CREATURE:FORGOTTEN_BEAST_403:MUSCLE - CREATURE:FORGOTTEN_BEAST_403:EYE -"CREATURE:FORGOTTEN_BEAST_403:BRAIN -!CREATURE:FORGOTTEN_BEAST_403:LUNG -"CREATURE:FORGOTTEN_BEAST_403:HEART -"CREATURE:FORGOTTEN_BEAST_403:LIVER - CREATURE:FORGOTTEN_BEAST_403:GUT -$CREATURE:FORGOTTEN_BEAST_403:STOMACH -$CREATURE:FORGOTTEN_BEAST_403:GIZZARD -%CREATURE:FORGOTTEN_BEAST_403:PANCREAS -#CREATURE:FORGOTTEN_BEAST_403:SPLEEN -#CREATURE:FORGOTTEN_BEAST_403:KIDNEY -#CREATURE:FORGOTTEN_BEAST_404:MUSCLE - CREATURE:FORGOTTEN_BEAST_404:EYE -"CREATURE:FORGOTTEN_BEAST_404:BRAIN -!CREATURE:FORGOTTEN_BEAST_404:LUNG -"CREATURE:FORGOTTEN_BEAST_404:HEART -"CREATURE:FORGOTTEN_BEAST_404:LIVER - CREATURE:FORGOTTEN_BEAST_404:GUT -$CREATURE:FORGOTTEN_BEAST_404:STOMACH -$CREATURE:FORGOTTEN_BEAST_404:GIZZARD -%CREATURE:FORGOTTEN_BEAST_404:PANCREAS -#CREATURE:FORGOTTEN_BEAST_404:SPLEEN -#CREATURE:FORGOTTEN_BEAST_404:KIDNEY -#CREATURE:FORGOTTEN_BEAST_405:MUSCLE - CREATURE:FORGOTTEN_BEAST_405:EYE -"CREATURE:FORGOTTEN_BEAST_405:BRAIN -!CREATURE:FORGOTTEN_BEAST_405:LUNG -"CREATURE:FORGOTTEN_BEAST_405:HEART -"CREATURE:FORGOTTEN_BEAST_405:LIVER - CREATURE:FORGOTTEN_BEAST_405:GUT -$CREATURE:FORGOTTEN_BEAST_405:STOMACH -$CREATURE:FORGOTTEN_BEAST_405:GIZZARD -%CREATURE:FORGOTTEN_BEAST_405:PANCREAS -#CREATURE:FORGOTTEN_BEAST_405:SPLEEN -#CREATURE:FORGOTTEN_BEAST_405:KIDNEY -#CREATURE:FORGOTTEN_BEAST_406:MUSCLE - CREATURE:FORGOTTEN_BEAST_406:EYE -"CREATURE:FORGOTTEN_BEAST_406:BRAIN -!CREATURE:FORGOTTEN_BEAST_406:LUNG -"CREATURE:FORGOTTEN_BEAST_406:HEART -"CREATURE:FORGOTTEN_BEAST_406:LIVER - CREATURE:FORGOTTEN_BEAST_406:GUT -$CREATURE:FORGOTTEN_BEAST_406:STOMACH -$CREATURE:FORGOTTEN_BEAST_406:GIZZARD -%CREATURE:FORGOTTEN_BEAST_406:PANCREAS -#CREATURE:FORGOTTEN_BEAST_406:SPLEEN -#CREATURE:FORGOTTEN_BEAST_406:KIDNEY -#CREATURE:FORGOTTEN_BEAST_407:MUSCLE - CREATURE:FORGOTTEN_BEAST_407:EYE -"CREATURE:FORGOTTEN_BEAST_407:BRAIN -!CREATURE:FORGOTTEN_BEAST_407:LUNG -"CREATURE:FORGOTTEN_BEAST_407:HEART -"CREATURE:FORGOTTEN_BEAST_407:LIVER - CREATURE:FORGOTTEN_BEAST_407:GUT -$CREATURE:FORGOTTEN_BEAST_407:STOMACH -$CREATURE:FORGOTTEN_BEAST_407:GIZZARD -%CREATURE:FORGOTTEN_BEAST_407:PANCREAS -#CREATURE:FORGOTTEN_BEAST_407:SPLEEN -#CREATURE:FORGOTTEN_BEAST_407:KIDNEY -#CREATURE:FORGOTTEN_BEAST_408:MUSCLE - CREATURE:FORGOTTEN_BEAST_408:EYE -"CREATURE:FORGOTTEN_BEAST_408:BRAIN -!CREATURE:FORGOTTEN_BEAST_408:LUNG -"CREATURE:FORGOTTEN_BEAST_408:HEART -"CREATURE:FORGOTTEN_BEAST_408:LIVER - CREATURE:FORGOTTEN_BEAST_408:GUT -$CREATURE:FORGOTTEN_BEAST_408:STOMACH -$CREATURE:FORGOTTEN_BEAST_408:GIZZARD -%CREATURE:FORGOTTEN_BEAST_408:PANCREAS -#CREATURE:FORGOTTEN_BEAST_408:SPLEEN -#CREATURE:FORGOTTEN_BEAST_408:KIDNEY -#CREATURE:FORGOTTEN_BEAST_409:MUSCLE - CREATURE:FORGOTTEN_BEAST_409:EYE -"CREATURE:FORGOTTEN_BEAST_409:BRAIN -!CREATURE:FORGOTTEN_BEAST_409:LUNG -"CREATURE:FORGOTTEN_BEAST_409:HEART -"CREATURE:FORGOTTEN_BEAST_409:LIVER - CREATURE:FORGOTTEN_BEAST_409:GUT -$CREATURE:FORGOTTEN_BEAST_409:STOMACH -$CREATURE:FORGOTTEN_BEAST_409:GIZZARD -%CREATURE:FORGOTTEN_BEAST_409:PANCREAS -#CREATURE:FORGOTTEN_BEAST_409:SPLEEN -#CREATURE:FORGOTTEN_BEAST_409:KIDNEY -#CREATURE:FORGOTTEN_BEAST_410:MUSCLE - CREATURE:FORGOTTEN_BEAST_410:EYE -"CREATURE:FORGOTTEN_BEAST_410:BRAIN -!CREATURE:FORGOTTEN_BEAST_410:LUNG -"CREATURE:FORGOTTEN_BEAST_410:HEART -"CREATURE:FORGOTTEN_BEAST_410:LIVER - CREATURE:FORGOTTEN_BEAST_410:GUT -$CREATURE:FORGOTTEN_BEAST_410:STOMACH -$CREATURE:FORGOTTEN_BEAST_410:GIZZARD -%CREATURE:FORGOTTEN_BEAST_410:PANCREAS -#CREATURE:FORGOTTEN_BEAST_410:SPLEEN -#CREATURE:FORGOTTEN_BEAST_410:KIDNEY -#CREATURE:FORGOTTEN_BEAST_411:MUSCLE - CREATURE:FORGOTTEN_BEAST_411:EYE -"CREATURE:FORGOTTEN_BEAST_411:BRAIN -!CREATURE:FORGOTTEN_BEAST_411:LUNG -"CREATURE:FORGOTTEN_BEAST_411:HEART -"CREATURE:FORGOTTEN_BEAST_411:LIVER - CREATURE:FORGOTTEN_BEAST_411:GUT -$CREATURE:FORGOTTEN_BEAST_411:STOMACH -$CREATURE:FORGOTTEN_BEAST_411:GIZZARD -%CREATURE:FORGOTTEN_BEAST_411:PANCREAS -#CREATURE:FORGOTTEN_BEAST_411:SPLEEN -#CREATURE:FORGOTTEN_BEAST_411:KIDNEY -#CREATURE:FORGOTTEN_BEAST_412:MUSCLE - CREATURE:FORGOTTEN_BEAST_412:EYE -"CREATURE:FORGOTTEN_BEAST_412:BRAIN -!CREATURE:FORGOTTEN_BEAST_412:LUNG -"CREATURE:FORGOTTEN_BEAST_412:HEART -"CREATURE:FORGOTTEN_BEAST_412:LIVER - CREATURE:FORGOTTEN_BEAST_412:GUT -$CREATURE:FORGOTTEN_BEAST_412:STOMACH -$CREATURE:FORGOTTEN_BEAST_412:GIZZARD -%CREATURE:FORGOTTEN_BEAST_412:PANCREAS -#CREATURE:FORGOTTEN_BEAST_412:SPLEEN -#CREATURE:FORGOTTEN_BEAST_412:KIDNEY -#CREATURE:FORGOTTEN_BEAST_413:MUSCLE - CREATURE:FORGOTTEN_BEAST_413:EYE -"CREATURE:FORGOTTEN_BEAST_413:BRAIN -!CREATURE:FORGOTTEN_BEAST_413:LUNG -"CREATURE:FORGOTTEN_BEAST_413:HEART -"CREATURE:FORGOTTEN_BEAST_413:LIVER - CREATURE:FORGOTTEN_BEAST_413:GUT -$CREATURE:FORGOTTEN_BEAST_413:STOMACH -$CREATURE:FORGOTTEN_BEAST_413:GIZZARD -%CREATURE:FORGOTTEN_BEAST_413:PANCREAS -#CREATURE:FORGOTTEN_BEAST_413:SPLEEN -#CREATURE:FORGOTTEN_BEAST_413:KIDNEY -#CREATURE:FORGOTTEN_BEAST_414:MUSCLE - CREATURE:FORGOTTEN_BEAST_414:EYE -"CREATURE:FORGOTTEN_BEAST_414:BRAIN -!CREATURE:FORGOTTEN_BEAST_414:LUNG -"CREATURE:FORGOTTEN_BEAST_414:HEART -"CREATURE:FORGOTTEN_BEAST_414:LIVER - CREATURE:FORGOTTEN_BEAST_414:GUT -$CREATURE:FORGOTTEN_BEAST_414:STOMACH -$CREATURE:FORGOTTEN_BEAST_414:GIZZARD -%CREATURE:FORGOTTEN_BEAST_414:PANCREAS -#CREATURE:FORGOTTEN_BEAST_414:SPLEEN -#CREATURE:FORGOTTEN_BEAST_414:KIDNEY -#CREATURE:FORGOTTEN_BEAST_416:MUSCLE - CREATURE:FORGOTTEN_BEAST_416:EYE -"CREATURE:FORGOTTEN_BEAST_416:BRAIN -!CREATURE:FORGOTTEN_BEAST_416:LUNG -"CREATURE:FORGOTTEN_BEAST_416:HEART -"CREATURE:FORGOTTEN_BEAST_416:LIVER - CREATURE:FORGOTTEN_BEAST_416:GUT -$CREATURE:FORGOTTEN_BEAST_416:STOMACH -$CREATURE:FORGOTTEN_BEAST_416:GIZZARD -%CREATURE:FORGOTTEN_BEAST_416:PANCREAS -#CREATURE:FORGOTTEN_BEAST_416:SPLEEN -#CREATURE:FORGOTTEN_BEAST_416:KIDNEY -#CREATURE:FORGOTTEN_BEAST_417:MUSCLE - CREATURE:FORGOTTEN_BEAST_417:EYE -"CREATURE:FORGOTTEN_BEAST_417:BRAIN -!CREATURE:FORGOTTEN_BEAST_417:LUNG -"CREATURE:FORGOTTEN_BEAST_417:HEART -"CREATURE:FORGOTTEN_BEAST_417:LIVER - CREATURE:FORGOTTEN_BEAST_417:GUT -$CREATURE:FORGOTTEN_BEAST_417:STOMACH -$CREATURE:FORGOTTEN_BEAST_417:GIZZARD -%CREATURE:FORGOTTEN_BEAST_417:PANCREAS -#CREATURE:FORGOTTEN_BEAST_417:SPLEEN -#CREATURE:FORGOTTEN_BEAST_417:KIDNEY -#CREATURE:FORGOTTEN_BEAST_418:MUSCLE - CREATURE:FORGOTTEN_BEAST_418:EYE -"CREATURE:FORGOTTEN_BEAST_418:BRAIN -!CREATURE:FORGOTTEN_BEAST_418:LUNG -"CREATURE:FORGOTTEN_BEAST_418:HEART -"CREATURE:FORGOTTEN_BEAST_418:LIVER - CREATURE:FORGOTTEN_BEAST_418:GUT -$CREATURE:FORGOTTEN_BEAST_418:STOMACH -$CREATURE:FORGOTTEN_BEAST_418:GIZZARD -%CREATURE:FORGOTTEN_BEAST_418:PANCREAS -#CREATURE:FORGOTTEN_BEAST_418:SPLEEN -#CREATURE:FORGOTTEN_BEAST_418:KIDNEY -#CREATURE:FORGOTTEN_BEAST_420:MUSCLE - CREATURE:FORGOTTEN_BEAST_420:EYE -"CREATURE:FORGOTTEN_BEAST_420:BRAIN -!CREATURE:FORGOTTEN_BEAST_420:LUNG -"CREATURE:FORGOTTEN_BEAST_420:HEART -"CREATURE:FORGOTTEN_BEAST_420:LIVER - CREATURE:FORGOTTEN_BEAST_420:GUT -$CREATURE:FORGOTTEN_BEAST_420:STOMACH -$CREATURE:FORGOTTEN_BEAST_420:GIZZARD -%CREATURE:FORGOTTEN_BEAST_420:PANCREAS -#CREATURE:FORGOTTEN_BEAST_420:SPLEEN -#CREATURE:FORGOTTEN_BEAST_420:KIDNEY -#CREATURE:FORGOTTEN_BEAST_421:MUSCLE - CREATURE:FORGOTTEN_BEAST_421:EYE -"CREATURE:FORGOTTEN_BEAST_421:BRAIN -!CREATURE:FORGOTTEN_BEAST_421:LUNG -"CREATURE:FORGOTTEN_BEAST_421:HEART -"CREATURE:FORGOTTEN_BEAST_421:LIVER - CREATURE:FORGOTTEN_BEAST_421:GUT -$CREATURE:FORGOTTEN_BEAST_421:STOMACH -$CREATURE:FORGOTTEN_BEAST_421:GIZZARD -%CREATURE:FORGOTTEN_BEAST_421:PANCREAS -#CREATURE:FORGOTTEN_BEAST_421:SPLEEN -#CREATURE:FORGOTTEN_BEAST_421:KIDNEY -#CREATURE:FORGOTTEN_BEAST_422:MUSCLE - CREATURE:FORGOTTEN_BEAST_422:EYE -"CREATURE:FORGOTTEN_BEAST_422:BRAIN -!CREATURE:FORGOTTEN_BEAST_422:LUNG -"CREATURE:FORGOTTEN_BEAST_422:HEART -"CREATURE:FORGOTTEN_BEAST_422:LIVER - CREATURE:FORGOTTEN_BEAST_422:GUT -$CREATURE:FORGOTTEN_BEAST_422:STOMACH -$CREATURE:FORGOTTEN_BEAST_422:GIZZARD -%CREATURE:FORGOTTEN_BEAST_422:PANCREAS -#CREATURE:FORGOTTEN_BEAST_422:SPLEEN -#CREATURE:FORGOTTEN_BEAST_422:KIDNEY -#CREATURE:FORGOTTEN_BEAST_423:MUSCLE - CREATURE:FORGOTTEN_BEAST_423:EYE -"CREATURE:FORGOTTEN_BEAST_423:BRAIN -!CREATURE:FORGOTTEN_BEAST_423:LUNG -"CREATURE:FORGOTTEN_BEAST_423:HEART -"CREATURE:FORGOTTEN_BEAST_423:LIVER - CREATURE:FORGOTTEN_BEAST_423:GUT -$CREATURE:FORGOTTEN_BEAST_423:STOMACH -$CREATURE:FORGOTTEN_BEAST_423:GIZZARD -%CREATURE:FORGOTTEN_BEAST_423:PANCREAS -#CREATURE:FORGOTTEN_BEAST_423:SPLEEN -#CREATURE:FORGOTTEN_BEAST_423:KIDNEY -#CREATURE:FORGOTTEN_BEAST_424:MUSCLE - CREATURE:FORGOTTEN_BEAST_424:EYE -"CREATURE:FORGOTTEN_BEAST_424:BRAIN -!CREATURE:FORGOTTEN_BEAST_424:LUNG -"CREATURE:FORGOTTEN_BEAST_424:HEART -"CREATURE:FORGOTTEN_BEAST_424:LIVER - CREATURE:FORGOTTEN_BEAST_424:GUT -$CREATURE:FORGOTTEN_BEAST_424:STOMACH -$CREATURE:FORGOTTEN_BEAST_424:GIZZARD -%CREATURE:FORGOTTEN_BEAST_424:PANCREAS -#CREATURE:FORGOTTEN_BEAST_424:SPLEEN -#CREATURE:FORGOTTEN_BEAST_424:KIDNEY -#CREATURE:FORGOTTEN_BEAST_427:MUSCLE - CREATURE:FORGOTTEN_BEAST_427:EYE -"CREATURE:FORGOTTEN_BEAST_427:BRAIN -!CREATURE:FORGOTTEN_BEAST_427:LUNG -"CREATURE:FORGOTTEN_BEAST_427:HEART -"CREATURE:FORGOTTEN_BEAST_427:LIVER - CREATURE:FORGOTTEN_BEAST_427:GUT -$CREATURE:FORGOTTEN_BEAST_427:STOMACH -$CREATURE:FORGOTTEN_BEAST_427:GIZZARD -%CREATURE:FORGOTTEN_BEAST_427:PANCREAS -#CREATURE:FORGOTTEN_BEAST_427:SPLEEN -#CREATURE:FORGOTTEN_BEAST_427:KIDNEY -#CREATURE:FORGOTTEN_BEAST_429:MUSCLE - CREATURE:FORGOTTEN_BEAST_429:EYE -"CREATURE:FORGOTTEN_BEAST_429:BRAIN -!CREATURE:FORGOTTEN_BEAST_429:LUNG -"CREATURE:FORGOTTEN_BEAST_429:HEART -"CREATURE:FORGOTTEN_BEAST_429:LIVER - CREATURE:FORGOTTEN_BEAST_429:GUT -$CREATURE:FORGOTTEN_BEAST_429:STOMACH -$CREATURE:FORGOTTEN_BEAST_429:GIZZARD -%CREATURE:FORGOTTEN_BEAST_429:PANCREAS -#CREATURE:FORGOTTEN_BEAST_429:SPLEEN -#CREATURE:FORGOTTEN_BEAST_429:KIDNEY -#CREATURE:FORGOTTEN_BEAST_430:MUSCLE - CREATURE:FORGOTTEN_BEAST_430:EYE -"CREATURE:FORGOTTEN_BEAST_430:BRAIN -!CREATURE:FORGOTTEN_BEAST_430:LUNG -"CREATURE:FORGOTTEN_BEAST_430:HEART -"CREATURE:FORGOTTEN_BEAST_430:LIVER - CREATURE:FORGOTTEN_BEAST_430:GUT -$CREATURE:FORGOTTEN_BEAST_430:STOMACH -$CREATURE:FORGOTTEN_BEAST_430:GIZZARD -%CREATURE:FORGOTTEN_BEAST_430:PANCREAS -#CREATURE:FORGOTTEN_BEAST_430:SPLEEN -#CREATURE:FORGOTTEN_BEAST_430:KIDNEY -#CREATURE:FORGOTTEN_BEAST_432:MUSCLE - CREATURE:FORGOTTEN_BEAST_432:EYE -"CREATURE:FORGOTTEN_BEAST_432:BRAIN -!CREATURE:FORGOTTEN_BEAST_432:LUNG -"CREATURE:FORGOTTEN_BEAST_432:HEART -"CREATURE:FORGOTTEN_BEAST_432:LIVER - CREATURE:FORGOTTEN_BEAST_432:GUT -$CREATURE:FORGOTTEN_BEAST_432:STOMACH -$CREATURE:FORGOTTEN_BEAST_432:GIZZARD -%CREATURE:FORGOTTEN_BEAST_432:PANCREAS -#CREATURE:FORGOTTEN_BEAST_432:SPLEEN -#CREATURE:FORGOTTEN_BEAST_432:KIDNEY -#CREATURE:FORGOTTEN_BEAST_433:MUSCLE - CREATURE:FORGOTTEN_BEAST_433:EYE -"CREATURE:FORGOTTEN_BEAST_433:BRAIN -!CREATURE:FORGOTTEN_BEAST_433:LUNG -"CREATURE:FORGOTTEN_BEAST_433:HEART -"CREATURE:FORGOTTEN_BEAST_433:LIVER - CREATURE:FORGOTTEN_BEAST_433:GUT -$CREATURE:FORGOTTEN_BEAST_433:STOMACH -$CREATURE:FORGOTTEN_BEAST_433:GIZZARD -%CREATURE:FORGOTTEN_BEAST_433:PANCREAS -#CREATURE:FORGOTTEN_BEAST_433:SPLEEN -#CREATURE:FORGOTTEN_BEAST_433:KIDNEY -#CREATURE:FORGOTTEN_BEAST_434:MUSCLE - CREATURE:FORGOTTEN_BEAST_434:EYE -"CREATURE:FORGOTTEN_BEAST_434:BRAIN -!CREATURE:FORGOTTEN_BEAST_434:LUNG -"CREATURE:FORGOTTEN_BEAST_434:HEART -"CREATURE:FORGOTTEN_BEAST_434:LIVER - CREATURE:FORGOTTEN_BEAST_434:GUT -$CREATURE:FORGOTTEN_BEAST_434:STOMACH -$CREATURE:FORGOTTEN_BEAST_434:GIZZARD -%CREATURE:FORGOTTEN_BEAST_434:PANCREAS -#CREATURE:FORGOTTEN_BEAST_434:SPLEEN -#CREATURE:FORGOTTEN_BEAST_434:KIDNEY -#CREATURE:FORGOTTEN_BEAST_435:MUSCLE - CREATURE:FORGOTTEN_BEAST_435:EYE -"CREATURE:FORGOTTEN_BEAST_435:BRAIN -!CREATURE:FORGOTTEN_BEAST_435:LUNG -"CREATURE:FORGOTTEN_BEAST_435:HEART -"CREATURE:FORGOTTEN_BEAST_435:LIVER - CREATURE:FORGOTTEN_BEAST_435:GUT -$CREATURE:FORGOTTEN_BEAST_435:STOMACH -$CREATURE:FORGOTTEN_BEAST_435:GIZZARD -%CREATURE:FORGOTTEN_BEAST_435:PANCREAS -#CREATURE:FORGOTTEN_BEAST_435:SPLEEN -#CREATURE:FORGOTTEN_BEAST_435:KIDNEY -#CREATURE:FORGOTTEN_BEAST_436:MUSCLE - CREATURE:FORGOTTEN_BEAST_436:EYE -"CREATURE:FORGOTTEN_BEAST_436:BRAIN -!CREATURE:FORGOTTEN_BEAST_436:LUNG -"CREATURE:FORGOTTEN_BEAST_436:HEART -"CREATURE:FORGOTTEN_BEAST_436:LIVER - CREATURE:FORGOTTEN_BEAST_436:GUT -$CREATURE:FORGOTTEN_BEAST_436:STOMACH -$CREATURE:FORGOTTEN_BEAST_436:GIZZARD -%CREATURE:FORGOTTEN_BEAST_436:PANCREAS -#CREATURE:FORGOTTEN_BEAST_436:SPLEEN -#CREATURE:FORGOTTEN_BEAST_436:KIDNEY -#CREATURE:FORGOTTEN_BEAST_437:MUSCLE - CREATURE:FORGOTTEN_BEAST_437:EYE -"CREATURE:FORGOTTEN_BEAST_437:BRAIN -!CREATURE:FORGOTTEN_BEAST_437:LUNG -"CREATURE:FORGOTTEN_BEAST_437:HEART -"CREATURE:FORGOTTEN_BEAST_437:LIVER - CREATURE:FORGOTTEN_BEAST_437:GUT -$CREATURE:FORGOTTEN_BEAST_437:STOMACH -$CREATURE:FORGOTTEN_BEAST_437:GIZZARD -%CREATURE:FORGOTTEN_BEAST_437:PANCREAS -#CREATURE:FORGOTTEN_BEAST_437:SPLEEN -#CREATURE:FORGOTTEN_BEAST_437:KIDNEY -#CREATURE:FORGOTTEN_BEAST_438:MUSCLE - CREATURE:FORGOTTEN_BEAST_438:EYE -"CREATURE:FORGOTTEN_BEAST_438:BRAIN -!CREATURE:FORGOTTEN_BEAST_438:LUNG -"CREATURE:FORGOTTEN_BEAST_438:HEART -"CREATURE:FORGOTTEN_BEAST_438:LIVER - CREATURE:FORGOTTEN_BEAST_438:GUT -$CREATURE:FORGOTTEN_BEAST_438:STOMACH -$CREATURE:FORGOTTEN_BEAST_438:GIZZARD -%CREATURE:FORGOTTEN_BEAST_438:PANCREAS -#CREATURE:FORGOTTEN_BEAST_438:SPLEEN -#CREATURE:FORGOTTEN_BEAST_438:KIDNEY -#CREATURE:FORGOTTEN_BEAST_440:MUSCLE - CREATURE:FORGOTTEN_BEAST_440:EYE -"CREATURE:FORGOTTEN_BEAST_440:BRAIN -!CREATURE:FORGOTTEN_BEAST_440:LUNG -"CREATURE:FORGOTTEN_BEAST_440:HEART -"CREATURE:FORGOTTEN_BEAST_440:LIVER - CREATURE:FORGOTTEN_BEAST_440:GUT -$CREATURE:FORGOTTEN_BEAST_440:STOMACH -$CREATURE:FORGOTTEN_BEAST_440:GIZZARD -%CREATURE:FORGOTTEN_BEAST_440:PANCREAS -#CREATURE:FORGOTTEN_BEAST_440:SPLEEN -#CREATURE:FORGOTTEN_BEAST_440:KIDNEY -#CREATURE:FORGOTTEN_BEAST_441:MUSCLE - CREATURE:FORGOTTEN_BEAST_441:EYE -"CREATURE:FORGOTTEN_BEAST_441:BRAIN -!CREATURE:FORGOTTEN_BEAST_441:LUNG -"CREATURE:FORGOTTEN_BEAST_441:HEART -"CREATURE:FORGOTTEN_BEAST_441:LIVER - CREATURE:FORGOTTEN_BEAST_441:GUT -$CREATURE:FORGOTTEN_BEAST_441:STOMACH -$CREATURE:FORGOTTEN_BEAST_441:GIZZARD -%CREATURE:FORGOTTEN_BEAST_441:PANCREAS -#CREATURE:FORGOTTEN_BEAST_441:SPLEEN -#CREATURE:FORGOTTEN_BEAST_441:KIDNEY -#CREATURE:FORGOTTEN_BEAST_442:MUSCLE - CREATURE:FORGOTTEN_BEAST_442:EYE -"CREATURE:FORGOTTEN_BEAST_442:BRAIN -!CREATURE:FORGOTTEN_BEAST_442:LUNG -"CREATURE:FORGOTTEN_BEAST_442:HEART -"CREATURE:FORGOTTEN_BEAST_442:LIVER - CREATURE:FORGOTTEN_BEAST_442:GUT -$CREATURE:FORGOTTEN_BEAST_442:STOMACH -$CREATURE:FORGOTTEN_BEAST_442:GIZZARD -%CREATURE:FORGOTTEN_BEAST_442:PANCREAS -#CREATURE:FORGOTTEN_BEAST_442:SPLEEN -#CREATURE:FORGOTTEN_BEAST_442:KIDNEY -#CREATURE:FORGOTTEN_BEAST_444:MUSCLE - CREATURE:FORGOTTEN_BEAST_444:EYE -"CREATURE:FORGOTTEN_BEAST_444:BRAIN -!CREATURE:FORGOTTEN_BEAST_444:LUNG -"CREATURE:FORGOTTEN_BEAST_444:HEART -"CREATURE:FORGOTTEN_BEAST_444:LIVER - CREATURE:FORGOTTEN_BEAST_444:GUT -$CREATURE:FORGOTTEN_BEAST_444:STOMACH -$CREATURE:FORGOTTEN_BEAST_444:GIZZARD -%CREATURE:FORGOTTEN_BEAST_444:PANCREAS -#CREATURE:FORGOTTEN_BEAST_444:SPLEEN -#CREATURE:FORGOTTEN_BEAST_444:KIDNEY -#CREATURE:FORGOTTEN_BEAST_446:MUSCLE - CREATURE:FORGOTTEN_BEAST_446:EYE -"CREATURE:FORGOTTEN_BEAST_446:BRAIN -!CREATURE:FORGOTTEN_BEAST_446:LUNG -"CREATURE:FORGOTTEN_BEAST_446:HEART -"CREATURE:FORGOTTEN_BEAST_446:LIVER - CREATURE:FORGOTTEN_BEAST_446:GUT -$CREATURE:FORGOTTEN_BEAST_446:STOMACH -$CREATURE:FORGOTTEN_BEAST_446:GIZZARD -%CREATURE:FORGOTTEN_BEAST_446:PANCREAS -#CREATURE:FORGOTTEN_BEAST_446:SPLEEN -#CREATURE:FORGOTTEN_BEAST_446:KIDNEY -#CREATURE:FORGOTTEN_BEAST_447:MUSCLE - CREATURE:FORGOTTEN_BEAST_447:EYE -"CREATURE:FORGOTTEN_BEAST_447:BRAIN -!CREATURE:FORGOTTEN_BEAST_447:LUNG -"CREATURE:FORGOTTEN_BEAST_447:HEART -"CREATURE:FORGOTTEN_BEAST_447:LIVER - CREATURE:FORGOTTEN_BEAST_447:GUT -$CREATURE:FORGOTTEN_BEAST_447:STOMACH -$CREATURE:FORGOTTEN_BEAST_447:GIZZARD -%CREATURE:FORGOTTEN_BEAST_447:PANCREAS -#CREATURE:FORGOTTEN_BEAST_447:SPLEEN -#CREATURE:FORGOTTEN_BEAST_447:KIDNEY -#CREATURE:FORGOTTEN_BEAST_448:MUSCLE - CREATURE:FORGOTTEN_BEAST_448:EYE -"CREATURE:FORGOTTEN_BEAST_448:BRAIN -!CREATURE:FORGOTTEN_BEAST_448:LUNG -"CREATURE:FORGOTTEN_BEAST_448:HEART -"CREATURE:FORGOTTEN_BEAST_448:LIVER - CREATURE:FORGOTTEN_BEAST_448:GUT -$CREATURE:FORGOTTEN_BEAST_448:STOMACH -$CREATURE:FORGOTTEN_BEAST_448:GIZZARD -%CREATURE:FORGOTTEN_BEAST_448:PANCREAS -#CREATURE:FORGOTTEN_BEAST_448:SPLEEN -#CREATURE:FORGOTTEN_BEAST_448:KIDNEY -#CREATURE:FORGOTTEN_BEAST_449:MUSCLE - CREATURE:FORGOTTEN_BEAST_449:EYE -"CREATURE:FORGOTTEN_BEAST_449:BRAIN -!CREATURE:FORGOTTEN_BEAST_449:LUNG -"CREATURE:FORGOTTEN_BEAST_449:HEART -"CREATURE:FORGOTTEN_BEAST_449:LIVER - CREATURE:FORGOTTEN_BEAST_449:GUT -$CREATURE:FORGOTTEN_BEAST_449:STOMACH -$CREATURE:FORGOTTEN_BEAST_449:GIZZARD -%CREATURE:FORGOTTEN_BEAST_449:PANCREAS -#CREATURE:FORGOTTEN_BEAST_449:SPLEEN -#CREATURE:FORGOTTEN_BEAST_449:KIDNEY -#CREATURE:FORGOTTEN_BEAST_450:MUSCLE - CREATURE:FORGOTTEN_BEAST_450:EYE -"CREATURE:FORGOTTEN_BEAST_450:BRAIN -!CREATURE:FORGOTTEN_BEAST_450:LUNG -"CREATURE:FORGOTTEN_BEAST_450:HEART -"CREATURE:FORGOTTEN_BEAST_450:LIVER - CREATURE:FORGOTTEN_BEAST_450:GUT -$CREATURE:FORGOTTEN_BEAST_450:STOMACH -$CREATURE:FORGOTTEN_BEAST_450:GIZZARD -%CREATURE:FORGOTTEN_BEAST_450:PANCREAS -#CREATURE:FORGOTTEN_BEAST_450:SPLEEN -#CREATURE:FORGOTTEN_BEAST_450:KIDNEY -#CREATURE:FORGOTTEN_BEAST_451:MUSCLE - CREATURE:FORGOTTEN_BEAST_451:EYE -"CREATURE:FORGOTTEN_BEAST_451:BRAIN -!CREATURE:FORGOTTEN_BEAST_451:LUNG -"CREATURE:FORGOTTEN_BEAST_451:HEART -"CREATURE:FORGOTTEN_BEAST_451:LIVER - CREATURE:FORGOTTEN_BEAST_451:GUT -$CREATURE:FORGOTTEN_BEAST_451:STOMACH -$CREATURE:FORGOTTEN_BEAST_451:GIZZARD -%CREATURE:FORGOTTEN_BEAST_451:PANCREAS -#CREATURE:FORGOTTEN_BEAST_451:SPLEEN -#CREATURE:FORGOTTEN_BEAST_451:KIDNEY -#CREATURE:FORGOTTEN_BEAST_453:MUSCLE - CREATURE:FORGOTTEN_BEAST_453:EYE -"CREATURE:FORGOTTEN_BEAST_453:BRAIN -!CREATURE:FORGOTTEN_BEAST_453:LUNG -"CREATURE:FORGOTTEN_BEAST_453:HEART -"CREATURE:FORGOTTEN_BEAST_453:LIVER - CREATURE:FORGOTTEN_BEAST_453:GUT -$CREATURE:FORGOTTEN_BEAST_453:STOMACH -$CREATURE:FORGOTTEN_BEAST_453:GIZZARD -%CREATURE:FORGOTTEN_BEAST_453:PANCREAS -#CREATURE:FORGOTTEN_BEAST_453:SPLEEN -#CREATURE:FORGOTTEN_BEAST_453:KIDNEY -#CREATURE:FORGOTTEN_BEAST_454:MUSCLE - CREATURE:FORGOTTEN_BEAST_454:EYE -"CREATURE:FORGOTTEN_BEAST_454:BRAIN -!CREATURE:FORGOTTEN_BEAST_454:LUNG -"CREATURE:FORGOTTEN_BEAST_454:HEART -"CREATURE:FORGOTTEN_BEAST_454:LIVER - CREATURE:FORGOTTEN_BEAST_454:GUT -$CREATURE:FORGOTTEN_BEAST_454:STOMACH -$CREATURE:FORGOTTEN_BEAST_454:GIZZARD -%CREATURE:FORGOTTEN_BEAST_454:PANCREAS -#CREATURE:FORGOTTEN_BEAST_454:SPLEEN -#CREATURE:FORGOTTEN_BEAST_454:KIDNEY -#CREATURE:FORGOTTEN_BEAST_455:MUSCLE - CREATURE:FORGOTTEN_BEAST_455:EYE -"CREATURE:FORGOTTEN_BEAST_455:BRAIN -!CREATURE:FORGOTTEN_BEAST_455:LUNG -"CREATURE:FORGOTTEN_BEAST_455:HEART -"CREATURE:FORGOTTEN_BEAST_455:LIVER - CREATURE:FORGOTTEN_BEAST_455:GUT -$CREATURE:FORGOTTEN_BEAST_455:STOMACH -$CREATURE:FORGOTTEN_BEAST_455:GIZZARD -%CREATURE:FORGOTTEN_BEAST_455:PANCREAS -#CREATURE:FORGOTTEN_BEAST_455:SPLEEN -#CREATURE:FORGOTTEN_BEAST_455:KIDNEY -#CREATURE:FORGOTTEN_BEAST_457:MUSCLE - CREATURE:FORGOTTEN_BEAST_457:EYE -"CREATURE:FORGOTTEN_BEAST_457:BRAIN -!CREATURE:FORGOTTEN_BEAST_457:LUNG -"CREATURE:FORGOTTEN_BEAST_457:HEART -"CREATURE:FORGOTTEN_BEAST_457:LIVER - CREATURE:FORGOTTEN_BEAST_457:GUT -$CREATURE:FORGOTTEN_BEAST_457:STOMACH -$CREATURE:FORGOTTEN_BEAST_457:GIZZARD -%CREATURE:FORGOTTEN_BEAST_457:PANCREAS -#CREATURE:FORGOTTEN_BEAST_457:SPLEEN -#CREATURE:FORGOTTEN_BEAST_457:KIDNEY -#CREATURE:FORGOTTEN_BEAST_459:MUSCLE - CREATURE:FORGOTTEN_BEAST_459:EYE -"CREATURE:FORGOTTEN_BEAST_459:BRAIN -!CREATURE:FORGOTTEN_BEAST_459:LUNG -"CREATURE:FORGOTTEN_BEAST_459:HEART -"CREATURE:FORGOTTEN_BEAST_459:LIVER - CREATURE:FORGOTTEN_BEAST_459:GUT -$CREATURE:FORGOTTEN_BEAST_459:STOMACH -$CREATURE:FORGOTTEN_BEAST_459:GIZZARD -%CREATURE:FORGOTTEN_BEAST_459:PANCREAS -#CREATURE:FORGOTTEN_BEAST_459:SPLEEN -#CREATURE:FORGOTTEN_BEAST_459:KIDNEY -#CREATURE:FORGOTTEN_BEAST_461:MUSCLE - CREATURE:FORGOTTEN_BEAST_461:EYE -"CREATURE:FORGOTTEN_BEAST_461:BRAIN -!CREATURE:FORGOTTEN_BEAST_461:LUNG -"CREATURE:FORGOTTEN_BEAST_461:HEART -"CREATURE:FORGOTTEN_BEAST_461:LIVER - CREATURE:FORGOTTEN_BEAST_461:GUT -$CREATURE:FORGOTTEN_BEAST_461:STOMACH -$CREATURE:FORGOTTEN_BEAST_461:GIZZARD -%CREATURE:FORGOTTEN_BEAST_461:PANCREAS -#CREATURE:FORGOTTEN_BEAST_461:SPLEEN -#CREATURE:FORGOTTEN_BEAST_461:KIDNEY -#CREATURE:FORGOTTEN_BEAST_462:MUSCLE - CREATURE:FORGOTTEN_BEAST_462:EYE -"CREATURE:FORGOTTEN_BEAST_462:BRAIN -!CREATURE:FORGOTTEN_BEAST_462:LUNG -"CREATURE:FORGOTTEN_BEAST_462:HEART -"CREATURE:FORGOTTEN_BEAST_462:LIVER - CREATURE:FORGOTTEN_BEAST_462:GUT -$CREATURE:FORGOTTEN_BEAST_462:STOMACH -$CREATURE:FORGOTTEN_BEAST_462:GIZZARD -%CREATURE:FORGOTTEN_BEAST_462:PANCREAS -#CREATURE:FORGOTTEN_BEAST_462:SPLEEN -#CREATURE:FORGOTTEN_BEAST_462:KIDNEY -#CREATURE:FORGOTTEN_BEAST_463:MUSCLE - CREATURE:FORGOTTEN_BEAST_463:EYE -"CREATURE:FORGOTTEN_BEAST_463:BRAIN -!CREATURE:FORGOTTEN_BEAST_463:LUNG -"CREATURE:FORGOTTEN_BEAST_463:HEART -"CREATURE:FORGOTTEN_BEAST_463:LIVER - CREATURE:FORGOTTEN_BEAST_463:GUT -$CREATURE:FORGOTTEN_BEAST_463:STOMACH -$CREATURE:FORGOTTEN_BEAST_463:GIZZARD -%CREATURE:FORGOTTEN_BEAST_463:PANCREAS -#CREATURE:FORGOTTEN_BEAST_463:SPLEEN -#CREATURE:FORGOTTEN_BEAST_463:KIDNEY -#CREATURE:FORGOTTEN_BEAST_465:MUSCLE - CREATURE:FORGOTTEN_BEAST_465:EYE -"CREATURE:FORGOTTEN_BEAST_465:BRAIN -!CREATURE:FORGOTTEN_BEAST_465:LUNG -"CREATURE:FORGOTTEN_BEAST_465:HEART -"CREATURE:FORGOTTEN_BEAST_465:LIVER - CREATURE:FORGOTTEN_BEAST_465:GUT -$CREATURE:FORGOTTEN_BEAST_465:STOMACH -$CREATURE:FORGOTTEN_BEAST_465:GIZZARD -%CREATURE:FORGOTTEN_BEAST_465:PANCREAS -#CREATURE:FORGOTTEN_BEAST_465:SPLEEN -#CREATURE:FORGOTTEN_BEAST_465:KIDNEY -#CREATURE:FORGOTTEN_BEAST_466:MUSCLE - CREATURE:FORGOTTEN_BEAST_466:EYE -"CREATURE:FORGOTTEN_BEAST_466:BRAIN -!CREATURE:FORGOTTEN_BEAST_466:LUNG -"CREATURE:FORGOTTEN_BEAST_466:HEART -"CREATURE:FORGOTTEN_BEAST_466:LIVER - CREATURE:FORGOTTEN_BEAST_466:GUT -$CREATURE:FORGOTTEN_BEAST_466:STOMACH -$CREATURE:FORGOTTEN_BEAST_466:GIZZARD -%CREATURE:FORGOTTEN_BEAST_466:PANCREAS -#CREATURE:FORGOTTEN_BEAST_466:SPLEEN -#CREATURE:FORGOTTEN_BEAST_466:KIDNEY -#CREATURE:FORGOTTEN_BEAST_468:MUSCLE - CREATURE:FORGOTTEN_BEAST_468:EYE -"CREATURE:FORGOTTEN_BEAST_468:BRAIN -!CREATURE:FORGOTTEN_BEAST_468:LUNG -"CREATURE:FORGOTTEN_BEAST_468:HEART -"CREATURE:FORGOTTEN_BEAST_468:LIVER - CREATURE:FORGOTTEN_BEAST_468:GUT -$CREATURE:FORGOTTEN_BEAST_468:STOMACH -$CREATURE:FORGOTTEN_BEAST_468:GIZZARD -%CREATURE:FORGOTTEN_BEAST_468:PANCREAS -#CREATURE:FORGOTTEN_BEAST_468:SPLEEN -#CREATURE:FORGOTTEN_BEAST_468:KIDNEY -#CREATURE:FORGOTTEN_BEAST_469:MUSCLE - CREATURE:FORGOTTEN_BEAST_469:EYE -"CREATURE:FORGOTTEN_BEAST_469:BRAIN -!CREATURE:FORGOTTEN_BEAST_469:LUNG -"CREATURE:FORGOTTEN_BEAST_469:HEART -"CREATURE:FORGOTTEN_BEAST_469:LIVER - CREATURE:FORGOTTEN_BEAST_469:GUT -$CREATURE:FORGOTTEN_BEAST_469:STOMACH -$CREATURE:FORGOTTEN_BEAST_469:GIZZARD -%CREATURE:FORGOTTEN_BEAST_469:PANCREAS -#CREATURE:FORGOTTEN_BEAST_469:SPLEEN -#CREATURE:FORGOTTEN_BEAST_469:KIDNEY -#CREATURE:FORGOTTEN_BEAST_470:MUSCLE - CREATURE:FORGOTTEN_BEAST_470:EYE -"CREATURE:FORGOTTEN_BEAST_470:BRAIN -!CREATURE:FORGOTTEN_BEAST_470:LUNG -"CREATURE:FORGOTTEN_BEAST_470:HEART -"CREATURE:FORGOTTEN_BEAST_470:LIVER - CREATURE:FORGOTTEN_BEAST_470:GUT -$CREATURE:FORGOTTEN_BEAST_470:STOMACH -$CREATURE:FORGOTTEN_BEAST_470:GIZZARD -%CREATURE:FORGOTTEN_BEAST_470:PANCREAS -#CREATURE:FORGOTTEN_BEAST_470:SPLEEN -#CREATURE:FORGOTTEN_BEAST_470:KIDNEY -#CREATURE:FORGOTTEN_BEAST_471:MUSCLE - CREATURE:FORGOTTEN_BEAST_471:EYE -"CREATURE:FORGOTTEN_BEAST_471:BRAIN -!CREATURE:FORGOTTEN_BEAST_471:LUNG -"CREATURE:FORGOTTEN_BEAST_471:HEART -"CREATURE:FORGOTTEN_BEAST_471:LIVER - CREATURE:FORGOTTEN_BEAST_471:GUT -$CREATURE:FORGOTTEN_BEAST_471:STOMACH -$CREATURE:FORGOTTEN_BEAST_471:GIZZARD -%CREATURE:FORGOTTEN_BEAST_471:PANCREAS -#CREATURE:FORGOTTEN_BEAST_471:SPLEEN -#CREATURE:FORGOTTEN_BEAST_471:KIDNEY -#CREATURE:FORGOTTEN_BEAST_472:MUSCLE - CREATURE:FORGOTTEN_BEAST_472:EYE -"CREATURE:FORGOTTEN_BEAST_472:BRAIN -!CREATURE:FORGOTTEN_BEAST_472:LUNG -"CREATURE:FORGOTTEN_BEAST_472:HEART -"CREATURE:FORGOTTEN_BEAST_472:LIVER - CREATURE:FORGOTTEN_BEAST_472:GUT -$CREATURE:FORGOTTEN_BEAST_472:STOMACH -$CREATURE:FORGOTTEN_BEAST_472:GIZZARD -%CREATURE:FORGOTTEN_BEAST_472:PANCREAS -#CREATURE:FORGOTTEN_BEAST_472:SPLEEN -#CREATURE:FORGOTTEN_BEAST_472:KIDNEY -#CREATURE:FORGOTTEN_BEAST_474:MUSCLE - CREATURE:FORGOTTEN_BEAST_474:EYE -"CREATURE:FORGOTTEN_BEAST_474:BRAIN -!CREATURE:FORGOTTEN_BEAST_474:LUNG -"CREATURE:FORGOTTEN_BEAST_474:HEART -"CREATURE:FORGOTTEN_BEAST_474:LIVER - CREATURE:FORGOTTEN_BEAST_474:GUT -$CREATURE:FORGOTTEN_BEAST_474:STOMACH -$CREATURE:FORGOTTEN_BEAST_474:GIZZARD -%CREATURE:FORGOTTEN_BEAST_474:PANCREAS -#CREATURE:FORGOTTEN_BEAST_474:SPLEEN -#CREATURE:FORGOTTEN_BEAST_474:KIDNEY -#CREATURE:FORGOTTEN_BEAST_475:MUSCLE - CREATURE:FORGOTTEN_BEAST_475:EYE -"CREATURE:FORGOTTEN_BEAST_475:BRAIN -!CREATURE:FORGOTTEN_BEAST_475:LUNG -"CREATURE:FORGOTTEN_BEAST_475:HEART -"CREATURE:FORGOTTEN_BEAST_475:LIVER - CREATURE:FORGOTTEN_BEAST_475:GUT -$CREATURE:FORGOTTEN_BEAST_475:STOMACH -$CREATURE:FORGOTTEN_BEAST_475:GIZZARD -%CREATURE:FORGOTTEN_BEAST_475:PANCREAS -#CREATURE:FORGOTTEN_BEAST_475:SPLEEN -#CREATURE:FORGOTTEN_BEAST_475:KIDNEY -#CREATURE:FORGOTTEN_BEAST_476:MUSCLE - CREATURE:FORGOTTEN_BEAST_476:EYE -"CREATURE:FORGOTTEN_BEAST_476:BRAIN -!CREATURE:FORGOTTEN_BEAST_476:LUNG -"CREATURE:FORGOTTEN_BEAST_476:HEART -"CREATURE:FORGOTTEN_BEAST_476:LIVER - CREATURE:FORGOTTEN_BEAST_476:GUT -$CREATURE:FORGOTTEN_BEAST_476:STOMACH -$CREATURE:FORGOTTEN_BEAST_476:GIZZARD -%CREATURE:FORGOTTEN_BEAST_476:PANCREAS -#CREATURE:FORGOTTEN_BEAST_476:SPLEEN -#CREATURE:FORGOTTEN_BEAST_476:KIDNEY -#CREATURE:FORGOTTEN_BEAST_478:MUSCLE - CREATURE:FORGOTTEN_BEAST_478:EYE -"CREATURE:FORGOTTEN_BEAST_478:BRAIN -!CREATURE:FORGOTTEN_BEAST_478:LUNG -"CREATURE:FORGOTTEN_BEAST_478:HEART -"CREATURE:FORGOTTEN_BEAST_478:LIVER - CREATURE:FORGOTTEN_BEAST_478:GUT -$CREATURE:FORGOTTEN_BEAST_478:STOMACH -$CREATURE:FORGOTTEN_BEAST_478:GIZZARD -%CREATURE:FORGOTTEN_BEAST_478:PANCREAS -#CREATURE:FORGOTTEN_BEAST_478:SPLEEN -#CREATURE:FORGOTTEN_BEAST_478:KIDNEY -#CREATURE:FORGOTTEN_BEAST_479:MUSCLE - CREATURE:FORGOTTEN_BEAST_479:EYE -"CREATURE:FORGOTTEN_BEAST_479:BRAIN -!CREATURE:FORGOTTEN_BEAST_479:LUNG -"CREATURE:FORGOTTEN_BEAST_479:HEART -"CREATURE:FORGOTTEN_BEAST_479:LIVER - CREATURE:FORGOTTEN_BEAST_479:GUT -$CREATURE:FORGOTTEN_BEAST_479:STOMACH -$CREATURE:FORGOTTEN_BEAST_479:GIZZARD -%CREATURE:FORGOTTEN_BEAST_479:PANCREAS -#CREATURE:FORGOTTEN_BEAST_479:SPLEEN -#CREATURE:FORGOTTEN_BEAST_479:KIDNEY -#CREATURE:FORGOTTEN_BEAST_480:MUSCLE - CREATURE:FORGOTTEN_BEAST_480:EYE -"CREATURE:FORGOTTEN_BEAST_480:BRAIN -!CREATURE:FORGOTTEN_BEAST_480:LUNG -"CREATURE:FORGOTTEN_BEAST_480:HEART -"CREATURE:FORGOTTEN_BEAST_480:LIVER - CREATURE:FORGOTTEN_BEAST_480:GUT -$CREATURE:FORGOTTEN_BEAST_480:STOMACH -$CREATURE:FORGOTTEN_BEAST_480:GIZZARD -%CREATURE:FORGOTTEN_BEAST_480:PANCREAS -#CREATURE:FORGOTTEN_BEAST_480:SPLEEN -#CREATURE:FORGOTTEN_BEAST_480:KIDNEY -#CREATURE:FORGOTTEN_BEAST_481:MUSCLE - CREATURE:FORGOTTEN_BEAST_481:EYE -"CREATURE:FORGOTTEN_BEAST_481:BRAIN -!CREATURE:FORGOTTEN_BEAST_481:LUNG -"CREATURE:FORGOTTEN_BEAST_481:HEART -"CREATURE:FORGOTTEN_BEAST_481:LIVER - CREATURE:FORGOTTEN_BEAST_481:GUT -$CREATURE:FORGOTTEN_BEAST_481:STOMACH -$CREATURE:FORGOTTEN_BEAST_481:GIZZARD -%CREATURE:FORGOTTEN_BEAST_481:PANCREAS -#CREATURE:FORGOTTEN_BEAST_481:SPLEEN -#CREATURE:FORGOTTEN_BEAST_481:KIDNEY -#CREATURE:FORGOTTEN_BEAST_483:MUSCLE - CREATURE:FORGOTTEN_BEAST_483:EYE -"CREATURE:FORGOTTEN_BEAST_483:BRAIN -!CREATURE:FORGOTTEN_BEAST_483:LUNG -"CREATURE:FORGOTTEN_BEAST_483:HEART -"CREATURE:FORGOTTEN_BEAST_483:LIVER - CREATURE:FORGOTTEN_BEAST_483:GUT -$CREATURE:FORGOTTEN_BEAST_483:STOMACH -$CREATURE:FORGOTTEN_BEAST_483:GIZZARD -%CREATURE:FORGOTTEN_BEAST_483:PANCREAS -#CREATURE:FORGOTTEN_BEAST_483:SPLEEN -#CREATURE:FORGOTTEN_BEAST_483:KIDNEY -#CREATURE:FORGOTTEN_BEAST_486:MUSCLE - CREATURE:FORGOTTEN_BEAST_486:EYE -"CREATURE:FORGOTTEN_BEAST_486:BRAIN -!CREATURE:FORGOTTEN_BEAST_486:LUNG -"CREATURE:FORGOTTEN_BEAST_486:HEART -"CREATURE:FORGOTTEN_BEAST_486:LIVER - CREATURE:FORGOTTEN_BEAST_486:GUT -$CREATURE:FORGOTTEN_BEAST_486:STOMACH -$CREATURE:FORGOTTEN_BEAST_486:GIZZARD -%CREATURE:FORGOTTEN_BEAST_486:PANCREAS -#CREATURE:FORGOTTEN_BEAST_486:SPLEEN -#CREATURE:FORGOTTEN_BEAST_486:KIDNEY -#CREATURE:FORGOTTEN_BEAST_487:MUSCLE - CREATURE:FORGOTTEN_BEAST_487:EYE -"CREATURE:FORGOTTEN_BEAST_487:BRAIN -!CREATURE:FORGOTTEN_BEAST_487:LUNG -"CREATURE:FORGOTTEN_BEAST_487:HEART -"CREATURE:FORGOTTEN_BEAST_487:LIVER - CREATURE:FORGOTTEN_BEAST_487:GUT -$CREATURE:FORGOTTEN_BEAST_487:STOMACH -$CREATURE:FORGOTTEN_BEAST_487:GIZZARD -%CREATURE:FORGOTTEN_BEAST_487:PANCREAS -#CREATURE:FORGOTTEN_BEAST_487:SPLEEN -#CREATURE:FORGOTTEN_BEAST_487:KIDNEY -#CREATURE:FORGOTTEN_BEAST_489:MUSCLE - CREATURE:FORGOTTEN_BEAST_489:EYE -"CREATURE:FORGOTTEN_BEAST_489:BRAIN -!CREATURE:FORGOTTEN_BEAST_489:LUNG -"CREATURE:FORGOTTEN_BEAST_489:HEART -"CREATURE:FORGOTTEN_BEAST_489:LIVER - CREATURE:FORGOTTEN_BEAST_489:GUT -$CREATURE:FORGOTTEN_BEAST_489:STOMACH -$CREATURE:FORGOTTEN_BEAST_489:GIZZARD -%CREATURE:FORGOTTEN_BEAST_489:PANCREAS -#CREATURE:FORGOTTEN_BEAST_489:SPLEEN -#CREATURE:FORGOTTEN_BEAST_489:KIDNEY -#CREATURE:FORGOTTEN_BEAST_492:MUSCLE - CREATURE:FORGOTTEN_BEAST_492:EYE -"CREATURE:FORGOTTEN_BEAST_492:BRAIN -!CREATURE:FORGOTTEN_BEAST_492:LUNG -"CREATURE:FORGOTTEN_BEAST_492:HEART -"CREATURE:FORGOTTEN_BEAST_492:LIVER - CREATURE:FORGOTTEN_BEAST_492:GUT -$CREATURE:FORGOTTEN_BEAST_492:STOMACH -$CREATURE:FORGOTTEN_BEAST_492:GIZZARD -%CREATURE:FORGOTTEN_BEAST_492:PANCREAS -#CREATURE:FORGOTTEN_BEAST_492:SPLEEN -#CREATURE:FORGOTTEN_BEAST_492:KIDNEY -#CREATURE:FORGOTTEN_BEAST_494:MUSCLE - CREATURE:FORGOTTEN_BEAST_494:EYE -"CREATURE:FORGOTTEN_BEAST_494:BRAIN -!CREATURE:FORGOTTEN_BEAST_494:LUNG -"CREATURE:FORGOTTEN_BEAST_494:HEART -"CREATURE:FORGOTTEN_BEAST_494:LIVER - CREATURE:FORGOTTEN_BEAST_494:GUT -$CREATURE:FORGOTTEN_BEAST_494:STOMACH -$CREATURE:FORGOTTEN_BEAST_494:GIZZARD -%CREATURE:FORGOTTEN_BEAST_494:PANCREAS -#CREATURE:FORGOTTEN_BEAST_494:SPLEEN -#CREATURE:FORGOTTEN_BEAST_494:KIDNEY -#CREATURE:FORGOTTEN_BEAST_495:MUSCLE - CREATURE:FORGOTTEN_BEAST_495:EYE -"CREATURE:FORGOTTEN_BEAST_495:BRAIN -!CREATURE:FORGOTTEN_BEAST_495:LUNG -"CREATURE:FORGOTTEN_BEAST_495:HEART -"CREATURE:FORGOTTEN_BEAST_495:LIVER - CREATURE:FORGOTTEN_BEAST_495:GUT -$CREATURE:FORGOTTEN_BEAST_495:STOMACH -$CREATURE:FORGOTTEN_BEAST_495:GIZZARD -%CREATURE:FORGOTTEN_BEAST_495:PANCREAS -#CREATURE:FORGOTTEN_BEAST_495:SPLEEN -#CREATURE:FORGOTTEN_BEAST_495:KIDNEY -#CREATURE:FORGOTTEN_BEAST_496:MUSCLE - CREATURE:FORGOTTEN_BEAST_496:EYE -"CREATURE:FORGOTTEN_BEAST_496:BRAIN -!CREATURE:FORGOTTEN_BEAST_496:LUNG -"CREATURE:FORGOTTEN_BEAST_496:HEART -"CREATURE:FORGOTTEN_BEAST_496:LIVER - CREATURE:FORGOTTEN_BEAST_496:GUT -$CREATURE:FORGOTTEN_BEAST_496:STOMACH -$CREATURE:FORGOTTEN_BEAST_496:GIZZARD -%CREATURE:FORGOTTEN_BEAST_496:PANCREAS -#CREATURE:FORGOTTEN_BEAST_496:SPLEEN -#CREATURE:FORGOTTEN_BEAST_496:KIDNEY -#CREATURE:FORGOTTEN_BEAST_497:MUSCLE - CREATURE:FORGOTTEN_BEAST_497:EYE -"CREATURE:FORGOTTEN_BEAST_497:BRAIN -!CREATURE:FORGOTTEN_BEAST_497:LUNG -"CREATURE:FORGOTTEN_BEAST_497:HEART -"CREATURE:FORGOTTEN_BEAST_497:LIVER - CREATURE:FORGOTTEN_BEAST_497:GUT -$CREATURE:FORGOTTEN_BEAST_497:STOMACH -$CREATURE:FORGOTTEN_BEAST_497:GIZZARD -%CREATURE:FORGOTTEN_BEAST_497:PANCREAS -#CREATURE:FORGOTTEN_BEAST_497:SPLEEN -#CREATURE:FORGOTTEN_BEAST_497:KIDNEY -#CREATURE:FORGOTTEN_BEAST_498:MUSCLE - CREATURE:FORGOTTEN_BEAST_498:EYE -"CREATURE:FORGOTTEN_BEAST_498:BRAIN -!CREATURE:FORGOTTEN_BEAST_498:LUNG -"CREATURE:FORGOTTEN_BEAST_498:HEART -"CREATURE:FORGOTTEN_BEAST_498:LIVER - CREATURE:FORGOTTEN_BEAST_498:GUT -$CREATURE:FORGOTTEN_BEAST_498:STOMACH -$CREATURE:FORGOTTEN_BEAST_498:GIZZARD -%CREATURE:FORGOTTEN_BEAST_498:PANCREAS -#CREATURE:FORGOTTEN_BEAST_498:SPLEEN -#CREATURE:FORGOTTEN_BEAST_498:KIDNEY -#CREATURE:FORGOTTEN_BEAST_499:MUSCLE - CREATURE:FORGOTTEN_BEAST_499:EYE -"CREATURE:FORGOTTEN_BEAST_499:BRAIN -!CREATURE:FORGOTTEN_BEAST_499:LUNG -"CREATURE:FORGOTTEN_BEAST_499:HEART -"CREATURE:FORGOTTEN_BEAST_499:LIVER - CREATURE:FORGOTTEN_BEAST_499:GUT -$CREATURE:FORGOTTEN_BEAST_499:STOMACH -$CREATURE:FORGOTTEN_BEAST_499:GIZZARD -%CREATURE:FORGOTTEN_BEAST_499:PANCREAS -#CREATURE:FORGOTTEN_BEAST_499:SPLEEN -#CREATURE:FORGOTTEN_BEAST_499:KIDNEY -#CREATURE:FORGOTTEN_BEAST_501:MUSCLE - CREATURE:FORGOTTEN_BEAST_501:EYE -"CREATURE:FORGOTTEN_BEAST_501:BRAIN -!CREATURE:FORGOTTEN_BEAST_501:LUNG -"CREATURE:FORGOTTEN_BEAST_501:HEART -"CREATURE:FORGOTTEN_BEAST_501:LIVER - CREATURE:FORGOTTEN_BEAST_501:GUT -$CREATURE:FORGOTTEN_BEAST_501:STOMACH -$CREATURE:FORGOTTEN_BEAST_501:GIZZARD -%CREATURE:FORGOTTEN_BEAST_501:PANCREAS -#CREATURE:FORGOTTEN_BEAST_501:SPLEEN -#CREATURE:FORGOTTEN_BEAST_501:KIDNEY -#CREATURE:FORGOTTEN_BEAST_503:MUSCLE - CREATURE:FORGOTTEN_BEAST_503:EYE -"CREATURE:FORGOTTEN_BEAST_503:BRAIN -!CREATURE:FORGOTTEN_BEAST_503:LUNG -"CREATURE:FORGOTTEN_BEAST_503:HEART -"CREATURE:FORGOTTEN_BEAST_503:LIVER - CREATURE:FORGOTTEN_BEAST_503:GUT -$CREATURE:FORGOTTEN_BEAST_503:STOMACH -$CREATURE:FORGOTTEN_BEAST_503:GIZZARD -%CREATURE:FORGOTTEN_BEAST_503:PANCREAS -#CREATURE:FORGOTTEN_BEAST_503:SPLEEN -#CREATURE:FORGOTTEN_BEAST_503:KIDNEY -#CREATURE:FORGOTTEN_BEAST_504:MUSCLE - CREATURE:FORGOTTEN_BEAST_504:EYE -"CREATURE:FORGOTTEN_BEAST_504:BRAIN -!CREATURE:FORGOTTEN_BEAST_504:LUNG -"CREATURE:FORGOTTEN_BEAST_504:HEART -"CREATURE:FORGOTTEN_BEAST_504:LIVER - CREATURE:FORGOTTEN_BEAST_504:GUT -$CREATURE:FORGOTTEN_BEAST_504:STOMACH -$CREATURE:FORGOTTEN_BEAST_504:GIZZARD -%CREATURE:FORGOTTEN_BEAST_504:PANCREAS -#CREATURE:FORGOTTEN_BEAST_504:SPLEEN -#CREATURE:FORGOTTEN_BEAST_504:KIDNEY -#CREATURE:FORGOTTEN_BEAST_505:MUSCLE - CREATURE:FORGOTTEN_BEAST_505:EYE -"CREATURE:FORGOTTEN_BEAST_505:BRAIN -!CREATURE:FORGOTTEN_BEAST_505:LUNG -"CREATURE:FORGOTTEN_BEAST_505:HEART -"CREATURE:FORGOTTEN_BEAST_505:LIVER - CREATURE:FORGOTTEN_BEAST_505:GUT -$CREATURE:FORGOTTEN_BEAST_505:STOMACH -$CREATURE:FORGOTTEN_BEAST_505:GIZZARD -%CREATURE:FORGOTTEN_BEAST_505:PANCREAS -#CREATURE:FORGOTTEN_BEAST_505:SPLEEN -#CREATURE:FORGOTTEN_BEAST_505:KIDNEY -#CREATURE:FORGOTTEN_BEAST_507:MUSCLE - CREATURE:FORGOTTEN_BEAST_507:EYE -"CREATURE:FORGOTTEN_BEAST_507:BRAIN -!CREATURE:FORGOTTEN_BEAST_507:LUNG -"CREATURE:FORGOTTEN_BEAST_507:HEART -"CREATURE:FORGOTTEN_BEAST_507:LIVER - CREATURE:FORGOTTEN_BEAST_507:GUT -$CREATURE:FORGOTTEN_BEAST_507:STOMACH -$CREATURE:FORGOTTEN_BEAST_507:GIZZARD -%CREATURE:FORGOTTEN_BEAST_507:PANCREAS -#CREATURE:FORGOTTEN_BEAST_507:SPLEEN -#CREATURE:FORGOTTEN_BEAST_507:KIDNEY -#CREATURE:FORGOTTEN_BEAST_508:MUSCLE - CREATURE:FORGOTTEN_BEAST_508:EYE -"CREATURE:FORGOTTEN_BEAST_508:BRAIN -!CREATURE:FORGOTTEN_BEAST_508:LUNG -"CREATURE:FORGOTTEN_BEAST_508:HEART -"CREATURE:FORGOTTEN_BEAST_508:LIVER - CREATURE:FORGOTTEN_BEAST_508:GUT -$CREATURE:FORGOTTEN_BEAST_508:STOMACH -$CREATURE:FORGOTTEN_BEAST_508:GIZZARD -%CREATURE:FORGOTTEN_BEAST_508:PANCREAS -#CREATURE:FORGOTTEN_BEAST_508:SPLEEN -#CREATURE:FORGOTTEN_BEAST_508:KIDNEY -#CREATURE:FORGOTTEN_BEAST_510:MUSCLE - CREATURE:FORGOTTEN_BEAST_510:EYE -"CREATURE:FORGOTTEN_BEAST_510:BRAIN -!CREATURE:FORGOTTEN_BEAST_510:LUNG -"CREATURE:FORGOTTEN_BEAST_510:HEART -"CREATURE:FORGOTTEN_BEAST_510:LIVER - CREATURE:FORGOTTEN_BEAST_510:GUT -$CREATURE:FORGOTTEN_BEAST_510:STOMACH -$CREATURE:FORGOTTEN_BEAST_510:GIZZARD -%CREATURE:FORGOTTEN_BEAST_510:PANCREAS -#CREATURE:FORGOTTEN_BEAST_510:SPLEEN -#CREATURE:FORGOTTEN_BEAST_510:KIDNEY -#CREATURE:FORGOTTEN_BEAST_512:MUSCLE - CREATURE:FORGOTTEN_BEAST_512:EYE -"CREATURE:FORGOTTEN_BEAST_512:BRAIN -!CREATURE:FORGOTTEN_BEAST_512:LUNG -"CREATURE:FORGOTTEN_BEAST_512:HEART -"CREATURE:FORGOTTEN_BEAST_512:LIVER - CREATURE:FORGOTTEN_BEAST_512:GUT -$CREATURE:FORGOTTEN_BEAST_512:STOMACH -$CREATURE:FORGOTTEN_BEAST_512:GIZZARD -%CREATURE:FORGOTTEN_BEAST_512:PANCREAS -#CREATURE:FORGOTTEN_BEAST_512:SPLEEN -#CREATURE:FORGOTTEN_BEAST_512:KIDNEY -#CREATURE:FORGOTTEN_BEAST_513:MUSCLE - CREATURE:FORGOTTEN_BEAST_513:EYE -"CREATURE:FORGOTTEN_BEAST_513:BRAIN -!CREATURE:FORGOTTEN_BEAST_513:LUNG -"CREATURE:FORGOTTEN_BEAST_513:HEART -"CREATURE:FORGOTTEN_BEAST_513:LIVER - CREATURE:FORGOTTEN_BEAST_513:GUT -$CREATURE:FORGOTTEN_BEAST_513:STOMACH -$CREATURE:FORGOTTEN_BEAST_513:GIZZARD -%CREATURE:FORGOTTEN_BEAST_513:PANCREAS -#CREATURE:FORGOTTEN_BEAST_513:SPLEEN -#CREATURE:FORGOTTEN_BEAST_513:KIDNEY -#CREATURE:FORGOTTEN_BEAST_514:MUSCLE - CREATURE:FORGOTTEN_BEAST_514:EYE -"CREATURE:FORGOTTEN_BEAST_514:BRAIN -!CREATURE:FORGOTTEN_BEAST_514:LUNG -"CREATURE:FORGOTTEN_BEAST_514:HEART -"CREATURE:FORGOTTEN_BEAST_514:LIVER - CREATURE:FORGOTTEN_BEAST_514:GUT -$CREATURE:FORGOTTEN_BEAST_514:STOMACH -$CREATURE:FORGOTTEN_BEAST_514:GIZZARD -%CREATURE:FORGOTTEN_BEAST_514:PANCREAS -#CREATURE:FORGOTTEN_BEAST_514:SPLEEN -#CREATURE:FORGOTTEN_BEAST_514:KIDNEY -#CREATURE:FORGOTTEN_BEAST_515:MUSCLE - CREATURE:FORGOTTEN_BEAST_515:EYE -"CREATURE:FORGOTTEN_BEAST_515:BRAIN -!CREATURE:FORGOTTEN_BEAST_515:LUNG -"CREATURE:FORGOTTEN_BEAST_515:HEART -"CREATURE:FORGOTTEN_BEAST_515:LIVER - CREATURE:FORGOTTEN_BEAST_515:GUT -$CREATURE:FORGOTTEN_BEAST_515:STOMACH -$CREATURE:FORGOTTEN_BEAST_515:GIZZARD -%CREATURE:FORGOTTEN_BEAST_515:PANCREAS -#CREATURE:FORGOTTEN_BEAST_515:SPLEEN -#CREATURE:FORGOTTEN_BEAST_515:KIDNEY -#CREATURE:FORGOTTEN_BEAST_516:MUSCLE - CREATURE:FORGOTTEN_BEAST_516:EYE -"CREATURE:FORGOTTEN_BEAST_516:BRAIN -!CREATURE:FORGOTTEN_BEAST_516:LUNG -"CREATURE:FORGOTTEN_BEAST_516:HEART -"CREATURE:FORGOTTEN_BEAST_516:LIVER - CREATURE:FORGOTTEN_BEAST_516:GUT -$CREATURE:FORGOTTEN_BEAST_516:STOMACH -$CREATURE:FORGOTTEN_BEAST_516:GIZZARD -%CREATURE:FORGOTTEN_BEAST_516:PANCREAS -#CREATURE:FORGOTTEN_BEAST_516:SPLEEN -#CREATURE:FORGOTTEN_BEAST_516:KIDNEY -#CREATURE:FORGOTTEN_BEAST_517:MUSCLE - CREATURE:FORGOTTEN_BEAST_517:EYE -"CREATURE:FORGOTTEN_BEAST_517:BRAIN -!CREATURE:FORGOTTEN_BEAST_517:LUNG -"CREATURE:FORGOTTEN_BEAST_517:HEART -"CREATURE:FORGOTTEN_BEAST_517:LIVER - CREATURE:FORGOTTEN_BEAST_517:GUT -$CREATURE:FORGOTTEN_BEAST_517:STOMACH -$CREATURE:FORGOTTEN_BEAST_517:GIZZARD -%CREATURE:FORGOTTEN_BEAST_517:PANCREAS -#CREATURE:FORGOTTEN_BEAST_517:SPLEEN -#CREATURE:FORGOTTEN_BEAST_517:KIDNEY -#CREATURE:FORGOTTEN_BEAST_518:MUSCLE - CREATURE:FORGOTTEN_BEAST_518:EYE -"CREATURE:FORGOTTEN_BEAST_518:BRAIN -!CREATURE:FORGOTTEN_BEAST_518:LUNG -"CREATURE:FORGOTTEN_BEAST_518:HEART -"CREATURE:FORGOTTEN_BEAST_518:LIVER - CREATURE:FORGOTTEN_BEAST_518:GUT -$CREATURE:FORGOTTEN_BEAST_518:STOMACH -$CREATURE:FORGOTTEN_BEAST_518:GIZZARD -%CREATURE:FORGOTTEN_BEAST_518:PANCREAS -#CREATURE:FORGOTTEN_BEAST_518:SPLEEN -#CREATURE:FORGOTTEN_BEAST_518:KIDNEY -#CREATURE:FORGOTTEN_BEAST_519:MUSCLE - CREATURE:FORGOTTEN_BEAST_519:EYE -"CREATURE:FORGOTTEN_BEAST_519:BRAIN -!CREATURE:FORGOTTEN_BEAST_519:LUNG -"CREATURE:FORGOTTEN_BEAST_519:HEART -"CREATURE:FORGOTTEN_BEAST_519:LIVER - CREATURE:FORGOTTEN_BEAST_519:GUT -$CREATURE:FORGOTTEN_BEAST_519:STOMACH -$CREATURE:FORGOTTEN_BEAST_519:GIZZARD -%CREATURE:FORGOTTEN_BEAST_519:PANCREAS -#CREATURE:FORGOTTEN_BEAST_519:SPLEEN -#CREATURE:FORGOTTEN_BEAST_519:KIDNEY -#CREATURE:FORGOTTEN_BEAST_520:MUSCLE - CREATURE:FORGOTTEN_BEAST_520:EYE -"CREATURE:FORGOTTEN_BEAST_520:BRAIN -!CREATURE:FORGOTTEN_BEAST_520:LUNG -"CREATURE:FORGOTTEN_BEAST_520:HEART -"CREATURE:FORGOTTEN_BEAST_520:LIVER - CREATURE:FORGOTTEN_BEAST_520:GUT -$CREATURE:FORGOTTEN_BEAST_520:STOMACH -$CREATURE:FORGOTTEN_BEAST_520:GIZZARD -%CREATURE:FORGOTTEN_BEAST_520:PANCREAS -#CREATURE:FORGOTTEN_BEAST_520:SPLEEN -#CREATURE:FORGOTTEN_BEAST_520:KIDNEY -#CREATURE:FORGOTTEN_BEAST_521:MUSCLE - CREATURE:FORGOTTEN_BEAST_521:EYE -"CREATURE:FORGOTTEN_BEAST_521:BRAIN -!CREATURE:FORGOTTEN_BEAST_521:LUNG -"CREATURE:FORGOTTEN_BEAST_521:HEART -"CREATURE:FORGOTTEN_BEAST_521:LIVER - CREATURE:FORGOTTEN_BEAST_521:GUT -$CREATURE:FORGOTTEN_BEAST_521:STOMACH -$CREATURE:FORGOTTEN_BEAST_521:GIZZARD -%CREATURE:FORGOTTEN_BEAST_521:PANCREAS -#CREATURE:FORGOTTEN_BEAST_521:SPLEEN -#CREATURE:FORGOTTEN_BEAST_521:KIDNEY -#CREATURE:FORGOTTEN_BEAST_522:MUSCLE - CREATURE:FORGOTTEN_BEAST_522:EYE -"CREATURE:FORGOTTEN_BEAST_522:BRAIN -!CREATURE:FORGOTTEN_BEAST_522:LUNG -"CREATURE:FORGOTTEN_BEAST_522:HEART -"CREATURE:FORGOTTEN_BEAST_522:LIVER - CREATURE:FORGOTTEN_BEAST_522:GUT -$CREATURE:FORGOTTEN_BEAST_522:STOMACH -$CREATURE:FORGOTTEN_BEAST_522:GIZZARD -%CREATURE:FORGOTTEN_BEAST_522:PANCREAS -#CREATURE:FORGOTTEN_BEAST_522:SPLEEN -#CREATURE:FORGOTTEN_BEAST_522:KIDNEY -#CREATURE:FORGOTTEN_BEAST_523:MUSCLE - CREATURE:FORGOTTEN_BEAST_523:EYE -"CREATURE:FORGOTTEN_BEAST_523:BRAIN -!CREATURE:FORGOTTEN_BEAST_523:LUNG -"CREATURE:FORGOTTEN_BEAST_523:HEART -"CREATURE:FORGOTTEN_BEAST_523:LIVER - CREATURE:FORGOTTEN_BEAST_523:GUT -$CREATURE:FORGOTTEN_BEAST_523:STOMACH -$CREATURE:FORGOTTEN_BEAST_523:GIZZARD -%CREATURE:FORGOTTEN_BEAST_523:PANCREAS -#CREATURE:FORGOTTEN_BEAST_523:SPLEEN -#CREATURE:FORGOTTEN_BEAST_523:KIDNEY -#CREATURE:FORGOTTEN_BEAST_525:MUSCLE - CREATURE:FORGOTTEN_BEAST_525:EYE -"CREATURE:FORGOTTEN_BEAST_525:BRAIN -!CREATURE:FORGOTTEN_BEAST_525:LUNG -"CREATURE:FORGOTTEN_BEAST_525:HEART -"CREATURE:FORGOTTEN_BEAST_525:LIVER - CREATURE:FORGOTTEN_BEAST_525:GUT -$CREATURE:FORGOTTEN_BEAST_525:STOMACH -$CREATURE:FORGOTTEN_BEAST_525:GIZZARD -%CREATURE:FORGOTTEN_BEAST_525:PANCREAS -#CREATURE:FORGOTTEN_BEAST_525:SPLEEN -#CREATURE:FORGOTTEN_BEAST_525:KIDNEY -#CREATURE:FORGOTTEN_BEAST_526:MUSCLE - CREATURE:FORGOTTEN_BEAST_526:EYE -"CREATURE:FORGOTTEN_BEAST_526:BRAIN -!CREATURE:FORGOTTEN_BEAST_526:LUNG -"CREATURE:FORGOTTEN_BEAST_526:HEART -"CREATURE:FORGOTTEN_BEAST_526:LIVER - CREATURE:FORGOTTEN_BEAST_526:GUT -$CREATURE:FORGOTTEN_BEAST_526:STOMACH -$CREATURE:FORGOTTEN_BEAST_526:GIZZARD -%CREATURE:FORGOTTEN_BEAST_526:PANCREAS -#CREATURE:FORGOTTEN_BEAST_526:SPLEEN -#CREATURE:FORGOTTEN_BEAST_526:KIDNEY -#CREATURE:FORGOTTEN_BEAST_527:MUSCLE - CREATURE:FORGOTTEN_BEAST_527:EYE -"CREATURE:FORGOTTEN_BEAST_527:BRAIN -!CREATURE:FORGOTTEN_BEAST_527:LUNG -"CREATURE:FORGOTTEN_BEAST_527:HEART -"CREATURE:FORGOTTEN_BEAST_527:LIVER - CREATURE:FORGOTTEN_BEAST_527:GUT -$CREATURE:FORGOTTEN_BEAST_527:STOMACH -$CREATURE:FORGOTTEN_BEAST_527:GIZZARD -%CREATURE:FORGOTTEN_BEAST_527:PANCREAS -#CREATURE:FORGOTTEN_BEAST_527:SPLEEN -#CREATURE:FORGOTTEN_BEAST_527:KIDNEY -#CREATURE:FORGOTTEN_BEAST_528:MUSCLE - CREATURE:FORGOTTEN_BEAST_528:EYE -"CREATURE:FORGOTTEN_BEAST_528:BRAIN -!CREATURE:FORGOTTEN_BEAST_528:LUNG -"CREATURE:FORGOTTEN_BEAST_528:HEART -"CREATURE:FORGOTTEN_BEAST_528:LIVER - CREATURE:FORGOTTEN_BEAST_528:GUT -$CREATURE:FORGOTTEN_BEAST_528:STOMACH -$CREATURE:FORGOTTEN_BEAST_528:GIZZARD -%CREATURE:FORGOTTEN_BEAST_528:PANCREAS -#CREATURE:FORGOTTEN_BEAST_528:SPLEEN -#CREATURE:FORGOTTEN_BEAST_528:KIDNEY -#CREATURE:FORGOTTEN_BEAST_529:MUSCLE - CREATURE:FORGOTTEN_BEAST_529:EYE -"CREATURE:FORGOTTEN_BEAST_529:BRAIN -!CREATURE:FORGOTTEN_BEAST_529:LUNG -"CREATURE:FORGOTTEN_BEAST_529:HEART -"CREATURE:FORGOTTEN_BEAST_529:LIVER - CREATURE:FORGOTTEN_BEAST_529:GUT -$CREATURE:FORGOTTEN_BEAST_529:STOMACH -$CREATURE:FORGOTTEN_BEAST_529:GIZZARD -%CREATURE:FORGOTTEN_BEAST_529:PANCREAS -#CREATURE:FORGOTTEN_BEAST_529:SPLEEN -#CREATURE:FORGOTTEN_BEAST_529:KIDNEY -#CREATURE:FORGOTTEN_BEAST_530:MUSCLE - CREATURE:FORGOTTEN_BEAST_530:EYE -"CREATURE:FORGOTTEN_BEAST_530:BRAIN -!CREATURE:FORGOTTEN_BEAST_530:LUNG -"CREATURE:FORGOTTEN_BEAST_530:HEART -"CREATURE:FORGOTTEN_BEAST_530:LIVER - CREATURE:FORGOTTEN_BEAST_530:GUT -$CREATURE:FORGOTTEN_BEAST_530:STOMACH -$CREATURE:FORGOTTEN_BEAST_530:GIZZARD -%CREATURE:FORGOTTEN_BEAST_530:PANCREAS -#CREATURE:FORGOTTEN_BEAST_530:SPLEEN -#CREATURE:FORGOTTEN_BEAST_530:KIDNEY -#CREATURE:FORGOTTEN_BEAST_531:MUSCLE - CREATURE:FORGOTTEN_BEAST_531:EYE -"CREATURE:FORGOTTEN_BEAST_531:BRAIN -!CREATURE:FORGOTTEN_BEAST_531:LUNG -"CREATURE:FORGOTTEN_BEAST_531:HEART -"CREATURE:FORGOTTEN_BEAST_531:LIVER - CREATURE:FORGOTTEN_BEAST_531:GUT -$CREATURE:FORGOTTEN_BEAST_531:STOMACH -$CREATURE:FORGOTTEN_BEAST_531:GIZZARD -%CREATURE:FORGOTTEN_BEAST_531:PANCREAS -#CREATURE:FORGOTTEN_BEAST_531:SPLEEN -#CREATURE:FORGOTTEN_BEAST_531:KIDNEY -#CREATURE:FORGOTTEN_BEAST_532:MUSCLE - CREATURE:FORGOTTEN_BEAST_532:EYE -"CREATURE:FORGOTTEN_BEAST_532:BRAIN -!CREATURE:FORGOTTEN_BEAST_532:LUNG -"CREATURE:FORGOTTEN_BEAST_532:HEART -"CREATURE:FORGOTTEN_BEAST_532:LIVER - CREATURE:FORGOTTEN_BEAST_532:GUT -$CREATURE:FORGOTTEN_BEAST_532:STOMACH -$CREATURE:FORGOTTEN_BEAST_532:GIZZARD -%CREATURE:FORGOTTEN_BEAST_532:PANCREAS -#CREATURE:FORGOTTEN_BEAST_532:SPLEEN -#CREATURE:FORGOTTEN_BEAST_532:KIDNEY -#CREATURE:FORGOTTEN_BEAST_533:MUSCLE - CREATURE:FORGOTTEN_BEAST_533:EYE -"CREATURE:FORGOTTEN_BEAST_533:BRAIN -!CREATURE:FORGOTTEN_BEAST_533:LUNG -"CREATURE:FORGOTTEN_BEAST_533:HEART -"CREATURE:FORGOTTEN_BEAST_533:LIVER - CREATURE:FORGOTTEN_BEAST_533:GUT -$CREATURE:FORGOTTEN_BEAST_533:STOMACH -$CREATURE:FORGOTTEN_BEAST_533:GIZZARD -%CREATURE:FORGOTTEN_BEAST_533:PANCREAS -#CREATURE:FORGOTTEN_BEAST_533:SPLEEN -#CREATURE:FORGOTTEN_BEAST_533:KIDNEY -#CREATURE:FORGOTTEN_BEAST_534:MUSCLE - CREATURE:FORGOTTEN_BEAST_534:EYE -"CREATURE:FORGOTTEN_BEAST_534:BRAIN -!CREATURE:FORGOTTEN_BEAST_534:LUNG -"CREATURE:FORGOTTEN_BEAST_534:HEART -"CREATURE:FORGOTTEN_BEAST_534:LIVER - CREATURE:FORGOTTEN_BEAST_534:GUT -$CREATURE:FORGOTTEN_BEAST_534:STOMACH -$CREATURE:FORGOTTEN_BEAST_534:GIZZARD -%CREATURE:FORGOTTEN_BEAST_534:PANCREAS -#CREATURE:FORGOTTEN_BEAST_534:SPLEEN -#CREATURE:FORGOTTEN_BEAST_534:KIDNEY -#CREATURE:FORGOTTEN_BEAST_535:MUSCLE - CREATURE:FORGOTTEN_BEAST_535:EYE -"CREATURE:FORGOTTEN_BEAST_535:BRAIN -!CREATURE:FORGOTTEN_BEAST_535:LUNG -"CREATURE:FORGOTTEN_BEAST_535:HEART -"CREATURE:FORGOTTEN_BEAST_535:LIVER - CREATURE:FORGOTTEN_BEAST_535:GUT -$CREATURE:FORGOTTEN_BEAST_535:STOMACH -$CREATURE:FORGOTTEN_BEAST_535:GIZZARD -%CREATURE:FORGOTTEN_BEAST_535:PANCREAS -#CREATURE:FORGOTTEN_BEAST_535:SPLEEN -#CREATURE:FORGOTTEN_BEAST_535:KIDNEY -#CREATURE:FORGOTTEN_BEAST_536:MUSCLE - CREATURE:FORGOTTEN_BEAST_536:EYE -"CREATURE:FORGOTTEN_BEAST_536:BRAIN -!CREATURE:FORGOTTEN_BEAST_536:LUNG -"CREATURE:FORGOTTEN_BEAST_536:HEART -"CREATURE:FORGOTTEN_BEAST_536:LIVER - CREATURE:FORGOTTEN_BEAST_536:GUT -$CREATURE:FORGOTTEN_BEAST_536:STOMACH -$CREATURE:FORGOTTEN_BEAST_536:GIZZARD -%CREATURE:FORGOTTEN_BEAST_536:PANCREAS -#CREATURE:FORGOTTEN_BEAST_536:SPLEEN -#CREATURE:FORGOTTEN_BEAST_536:KIDNEY -#CREATURE:FORGOTTEN_BEAST_539:MUSCLE - CREATURE:FORGOTTEN_BEAST_539:EYE -"CREATURE:FORGOTTEN_BEAST_539:BRAIN -!CREATURE:FORGOTTEN_BEAST_539:LUNG -"CREATURE:FORGOTTEN_BEAST_539:HEART -"CREATURE:FORGOTTEN_BEAST_539:LIVER - CREATURE:FORGOTTEN_BEAST_539:GUT -$CREATURE:FORGOTTEN_BEAST_539:STOMACH -$CREATURE:FORGOTTEN_BEAST_539:GIZZARD -%CREATURE:FORGOTTEN_BEAST_539:PANCREAS -#CREATURE:FORGOTTEN_BEAST_539:SPLEEN -#CREATURE:FORGOTTEN_BEAST_539:KIDNEY -#CREATURE:FORGOTTEN_BEAST_540:MUSCLE - CREATURE:FORGOTTEN_BEAST_540:EYE -"CREATURE:FORGOTTEN_BEAST_540:BRAIN -!CREATURE:FORGOTTEN_BEAST_540:LUNG -"CREATURE:FORGOTTEN_BEAST_540:HEART -"CREATURE:FORGOTTEN_BEAST_540:LIVER - CREATURE:FORGOTTEN_BEAST_540:GUT -$CREATURE:FORGOTTEN_BEAST_540:STOMACH -$CREATURE:FORGOTTEN_BEAST_540:GIZZARD -%CREATURE:FORGOTTEN_BEAST_540:PANCREAS -#CREATURE:FORGOTTEN_BEAST_540:SPLEEN -#CREATURE:FORGOTTEN_BEAST_540:KIDNEY -#CREATURE:FORGOTTEN_BEAST_541:MUSCLE - CREATURE:FORGOTTEN_BEAST_541:EYE -"CREATURE:FORGOTTEN_BEAST_541:BRAIN -!CREATURE:FORGOTTEN_BEAST_541:LUNG -"CREATURE:FORGOTTEN_BEAST_541:HEART -"CREATURE:FORGOTTEN_BEAST_541:LIVER - CREATURE:FORGOTTEN_BEAST_541:GUT -$CREATURE:FORGOTTEN_BEAST_541:STOMACH -$CREATURE:FORGOTTEN_BEAST_541:GIZZARD -%CREATURE:FORGOTTEN_BEAST_541:PANCREAS -#CREATURE:FORGOTTEN_BEAST_541:SPLEEN -#CREATURE:FORGOTTEN_BEAST_541:KIDNEY -#CREATURE:FORGOTTEN_BEAST_543:MUSCLE - CREATURE:FORGOTTEN_BEAST_543:EYE -"CREATURE:FORGOTTEN_BEAST_543:BRAIN -!CREATURE:FORGOTTEN_BEAST_543:LUNG -"CREATURE:FORGOTTEN_BEAST_543:HEART -"CREATURE:FORGOTTEN_BEAST_543:LIVER - CREATURE:FORGOTTEN_BEAST_543:GUT -$CREATURE:FORGOTTEN_BEAST_543:STOMACH -$CREATURE:FORGOTTEN_BEAST_543:GIZZARD -%CREATURE:FORGOTTEN_BEAST_543:PANCREAS -#CREATURE:FORGOTTEN_BEAST_543:SPLEEN -#CREATURE:FORGOTTEN_BEAST_543:KIDNEY -#CREATURE:FORGOTTEN_BEAST_545:MUSCLE - CREATURE:FORGOTTEN_BEAST_545:EYE -"CREATURE:FORGOTTEN_BEAST_545:BRAIN -!CREATURE:FORGOTTEN_BEAST_545:LUNG -"CREATURE:FORGOTTEN_BEAST_545:HEART -"CREATURE:FORGOTTEN_BEAST_545:LIVER - CREATURE:FORGOTTEN_BEAST_545:GUT -$CREATURE:FORGOTTEN_BEAST_545:STOMACH -$CREATURE:FORGOTTEN_BEAST_545:GIZZARD -%CREATURE:FORGOTTEN_BEAST_545:PANCREAS -#CREATURE:FORGOTTEN_BEAST_545:SPLEEN -#CREATURE:FORGOTTEN_BEAST_545:KIDNEY -#CREATURE:FORGOTTEN_BEAST_546:MUSCLE - CREATURE:FORGOTTEN_BEAST_546:EYE -"CREATURE:FORGOTTEN_BEAST_546:BRAIN -!CREATURE:FORGOTTEN_BEAST_546:LUNG -"CREATURE:FORGOTTEN_BEAST_546:HEART -"CREATURE:FORGOTTEN_BEAST_546:LIVER - CREATURE:FORGOTTEN_BEAST_546:GUT -$CREATURE:FORGOTTEN_BEAST_546:STOMACH -$CREATURE:FORGOTTEN_BEAST_546:GIZZARD -%CREATURE:FORGOTTEN_BEAST_546:PANCREAS -#CREATURE:FORGOTTEN_BEAST_546:SPLEEN -#CREATURE:FORGOTTEN_BEAST_546:KIDNEY -#CREATURE:FORGOTTEN_BEAST_547:MUSCLE - CREATURE:FORGOTTEN_BEAST_547:EYE -"CREATURE:FORGOTTEN_BEAST_547:BRAIN -!CREATURE:FORGOTTEN_BEAST_547:LUNG -"CREATURE:FORGOTTEN_BEAST_547:HEART -"CREATURE:FORGOTTEN_BEAST_547:LIVER - CREATURE:FORGOTTEN_BEAST_547:GUT -$CREATURE:FORGOTTEN_BEAST_547:STOMACH -$CREATURE:FORGOTTEN_BEAST_547:GIZZARD -%CREATURE:FORGOTTEN_BEAST_547:PANCREAS -#CREATURE:FORGOTTEN_BEAST_547:SPLEEN -#CREATURE:FORGOTTEN_BEAST_547:KIDNEY -#CREATURE:FORGOTTEN_BEAST_548:MUSCLE - CREATURE:FORGOTTEN_BEAST_548:EYE -"CREATURE:FORGOTTEN_BEAST_548:BRAIN -!CREATURE:FORGOTTEN_BEAST_548:LUNG -"CREATURE:FORGOTTEN_BEAST_548:HEART -"CREATURE:FORGOTTEN_BEAST_548:LIVER - CREATURE:FORGOTTEN_BEAST_548:GUT -$CREATURE:FORGOTTEN_BEAST_548:STOMACH -$CREATURE:FORGOTTEN_BEAST_548:GIZZARD -%CREATURE:FORGOTTEN_BEAST_548:PANCREAS -#CREATURE:FORGOTTEN_BEAST_548:SPLEEN -#CREATURE:FORGOTTEN_BEAST_548:KIDNEY -#CREATURE:FORGOTTEN_BEAST_549:MUSCLE - CREATURE:FORGOTTEN_BEAST_549:EYE -"CREATURE:FORGOTTEN_BEAST_549:BRAIN -!CREATURE:FORGOTTEN_BEAST_549:LUNG -"CREATURE:FORGOTTEN_BEAST_549:HEART -"CREATURE:FORGOTTEN_BEAST_549:LIVER - CREATURE:FORGOTTEN_BEAST_549:GUT -$CREATURE:FORGOTTEN_BEAST_549:STOMACH -$CREATURE:FORGOTTEN_BEAST_549:GIZZARD -%CREATURE:FORGOTTEN_BEAST_549:PANCREAS -#CREATURE:FORGOTTEN_BEAST_549:SPLEEN -#CREATURE:FORGOTTEN_BEAST_549:KIDNEY -#CREATURE:FORGOTTEN_BEAST_550:MUSCLE - CREATURE:FORGOTTEN_BEAST_550:EYE -"CREATURE:FORGOTTEN_BEAST_550:BRAIN -!CREATURE:FORGOTTEN_BEAST_550:LUNG -"CREATURE:FORGOTTEN_BEAST_550:HEART -"CREATURE:FORGOTTEN_BEAST_550:LIVER - CREATURE:FORGOTTEN_BEAST_550:GUT -$CREATURE:FORGOTTEN_BEAST_550:STOMACH -$CREATURE:FORGOTTEN_BEAST_550:GIZZARD -%CREATURE:FORGOTTEN_BEAST_550:PANCREAS -#CREATURE:FORGOTTEN_BEAST_550:SPLEEN -#CREATURE:FORGOTTEN_BEAST_550:KIDNEY -#CREATURE:FORGOTTEN_BEAST_551:MUSCLE - CREATURE:FORGOTTEN_BEAST_551:EYE -"CREATURE:FORGOTTEN_BEAST_551:BRAIN -!CREATURE:FORGOTTEN_BEAST_551:LUNG -"CREATURE:FORGOTTEN_BEAST_551:HEART -"CREATURE:FORGOTTEN_BEAST_551:LIVER - CREATURE:FORGOTTEN_BEAST_551:GUT -$CREATURE:FORGOTTEN_BEAST_551:STOMACH -$CREATURE:FORGOTTEN_BEAST_551:GIZZARD -%CREATURE:FORGOTTEN_BEAST_551:PANCREAS -#CREATURE:FORGOTTEN_BEAST_551:SPLEEN -#CREATURE:FORGOTTEN_BEAST_551:KIDNEY -#CREATURE:FORGOTTEN_BEAST_554:MUSCLE - CREATURE:FORGOTTEN_BEAST_554:EYE -"CREATURE:FORGOTTEN_BEAST_554:BRAIN -!CREATURE:FORGOTTEN_BEAST_554:LUNG -"CREATURE:FORGOTTEN_BEAST_554:HEART -"CREATURE:FORGOTTEN_BEAST_554:LIVER - CREATURE:FORGOTTEN_BEAST_554:GUT -$CREATURE:FORGOTTEN_BEAST_554:STOMACH -$CREATURE:FORGOTTEN_BEAST_554:GIZZARD -%CREATURE:FORGOTTEN_BEAST_554:PANCREAS -#CREATURE:FORGOTTEN_BEAST_554:SPLEEN -#CREATURE:FORGOTTEN_BEAST_554:KIDNEY -#CREATURE:FORGOTTEN_BEAST_555:MUSCLE - CREATURE:FORGOTTEN_BEAST_555:EYE -"CREATURE:FORGOTTEN_BEAST_555:BRAIN -!CREATURE:FORGOTTEN_BEAST_555:LUNG -"CREATURE:FORGOTTEN_BEAST_555:HEART -"CREATURE:FORGOTTEN_BEAST_555:LIVER - CREATURE:FORGOTTEN_BEAST_555:GUT -$CREATURE:FORGOTTEN_BEAST_555:STOMACH -$CREATURE:FORGOTTEN_BEAST_555:GIZZARD -%CREATURE:FORGOTTEN_BEAST_555:PANCREAS -#CREATURE:FORGOTTEN_BEAST_555:SPLEEN -#CREATURE:FORGOTTEN_BEAST_555:KIDNEY -#CREATURE:FORGOTTEN_BEAST_556:MUSCLE - CREATURE:FORGOTTEN_BEAST_556:EYE -"CREATURE:FORGOTTEN_BEAST_556:BRAIN -!CREATURE:FORGOTTEN_BEAST_556:LUNG -"CREATURE:FORGOTTEN_BEAST_556:HEART -"CREATURE:FORGOTTEN_BEAST_556:LIVER - CREATURE:FORGOTTEN_BEAST_556:GUT -$CREATURE:FORGOTTEN_BEAST_556:STOMACH -$CREATURE:FORGOTTEN_BEAST_556:GIZZARD -%CREATURE:FORGOTTEN_BEAST_556:PANCREAS -#CREATURE:FORGOTTEN_BEAST_556:SPLEEN -#CREATURE:FORGOTTEN_BEAST_556:KIDNEY -#CREATURE:FORGOTTEN_BEAST_557:MUSCLE - CREATURE:FORGOTTEN_BEAST_557:EYE -"CREATURE:FORGOTTEN_BEAST_557:BRAIN -!CREATURE:FORGOTTEN_BEAST_557:LUNG -"CREATURE:FORGOTTEN_BEAST_557:HEART -"CREATURE:FORGOTTEN_BEAST_557:LIVER - CREATURE:FORGOTTEN_BEAST_557:GUT -$CREATURE:FORGOTTEN_BEAST_557:STOMACH -$CREATURE:FORGOTTEN_BEAST_557:GIZZARD -%CREATURE:FORGOTTEN_BEAST_557:PANCREAS -#CREATURE:FORGOTTEN_BEAST_557:SPLEEN -#CREATURE:FORGOTTEN_BEAST_557:KIDNEY -#CREATURE:FORGOTTEN_BEAST_561:MUSCLE - CREATURE:FORGOTTEN_BEAST_561:EYE -"CREATURE:FORGOTTEN_BEAST_561:BRAIN -!CREATURE:FORGOTTEN_BEAST_561:LUNG -"CREATURE:FORGOTTEN_BEAST_561:HEART -"CREATURE:FORGOTTEN_BEAST_561:LIVER - CREATURE:FORGOTTEN_BEAST_561:GUT -$CREATURE:FORGOTTEN_BEAST_561:STOMACH -$CREATURE:FORGOTTEN_BEAST_561:GIZZARD -%CREATURE:FORGOTTEN_BEAST_561:PANCREAS -#CREATURE:FORGOTTEN_BEAST_561:SPLEEN -#CREATURE:FORGOTTEN_BEAST_561:KIDNEY -#CREATURE:FORGOTTEN_BEAST_562:MUSCLE - CREATURE:FORGOTTEN_BEAST_562:EYE -"CREATURE:FORGOTTEN_BEAST_562:BRAIN -!CREATURE:FORGOTTEN_BEAST_562:LUNG -"CREATURE:FORGOTTEN_BEAST_562:HEART -"CREATURE:FORGOTTEN_BEAST_562:LIVER - CREATURE:FORGOTTEN_BEAST_562:GUT -$CREATURE:FORGOTTEN_BEAST_562:STOMACH -$CREATURE:FORGOTTEN_BEAST_562:GIZZARD -%CREATURE:FORGOTTEN_BEAST_562:PANCREAS -#CREATURE:FORGOTTEN_BEAST_562:SPLEEN -#CREATURE:FORGOTTEN_BEAST_562:KIDNEY -#CREATURE:FORGOTTEN_BEAST_564:MUSCLE - CREATURE:FORGOTTEN_BEAST_564:EYE -"CREATURE:FORGOTTEN_BEAST_564:BRAIN -!CREATURE:FORGOTTEN_BEAST_564:LUNG -"CREATURE:FORGOTTEN_BEAST_564:HEART -"CREATURE:FORGOTTEN_BEAST_564:LIVER - CREATURE:FORGOTTEN_BEAST_564:GUT -$CREATURE:FORGOTTEN_BEAST_564:STOMACH -$CREATURE:FORGOTTEN_BEAST_564:GIZZARD -%CREATURE:FORGOTTEN_BEAST_564:PANCREAS -#CREATURE:FORGOTTEN_BEAST_564:SPLEEN -#CREATURE:FORGOTTEN_BEAST_564:KIDNEY -#CREATURE:FORGOTTEN_BEAST_569:MUSCLE - CREATURE:FORGOTTEN_BEAST_569:EYE -"CREATURE:FORGOTTEN_BEAST_569:BRAIN -!CREATURE:FORGOTTEN_BEAST_569:LUNG -"CREATURE:FORGOTTEN_BEAST_569:HEART -"CREATURE:FORGOTTEN_BEAST_569:LIVER - CREATURE:FORGOTTEN_BEAST_569:GUT -$CREATURE:FORGOTTEN_BEAST_569:STOMACH -$CREATURE:FORGOTTEN_BEAST_569:GIZZARD -%CREATURE:FORGOTTEN_BEAST_569:PANCREAS -#CREATURE:FORGOTTEN_BEAST_569:SPLEEN -#CREATURE:FORGOTTEN_BEAST_569:KIDNEY -#CREATURE:FORGOTTEN_BEAST_570:MUSCLE - CREATURE:FORGOTTEN_BEAST_570:EYE -"CREATURE:FORGOTTEN_BEAST_570:BRAIN -!CREATURE:FORGOTTEN_BEAST_570:LUNG -"CREATURE:FORGOTTEN_BEAST_570:HEART -"CREATURE:FORGOTTEN_BEAST_570:LIVER - CREATURE:FORGOTTEN_BEAST_570:GUT -$CREATURE:FORGOTTEN_BEAST_570:STOMACH -$CREATURE:FORGOTTEN_BEAST_570:GIZZARD -%CREATURE:FORGOTTEN_BEAST_570:PANCREAS -#CREATURE:FORGOTTEN_BEAST_570:SPLEEN -#CREATURE:FORGOTTEN_BEAST_570:KIDNEY -#CREATURE:FORGOTTEN_BEAST_571:MUSCLE - CREATURE:FORGOTTEN_BEAST_571:EYE -"CREATURE:FORGOTTEN_BEAST_571:BRAIN -!CREATURE:FORGOTTEN_BEAST_571:LUNG -"CREATURE:FORGOTTEN_BEAST_571:HEART -"CREATURE:FORGOTTEN_BEAST_571:LIVER - CREATURE:FORGOTTEN_BEAST_571:GUT -$CREATURE:FORGOTTEN_BEAST_571:STOMACH -$CREATURE:FORGOTTEN_BEAST_571:GIZZARD -%CREATURE:FORGOTTEN_BEAST_571:PANCREAS -#CREATURE:FORGOTTEN_BEAST_571:SPLEEN -#CREATURE:FORGOTTEN_BEAST_571:KIDNEY -#CREATURE:FORGOTTEN_BEAST_572:MUSCLE - CREATURE:FORGOTTEN_BEAST_572:EYE -"CREATURE:FORGOTTEN_BEAST_572:BRAIN -!CREATURE:FORGOTTEN_BEAST_572:LUNG -"CREATURE:FORGOTTEN_BEAST_572:HEART -"CREATURE:FORGOTTEN_BEAST_572:LIVER - CREATURE:FORGOTTEN_BEAST_572:GUT -$CREATURE:FORGOTTEN_BEAST_572:STOMACH -$CREATURE:FORGOTTEN_BEAST_572:GIZZARD -%CREATURE:FORGOTTEN_BEAST_572:PANCREAS -#CREATURE:FORGOTTEN_BEAST_572:SPLEEN -#CREATURE:FORGOTTEN_BEAST_572:KIDNEY -#CREATURE:FORGOTTEN_BEAST_574:MUSCLE - CREATURE:FORGOTTEN_BEAST_574:EYE -"CREATURE:FORGOTTEN_BEAST_574:BRAIN -!CREATURE:FORGOTTEN_BEAST_574:LUNG -"CREATURE:FORGOTTEN_BEAST_574:HEART -"CREATURE:FORGOTTEN_BEAST_574:LIVER - CREATURE:FORGOTTEN_BEAST_574:GUT -$CREATURE:FORGOTTEN_BEAST_574:STOMACH -$CREATURE:FORGOTTEN_BEAST_574:GIZZARD -%CREATURE:FORGOTTEN_BEAST_574:PANCREAS -#CREATURE:FORGOTTEN_BEAST_574:SPLEEN -#CREATURE:FORGOTTEN_BEAST_574:KIDNEY -#CREATURE:FORGOTTEN_BEAST_576:MUSCLE - CREATURE:FORGOTTEN_BEAST_576:EYE -"CREATURE:FORGOTTEN_BEAST_576:BRAIN -!CREATURE:FORGOTTEN_BEAST_576:LUNG -"CREATURE:FORGOTTEN_BEAST_576:HEART -"CREATURE:FORGOTTEN_BEAST_576:LIVER - CREATURE:FORGOTTEN_BEAST_576:GUT -$CREATURE:FORGOTTEN_BEAST_576:STOMACH -$CREATURE:FORGOTTEN_BEAST_576:GIZZARD -%CREATURE:FORGOTTEN_BEAST_576:PANCREAS -#CREATURE:FORGOTTEN_BEAST_576:SPLEEN -#CREATURE:FORGOTTEN_BEAST_576:KIDNEY -#CREATURE:FORGOTTEN_BEAST_578:MUSCLE - CREATURE:FORGOTTEN_BEAST_578:EYE -"CREATURE:FORGOTTEN_BEAST_578:BRAIN -!CREATURE:FORGOTTEN_BEAST_578:LUNG -"CREATURE:FORGOTTEN_BEAST_578:HEART -"CREATURE:FORGOTTEN_BEAST_578:LIVER - CREATURE:FORGOTTEN_BEAST_578:GUT -$CREATURE:FORGOTTEN_BEAST_578:STOMACH -$CREATURE:FORGOTTEN_BEAST_578:GIZZARD -%CREATURE:FORGOTTEN_BEAST_578:PANCREAS -#CREATURE:FORGOTTEN_BEAST_578:SPLEEN -#CREATURE:FORGOTTEN_BEAST_578:KIDNEY -#CREATURE:FORGOTTEN_BEAST_579:MUSCLE - CREATURE:FORGOTTEN_BEAST_579:EYE -"CREATURE:FORGOTTEN_BEAST_579:BRAIN -!CREATURE:FORGOTTEN_BEAST_579:LUNG -"CREATURE:FORGOTTEN_BEAST_579:HEART -"CREATURE:FORGOTTEN_BEAST_579:LIVER - CREATURE:FORGOTTEN_BEAST_579:GUT -$CREATURE:FORGOTTEN_BEAST_579:STOMACH -$CREATURE:FORGOTTEN_BEAST_579:GIZZARD -%CREATURE:FORGOTTEN_BEAST_579:PANCREAS -#CREATURE:FORGOTTEN_BEAST_579:SPLEEN -#CREATURE:FORGOTTEN_BEAST_579:KIDNEY -#CREATURE:FORGOTTEN_BEAST_580:MUSCLE - CREATURE:FORGOTTEN_BEAST_580:EYE -"CREATURE:FORGOTTEN_BEAST_580:BRAIN -!CREATURE:FORGOTTEN_BEAST_580:LUNG -"CREATURE:FORGOTTEN_BEAST_580:HEART -"CREATURE:FORGOTTEN_BEAST_580:LIVER - CREATURE:FORGOTTEN_BEAST_580:GUT -$CREATURE:FORGOTTEN_BEAST_580:STOMACH -$CREATURE:FORGOTTEN_BEAST_580:GIZZARD -%CREATURE:FORGOTTEN_BEAST_580:PANCREAS -#CREATURE:FORGOTTEN_BEAST_580:SPLEEN -#CREATURE:FORGOTTEN_BEAST_580:KIDNEY -#CREATURE:FORGOTTEN_BEAST_581:MUSCLE - CREATURE:FORGOTTEN_BEAST_581:EYE -"CREATURE:FORGOTTEN_BEAST_581:BRAIN -!CREATURE:FORGOTTEN_BEAST_581:LUNG -"CREATURE:FORGOTTEN_BEAST_581:HEART -"CREATURE:FORGOTTEN_BEAST_581:LIVER - CREATURE:FORGOTTEN_BEAST_581:GUT -$CREATURE:FORGOTTEN_BEAST_581:STOMACH -$CREATURE:FORGOTTEN_BEAST_581:GIZZARD -%CREATURE:FORGOTTEN_BEAST_581:PANCREAS -#CREATURE:FORGOTTEN_BEAST_581:SPLEEN -#CREATURE:FORGOTTEN_BEAST_581:KIDNEY -#CREATURE:FORGOTTEN_BEAST_583:MUSCLE - CREATURE:FORGOTTEN_BEAST_583:EYE -"CREATURE:FORGOTTEN_BEAST_583:BRAIN -!CREATURE:FORGOTTEN_BEAST_583:LUNG -"CREATURE:FORGOTTEN_BEAST_583:HEART -"CREATURE:FORGOTTEN_BEAST_583:LIVER - CREATURE:FORGOTTEN_BEAST_583:GUT -$CREATURE:FORGOTTEN_BEAST_583:STOMACH -$CREATURE:FORGOTTEN_BEAST_583:GIZZARD -%CREATURE:FORGOTTEN_BEAST_583:PANCREAS -#CREATURE:FORGOTTEN_BEAST_583:SPLEEN -#CREATURE:FORGOTTEN_BEAST_583:KIDNEY -#CREATURE:FORGOTTEN_BEAST_584:MUSCLE - CREATURE:FORGOTTEN_BEAST_584:EYE -"CREATURE:FORGOTTEN_BEAST_584:BRAIN -!CREATURE:FORGOTTEN_BEAST_584:LUNG -"CREATURE:FORGOTTEN_BEAST_584:HEART -"CREATURE:FORGOTTEN_BEAST_584:LIVER - CREATURE:FORGOTTEN_BEAST_584:GUT -$CREATURE:FORGOTTEN_BEAST_584:STOMACH -$CREATURE:FORGOTTEN_BEAST_584:GIZZARD -%CREATURE:FORGOTTEN_BEAST_584:PANCREAS -#CREATURE:FORGOTTEN_BEAST_584:SPLEEN -#CREATURE:FORGOTTEN_BEAST_584:KIDNEY -#CREATURE:FORGOTTEN_BEAST_586:MUSCLE - CREATURE:FORGOTTEN_BEAST_586:EYE -"CREATURE:FORGOTTEN_BEAST_586:BRAIN -!CREATURE:FORGOTTEN_BEAST_586:LUNG -"CREATURE:FORGOTTEN_BEAST_586:HEART -"CREATURE:FORGOTTEN_BEAST_586:LIVER - CREATURE:FORGOTTEN_BEAST_586:GUT -$CREATURE:FORGOTTEN_BEAST_586:STOMACH -$CREATURE:FORGOTTEN_BEAST_586:GIZZARD -%CREATURE:FORGOTTEN_BEAST_586:PANCREAS -#CREATURE:FORGOTTEN_BEAST_586:SPLEEN -#CREATURE:FORGOTTEN_BEAST_586:KIDNEY -#CREATURE:FORGOTTEN_BEAST_588:MUSCLE - CREATURE:FORGOTTEN_BEAST_588:EYE -"CREATURE:FORGOTTEN_BEAST_588:BRAIN -!CREATURE:FORGOTTEN_BEAST_588:LUNG -"CREATURE:FORGOTTEN_BEAST_588:HEART -"CREATURE:FORGOTTEN_BEAST_588:LIVER - CREATURE:FORGOTTEN_BEAST_588:GUT -$CREATURE:FORGOTTEN_BEAST_588:STOMACH -$CREATURE:FORGOTTEN_BEAST_588:GIZZARD -%CREATURE:FORGOTTEN_BEAST_588:PANCREAS -#CREATURE:FORGOTTEN_BEAST_588:SPLEEN -#CREATURE:FORGOTTEN_BEAST_588:KIDNEY -#CREATURE:FORGOTTEN_BEAST_589:MUSCLE - CREATURE:FORGOTTEN_BEAST_589:EYE -"CREATURE:FORGOTTEN_BEAST_589:BRAIN -!CREATURE:FORGOTTEN_BEAST_589:LUNG -"CREATURE:FORGOTTEN_BEAST_589:HEART -"CREATURE:FORGOTTEN_BEAST_589:LIVER - CREATURE:FORGOTTEN_BEAST_589:GUT -$CREATURE:FORGOTTEN_BEAST_589:STOMACH -$CREATURE:FORGOTTEN_BEAST_589:GIZZARD -%CREATURE:FORGOTTEN_BEAST_589:PANCREAS -#CREATURE:FORGOTTEN_BEAST_589:SPLEEN -#CREATURE:FORGOTTEN_BEAST_589:KIDNEY -#CREATURE:FORGOTTEN_BEAST_590:MUSCLE - CREATURE:FORGOTTEN_BEAST_590:EYE -"CREATURE:FORGOTTEN_BEAST_590:BRAIN -!CREATURE:FORGOTTEN_BEAST_590:LUNG -"CREATURE:FORGOTTEN_BEAST_590:HEART -"CREATURE:FORGOTTEN_BEAST_590:LIVER - CREATURE:FORGOTTEN_BEAST_590:GUT -$CREATURE:FORGOTTEN_BEAST_590:STOMACH -$CREATURE:FORGOTTEN_BEAST_590:GIZZARD -%CREATURE:FORGOTTEN_BEAST_590:PANCREAS -#CREATURE:FORGOTTEN_BEAST_590:SPLEEN -#CREATURE:FORGOTTEN_BEAST_590:KIDNEY -#CREATURE:FORGOTTEN_BEAST_592:MUSCLE - CREATURE:FORGOTTEN_BEAST_592:EYE -"CREATURE:FORGOTTEN_BEAST_592:BRAIN -!CREATURE:FORGOTTEN_BEAST_592:LUNG -"CREATURE:FORGOTTEN_BEAST_592:HEART -"CREATURE:FORGOTTEN_BEAST_592:LIVER - CREATURE:FORGOTTEN_BEAST_592:GUT -$CREATURE:FORGOTTEN_BEAST_592:STOMACH -$CREATURE:FORGOTTEN_BEAST_592:GIZZARD -%CREATURE:FORGOTTEN_BEAST_592:PANCREAS -#CREATURE:FORGOTTEN_BEAST_592:SPLEEN -#CREATURE:FORGOTTEN_BEAST_592:KIDNEY -#CREATURE:FORGOTTEN_BEAST_593:MUSCLE - CREATURE:FORGOTTEN_BEAST_593:EYE -"CREATURE:FORGOTTEN_BEAST_593:BRAIN -!CREATURE:FORGOTTEN_BEAST_593:LUNG -"CREATURE:FORGOTTEN_BEAST_593:HEART -"CREATURE:FORGOTTEN_BEAST_593:LIVER - CREATURE:FORGOTTEN_BEAST_593:GUT -$CREATURE:FORGOTTEN_BEAST_593:STOMACH -$CREATURE:FORGOTTEN_BEAST_593:GIZZARD -%CREATURE:FORGOTTEN_BEAST_593:PANCREAS -#CREATURE:FORGOTTEN_BEAST_593:SPLEEN -#CREATURE:FORGOTTEN_BEAST_593:KIDNEY -#CREATURE:FORGOTTEN_BEAST_594:MUSCLE - CREATURE:FORGOTTEN_BEAST_594:EYE -"CREATURE:FORGOTTEN_BEAST_594:BRAIN -!CREATURE:FORGOTTEN_BEAST_594:LUNG -"CREATURE:FORGOTTEN_BEAST_594:HEART -"CREATURE:FORGOTTEN_BEAST_594:LIVER - CREATURE:FORGOTTEN_BEAST_594:GUT -$CREATURE:FORGOTTEN_BEAST_594:STOMACH -$CREATURE:FORGOTTEN_BEAST_594:GIZZARD -%CREATURE:FORGOTTEN_BEAST_594:PANCREAS -#CREATURE:FORGOTTEN_BEAST_594:SPLEEN -#CREATURE:FORGOTTEN_BEAST_594:KIDNEY -#CREATURE:FORGOTTEN_BEAST_595:MUSCLE - CREATURE:FORGOTTEN_BEAST_595:EYE -"CREATURE:FORGOTTEN_BEAST_595:BRAIN -!CREATURE:FORGOTTEN_BEAST_595:LUNG -"CREATURE:FORGOTTEN_BEAST_595:HEART -"CREATURE:FORGOTTEN_BEAST_595:LIVER - CREATURE:FORGOTTEN_BEAST_595:GUT -$CREATURE:FORGOTTEN_BEAST_595:STOMACH -$CREATURE:FORGOTTEN_BEAST_595:GIZZARD -%CREATURE:FORGOTTEN_BEAST_595:PANCREAS -#CREATURE:FORGOTTEN_BEAST_595:SPLEEN -#CREATURE:FORGOTTEN_BEAST_595:KIDNEY -#CREATURE:FORGOTTEN_BEAST_596:MUSCLE - CREATURE:FORGOTTEN_BEAST_596:EYE -"CREATURE:FORGOTTEN_BEAST_596:BRAIN -!CREATURE:FORGOTTEN_BEAST_596:LUNG -"CREATURE:FORGOTTEN_BEAST_596:HEART -"CREATURE:FORGOTTEN_BEAST_596:LIVER - CREATURE:FORGOTTEN_BEAST_596:GUT -$CREATURE:FORGOTTEN_BEAST_596:STOMACH -$CREATURE:FORGOTTEN_BEAST_596:GIZZARD -%CREATURE:FORGOTTEN_BEAST_596:PANCREAS -#CREATURE:FORGOTTEN_BEAST_596:SPLEEN -#CREATURE:FORGOTTEN_BEAST_596:KIDNEY -#CREATURE:FORGOTTEN_BEAST_597:MUSCLE - CREATURE:FORGOTTEN_BEAST_597:EYE -"CREATURE:FORGOTTEN_BEAST_597:BRAIN -!CREATURE:FORGOTTEN_BEAST_597:LUNG -"CREATURE:FORGOTTEN_BEAST_597:HEART -"CREATURE:FORGOTTEN_BEAST_597:LIVER - CREATURE:FORGOTTEN_BEAST_597:GUT -$CREATURE:FORGOTTEN_BEAST_597:STOMACH -$CREATURE:FORGOTTEN_BEAST_597:GIZZARD -%CREATURE:FORGOTTEN_BEAST_597:PANCREAS -#CREATURE:FORGOTTEN_BEAST_597:SPLEEN -#CREATURE:FORGOTTEN_BEAST_597:KIDNEY -#CREATURE:FORGOTTEN_BEAST_599:MUSCLE - CREATURE:FORGOTTEN_BEAST_599:EYE -"CREATURE:FORGOTTEN_BEAST_599:BRAIN -!CREATURE:FORGOTTEN_BEAST_599:LUNG -"CREATURE:FORGOTTEN_BEAST_599:HEART -"CREATURE:FORGOTTEN_BEAST_599:LIVER - CREATURE:FORGOTTEN_BEAST_599:GUT -$CREATURE:FORGOTTEN_BEAST_599:STOMACH -$CREATURE:FORGOTTEN_BEAST_599:GIZZARD -%CREATURE:FORGOTTEN_BEAST_599:PANCREAS -#CREATURE:FORGOTTEN_BEAST_599:SPLEEN -#CREATURE:FORGOTTEN_BEAST_599:KIDNEY -#CREATURE:FORGOTTEN_BEAST_600:MUSCLE - CREATURE:FORGOTTEN_BEAST_600:EYE -"CREATURE:FORGOTTEN_BEAST_600:BRAIN -!CREATURE:FORGOTTEN_BEAST_600:LUNG -"CREATURE:FORGOTTEN_BEAST_600:HEART -"CREATURE:FORGOTTEN_BEAST_600:LIVER - CREATURE:FORGOTTEN_BEAST_600:GUT -$CREATURE:FORGOTTEN_BEAST_600:STOMACH -$CREATURE:FORGOTTEN_BEAST_600:GIZZARD -%CREATURE:FORGOTTEN_BEAST_600:PANCREAS -#CREATURE:FORGOTTEN_BEAST_600:SPLEEN -#CREATURE:FORGOTTEN_BEAST_600:KIDNEY -#CREATURE:FORGOTTEN_BEAST_601:MUSCLE - CREATURE:FORGOTTEN_BEAST_601:EYE -"CREATURE:FORGOTTEN_BEAST_601:BRAIN -!CREATURE:FORGOTTEN_BEAST_601:LUNG -"CREATURE:FORGOTTEN_BEAST_601:HEART -"CREATURE:FORGOTTEN_BEAST_601:LIVER - CREATURE:FORGOTTEN_BEAST_601:GUT -$CREATURE:FORGOTTEN_BEAST_601:STOMACH -$CREATURE:FORGOTTEN_BEAST_601:GIZZARD -%CREATURE:FORGOTTEN_BEAST_601:PANCREAS -#CREATURE:FORGOTTEN_BEAST_601:SPLEEN -#CREATURE:FORGOTTEN_BEAST_601:KIDNEY -#CREATURE:FORGOTTEN_BEAST_603:MUSCLE - CREATURE:FORGOTTEN_BEAST_603:EYE -"CREATURE:FORGOTTEN_BEAST_603:BRAIN -!CREATURE:FORGOTTEN_BEAST_603:LUNG -"CREATURE:FORGOTTEN_BEAST_603:HEART -"CREATURE:FORGOTTEN_BEAST_603:LIVER - CREATURE:FORGOTTEN_BEAST_603:GUT -$CREATURE:FORGOTTEN_BEAST_603:STOMACH -$CREATURE:FORGOTTEN_BEAST_603:GIZZARD -%CREATURE:FORGOTTEN_BEAST_603:PANCREAS -#CREATURE:FORGOTTEN_BEAST_603:SPLEEN -#CREATURE:FORGOTTEN_BEAST_603:KIDNEY -#CREATURE:FORGOTTEN_BEAST_605:MUSCLE - CREATURE:FORGOTTEN_BEAST_605:EYE -"CREATURE:FORGOTTEN_BEAST_605:BRAIN -!CREATURE:FORGOTTEN_BEAST_605:LUNG -"CREATURE:FORGOTTEN_BEAST_605:HEART -"CREATURE:FORGOTTEN_BEAST_605:LIVER - CREATURE:FORGOTTEN_BEAST_605:GUT -$CREATURE:FORGOTTEN_BEAST_605:STOMACH -$CREATURE:FORGOTTEN_BEAST_605:GIZZARD -%CREATURE:FORGOTTEN_BEAST_605:PANCREAS -#CREATURE:FORGOTTEN_BEAST_605:SPLEEN -#CREATURE:FORGOTTEN_BEAST_605:KIDNEY -#CREATURE:FORGOTTEN_BEAST_607:MUSCLE - CREATURE:FORGOTTEN_BEAST_607:EYE -"CREATURE:FORGOTTEN_BEAST_607:BRAIN -!CREATURE:FORGOTTEN_BEAST_607:LUNG -"CREATURE:FORGOTTEN_BEAST_607:HEART -"CREATURE:FORGOTTEN_BEAST_607:LIVER - CREATURE:FORGOTTEN_BEAST_607:GUT -$CREATURE:FORGOTTEN_BEAST_607:STOMACH -$CREATURE:FORGOTTEN_BEAST_607:GIZZARD -%CREATURE:FORGOTTEN_BEAST_607:PANCREAS -#CREATURE:FORGOTTEN_BEAST_607:SPLEEN -#CREATURE:FORGOTTEN_BEAST_607:KIDNEY -#CREATURE:FORGOTTEN_BEAST_608:MUSCLE - CREATURE:FORGOTTEN_BEAST_608:EYE -"CREATURE:FORGOTTEN_BEAST_608:BRAIN -!CREATURE:FORGOTTEN_BEAST_608:LUNG -"CREATURE:FORGOTTEN_BEAST_608:HEART -"CREATURE:FORGOTTEN_BEAST_608:LIVER - CREATURE:FORGOTTEN_BEAST_608:GUT -$CREATURE:FORGOTTEN_BEAST_608:STOMACH -$CREATURE:FORGOTTEN_BEAST_608:GIZZARD -%CREATURE:FORGOTTEN_BEAST_608:PANCREAS -#CREATURE:FORGOTTEN_BEAST_608:SPLEEN -#CREATURE:FORGOTTEN_BEAST_608:KIDNEY -#CREATURE:FORGOTTEN_BEAST_609:MUSCLE - CREATURE:FORGOTTEN_BEAST_609:EYE -"CREATURE:FORGOTTEN_BEAST_609:BRAIN -!CREATURE:FORGOTTEN_BEAST_609:LUNG -"CREATURE:FORGOTTEN_BEAST_609:HEART -"CREATURE:FORGOTTEN_BEAST_609:LIVER - CREATURE:FORGOTTEN_BEAST_609:GUT -$CREATURE:FORGOTTEN_BEAST_609:STOMACH -$CREATURE:FORGOTTEN_BEAST_609:GIZZARD -%CREATURE:FORGOTTEN_BEAST_609:PANCREAS -#CREATURE:FORGOTTEN_BEAST_609:SPLEEN -#CREATURE:FORGOTTEN_BEAST_609:KIDNEY -#CREATURE:FORGOTTEN_BEAST_610:MUSCLE - CREATURE:FORGOTTEN_BEAST_610:EYE -"CREATURE:FORGOTTEN_BEAST_610:BRAIN -!CREATURE:FORGOTTEN_BEAST_610:LUNG -"CREATURE:FORGOTTEN_BEAST_610:HEART -"CREATURE:FORGOTTEN_BEAST_610:LIVER - CREATURE:FORGOTTEN_BEAST_610:GUT -$CREATURE:FORGOTTEN_BEAST_610:STOMACH -$CREATURE:FORGOTTEN_BEAST_610:GIZZARD -%CREATURE:FORGOTTEN_BEAST_610:PANCREAS -#CREATURE:FORGOTTEN_BEAST_610:SPLEEN -#CREATURE:FORGOTTEN_BEAST_610:KIDNEY -#CREATURE:FORGOTTEN_BEAST_611:MUSCLE - CREATURE:FORGOTTEN_BEAST_611:EYE -"CREATURE:FORGOTTEN_BEAST_611:BRAIN -!CREATURE:FORGOTTEN_BEAST_611:LUNG -"CREATURE:FORGOTTEN_BEAST_611:HEART -"CREATURE:FORGOTTEN_BEAST_611:LIVER - CREATURE:FORGOTTEN_BEAST_611:GUT -$CREATURE:FORGOTTEN_BEAST_611:STOMACH -$CREATURE:FORGOTTEN_BEAST_611:GIZZARD -%CREATURE:FORGOTTEN_BEAST_611:PANCREAS -#CREATURE:FORGOTTEN_BEAST_611:SPLEEN -#CREATURE:FORGOTTEN_BEAST_611:KIDNEY -#CREATURE:FORGOTTEN_BEAST_612:MUSCLE - CREATURE:FORGOTTEN_BEAST_612:EYE -"CREATURE:FORGOTTEN_BEAST_612:BRAIN -!CREATURE:FORGOTTEN_BEAST_612:LUNG -"CREATURE:FORGOTTEN_BEAST_612:HEART -"CREATURE:FORGOTTEN_BEAST_612:LIVER - CREATURE:FORGOTTEN_BEAST_612:GUT -$CREATURE:FORGOTTEN_BEAST_612:STOMACH -$CREATURE:FORGOTTEN_BEAST_612:GIZZARD -%CREATURE:FORGOTTEN_BEAST_612:PANCREAS -#CREATURE:FORGOTTEN_BEAST_612:SPLEEN -#CREATURE:FORGOTTEN_BEAST_612:KIDNEY -#CREATURE:FORGOTTEN_BEAST_613:MUSCLE - CREATURE:FORGOTTEN_BEAST_613:EYE -"CREATURE:FORGOTTEN_BEAST_613:BRAIN -!CREATURE:FORGOTTEN_BEAST_613:LUNG -"CREATURE:FORGOTTEN_BEAST_613:HEART -"CREATURE:FORGOTTEN_BEAST_613:LIVER - CREATURE:FORGOTTEN_BEAST_613:GUT -$CREATURE:FORGOTTEN_BEAST_613:STOMACH -$CREATURE:FORGOTTEN_BEAST_613:GIZZARD -%CREATURE:FORGOTTEN_BEAST_613:PANCREAS -#CREATURE:FORGOTTEN_BEAST_613:SPLEEN -#CREATURE:FORGOTTEN_BEAST_613:KIDNEY -#CREATURE:FORGOTTEN_BEAST_614:MUSCLE - CREATURE:FORGOTTEN_BEAST_614:EYE -"CREATURE:FORGOTTEN_BEAST_614:BRAIN -!CREATURE:FORGOTTEN_BEAST_614:LUNG -"CREATURE:FORGOTTEN_BEAST_614:HEART -"CREATURE:FORGOTTEN_BEAST_614:LIVER - CREATURE:FORGOTTEN_BEAST_614:GUT -$CREATURE:FORGOTTEN_BEAST_614:STOMACH -$CREATURE:FORGOTTEN_BEAST_614:GIZZARD -%CREATURE:FORGOTTEN_BEAST_614:PANCREAS -#CREATURE:FORGOTTEN_BEAST_614:SPLEEN -#CREATURE:FORGOTTEN_BEAST_614:KIDNEY -#CREATURE:FORGOTTEN_BEAST_616:MUSCLE - CREATURE:FORGOTTEN_BEAST_616:EYE -"CREATURE:FORGOTTEN_BEAST_616:BRAIN -!CREATURE:FORGOTTEN_BEAST_616:LUNG -"CREATURE:FORGOTTEN_BEAST_616:HEART -"CREATURE:FORGOTTEN_BEAST_616:LIVER - CREATURE:FORGOTTEN_BEAST_616:GUT -$CREATURE:FORGOTTEN_BEAST_616:STOMACH -$CREATURE:FORGOTTEN_BEAST_616:GIZZARD -%CREATURE:FORGOTTEN_BEAST_616:PANCREAS -#CREATURE:FORGOTTEN_BEAST_616:SPLEEN -#CREATURE:FORGOTTEN_BEAST_616:KIDNEY -#CREATURE:FORGOTTEN_BEAST_619:MUSCLE - CREATURE:FORGOTTEN_BEAST_619:EYE -"CREATURE:FORGOTTEN_BEAST_619:BRAIN -!CREATURE:FORGOTTEN_BEAST_619:LUNG -"CREATURE:FORGOTTEN_BEAST_619:HEART -"CREATURE:FORGOTTEN_BEAST_619:LIVER - CREATURE:FORGOTTEN_BEAST_619:GUT -$CREATURE:FORGOTTEN_BEAST_619:STOMACH -$CREATURE:FORGOTTEN_BEAST_619:GIZZARD -%CREATURE:FORGOTTEN_BEAST_619:PANCREAS -#CREATURE:FORGOTTEN_BEAST_619:SPLEEN -#CREATURE:FORGOTTEN_BEAST_619:KIDNEY -#CREATURE:FORGOTTEN_BEAST_620:MUSCLE - CREATURE:FORGOTTEN_BEAST_620:EYE -"CREATURE:FORGOTTEN_BEAST_620:BRAIN -!CREATURE:FORGOTTEN_BEAST_620:LUNG -"CREATURE:FORGOTTEN_BEAST_620:HEART -"CREATURE:FORGOTTEN_BEAST_620:LIVER - CREATURE:FORGOTTEN_BEAST_620:GUT -$CREATURE:FORGOTTEN_BEAST_620:STOMACH -$CREATURE:FORGOTTEN_BEAST_620:GIZZARD -%CREATURE:FORGOTTEN_BEAST_620:PANCREAS -#CREATURE:FORGOTTEN_BEAST_620:SPLEEN -#CREATURE:FORGOTTEN_BEAST_620:KIDNEY -#CREATURE:FORGOTTEN_BEAST_621:MUSCLE - CREATURE:FORGOTTEN_BEAST_621:EYE -"CREATURE:FORGOTTEN_BEAST_621:BRAIN -!CREATURE:FORGOTTEN_BEAST_621:LUNG -"CREATURE:FORGOTTEN_BEAST_621:HEART -"CREATURE:FORGOTTEN_BEAST_621:LIVER - CREATURE:FORGOTTEN_BEAST_621:GUT -$CREATURE:FORGOTTEN_BEAST_621:STOMACH -$CREATURE:FORGOTTEN_BEAST_621:GIZZARD -%CREATURE:FORGOTTEN_BEAST_621:PANCREAS -#CREATURE:FORGOTTEN_BEAST_621:SPLEEN -#CREATURE:FORGOTTEN_BEAST_621:KIDNEY -#CREATURE:FORGOTTEN_BEAST_623:MUSCLE - CREATURE:FORGOTTEN_BEAST_623:EYE -"CREATURE:FORGOTTEN_BEAST_623:BRAIN -!CREATURE:FORGOTTEN_BEAST_623:LUNG -"CREATURE:FORGOTTEN_BEAST_623:HEART -"CREATURE:FORGOTTEN_BEAST_623:LIVER - CREATURE:FORGOTTEN_BEAST_623:GUT -$CREATURE:FORGOTTEN_BEAST_623:STOMACH -$CREATURE:FORGOTTEN_BEAST_623:GIZZARD -%CREATURE:FORGOTTEN_BEAST_623:PANCREAS -#CREATURE:FORGOTTEN_BEAST_623:SPLEEN -#CREATURE:FORGOTTEN_BEAST_623:KIDNEY -#CREATURE:FORGOTTEN_BEAST_624:MUSCLE - CREATURE:FORGOTTEN_BEAST_624:EYE -"CREATURE:FORGOTTEN_BEAST_624:BRAIN -!CREATURE:FORGOTTEN_BEAST_624:LUNG -"CREATURE:FORGOTTEN_BEAST_624:HEART -"CREATURE:FORGOTTEN_BEAST_624:LIVER - CREATURE:FORGOTTEN_BEAST_624:GUT -$CREATURE:FORGOTTEN_BEAST_624:STOMACH -$CREATURE:FORGOTTEN_BEAST_624:GIZZARD -%CREATURE:FORGOTTEN_BEAST_624:PANCREAS -#CREATURE:FORGOTTEN_BEAST_624:SPLEEN -#CREATURE:FORGOTTEN_BEAST_624:KIDNEY -#CREATURE:FORGOTTEN_BEAST_625:MUSCLE - CREATURE:FORGOTTEN_BEAST_625:EYE -"CREATURE:FORGOTTEN_BEAST_625:BRAIN -!CREATURE:FORGOTTEN_BEAST_625:LUNG -"CREATURE:FORGOTTEN_BEAST_625:HEART -"CREATURE:FORGOTTEN_BEAST_625:LIVER - CREATURE:FORGOTTEN_BEAST_625:GUT -$CREATURE:FORGOTTEN_BEAST_625:STOMACH -$CREATURE:FORGOTTEN_BEAST_625:GIZZARD -%CREATURE:FORGOTTEN_BEAST_625:PANCREAS -#CREATURE:FORGOTTEN_BEAST_625:SPLEEN -#CREATURE:FORGOTTEN_BEAST_625:KIDNEY -#CREATURE:FORGOTTEN_BEAST_626:MUSCLE - CREATURE:FORGOTTEN_BEAST_626:EYE -"CREATURE:FORGOTTEN_BEAST_626:BRAIN -!CREATURE:FORGOTTEN_BEAST_626:LUNG -"CREATURE:FORGOTTEN_BEAST_626:HEART -"CREATURE:FORGOTTEN_BEAST_626:LIVER - CREATURE:FORGOTTEN_BEAST_626:GUT -$CREATURE:FORGOTTEN_BEAST_626:STOMACH -$CREATURE:FORGOTTEN_BEAST_626:GIZZARD -%CREATURE:FORGOTTEN_BEAST_626:PANCREAS -#CREATURE:FORGOTTEN_BEAST_626:SPLEEN -#CREATURE:FORGOTTEN_BEAST_626:KIDNEY -#CREATURE:FORGOTTEN_BEAST_627:MUSCLE - CREATURE:FORGOTTEN_BEAST_627:EYE -"CREATURE:FORGOTTEN_BEAST_627:BRAIN -!CREATURE:FORGOTTEN_BEAST_627:LUNG -"CREATURE:FORGOTTEN_BEAST_627:HEART -"CREATURE:FORGOTTEN_BEAST_627:LIVER - CREATURE:FORGOTTEN_BEAST_627:GUT -$CREATURE:FORGOTTEN_BEAST_627:STOMACH -$CREATURE:FORGOTTEN_BEAST_627:GIZZARD -%CREATURE:FORGOTTEN_BEAST_627:PANCREAS -#CREATURE:FORGOTTEN_BEAST_627:SPLEEN -#CREATURE:FORGOTTEN_BEAST_627:KIDNEY -#CREATURE:FORGOTTEN_BEAST_628:MUSCLE - CREATURE:FORGOTTEN_BEAST_628:EYE -"CREATURE:FORGOTTEN_BEAST_628:BRAIN -!CREATURE:FORGOTTEN_BEAST_628:LUNG -"CREATURE:FORGOTTEN_BEAST_628:HEART -"CREATURE:FORGOTTEN_BEAST_628:LIVER - CREATURE:FORGOTTEN_BEAST_628:GUT -$CREATURE:FORGOTTEN_BEAST_628:STOMACH -$CREATURE:FORGOTTEN_BEAST_628:GIZZARD -%CREATURE:FORGOTTEN_BEAST_628:PANCREAS -#CREATURE:FORGOTTEN_BEAST_628:SPLEEN -#CREATURE:FORGOTTEN_BEAST_628:KIDNEY -#CREATURE:FORGOTTEN_BEAST_629:MUSCLE - CREATURE:FORGOTTEN_BEAST_629:EYE -"CREATURE:FORGOTTEN_BEAST_629:BRAIN -!CREATURE:FORGOTTEN_BEAST_629:LUNG -"CREATURE:FORGOTTEN_BEAST_629:HEART -"CREATURE:FORGOTTEN_BEAST_629:LIVER - CREATURE:FORGOTTEN_BEAST_629:GUT -$CREATURE:FORGOTTEN_BEAST_629:STOMACH -$CREATURE:FORGOTTEN_BEAST_629:GIZZARD -%CREATURE:FORGOTTEN_BEAST_629:PANCREAS -#CREATURE:FORGOTTEN_BEAST_629:SPLEEN -#CREATURE:FORGOTTEN_BEAST_629:KIDNEY -#CREATURE:FORGOTTEN_BEAST_630:MUSCLE - CREATURE:FORGOTTEN_BEAST_630:EYE -"CREATURE:FORGOTTEN_BEAST_630:BRAIN -!CREATURE:FORGOTTEN_BEAST_630:LUNG -"CREATURE:FORGOTTEN_BEAST_630:HEART -"CREATURE:FORGOTTEN_BEAST_630:LIVER - CREATURE:FORGOTTEN_BEAST_630:GUT -$CREATURE:FORGOTTEN_BEAST_630:STOMACH -$CREATURE:FORGOTTEN_BEAST_630:GIZZARD -%CREATURE:FORGOTTEN_BEAST_630:PANCREAS -#CREATURE:FORGOTTEN_BEAST_630:SPLEEN -#CREATURE:FORGOTTEN_BEAST_630:KIDNEY -#CREATURE:FORGOTTEN_BEAST_631:MUSCLE - CREATURE:FORGOTTEN_BEAST_631:EYE -"CREATURE:FORGOTTEN_BEAST_631:BRAIN -!CREATURE:FORGOTTEN_BEAST_631:LUNG -"CREATURE:FORGOTTEN_BEAST_631:HEART -"CREATURE:FORGOTTEN_BEAST_631:LIVER - CREATURE:FORGOTTEN_BEAST_631:GUT -$CREATURE:FORGOTTEN_BEAST_631:STOMACH -$CREATURE:FORGOTTEN_BEAST_631:GIZZARD -%CREATURE:FORGOTTEN_BEAST_631:PANCREAS -#CREATURE:FORGOTTEN_BEAST_631:SPLEEN -#CREATURE:FORGOTTEN_BEAST_631:KIDNEY -#CREATURE:FORGOTTEN_BEAST_632:MUSCLE - CREATURE:FORGOTTEN_BEAST_632:EYE -"CREATURE:FORGOTTEN_BEAST_632:BRAIN -!CREATURE:FORGOTTEN_BEAST_632:LUNG -"CREATURE:FORGOTTEN_BEAST_632:HEART -"CREATURE:FORGOTTEN_BEAST_632:LIVER - CREATURE:FORGOTTEN_BEAST_632:GUT -$CREATURE:FORGOTTEN_BEAST_632:STOMACH -$CREATURE:FORGOTTEN_BEAST_632:GIZZARD -%CREATURE:FORGOTTEN_BEAST_632:PANCREAS -#CREATURE:FORGOTTEN_BEAST_632:SPLEEN -#CREATURE:FORGOTTEN_BEAST_632:KIDNEY -#CREATURE:FORGOTTEN_BEAST_633:MUSCLE - CREATURE:FORGOTTEN_BEAST_633:EYE -"CREATURE:FORGOTTEN_BEAST_633:BRAIN -!CREATURE:FORGOTTEN_BEAST_633:LUNG -"CREATURE:FORGOTTEN_BEAST_633:HEART -"CREATURE:FORGOTTEN_BEAST_633:LIVER - CREATURE:FORGOTTEN_BEAST_633:GUT -$CREATURE:FORGOTTEN_BEAST_633:STOMACH -$CREATURE:FORGOTTEN_BEAST_633:GIZZARD -%CREATURE:FORGOTTEN_BEAST_633:PANCREAS -#CREATURE:FORGOTTEN_BEAST_633:SPLEEN -#CREATURE:FORGOTTEN_BEAST_633:KIDNEY -#CREATURE:FORGOTTEN_BEAST_634:MUSCLE - CREATURE:FORGOTTEN_BEAST_634:EYE -"CREATURE:FORGOTTEN_BEAST_634:BRAIN -!CREATURE:FORGOTTEN_BEAST_634:LUNG -"CREATURE:FORGOTTEN_BEAST_634:HEART -"CREATURE:FORGOTTEN_BEAST_634:LIVER - CREATURE:FORGOTTEN_BEAST_634:GUT -$CREATURE:FORGOTTEN_BEAST_634:STOMACH -$CREATURE:FORGOTTEN_BEAST_634:GIZZARD -%CREATURE:FORGOTTEN_BEAST_634:PANCREAS -#CREATURE:FORGOTTEN_BEAST_634:SPLEEN -#CREATURE:FORGOTTEN_BEAST_634:KIDNEY -#CREATURE:FORGOTTEN_BEAST_635:MUSCLE - CREATURE:FORGOTTEN_BEAST_635:EYE -"CREATURE:FORGOTTEN_BEAST_635:BRAIN -!CREATURE:FORGOTTEN_BEAST_635:LUNG -"CREATURE:FORGOTTEN_BEAST_635:HEART -"CREATURE:FORGOTTEN_BEAST_635:LIVER - CREATURE:FORGOTTEN_BEAST_635:GUT -$CREATURE:FORGOTTEN_BEAST_635:STOMACH -$CREATURE:FORGOTTEN_BEAST_635:GIZZARD -%CREATURE:FORGOTTEN_BEAST_635:PANCREAS -#CREATURE:FORGOTTEN_BEAST_635:SPLEEN -#CREATURE:FORGOTTEN_BEAST_635:KIDNEY -#CREATURE:FORGOTTEN_BEAST_636:MUSCLE - CREATURE:FORGOTTEN_BEAST_636:EYE -"CREATURE:FORGOTTEN_BEAST_636:BRAIN -!CREATURE:FORGOTTEN_BEAST_636:LUNG -"CREATURE:FORGOTTEN_BEAST_636:HEART -"CREATURE:FORGOTTEN_BEAST_636:LIVER - CREATURE:FORGOTTEN_BEAST_636:GUT -$CREATURE:FORGOTTEN_BEAST_636:STOMACH -$CREATURE:FORGOTTEN_BEAST_636:GIZZARD -%CREATURE:FORGOTTEN_BEAST_636:PANCREAS -#CREATURE:FORGOTTEN_BEAST_636:SPLEEN -#CREATURE:FORGOTTEN_BEAST_636:KIDNEY -#CREATURE:FORGOTTEN_BEAST_637:MUSCLE - CREATURE:FORGOTTEN_BEAST_637:EYE -"CREATURE:FORGOTTEN_BEAST_637:BRAIN -!CREATURE:FORGOTTEN_BEAST_637:LUNG -"CREATURE:FORGOTTEN_BEAST_637:HEART -"CREATURE:FORGOTTEN_BEAST_637:LIVER - CREATURE:FORGOTTEN_BEAST_637:GUT -$CREATURE:FORGOTTEN_BEAST_637:STOMACH -$CREATURE:FORGOTTEN_BEAST_637:GIZZARD -%CREATURE:FORGOTTEN_BEAST_637:PANCREAS -#CREATURE:FORGOTTEN_BEAST_637:SPLEEN -#CREATURE:FORGOTTEN_BEAST_637:KIDNEY -#CREATURE:FORGOTTEN_BEAST_639:MUSCLE - CREATURE:FORGOTTEN_BEAST_639:EYE -"CREATURE:FORGOTTEN_BEAST_639:BRAIN -!CREATURE:FORGOTTEN_BEAST_639:LUNG -"CREATURE:FORGOTTEN_BEAST_639:HEART -"CREATURE:FORGOTTEN_BEAST_639:LIVER - CREATURE:FORGOTTEN_BEAST_639:GUT -$CREATURE:FORGOTTEN_BEAST_639:STOMACH -$CREATURE:FORGOTTEN_BEAST_639:GIZZARD -%CREATURE:FORGOTTEN_BEAST_639:PANCREAS -#CREATURE:FORGOTTEN_BEAST_639:SPLEEN -#CREATURE:FORGOTTEN_BEAST_639:KIDNEY -#CREATURE:FORGOTTEN_BEAST_640:MUSCLE - CREATURE:FORGOTTEN_BEAST_640:EYE -"CREATURE:FORGOTTEN_BEAST_640:BRAIN -!CREATURE:FORGOTTEN_BEAST_640:LUNG -"CREATURE:FORGOTTEN_BEAST_640:HEART -"CREATURE:FORGOTTEN_BEAST_640:LIVER - CREATURE:FORGOTTEN_BEAST_640:GUT -$CREATURE:FORGOTTEN_BEAST_640:STOMACH -$CREATURE:FORGOTTEN_BEAST_640:GIZZARD -%CREATURE:FORGOTTEN_BEAST_640:PANCREAS -#CREATURE:FORGOTTEN_BEAST_640:SPLEEN -#CREATURE:FORGOTTEN_BEAST_640:KIDNEY -#CREATURE:FORGOTTEN_BEAST_643:MUSCLE - CREATURE:FORGOTTEN_BEAST_643:EYE -"CREATURE:FORGOTTEN_BEAST_643:BRAIN -!CREATURE:FORGOTTEN_BEAST_643:LUNG -"CREATURE:FORGOTTEN_BEAST_643:HEART -"CREATURE:FORGOTTEN_BEAST_643:LIVER - CREATURE:FORGOTTEN_BEAST_643:GUT -$CREATURE:FORGOTTEN_BEAST_643:STOMACH -$CREATURE:FORGOTTEN_BEAST_643:GIZZARD -%CREATURE:FORGOTTEN_BEAST_643:PANCREAS -#CREATURE:FORGOTTEN_BEAST_643:SPLEEN -#CREATURE:FORGOTTEN_BEAST_643:KIDNEY -#CREATURE:FORGOTTEN_BEAST_644:MUSCLE - CREATURE:FORGOTTEN_BEAST_644:EYE -"CREATURE:FORGOTTEN_BEAST_644:BRAIN -!CREATURE:FORGOTTEN_BEAST_644:LUNG -"CREATURE:FORGOTTEN_BEAST_644:HEART -"CREATURE:FORGOTTEN_BEAST_644:LIVER - CREATURE:FORGOTTEN_BEAST_644:GUT -$CREATURE:FORGOTTEN_BEAST_644:STOMACH -$CREATURE:FORGOTTEN_BEAST_644:GIZZARD -%CREATURE:FORGOTTEN_BEAST_644:PANCREAS -#CREATURE:FORGOTTEN_BEAST_644:SPLEEN -#CREATURE:FORGOTTEN_BEAST_644:KIDNEY -#CREATURE:FORGOTTEN_BEAST_645:MUSCLE - CREATURE:FORGOTTEN_BEAST_645:EYE -"CREATURE:FORGOTTEN_BEAST_645:BRAIN -!CREATURE:FORGOTTEN_BEAST_645:LUNG -"CREATURE:FORGOTTEN_BEAST_645:HEART -"CREATURE:FORGOTTEN_BEAST_645:LIVER - CREATURE:FORGOTTEN_BEAST_645:GUT -$CREATURE:FORGOTTEN_BEAST_645:STOMACH -$CREATURE:FORGOTTEN_BEAST_645:GIZZARD -%CREATURE:FORGOTTEN_BEAST_645:PANCREAS -#CREATURE:FORGOTTEN_BEAST_645:SPLEEN -#CREATURE:FORGOTTEN_BEAST_645:KIDNEY -#CREATURE:FORGOTTEN_BEAST_646:MUSCLE - CREATURE:FORGOTTEN_BEAST_646:EYE -"CREATURE:FORGOTTEN_BEAST_646:BRAIN -!CREATURE:FORGOTTEN_BEAST_646:LUNG -"CREATURE:FORGOTTEN_BEAST_646:HEART -"CREATURE:FORGOTTEN_BEAST_646:LIVER - CREATURE:FORGOTTEN_BEAST_646:GUT -$CREATURE:FORGOTTEN_BEAST_646:STOMACH -$CREATURE:FORGOTTEN_BEAST_646:GIZZARD -%CREATURE:FORGOTTEN_BEAST_646:PANCREAS -#CREATURE:FORGOTTEN_BEAST_646:SPLEEN -#CREATURE:FORGOTTEN_BEAST_646:KIDNEY -#CREATURE:FORGOTTEN_BEAST_647:MUSCLE - CREATURE:FORGOTTEN_BEAST_647:EYE -"CREATURE:FORGOTTEN_BEAST_647:BRAIN -!CREATURE:FORGOTTEN_BEAST_647:LUNG -"CREATURE:FORGOTTEN_BEAST_647:HEART -"CREATURE:FORGOTTEN_BEAST_647:LIVER - CREATURE:FORGOTTEN_BEAST_647:GUT -$CREATURE:FORGOTTEN_BEAST_647:STOMACH -$CREATURE:FORGOTTEN_BEAST_647:GIZZARD -%CREATURE:FORGOTTEN_BEAST_647:PANCREAS -#CREATURE:FORGOTTEN_BEAST_647:SPLEEN -#CREATURE:FORGOTTEN_BEAST_647:KIDNEY -#CREATURE:FORGOTTEN_BEAST_649:MUSCLE - CREATURE:FORGOTTEN_BEAST_649:EYE -"CREATURE:FORGOTTEN_BEAST_649:BRAIN -!CREATURE:FORGOTTEN_BEAST_649:LUNG -"CREATURE:FORGOTTEN_BEAST_649:HEART -"CREATURE:FORGOTTEN_BEAST_649:LIVER - CREATURE:FORGOTTEN_BEAST_649:GUT -$CREATURE:FORGOTTEN_BEAST_649:STOMACH -$CREATURE:FORGOTTEN_BEAST_649:GIZZARD -%CREATURE:FORGOTTEN_BEAST_649:PANCREAS -#CREATURE:FORGOTTEN_BEAST_649:SPLEEN -#CREATURE:FORGOTTEN_BEAST_649:KIDNEY -#CREATURE:FORGOTTEN_BEAST_650:MUSCLE - CREATURE:FORGOTTEN_BEAST_650:EYE -"CREATURE:FORGOTTEN_BEAST_650:BRAIN -!CREATURE:FORGOTTEN_BEAST_650:LUNG -"CREATURE:FORGOTTEN_BEAST_650:HEART -"CREATURE:FORGOTTEN_BEAST_650:LIVER - CREATURE:FORGOTTEN_BEAST_650:GUT -$CREATURE:FORGOTTEN_BEAST_650:STOMACH -$CREATURE:FORGOTTEN_BEAST_650:GIZZARD -%CREATURE:FORGOTTEN_BEAST_650:PANCREAS -#CREATURE:FORGOTTEN_BEAST_650:SPLEEN -#CREATURE:FORGOTTEN_BEAST_650:KIDNEY -#CREATURE:FORGOTTEN_BEAST_651:MUSCLE - CREATURE:FORGOTTEN_BEAST_651:EYE -"CREATURE:FORGOTTEN_BEAST_651:BRAIN -!CREATURE:FORGOTTEN_BEAST_651:LUNG -"CREATURE:FORGOTTEN_BEAST_651:HEART -"CREATURE:FORGOTTEN_BEAST_651:LIVER - CREATURE:FORGOTTEN_BEAST_651:GUT -$CREATURE:FORGOTTEN_BEAST_651:STOMACH -$CREATURE:FORGOTTEN_BEAST_651:GIZZARD -%CREATURE:FORGOTTEN_BEAST_651:PANCREAS -#CREATURE:FORGOTTEN_BEAST_651:SPLEEN -#CREATURE:FORGOTTEN_BEAST_651:KIDNEY -#CREATURE:FORGOTTEN_BEAST_652:MUSCLE - CREATURE:FORGOTTEN_BEAST_652:EYE -"CREATURE:FORGOTTEN_BEAST_652:BRAIN -!CREATURE:FORGOTTEN_BEAST_652:LUNG -"CREATURE:FORGOTTEN_BEAST_652:HEART -"CREATURE:FORGOTTEN_BEAST_652:LIVER - CREATURE:FORGOTTEN_BEAST_652:GUT -$CREATURE:FORGOTTEN_BEAST_652:STOMACH -$CREATURE:FORGOTTEN_BEAST_652:GIZZARD -%CREATURE:FORGOTTEN_BEAST_652:PANCREAS -#CREATURE:FORGOTTEN_BEAST_652:SPLEEN -#CREATURE:FORGOTTEN_BEAST_652:KIDNEY -#CREATURE:FORGOTTEN_BEAST_656:MUSCLE - CREATURE:FORGOTTEN_BEAST_656:EYE -"CREATURE:FORGOTTEN_BEAST_656:BRAIN -!CREATURE:FORGOTTEN_BEAST_656:LUNG -"CREATURE:FORGOTTEN_BEAST_656:HEART -"CREATURE:FORGOTTEN_BEAST_656:LIVER - CREATURE:FORGOTTEN_BEAST_656:GUT -$CREATURE:FORGOTTEN_BEAST_656:STOMACH -$CREATURE:FORGOTTEN_BEAST_656:GIZZARD -%CREATURE:FORGOTTEN_BEAST_656:PANCREAS -#CREATURE:FORGOTTEN_BEAST_656:SPLEEN -#CREATURE:FORGOTTEN_BEAST_656:KIDNEY -#CREATURE:FORGOTTEN_BEAST_658:MUSCLE - CREATURE:FORGOTTEN_BEAST_658:EYE -"CREATURE:FORGOTTEN_BEAST_658:BRAIN -!CREATURE:FORGOTTEN_BEAST_658:LUNG -"CREATURE:FORGOTTEN_BEAST_658:HEART -"CREATURE:FORGOTTEN_BEAST_658:LIVER - CREATURE:FORGOTTEN_BEAST_658:GUT -$CREATURE:FORGOTTEN_BEAST_658:STOMACH -$CREATURE:FORGOTTEN_BEAST_658:GIZZARD -%CREATURE:FORGOTTEN_BEAST_658:PANCREAS -#CREATURE:FORGOTTEN_BEAST_658:SPLEEN -#CREATURE:FORGOTTEN_BEAST_658:KIDNEY -#CREATURE:FORGOTTEN_BEAST_659:MUSCLE - CREATURE:FORGOTTEN_BEAST_659:EYE -"CREATURE:FORGOTTEN_BEAST_659:BRAIN -!CREATURE:FORGOTTEN_BEAST_659:LUNG -"CREATURE:FORGOTTEN_BEAST_659:HEART -"CREATURE:FORGOTTEN_BEAST_659:LIVER - CREATURE:FORGOTTEN_BEAST_659:GUT -$CREATURE:FORGOTTEN_BEAST_659:STOMACH -$CREATURE:FORGOTTEN_BEAST_659:GIZZARD -%CREATURE:FORGOTTEN_BEAST_659:PANCREAS -#CREATURE:FORGOTTEN_BEAST_659:SPLEEN -#CREATURE:FORGOTTEN_BEAST_659:KIDNEY -#CREATURE:FORGOTTEN_BEAST_661:MUSCLE - CREATURE:FORGOTTEN_BEAST_661:EYE -"CREATURE:FORGOTTEN_BEAST_661:BRAIN -!CREATURE:FORGOTTEN_BEAST_661:LUNG -"CREATURE:FORGOTTEN_BEAST_661:HEART -"CREATURE:FORGOTTEN_BEAST_661:LIVER - CREATURE:FORGOTTEN_BEAST_661:GUT -$CREATURE:FORGOTTEN_BEAST_661:STOMACH -$CREATURE:FORGOTTEN_BEAST_661:GIZZARD -%CREATURE:FORGOTTEN_BEAST_661:PANCREAS -#CREATURE:FORGOTTEN_BEAST_661:SPLEEN -#CREATURE:FORGOTTEN_BEAST_661:KIDNEY -#CREATURE:FORGOTTEN_BEAST_663:MUSCLE - CREATURE:FORGOTTEN_BEAST_663:EYE -"CREATURE:FORGOTTEN_BEAST_663:BRAIN -!CREATURE:FORGOTTEN_BEAST_663:LUNG -"CREATURE:FORGOTTEN_BEAST_663:HEART -"CREATURE:FORGOTTEN_BEAST_663:LIVER - CREATURE:FORGOTTEN_BEAST_663:GUT -$CREATURE:FORGOTTEN_BEAST_663:STOMACH -$CREATURE:FORGOTTEN_BEAST_663:GIZZARD -%CREATURE:FORGOTTEN_BEAST_663:PANCREAS -#CREATURE:FORGOTTEN_BEAST_663:SPLEEN -#CREATURE:FORGOTTEN_BEAST_663:KIDNEY -#CREATURE:FORGOTTEN_BEAST_664:MUSCLE - CREATURE:FORGOTTEN_BEAST_664:EYE -"CREATURE:FORGOTTEN_BEAST_664:BRAIN -!CREATURE:FORGOTTEN_BEAST_664:LUNG -"CREATURE:FORGOTTEN_BEAST_664:HEART -"CREATURE:FORGOTTEN_BEAST_664:LIVER - CREATURE:FORGOTTEN_BEAST_664:GUT -$CREATURE:FORGOTTEN_BEAST_664:STOMACH -$CREATURE:FORGOTTEN_BEAST_664:GIZZARD -%CREATURE:FORGOTTEN_BEAST_664:PANCREAS -#CREATURE:FORGOTTEN_BEAST_664:SPLEEN -#CREATURE:FORGOTTEN_BEAST_664:KIDNEY -#CREATURE:FORGOTTEN_BEAST_666:MUSCLE - CREATURE:FORGOTTEN_BEAST_666:EYE -"CREATURE:FORGOTTEN_BEAST_666:BRAIN -!CREATURE:FORGOTTEN_BEAST_666:LUNG -"CREATURE:FORGOTTEN_BEAST_666:HEART -"CREATURE:FORGOTTEN_BEAST_666:LIVER - CREATURE:FORGOTTEN_BEAST_666:GUT -$CREATURE:FORGOTTEN_BEAST_666:STOMACH -$CREATURE:FORGOTTEN_BEAST_666:GIZZARD -%CREATURE:FORGOTTEN_BEAST_666:PANCREAS -#CREATURE:FORGOTTEN_BEAST_666:SPLEEN -#CREATURE:FORGOTTEN_BEAST_666:KIDNEY -#CREATURE:FORGOTTEN_BEAST_667:MUSCLE - CREATURE:FORGOTTEN_BEAST_667:EYE -"CREATURE:FORGOTTEN_BEAST_667:BRAIN -!CREATURE:FORGOTTEN_BEAST_667:LUNG -"CREATURE:FORGOTTEN_BEAST_667:HEART -"CREATURE:FORGOTTEN_BEAST_667:LIVER - CREATURE:FORGOTTEN_BEAST_667:GUT -$CREATURE:FORGOTTEN_BEAST_667:STOMACH -$CREATURE:FORGOTTEN_BEAST_667:GIZZARD -%CREATURE:FORGOTTEN_BEAST_667:PANCREAS -#CREATURE:FORGOTTEN_BEAST_667:SPLEEN -#CREATURE:FORGOTTEN_BEAST_667:KIDNEY -#CREATURE:FORGOTTEN_BEAST_669:MUSCLE - CREATURE:FORGOTTEN_BEAST_669:EYE -"CREATURE:FORGOTTEN_BEAST_669:BRAIN -!CREATURE:FORGOTTEN_BEAST_669:LUNG -"CREATURE:FORGOTTEN_BEAST_669:HEART -"CREATURE:FORGOTTEN_BEAST_669:LIVER - CREATURE:FORGOTTEN_BEAST_669:GUT -$CREATURE:FORGOTTEN_BEAST_669:STOMACH -$CREATURE:FORGOTTEN_BEAST_669:GIZZARD -%CREATURE:FORGOTTEN_BEAST_669:PANCREAS -#CREATURE:FORGOTTEN_BEAST_669:SPLEEN -#CREATURE:FORGOTTEN_BEAST_669:KIDNEY -#CREATURE:FORGOTTEN_BEAST_670:MUSCLE - CREATURE:FORGOTTEN_BEAST_670:EYE -"CREATURE:FORGOTTEN_BEAST_670:BRAIN -!CREATURE:FORGOTTEN_BEAST_670:LUNG -"CREATURE:FORGOTTEN_BEAST_670:HEART -"CREATURE:FORGOTTEN_BEAST_670:LIVER - CREATURE:FORGOTTEN_BEAST_670:GUT -$CREATURE:FORGOTTEN_BEAST_670:STOMACH -$CREATURE:FORGOTTEN_BEAST_670:GIZZARD -%CREATURE:FORGOTTEN_BEAST_670:PANCREAS -#CREATURE:FORGOTTEN_BEAST_670:SPLEEN -#CREATURE:FORGOTTEN_BEAST_670:KIDNEY -#CREATURE:FORGOTTEN_BEAST_671:MUSCLE - CREATURE:FORGOTTEN_BEAST_671:EYE -"CREATURE:FORGOTTEN_BEAST_671:BRAIN -!CREATURE:FORGOTTEN_BEAST_671:LUNG -"CREATURE:FORGOTTEN_BEAST_671:HEART -"CREATURE:FORGOTTEN_BEAST_671:LIVER - CREATURE:FORGOTTEN_BEAST_671:GUT -$CREATURE:FORGOTTEN_BEAST_671:STOMACH -$CREATURE:FORGOTTEN_BEAST_671:GIZZARD -%CREATURE:FORGOTTEN_BEAST_671:PANCREAS -#CREATURE:FORGOTTEN_BEAST_671:SPLEEN -#CREATURE:FORGOTTEN_BEAST_671:KIDNEY -#CREATURE:FORGOTTEN_BEAST_674:MUSCLE - CREATURE:FORGOTTEN_BEAST_674:EYE -"CREATURE:FORGOTTEN_BEAST_674:BRAIN -!CREATURE:FORGOTTEN_BEAST_674:LUNG -"CREATURE:FORGOTTEN_BEAST_674:HEART -"CREATURE:FORGOTTEN_BEAST_674:LIVER - CREATURE:FORGOTTEN_BEAST_674:GUT -$CREATURE:FORGOTTEN_BEAST_674:STOMACH -$CREATURE:FORGOTTEN_BEAST_674:GIZZARD -%CREATURE:FORGOTTEN_BEAST_674:PANCREAS -#CREATURE:FORGOTTEN_BEAST_674:SPLEEN -#CREATURE:FORGOTTEN_BEAST_674:KIDNEY -#CREATURE:FORGOTTEN_BEAST_675:MUSCLE - CREATURE:FORGOTTEN_BEAST_675:EYE -"CREATURE:FORGOTTEN_BEAST_675:BRAIN -!CREATURE:FORGOTTEN_BEAST_675:LUNG -"CREATURE:FORGOTTEN_BEAST_675:HEART -"CREATURE:FORGOTTEN_BEAST_675:LIVER - CREATURE:FORGOTTEN_BEAST_675:GUT -$CREATURE:FORGOTTEN_BEAST_675:STOMACH -$CREATURE:FORGOTTEN_BEAST_675:GIZZARD -%CREATURE:FORGOTTEN_BEAST_675:PANCREAS -#CREATURE:FORGOTTEN_BEAST_675:SPLEEN -#CREATURE:FORGOTTEN_BEAST_675:KIDNEY -#CREATURE:FORGOTTEN_BEAST_678:MUSCLE - CREATURE:FORGOTTEN_BEAST_678:EYE -"CREATURE:FORGOTTEN_BEAST_678:BRAIN -!CREATURE:FORGOTTEN_BEAST_678:LUNG -"CREATURE:FORGOTTEN_BEAST_678:HEART -"CREATURE:FORGOTTEN_BEAST_678:LIVER - CREATURE:FORGOTTEN_BEAST_678:GUT -$CREATURE:FORGOTTEN_BEAST_678:STOMACH -$CREATURE:FORGOTTEN_BEAST_678:GIZZARD -%CREATURE:FORGOTTEN_BEAST_678:PANCREAS -#CREATURE:FORGOTTEN_BEAST_678:SPLEEN -#CREATURE:FORGOTTEN_BEAST_678:KIDNEY -#CREATURE:FORGOTTEN_BEAST_680:MUSCLE - CREATURE:FORGOTTEN_BEAST_680:EYE -"CREATURE:FORGOTTEN_BEAST_680:BRAIN -!CREATURE:FORGOTTEN_BEAST_680:LUNG -"CREATURE:FORGOTTEN_BEAST_680:HEART -"CREATURE:FORGOTTEN_BEAST_680:LIVER - CREATURE:FORGOTTEN_BEAST_680:GUT -$CREATURE:FORGOTTEN_BEAST_680:STOMACH -$CREATURE:FORGOTTEN_BEAST_680:GIZZARD -%CREATURE:FORGOTTEN_BEAST_680:PANCREAS -#CREATURE:FORGOTTEN_BEAST_680:SPLEEN -#CREATURE:FORGOTTEN_BEAST_680:KIDNEY -#CREATURE:FORGOTTEN_BEAST_681:MUSCLE - CREATURE:FORGOTTEN_BEAST_681:EYE -"CREATURE:FORGOTTEN_BEAST_681:BRAIN -!CREATURE:FORGOTTEN_BEAST_681:LUNG -"CREATURE:FORGOTTEN_BEAST_681:HEART -"CREATURE:FORGOTTEN_BEAST_681:LIVER - CREATURE:FORGOTTEN_BEAST_681:GUT -$CREATURE:FORGOTTEN_BEAST_681:STOMACH -$CREATURE:FORGOTTEN_BEAST_681:GIZZARD -%CREATURE:FORGOTTEN_BEAST_681:PANCREAS -#CREATURE:FORGOTTEN_BEAST_681:SPLEEN -#CREATURE:FORGOTTEN_BEAST_681:KIDNEY -#CREATURE:FORGOTTEN_BEAST_682:MUSCLE - CREATURE:FORGOTTEN_BEAST_682:EYE -"CREATURE:FORGOTTEN_BEAST_682:BRAIN -!CREATURE:FORGOTTEN_BEAST_682:LUNG -"CREATURE:FORGOTTEN_BEAST_682:HEART -"CREATURE:FORGOTTEN_BEAST_682:LIVER - CREATURE:FORGOTTEN_BEAST_682:GUT -$CREATURE:FORGOTTEN_BEAST_682:STOMACH -$CREATURE:FORGOTTEN_BEAST_682:GIZZARD -%CREATURE:FORGOTTEN_BEAST_682:PANCREAS -#CREATURE:FORGOTTEN_BEAST_682:SPLEEN -#CREATURE:FORGOTTEN_BEAST_682:KIDNEY -#CREATURE:FORGOTTEN_BEAST_684:MUSCLE - CREATURE:FORGOTTEN_BEAST_684:EYE -"CREATURE:FORGOTTEN_BEAST_684:BRAIN -!CREATURE:FORGOTTEN_BEAST_684:LUNG -"CREATURE:FORGOTTEN_BEAST_684:HEART -"CREATURE:FORGOTTEN_BEAST_684:LIVER - CREATURE:FORGOTTEN_BEAST_684:GUT -$CREATURE:FORGOTTEN_BEAST_684:STOMACH -$CREATURE:FORGOTTEN_BEAST_684:GIZZARD -%CREATURE:FORGOTTEN_BEAST_684:PANCREAS -#CREATURE:FORGOTTEN_BEAST_684:SPLEEN -#CREATURE:FORGOTTEN_BEAST_684:KIDNEY -#CREATURE:FORGOTTEN_BEAST_685:MUSCLE - CREATURE:FORGOTTEN_BEAST_685:EYE -"CREATURE:FORGOTTEN_BEAST_685:BRAIN -!CREATURE:FORGOTTEN_BEAST_685:LUNG -"CREATURE:FORGOTTEN_BEAST_685:HEART -"CREATURE:FORGOTTEN_BEAST_685:LIVER - CREATURE:FORGOTTEN_BEAST_685:GUT -$CREATURE:FORGOTTEN_BEAST_685:STOMACH -$CREATURE:FORGOTTEN_BEAST_685:GIZZARD -%CREATURE:FORGOTTEN_BEAST_685:PANCREAS -#CREATURE:FORGOTTEN_BEAST_685:SPLEEN -#CREATURE:FORGOTTEN_BEAST_685:KIDNEY -#CREATURE:FORGOTTEN_BEAST_686:MUSCLE - CREATURE:FORGOTTEN_BEAST_686:EYE -"CREATURE:FORGOTTEN_BEAST_686:BRAIN -!CREATURE:FORGOTTEN_BEAST_686:LUNG -"CREATURE:FORGOTTEN_BEAST_686:HEART -"CREATURE:FORGOTTEN_BEAST_686:LIVER - CREATURE:FORGOTTEN_BEAST_686:GUT -$CREATURE:FORGOTTEN_BEAST_686:STOMACH -$CREATURE:FORGOTTEN_BEAST_686:GIZZARD -%CREATURE:FORGOTTEN_BEAST_686:PANCREAS -#CREATURE:FORGOTTEN_BEAST_686:SPLEEN -#CREATURE:FORGOTTEN_BEAST_686:KIDNEY -#CREATURE:FORGOTTEN_BEAST_687:MUSCLE - CREATURE:FORGOTTEN_BEAST_687:EYE -"CREATURE:FORGOTTEN_BEAST_687:BRAIN -!CREATURE:FORGOTTEN_BEAST_687:LUNG -"CREATURE:FORGOTTEN_BEAST_687:HEART -"CREATURE:FORGOTTEN_BEAST_687:LIVER - CREATURE:FORGOTTEN_BEAST_687:GUT -$CREATURE:FORGOTTEN_BEAST_687:STOMACH -$CREATURE:FORGOTTEN_BEAST_687:GIZZARD -%CREATURE:FORGOTTEN_BEAST_687:PANCREAS -#CREATURE:FORGOTTEN_BEAST_687:SPLEEN -#CREATURE:FORGOTTEN_BEAST_687:KIDNEY -#CREATURE:FORGOTTEN_BEAST_688:MUSCLE - CREATURE:FORGOTTEN_BEAST_688:EYE -"CREATURE:FORGOTTEN_BEAST_688:BRAIN -!CREATURE:FORGOTTEN_BEAST_688:LUNG -"CREATURE:FORGOTTEN_BEAST_688:HEART -"CREATURE:FORGOTTEN_BEAST_688:LIVER - CREATURE:FORGOTTEN_BEAST_688:GUT -$CREATURE:FORGOTTEN_BEAST_688:STOMACH -$CREATURE:FORGOTTEN_BEAST_688:GIZZARD -%CREATURE:FORGOTTEN_BEAST_688:PANCREAS -#CREATURE:FORGOTTEN_BEAST_688:SPLEEN -#CREATURE:FORGOTTEN_BEAST_688:KIDNEY -#CREATURE:FORGOTTEN_BEAST_689:MUSCLE - CREATURE:FORGOTTEN_BEAST_689:EYE -"CREATURE:FORGOTTEN_BEAST_689:BRAIN -!CREATURE:FORGOTTEN_BEAST_689:LUNG -"CREATURE:FORGOTTEN_BEAST_689:HEART -"CREATURE:FORGOTTEN_BEAST_689:LIVER - CREATURE:FORGOTTEN_BEAST_689:GUT -$CREATURE:FORGOTTEN_BEAST_689:STOMACH -$CREATURE:FORGOTTEN_BEAST_689:GIZZARD -%CREATURE:FORGOTTEN_BEAST_689:PANCREAS -#CREATURE:FORGOTTEN_BEAST_689:SPLEEN -#CREATURE:FORGOTTEN_BEAST_689:KIDNEY -#CREATURE:FORGOTTEN_BEAST_691:MUSCLE - CREATURE:FORGOTTEN_BEAST_691:EYE -"CREATURE:FORGOTTEN_BEAST_691:BRAIN -!CREATURE:FORGOTTEN_BEAST_691:LUNG -"CREATURE:FORGOTTEN_BEAST_691:HEART -"CREATURE:FORGOTTEN_BEAST_691:LIVER - CREATURE:FORGOTTEN_BEAST_691:GUT -$CREATURE:FORGOTTEN_BEAST_691:STOMACH -$CREATURE:FORGOTTEN_BEAST_691:GIZZARD -%CREATURE:FORGOTTEN_BEAST_691:PANCREAS -#CREATURE:FORGOTTEN_BEAST_691:SPLEEN -#CREATURE:FORGOTTEN_BEAST_691:KIDNEY -#CREATURE:FORGOTTEN_BEAST_692:MUSCLE - CREATURE:FORGOTTEN_BEAST_692:EYE -"CREATURE:FORGOTTEN_BEAST_692:BRAIN -!CREATURE:FORGOTTEN_BEAST_692:LUNG -"CREATURE:FORGOTTEN_BEAST_692:HEART -"CREATURE:FORGOTTEN_BEAST_692:LIVER - CREATURE:FORGOTTEN_BEAST_692:GUT -$CREATURE:FORGOTTEN_BEAST_692:STOMACH -$CREATURE:FORGOTTEN_BEAST_692:GIZZARD -%CREATURE:FORGOTTEN_BEAST_692:PANCREAS -#CREATURE:FORGOTTEN_BEAST_692:SPLEEN -#CREATURE:FORGOTTEN_BEAST_692:KIDNEY -#CREATURE:FORGOTTEN_BEAST_695:MUSCLE - CREATURE:FORGOTTEN_BEAST_695:EYE -"CREATURE:FORGOTTEN_BEAST_695:BRAIN -!CREATURE:FORGOTTEN_BEAST_695:LUNG -"CREATURE:FORGOTTEN_BEAST_695:HEART -"CREATURE:FORGOTTEN_BEAST_695:LIVER - CREATURE:FORGOTTEN_BEAST_695:GUT -$CREATURE:FORGOTTEN_BEAST_695:STOMACH -$CREATURE:FORGOTTEN_BEAST_695:GIZZARD -%CREATURE:FORGOTTEN_BEAST_695:PANCREAS -#CREATURE:FORGOTTEN_BEAST_695:SPLEEN -#CREATURE:FORGOTTEN_BEAST_695:KIDNEY -#CREATURE:FORGOTTEN_BEAST_696:MUSCLE - CREATURE:FORGOTTEN_BEAST_696:EYE -"CREATURE:FORGOTTEN_BEAST_696:BRAIN -!CREATURE:FORGOTTEN_BEAST_696:LUNG -"CREATURE:FORGOTTEN_BEAST_696:HEART -"CREATURE:FORGOTTEN_BEAST_696:LIVER - CREATURE:FORGOTTEN_BEAST_696:GUT -$CREATURE:FORGOTTEN_BEAST_696:STOMACH -$CREATURE:FORGOTTEN_BEAST_696:GIZZARD -%CREATURE:FORGOTTEN_BEAST_696:PANCREAS -#CREATURE:FORGOTTEN_BEAST_696:SPLEEN -#CREATURE:FORGOTTEN_BEAST_696:KIDNEY -#CREATURE:FORGOTTEN_BEAST_697:MUSCLE - CREATURE:FORGOTTEN_BEAST_697:EYE -"CREATURE:FORGOTTEN_BEAST_697:BRAIN -!CREATURE:FORGOTTEN_BEAST_697:LUNG -"CREATURE:FORGOTTEN_BEAST_697:HEART -"CREATURE:FORGOTTEN_BEAST_697:LIVER - CREATURE:FORGOTTEN_BEAST_697:GUT -$CREATURE:FORGOTTEN_BEAST_697:STOMACH -$CREATURE:FORGOTTEN_BEAST_697:GIZZARD -%CREATURE:FORGOTTEN_BEAST_697:PANCREAS -#CREATURE:FORGOTTEN_BEAST_697:SPLEEN -#CREATURE:FORGOTTEN_BEAST_697:KIDNEY -#CREATURE:FORGOTTEN_BEAST_698:MUSCLE - CREATURE:FORGOTTEN_BEAST_698:EYE -"CREATURE:FORGOTTEN_BEAST_698:BRAIN -!CREATURE:FORGOTTEN_BEAST_698:LUNG -"CREATURE:FORGOTTEN_BEAST_698:HEART -"CREATURE:FORGOTTEN_BEAST_698:LIVER - CREATURE:FORGOTTEN_BEAST_698:GUT -$CREATURE:FORGOTTEN_BEAST_698:STOMACH -$CREATURE:FORGOTTEN_BEAST_698:GIZZARD -%CREATURE:FORGOTTEN_BEAST_698:PANCREAS -#CREATURE:FORGOTTEN_BEAST_698:SPLEEN -#CREATURE:FORGOTTEN_BEAST_698:KIDNEY -#CREATURE:FORGOTTEN_BEAST_699:MUSCLE - CREATURE:FORGOTTEN_BEAST_699:EYE -"CREATURE:FORGOTTEN_BEAST_699:BRAIN -!CREATURE:FORGOTTEN_BEAST_699:LUNG -"CREATURE:FORGOTTEN_BEAST_699:HEART -"CREATURE:FORGOTTEN_BEAST_699:LIVER - CREATURE:FORGOTTEN_BEAST_699:GUT -$CREATURE:FORGOTTEN_BEAST_699:STOMACH -$CREATURE:FORGOTTEN_BEAST_699:GIZZARD -%CREATURE:FORGOTTEN_BEAST_699:PANCREAS -#CREATURE:FORGOTTEN_BEAST_699:SPLEEN -#CREATURE:FORGOTTEN_BEAST_699:KIDNEY -#CREATURE:FORGOTTEN_BEAST_700:MUSCLE - CREATURE:FORGOTTEN_BEAST_700:EYE -"CREATURE:FORGOTTEN_BEAST_700:BRAIN -!CREATURE:FORGOTTEN_BEAST_700:LUNG -"CREATURE:FORGOTTEN_BEAST_700:HEART -"CREATURE:FORGOTTEN_BEAST_700:LIVER - CREATURE:FORGOTTEN_BEAST_700:GUT -$CREATURE:FORGOTTEN_BEAST_700:STOMACH -$CREATURE:FORGOTTEN_BEAST_700:GIZZARD -%CREATURE:FORGOTTEN_BEAST_700:PANCREAS -#CREATURE:FORGOTTEN_BEAST_700:SPLEEN -#CREATURE:FORGOTTEN_BEAST_700:KIDNEY -#CREATURE:FORGOTTEN_BEAST_701:MUSCLE - CREATURE:FORGOTTEN_BEAST_701:EYE -"CREATURE:FORGOTTEN_BEAST_701:BRAIN -!CREATURE:FORGOTTEN_BEAST_701:LUNG -"CREATURE:FORGOTTEN_BEAST_701:HEART -"CREATURE:FORGOTTEN_BEAST_701:LIVER - CREATURE:FORGOTTEN_BEAST_701:GUT -$CREATURE:FORGOTTEN_BEAST_701:STOMACH -$CREATURE:FORGOTTEN_BEAST_701:GIZZARD -%CREATURE:FORGOTTEN_BEAST_701:PANCREAS -#CREATURE:FORGOTTEN_BEAST_701:SPLEEN -#CREATURE:FORGOTTEN_BEAST_701:KIDNEY -#CREATURE:FORGOTTEN_BEAST_702:MUSCLE - CREATURE:FORGOTTEN_BEAST_702:EYE -"CREATURE:FORGOTTEN_BEAST_702:BRAIN -!CREATURE:FORGOTTEN_BEAST_702:LUNG -"CREATURE:FORGOTTEN_BEAST_702:HEART -"CREATURE:FORGOTTEN_BEAST_702:LIVER - CREATURE:FORGOTTEN_BEAST_702:GUT -$CREATURE:FORGOTTEN_BEAST_702:STOMACH -$CREATURE:FORGOTTEN_BEAST_702:GIZZARD -%CREATURE:FORGOTTEN_BEAST_702:PANCREAS -#CREATURE:FORGOTTEN_BEAST_702:SPLEEN -#CREATURE:FORGOTTEN_BEAST_702:KIDNEY -#CREATURE:FORGOTTEN_BEAST_704:MUSCLE - CREATURE:FORGOTTEN_BEAST_704:EYE -"CREATURE:FORGOTTEN_BEAST_704:BRAIN -!CREATURE:FORGOTTEN_BEAST_704:LUNG -"CREATURE:FORGOTTEN_BEAST_704:HEART -"CREATURE:FORGOTTEN_BEAST_704:LIVER - CREATURE:FORGOTTEN_BEAST_704:GUT -$CREATURE:FORGOTTEN_BEAST_704:STOMACH -$CREATURE:FORGOTTEN_BEAST_704:GIZZARD -%CREATURE:FORGOTTEN_BEAST_704:PANCREAS -#CREATURE:FORGOTTEN_BEAST_704:SPLEEN -#CREATURE:FORGOTTEN_BEAST_704:KIDNEY -#CREATURE:FORGOTTEN_BEAST_706:MUSCLE - CREATURE:FORGOTTEN_BEAST_706:EYE -"CREATURE:FORGOTTEN_BEAST_706:BRAIN -!CREATURE:FORGOTTEN_BEAST_706:LUNG -"CREATURE:FORGOTTEN_BEAST_706:HEART -"CREATURE:FORGOTTEN_BEAST_706:LIVER - CREATURE:FORGOTTEN_BEAST_706:GUT -$CREATURE:FORGOTTEN_BEAST_706:STOMACH -$CREATURE:FORGOTTEN_BEAST_706:GIZZARD -%CREATURE:FORGOTTEN_BEAST_706:PANCREAS -#CREATURE:FORGOTTEN_BEAST_706:SPLEEN -#CREATURE:FORGOTTEN_BEAST_706:KIDNEY -#CREATURE:FORGOTTEN_BEAST_708:MUSCLE - CREATURE:FORGOTTEN_BEAST_708:EYE -"CREATURE:FORGOTTEN_BEAST_708:BRAIN -!CREATURE:FORGOTTEN_BEAST_708:LUNG -"CREATURE:FORGOTTEN_BEAST_708:HEART -"CREATURE:FORGOTTEN_BEAST_708:LIVER - CREATURE:FORGOTTEN_BEAST_708:GUT -$CREATURE:FORGOTTEN_BEAST_708:STOMACH -$CREATURE:FORGOTTEN_BEAST_708:GIZZARD -%CREATURE:FORGOTTEN_BEAST_708:PANCREAS -#CREATURE:FORGOTTEN_BEAST_708:SPLEEN -#CREATURE:FORGOTTEN_BEAST_708:KIDNEY -#CREATURE:FORGOTTEN_BEAST_709:MUSCLE - CREATURE:FORGOTTEN_BEAST_709:EYE -"CREATURE:FORGOTTEN_BEAST_709:BRAIN -!CREATURE:FORGOTTEN_BEAST_709:LUNG -"CREATURE:FORGOTTEN_BEAST_709:HEART -"CREATURE:FORGOTTEN_BEAST_709:LIVER - CREATURE:FORGOTTEN_BEAST_709:GUT -$CREATURE:FORGOTTEN_BEAST_709:STOMACH -$CREATURE:FORGOTTEN_BEAST_709:GIZZARD -%CREATURE:FORGOTTEN_BEAST_709:PANCREAS -#CREATURE:FORGOTTEN_BEAST_709:SPLEEN -#CREATURE:FORGOTTEN_BEAST_709:KIDNEY -#CREATURE:FORGOTTEN_BEAST_711:MUSCLE - CREATURE:FORGOTTEN_BEAST_711:EYE -"CREATURE:FORGOTTEN_BEAST_711:BRAIN -!CREATURE:FORGOTTEN_BEAST_711:LUNG -"CREATURE:FORGOTTEN_BEAST_711:HEART -"CREATURE:FORGOTTEN_BEAST_711:LIVER - CREATURE:FORGOTTEN_BEAST_711:GUT -$CREATURE:FORGOTTEN_BEAST_711:STOMACH -$CREATURE:FORGOTTEN_BEAST_711:GIZZARD -%CREATURE:FORGOTTEN_BEAST_711:PANCREAS -#CREATURE:FORGOTTEN_BEAST_711:SPLEEN -#CREATURE:FORGOTTEN_BEAST_711:KIDNEY -#CREATURE:FORGOTTEN_BEAST_712:MUSCLE - CREATURE:FORGOTTEN_BEAST_712:EYE -"CREATURE:FORGOTTEN_BEAST_712:BRAIN -!CREATURE:FORGOTTEN_BEAST_712:LUNG -"CREATURE:FORGOTTEN_BEAST_712:HEART -"CREATURE:FORGOTTEN_BEAST_712:LIVER - CREATURE:FORGOTTEN_BEAST_712:GUT -$CREATURE:FORGOTTEN_BEAST_712:STOMACH -$CREATURE:FORGOTTEN_BEAST_712:GIZZARD -%CREATURE:FORGOTTEN_BEAST_712:PANCREAS -#CREATURE:FORGOTTEN_BEAST_712:SPLEEN -#CREATURE:FORGOTTEN_BEAST_712:KIDNEY -#CREATURE:FORGOTTEN_BEAST_713:MUSCLE - CREATURE:FORGOTTEN_BEAST_713:EYE -"CREATURE:FORGOTTEN_BEAST_713:BRAIN -!CREATURE:FORGOTTEN_BEAST_713:LUNG -"CREATURE:FORGOTTEN_BEAST_713:HEART -"CREATURE:FORGOTTEN_BEAST_713:LIVER - CREATURE:FORGOTTEN_BEAST_713:GUT -$CREATURE:FORGOTTEN_BEAST_713:STOMACH -$CREATURE:FORGOTTEN_BEAST_713:GIZZARD -%CREATURE:FORGOTTEN_BEAST_713:PANCREAS -#CREATURE:FORGOTTEN_BEAST_713:SPLEEN -#CREATURE:FORGOTTEN_BEAST_713:KIDNEY -#CREATURE:FORGOTTEN_BEAST_714:MUSCLE - CREATURE:FORGOTTEN_BEAST_714:EYE -"CREATURE:FORGOTTEN_BEAST_714:BRAIN -!CREATURE:FORGOTTEN_BEAST_714:LUNG -"CREATURE:FORGOTTEN_BEAST_714:HEART -"CREATURE:FORGOTTEN_BEAST_714:LIVER - CREATURE:FORGOTTEN_BEAST_714:GUT -$CREATURE:FORGOTTEN_BEAST_714:STOMACH -$CREATURE:FORGOTTEN_BEAST_714:GIZZARD -%CREATURE:FORGOTTEN_BEAST_714:PANCREAS -#CREATURE:FORGOTTEN_BEAST_714:SPLEEN -#CREATURE:FORGOTTEN_BEAST_714:KIDNEY -#CREATURE:FORGOTTEN_BEAST_715:MUSCLE - CREATURE:FORGOTTEN_BEAST_715:EYE -"CREATURE:FORGOTTEN_BEAST_715:BRAIN -!CREATURE:FORGOTTEN_BEAST_715:LUNG -"CREATURE:FORGOTTEN_BEAST_715:HEART -"CREATURE:FORGOTTEN_BEAST_715:LIVER - CREATURE:FORGOTTEN_BEAST_715:GUT -$CREATURE:FORGOTTEN_BEAST_715:STOMACH -$CREATURE:FORGOTTEN_BEAST_715:GIZZARD -%CREATURE:FORGOTTEN_BEAST_715:PANCREAS -#CREATURE:FORGOTTEN_BEAST_715:SPLEEN -#CREATURE:FORGOTTEN_BEAST_715:KIDNEY -#CREATURE:FORGOTTEN_BEAST_717:MUSCLE - CREATURE:FORGOTTEN_BEAST_717:EYE -"CREATURE:FORGOTTEN_BEAST_717:BRAIN -!CREATURE:FORGOTTEN_BEAST_717:LUNG -"CREATURE:FORGOTTEN_BEAST_717:HEART -"CREATURE:FORGOTTEN_BEAST_717:LIVER - CREATURE:FORGOTTEN_BEAST_717:GUT -$CREATURE:FORGOTTEN_BEAST_717:STOMACH -$CREATURE:FORGOTTEN_BEAST_717:GIZZARD -%CREATURE:FORGOTTEN_BEAST_717:PANCREAS -#CREATURE:FORGOTTEN_BEAST_717:SPLEEN -#CREATURE:FORGOTTEN_BEAST_717:KIDNEY -#CREATURE:FORGOTTEN_BEAST_718:MUSCLE - CREATURE:FORGOTTEN_BEAST_718:EYE -"CREATURE:FORGOTTEN_BEAST_718:BRAIN -!CREATURE:FORGOTTEN_BEAST_718:LUNG -"CREATURE:FORGOTTEN_BEAST_718:HEART -"CREATURE:FORGOTTEN_BEAST_718:LIVER - CREATURE:FORGOTTEN_BEAST_718:GUT -$CREATURE:FORGOTTEN_BEAST_718:STOMACH -$CREATURE:FORGOTTEN_BEAST_718:GIZZARD -%CREATURE:FORGOTTEN_BEAST_718:PANCREAS -#CREATURE:FORGOTTEN_BEAST_718:SPLEEN -#CREATURE:FORGOTTEN_BEAST_718:KIDNEY -#CREATURE:FORGOTTEN_BEAST_719:MUSCLE - CREATURE:FORGOTTEN_BEAST_719:EYE -"CREATURE:FORGOTTEN_BEAST_719:BRAIN -!CREATURE:FORGOTTEN_BEAST_719:LUNG -"CREATURE:FORGOTTEN_BEAST_719:HEART -"CREATURE:FORGOTTEN_BEAST_719:LIVER - CREATURE:FORGOTTEN_BEAST_719:GUT -$CREATURE:FORGOTTEN_BEAST_719:STOMACH -$CREATURE:FORGOTTEN_BEAST_719:GIZZARD -%CREATURE:FORGOTTEN_BEAST_719:PANCREAS -#CREATURE:FORGOTTEN_BEAST_719:SPLEEN -#CREATURE:FORGOTTEN_BEAST_719:KIDNEY -#CREATURE:FORGOTTEN_BEAST_720:MUSCLE - CREATURE:FORGOTTEN_BEAST_720:EYE -"CREATURE:FORGOTTEN_BEAST_720:BRAIN -!CREATURE:FORGOTTEN_BEAST_720:LUNG -"CREATURE:FORGOTTEN_BEAST_720:HEART -"CREATURE:FORGOTTEN_BEAST_720:LIVER - CREATURE:FORGOTTEN_BEAST_720:GUT -$CREATURE:FORGOTTEN_BEAST_720:STOMACH -$CREATURE:FORGOTTEN_BEAST_720:GIZZARD -%CREATURE:FORGOTTEN_BEAST_720:PANCREAS -#CREATURE:FORGOTTEN_BEAST_720:SPLEEN -#CREATURE:FORGOTTEN_BEAST_720:KIDNEY -#CREATURE:FORGOTTEN_BEAST_721:MUSCLE - CREATURE:FORGOTTEN_BEAST_721:EYE -"CREATURE:FORGOTTEN_BEAST_721:BRAIN -!CREATURE:FORGOTTEN_BEAST_721:LUNG -"CREATURE:FORGOTTEN_BEAST_721:HEART -"CREATURE:FORGOTTEN_BEAST_721:LIVER - CREATURE:FORGOTTEN_BEAST_721:GUT -$CREATURE:FORGOTTEN_BEAST_721:STOMACH -$CREATURE:FORGOTTEN_BEAST_721:GIZZARD -%CREATURE:FORGOTTEN_BEAST_721:PANCREAS -#CREATURE:FORGOTTEN_BEAST_721:SPLEEN -#CREATURE:FORGOTTEN_BEAST_721:KIDNEY -#CREATURE:FORGOTTEN_BEAST_722:MUSCLE - CREATURE:FORGOTTEN_BEAST_722:EYE -"CREATURE:FORGOTTEN_BEAST_722:BRAIN -!CREATURE:FORGOTTEN_BEAST_722:LUNG -"CREATURE:FORGOTTEN_BEAST_722:HEART -"CREATURE:FORGOTTEN_BEAST_722:LIVER - CREATURE:FORGOTTEN_BEAST_722:GUT -$CREATURE:FORGOTTEN_BEAST_722:STOMACH -$CREATURE:FORGOTTEN_BEAST_722:GIZZARD -%CREATURE:FORGOTTEN_BEAST_722:PANCREAS -#CREATURE:FORGOTTEN_BEAST_722:SPLEEN -#CREATURE:FORGOTTEN_BEAST_722:KIDNEY -#CREATURE:FORGOTTEN_BEAST_723:MUSCLE - CREATURE:FORGOTTEN_BEAST_723:EYE -"CREATURE:FORGOTTEN_BEAST_723:BRAIN -!CREATURE:FORGOTTEN_BEAST_723:LUNG -"CREATURE:FORGOTTEN_BEAST_723:HEART -"CREATURE:FORGOTTEN_BEAST_723:LIVER - CREATURE:FORGOTTEN_BEAST_723:GUT -$CREATURE:FORGOTTEN_BEAST_723:STOMACH -$CREATURE:FORGOTTEN_BEAST_723:GIZZARD -%CREATURE:FORGOTTEN_BEAST_723:PANCREAS -#CREATURE:FORGOTTEN_BEAST_723:SPLEEN -#CREATURE:FORGOTTEN_BEAST_723:KIDNEY -#CREATURE:FORGOTTEN_BEAST_724:MUSCLE - CREATURE:FORGOTTEN_BEAST_724:EYE -"CREATURE:FORGOTTEN_BEAST_724:BRAIN -!CREATURE:FORGOTTEN_BEAST_724:LUNG -"CREATURE:FORGOTTEN_BEAST_724:HEART -"CREATURE:FORGOTTEN_BEAST_724:LIVER - CREATURE:FORGOTTEN_BEAST_724:GUT -$CREATURE:FORGOTTEN_BEAST_724:STOMACH -$CREATURE:FORGOTTEN_BEAST_724:GIZZARD -%CREATURE:FORGOTTEN_BEAST_724:PANCREAS -#CREATURE:FORGOTTEN_BEAST_724:SPLEEN -#CREATURE:FORGOTTEN_BEAST_724:KIDNEY -#CREATURE:FORGOTTEN_BEAST_726:MUSCLE - CREATURE:FORGOTTEN_BEAST_726:EYE -"CREATURE:FORGOTTEN_BEAST_726:BRAIN -!CREATURE:FORGOTTEN_BEAST_726:LUNG -"CREATURE:FORGOTTEN_BEAST_726:HEART -"CREATURE:FORGOTTEN_BEAST_726:LIVER - CREATURE:FORGOTTEN_BEAST_726:GUT -$CREATURE:FORGOTTEN_BEAST_726:STOMACH -$CREATURE:FORGOTTEN_BEAST_726:GIZZARD -%CREATURE:FORGOTTEN_BEAST_726:PANCREAS -#CREATURE:FORGOTTEN_BEAST_726:SPLEEN -#CREATURE:FORGOTTEN_BEAST_726:KIDNEY -#CREATURE:FORGOTTEN_BEAST_730:MUSCLE - CREATURE:FORGOTTEN_BEAST_730:EYE -"CREATURE:FORGOTTEN_BEAST_730:BRAIN -!CREATURE:FORGOTTEN_BEAST_730:LUNG -"CREATURE:FORGOTTEN_BEAST_730:HEART -"CREATURE:FORGOTTEN_BEAST_730:LIVER - CREATURE:FORGOTTEN_BEAST_730:GUT -$CREATURE:FORGOTTEN_BEAST_730:STOMACH -$CREATURE:FORGOTTEN_BEAST_730:GIZZARD -%CREATURE:FORGOTTEN_BEAST_730:PANCREAS -#CREATURE:FORGOTTEN_BEAST_730:SPLEEN -#CREATURE:FORGOTTEN_BEAST_730:KIDNEY -#CREATURE:FORGOTTEN_BEAST_731:MUSCLE - CREATURE:FORGOTTEN_BEAST_731:EYE -"CREATURE:FORGOTTEN_BEAST_731:BRAIN -!CREATURE:FORGOTTEN_BEAST_731:LUNG -"CREATURE:FORGOTTEN_BEAST_731:HEART -"CREATURE:FORGOTTEN_BEAST_731:LIVER - CREATURE:FORGOTTEN_BEAST_731:GUT -$CREATURE:FORGOTTEN_BEAST_731:STOMACH -$CREATURE:FORGOTTEN_BEAST_731:GIZZARD -%CREATURE:FORGOTTEN_BEAST_731:PANCREAS -#CREATURE:FORGOTTEN_BEAST_731:SPLEEN -#CREATURE:FORGOTTEN_BEAST_731:KIDNEY -#CREATURE:FORGOTTEN_BEAST_734:MUSCLE - CREATURE:FORGOTTEN_BEAST_734:EYE -"CREATURE:FORGOTTEN_BEAST_734:BRAIN -!CREATURE:FORGOTTEN_BEAST_734:LUNG -"CREATURE:FORGOTTEN_BEAST_734:HEART -"CREATURE:FORGOTTEN_BEAST_734:LIVER - CREATURE:FORGOTTEN_BEAST_734:GUT -$CREATURE:FORGOTTEN_BEAST_734:STOMACH -$CREATURE:FORGOTTEN_BEAST_734:GIZZARD -%CREATURE:FORGOTTEN_BEAST_734:PANCREAS -#CREATURE:FORGOTTEN_BEAST_734:SPLEEN -#CREATURE:FORGOTTEN_BEAST_734:KIDNEY -#CREATURE:FORGOTTEN_BEAST_735:MUSCLE - CREATURE:FORGOTTEN_BEAST_735:EYE -"CREATURE:FORGOTTEN_BEAST_735:BRAIN -!CREATURE:FORGOTTEN_BEAST_735:LUNG -"CREATURE:FORGOTTEN_BEAST_735:HEART -"CREATURE:FORGOTTEN_BEAST_735:LIVER - CREATURE:FORGOTTEN_BEAST_735:GUT -$CREATURE:FORGOTTEN_BEAST_735:STOMACH -$CREATURE:FORGOTTEN_BEAST_735:GIZZARD -%CREATURE:FORGOTTEN_BEAST_735:PANCREAS -#CREATURE:FORGOTTEN_BEAST_735:SPLEEN -#CREATURE:FORGOTTEN_BEAST_735:KIDNEY -#CREATURE:FORGOTTEN_BEAST_737:MUSCLE - CREATURE:FORGOTTEN_BEAST_737:EYE -"CREATURE:FORGOTTEN_BEAST_737:BRAIN -!CREATURE:FORGOTTEN_BEAST_737:LUNG -"CREATURE:FORGOTTEN_BEAST_737:HEART -"CREATURE:FORGOTTEN_BEAST_737:LIVER - CREATURE:FORGOTTEN_BEAST_737:GUT -$CREATURE:FORGOTTEN_BEAST_737:STOMACH -$CREATURE:FORGOTTEN_BEAST_737:GIZZARD -%CREATURE:FORGOTTEN_BEAST_737:PANCREAS -#CREATURE:FORGOTTEN_BEAST_737:SPLEEN -#CREATURE:FORGOTTEN_BEAST_737:KIDNEY -#CREATURE:FORGOTTEN_BEAST_738:MUSCLE - CREATURE:FORGOTTEN_BEAST_738:EYE -"CREATURE:FORGOTTEN_BEAST_738:BRAIN -!CREATURE:FORGOTTEN_BEAST_738:LUNG -"CREATURE:FORGOTTEN_BEAST_738:HEART -"CREATURE:FORGOTTEN_BEAST_738:LIVER - CREATURE:FORGOTTEN_BEAST_738:GUT -$CREATURE:FORGOTTEN_BEAST_738:STOMACH -$CREATURE:FORGOTTEN_BEAST_738:GIZZARD -%CREATURE:FORGOTTEN_BEAST_738:PANCREAS -#CREATURE:FORGOTTEN_BEAST_738:SPLEEN -#CREATURE:FORGOTTEN_BEAST_738:KIDNEY -#CREATURE:FORGOTTEN_BEAST_739:MUSCLE - CREATURE:FORGOTTEN_BEAST_739:EYE -"CREATURE:FORGOTTEN_BEAST_739:BRAIN -!CREATURE:FORGOTTEN_BEAST_739:LUNG -"CREATURE:FORGOTTEN_BEAST_739:HEART -"CREATURE:FORGOTTEN_BEAST_739:LIVER - CREATURE:FORGOTTEN_BEAST_739:GUT -$CREATURE:FORGOTTEN_BEAST_739:STOMACH -$CREATURE:FORGOTTEN_BEAST_739:GIZZARD -%CREATURE:FORGOTTEN_BEAST_739:PANCREAS -#CREATURE:FORGOTTEN_BEAST_739:SPLEEN -#CREATURE:FORGOTTEN_BEAST_739:KIDNEY -#CREATURE:FORGOTTEN_BEAST_740:MUSCLE - CREATURE:FORGOTTEN_BEAST_740:EYE -"CREATURE:FORGOTTEN_BEAST_740:BRAIN -!CREATURE:FORGOTTEN_BEAST_740:LUNG -"CREATURE:FORGOTTEN_BEAST_740:HEART -"CREATURE:FORGOTTEN_BEAST_740:LIVER - CREATURE:FORGOTTEN_BEAST_740:GUT -$CREATURE:FORGOTTEN_BEAST_740:STOMACH -$CREATURE:FORGOTTEN_BEAST_740:GIZZARD -%CREATURE:FORGOTTEN_BEAST_740:PANCREAS -#CREATURE:FORGOTTEN_BEAST_740:SPLEEN -#CREATURE:FORGOTTEN_BEAST_740:KIDNEY -#CREATURE:FORGOTTEN_BEAST_741:MUSCLE - CREATURE:FORGOTTEN_BEAST_741:EYE -"CREATURE:FORGOTTEN_BEAST_741:BRAIN -!CREATURE:FORGOTTEN_BEAST_741:LUNG -"CREATURE:FORGOTTEN_BEAST_741:HEART -"CREATURE:FORGOTTEN_BEAST_741:LIVER - CREATURE:FORGOTTEN_BEAST_741:GUT -$CREATURE:FORGOTTEN_BEAST_741:STOMACH -$CREATURE:FORGOTTEN_BEAST_741:GIZZARD -%CREATURE:FORGOTTEN_BEAST_741:PANCREAS -#CREATURE:FORGOTTEN_BEAST_741:SPLEEN -#CREATURE:FORGOTTEN_BEAST_741:KIDNEY -#CREATURE:FORGOTTEN_BEAST_742:MUSCLE - CREATURE:FORGOTTEN_BEAST_742:EYE -"CREATURE:FORGOTTEN_BEAST_742:BRAIN -!CREATURE:FORGOTTEN_BEAST_742:LUNG -"CREATURE:FORGOTTEN_BEAST_742:HEART -"CREATURE:FORGOTTEN_BEAST_742:LIVER - CREATURE:FORGOTTEN_BEAST_742:GUT -$CREATURE:FORGOTTEN_BEAST_742:STOMACH -$CREATURE:FORGOTTEN_BEAST_742:GIZZARD -%CREATURE:FORGOTTEN_BEAST_742:PANCREAS -#CREATURE:FORGOTTEN_BEAST_742:SPLEEN -#CREATURE:FORGOTTEN_BEAST_742:KIDNEY -#CREATURE:FORGOTTEN_BEAST_743:MUSCLE - CREATURE:FORGOTTEN_BEAST_743:EYE -"CREATURE:FORGOTTEN_BEAST_743:BRAIN -!CREATURE:FORGOTTEN_BEAST_743:LUNG -"CREATURE:FORGOTTEN_BEAST_743:HEART -"CREATURE:FORGOTTEN_BEAST_743:LIVER - CREATURE:FORGOTTEN_BEAST_743:GUT -$CREATURE:FORGOTTEN_BEAST_743:STOMACH -$CREATURE:FORGOTTEN_BEAST_743:GIZZARD -%CREATURE:FORGOTTEN_BEAST_743:PANCREAS -#CREATURE:FORGOTTEN_BEAST_743:SPLEEN -#CREATURE:FORGOTTEN_BEAST_743:KIDNEY -#CREATURE:FORGOTTEN_BEAST_744:MUSCLE - CREATURE:FORGOTTEN_BEAST_744:EYE -"CREATURE:FORGOTTEN_BEAST_744:BRAIN -!CREATURE:FORGOTTEN_BEAST_744:LUNG -"CREATURE:FORGOTTEN_BEAST_744:HEART -"CREATURE:FORGOTTEN_BEAST_744:LIVER - CREATURE:FORGOTTEN_BEAST_744:GUT -$CREATURE:FORGOTTEN_BEAST_744:STOMACH -$CREATURE:FORGOTTEN_BEAST_744:GIZZARD -%CREATURE:FORGOTTEN_BEAST_744:PANCREAS -#CREATURE:FORGOTTEN_BEAST_744:SPLEEN -#CREATURE:FORGOTTEN_BEAST_744:KIDNEY -#CREATURE:FORGOTTEN_BEAST_746:MUSCLE - CREATURE:FORGOTTEN_BEAST_746:EYE -"CREATURE:FORGOTTEN_BEAST_746:BRAIN -!CREATURE:FORGOTTEN_BEAST_746:LUNG -"CREATURE:FORGOTTEN_BEAST_746:HEART -"CREATURE:FORGOTTEN_BEAST_746:LIVER - CREATURE:FORGOTTEN_BEAST_746:GUT -$CREATURE:FORGOTTEN_BEAST_746:STOMACH -$CREATURE:FORGOTTEN_BEAST_746:GIZZARD -%CREATURE:FORGOTTEN_BEAST_746:PANCREAS -#CREATURE:FORGOTTEN_BEAST_746:SPLEEN -#CREATURE:FORGOTTEN_BEAST_746:KIDNEY -#CREATURE:FORGOTTEN_BEAST_747:MUSCLE - CREATURE:FORGOTTEN_BEAST_747:EYE -"CREATURE:FORGOTTEN_BEAST_747:BRAIN -!CREATURE:FORGOTTEN_BEAST_747:LUNG -"CREATURE:FORGOTTEN_BEAST_747:HEART -"CREATURE:FORGOTTEN_BEAST_747:LIVER - CREATURE:FORGOTTEN_BEAST_747:GUT -$CREATURE:FORGOTTEN_BEAST_747:STOMACH -$CREATURE:FORGOTTEN_BEAST_747:GIZZARD -%CREATURE:FORGOTTEN_BEAST_747:PANCREAS -#CREATURE:FORGOTTEN_BEAST_747:SPLEEN -#CREATURE:FORGOTTEN_BEAST_747:KIDNEY -#CREATURE:FORGOTTEN_BEAST_749:MUSCLE - CREATURE:FORGOTTEN_BEAST_749:EYE -"CREATURE:FORGOTTEN_BEAST_749:BRAIN -!CREATURE:FORGOTTEN_BEAST_749:LUNG -"CREATURE:FORGOTTEN_BEAST_749:HEART -"CREATURE:FORGOTTEN_BEAST_749:LIVER - CREATURE:FORGOTTEN_BEAST_749:GUT -$CREATURE:FORGOTTEN_BEAST_749:STOMACH -$CREATURE:FORGOTTEN_BEAST_749:GIZZARD -%CREATURE:FORGOTTEN_BEAST_749:PANCREAS -#CREATURE:FORGOTTEN_BEAST_749:SPLEEN -#CREATURE:FORGOTTEN_BEAST_749:KIDNEY -#CREATURE:FORGOTTEN_BEAST_750:MUSCLE - CREATURE:FORGOTTEN_BEAST_750:EYE -"CREATURE:FORGOTTEN_BEAST_750:BRAIN -!CREATURE:FORGOTTEN_BEAST_750:LUNG -"CREATURE:FORGOTTEN_BEAST_750:HEART -"CREATURE:FORGOTTEN_BEAST_750:LIVER - CREATURE:FORGOTTEN_BEAST_750:GUT -$CREATURE:FORGOTTEN_BEAST_750:STOMACH -$CREATURE:FORGOTTEN_BEAST_750:GIZZARD -%CREATURE:FORGOTTEN_BEAST_750:PANCREAS -#CREATURE:FORGOTTEN_BEAST_750:SPLEEN -#CREATURE:FORGOTTEN_BEAST_750:KIDNEY -#CREATURE:FORGOTTEN_BEAST_751:MUSCLE - CREATURE:FORGOTTEN_BEAST_751:EYE -"CREATURE:FORGOTTEN_BEAST_751:BRAIN -!CREATURE:FORGOTTEN_BEAST_751:LUNG -"CREATURE:FORGOTTEN_BEAST_751:HEART -"CREATURE:FORGOTTEN_BEAST_751:LIVER - CREATURE:FORGOTTEN_BEAST_751:GUT -$CREATURE:FORGOTTEN_BEAST_751:STOMACH -$CREATURE:FORGOTTEN_BEAST_751:GIZZARD -%CREATURE:FORGOTTEN_BEAST_751:PANCREAS -#CREATURE:FORGOTTEN_BEAST_751:SPLEEN -#CREATURE:FORGOTTEN_BEAST_751:KIDNEY -#CREATURE:FORGOTTEN_BEAST_752:MUSCLE - CREATURE:FORGOTTEN_BEAST_752:EYE -"CREATURE:FORGOTTEN_BEAST_752:BRAIN -!CREATURE:FORGOTTEN_BEAST_752:LUNG -"CREATURE:FORGOTTEN_BEAST_752:HEART -"CREATURE:FORGOTTEN_BEAST_752:LIVER - CREATURE:FORGOTTEN_BEAST_752:GUT -$CREATURE:FORGOTTEN_BEAST_752:STOMACH -$CREATURE:FORGOTTEN_BEAST_752:GIZZARD -%CREATURE:FORGOTTEN_BEAST_752:PANCREAS -#CREATURE:FORGOTTEN_BEAST_752:SPLEEN -#CREATURE:FORGOTTEN_BEAST_752:KIDNEY -#CREATURE:FORGOTTEN_BEAST_753:MUSCLE - CREATURE:FORGOTTEN_BEAST_753:EYE -"CREATURE:FORGOTTEN_BEAST_753:BRAIN -!CREATURE:FORGOTTEN_BEAST_753:LUNG -"CREATURE:FORGOTTEN_BEAST_753:HEART -"CREATURE:FORGOTTEN_BEAST_753:LIVER - CREATURE:FORGOTTEN_BEAST_753:GUT -$CREATURE:FORGOTTEN_BEAST_753:STOMACH -$CREATURE:FORGOTTEN_BEAST_753:GIZZARD -%CREATURE:FORGOTTEN_BEAST_753:PANCREAS -#CREATURE:FORGOTTEN_BEAST_753:SPLEEN -#CREATURE:FORGOTTEN_BEAST_753:KIDNEY -#CREATURE:FORGOTTEN_BEAST_754:MUSCLE - CREATURE:FORGOTTEN_BEAST_754:EYE -"CREATURE:FORGOTTEN_BEAST_754:BRAIN -!CREATURE:FORGOTTEN_BEAST_754:LUNG -"CREATURE:FORGOTTEN_BEAST_754:HEART -"CREATURE:FORGOTTEN_BEAST_754:LIVER - CREATURE:FORGOTTEN_BEAST_754:GUT -$CREATURE:FORGOTTEN_BEAST_754:STOMACH -$CREATURE:FORGOTTEN_BEAST_754:GIZZARD -%CREATURE:FORGOTTEN_BEAST_754:PANCREAS -#CREATURE:FORGOTTEN_BEAST_754:SPLEEN -#CREATURE:FORGOTTEN_BEAST_754:KIDNEY -#CREATURE:FORGOTTEN_BEAST_755:MUSCLE - CREATURE:FORGOTTEN_BEAST_755:EYE -"CREATURE:FORGOTTEN_BEAST_755:BRAIN -!CREATURE:FORGOTTEN_BEAST_755:LUNG -"CREATURE:FORGOTTEN_BEAST_755:HEART -"CREATURE:FORGOTTEN_BEAST_755:LIVER - CREATURE:FORGOTTEN_BEAST_755:GUT -$CREATURE:FORGOTTEN_BEAST_755:STOMACH -$CREATURE:FORGOTTEN_BEAST_755:GIZZARD -%CREATURE:FORGOTTEN_BEAST_755:PANCREAS -#CREATURE:FORGOTTEN_BEAST_755:SPLEEN -#CREATURE:FORGOTTEN_BEAST_755:KIDNEY -#CREATURE:FORGOTTEN_BEAST_756:MUSCLE - CREATURE:FORGOTTEN_BEAST_756:EYE -"CREATURE:FORGOTTEN_BEAST_756:BRAIN -!CREATURE:FORGOTTEN_BEAST_756:LUNG -"CREATURE:FORGOTTEN_BEAST_756:HEART -"CREATURE:FORGOTTEN_BEAST_756:LIVER - CREATURE:FORGOTTEN_BEAST_756:GUT -$CREATURE:FORGOTTEN_BEAST_756:STOMACH -$CREATURE:FORGOTTEN_BEAST_756:GIZZARD -%CREATURE:FORGOTTEN_BEAST_756:PANCREAS -#CREATURE:FORGOTTEN_BEAST_756:SPLEEN -#CREATURE:FORGOTTEN_BEAST_756:KIDNEY -#CREATURE:FORGOTTEN_BEAST_757:MUSCLE - CREATURE:FORGOTTEN_BEAST_757:EYE -"CREATURE:FORGOTTEN_BEAST_757:BRAIN -!CREATURE:FORGOTTEN_BEAST_757:LUNG -"CREATURE:FORGOTTEN_BEAST_757:HEART -"CREATURE:FORGOTTEN_BEAST_757:LIVER - CREATURE:FORGOTTEN_BEAST_757:GUT -$CREATURE:FORGOTTEN_BEAST_757:STOMACH -$CREATURE:FORGOTTEN_BEAST_757:GIZZARD -%CREATURE:FORGOTTEN_BEAST_757:PANCREAS -#CREATURE:FORGOTTEN_BEAST_757:SPLEEN -#CREATURE:FORGOTTEN_BEAST_757:KIDNEY -#CREATURE:FORGOTTEN_BEAST_758:MUSCLE - CREATURE:FORGOTTEN_BEAST_758:EYE -"CREATURE:FORGOTTEN_BEAST_758:BRAIN -!CREATURE:FORGOTTEN_BEAST_758:LUNG -"CREATURE:FORGOTTEN_BEAST_758:HEART -"CREATURE:FORGOTTEN_BEAST_758:LIVER - CREATURE:FORGOTTEN_BEAST_758:GUT -$CREATURE:FORGOTTEN_BEAST_758:STOMACH -$CREATURE:FORGOTTEN_BEAST_758:GIZZARD -%CREATURE:FORGOTTEN_BEAST_758:PANCREAS -#CREATURE:FORGOTTEN_BEAST_758:SPLEEN -#CREATURE:FORGOTTEN_BEAST_758:KIDNEY -#CREATURE:FORGOTTEN_BEAST_759:MUSCLE - CREATURE:FORGOTTEN_BEAST_759:EYE -"CREATURE:FORGOTTEN_BEAST_759:BRAIN -!CREATURE:FORGOTTEN_BEAST_759:LUNG -"CREATURE:FORGOTTEN_BEAST_759:HEART -"CREATURE:FORGOTTEN_BEAST_759:LIVER - CREATURE:FORGOTTEN_BEAST_759:GUT -$CREATURE:FORGOTTEN_BEAST_759:STOMACH -$CREATURE:FORGOTTEN_BEAST_759:GIZZARD -%CREATURE:FORGOTTEN_BEAST_759:PANCREAS -#CREATURE:FORGOTTEN_BEAST_759:SPLEEN -#CREATURE:FORGOTTEN_BEAST_759:KIDNEY -#CREATURE:FORGOTTEN_BEAST_760:MUSCLE - CREATURE:FORGOTTEN_BEAST_760:EYE -"CREATURE:FORGOTTEN_BEAST_760:BRAIN -!CREATURE:FORGOTTEN_BEAST_760:LUNG -"CREATURE:FORGOTTEN_BEAST_760:HEART -"CREATURE:FORGOTTEN_BEAST_760:LIVER - CREATURE:FORGOTTEN_BEAST_760:GUT -$CREATURE:FORGOTTEN_BEAST_760:STOMACH -$CREATURE:FORGOTTEN_BEAST_760:GIZZARD -%CREATURE:FORGOTTEN_BEAST_760:PANCREAS -#CREATURE:FORGOTTEN_BEAST_760:SPLEEN -#CREATURE:FORGOTTEN_BEAST_760:KIDNEY -#CREATURE:FORGOTTEN_BEAST_761:MUSCLE - CREATURE:FORGOTTEN_BEAST_761:EYE -"CREATURE:FORGOTTEN_BEAST_761:BRAIN -!CREATURE:FORGOTTEN_BEAST_761:LUNG -"CREATURE:FORGOTTEN_BEAST_761:HEART -"CREATURE:FORGOTTEN_BEAST_761:LIVER - CREATURE:FORGOTTEN_BEAST_761:GUT -$CREATURE:FORGOTTEN_BEAST_761:STOMACH -$CREATURE:FORGOTTEN_BEAST_761:GIZZARD -%CREATURE:FORGOTTEN_BEAST_761:PANCREAS -#CREATURE:FORGOTTEN_BEAST_761:SPLEEN -#CREATURE:FORGOTTEN_BEAST_761:KIDNEY -#CREATURE:FORGOTTEN_BEAST_762:MUSCLE - CREATURE:FORGOTTEN_BEAST_762:EYE -"CREATURE:FORGOTTEN_BEAST_762:BRAIN -!CREATURE:FORGOTTEN_BEAST_762:LUNG -"CREATURE:FORGOTTEN_BEAST_762:HEART -"CREATURE:FORGOTTEN_BEAST_762:LIVER - CREATURE:FORGOTTEN_BEAST_762:GUT -$CREATURE:FORGOTTEN_BEAST_762:STOMACH -$CREATURE:FORGOTTEN_BEAST_762:GIZZARD -%CREATURE:FORGOTTEN_BEAST_762:PANCREAS -#CREATURE:FORGOTTEN_BEAST_762:SPLEEN -#CREATURE:FORGOTTEN_BEAST_762:KIDNEY -#CREATURE:FORGOTTEN_BEAST_764:MUSCLE - CREATURE:FORGOTTEN_BEAST_764:EYE -"CREATURE:FORGOTTEN_BEAST_764:BRAIN -!CREATURE:FORGOTTEN_BEAST_764:LUNG -"CREATURE:FORGOTTEN_BEAST_764:HEART -"CREATURE:FORGOTTEN_BEAST_764:LIVER - CREATURE:FORGOTTEN_BEAST_764:GUT -$CREATURE:FORGOTTEN_BEAST_764:STOMACH -$CREATURE:FORGOTTEN_BEAST_764:GIZZARD -%CREATURE:FORGOTTEN_BEAST_764:PANCREAS -#CREATURE:FORGOTTEN_BEAST_764:SPLEEN -#CREATURE:FORGOTTEN_BEAST_764:KIDNEY -#CREATURE:FORGOTTEN_BEAST_767:MUSCLE - CREATURE:FORGOTTEN_BEAST_767:EYE -"CREATURE:FORGOTTEN_BEAST_767:BRAIN -!CREATURE:FORGOTTEN_BEAST_767:LUNG -"CREATURE:FORGOTTEN_BEAST_767:HEART -"CREATURE:FORGOTTEN_BEAST_767:LIVER - CREATURE:FORGOTTEN_BEAST_767:GUT -$CREATURE:FORGOTTEN_BEAST_767:STOMACH -$CREATURE:FORGOTTEN_BEAST_767:GIZZARD -%CREATURE:FORGOTTEN_BEAST_767:PANCREAS -#CREATURE:FORGOTTEN_BEAST_767:SPLEEN -#CREATURE:FORGOTTEN_BEAST_767:KIDNEY -#CREATURE:FORGOTTEN_BEAST_768:MUSCLE - CREATURE:FORGOTTEN_BEAST_768:EYE -"CREATURE:FORGOTTEN_BEAST_768:BRAIN -!CREATURE:FORGOTTEN_BEAST_768:LUNG -"CREATURE:FORGOTTEN_BEAST_768:HEART -"CREATURE:FORGOTTEN_BEAST_768:LIVER - CREATURE:FORGOTTEN_BEAST_768:GUT -$CREATURE:FORGOTTEN_BEAST_768:STOMACH -$CREATURE:FORGOTTEN_BEAST_768:GIZZARD -%CREATURE:FORGOTTEN_BEAST_768:PANCREAS -#CREATURE:FORGOTTEN_BEAST_768:SPLEEN -#CREATURE:FORGOTTEN_BEAST_768:KIDNEY -#CREATURE:FORGOTTEN_BEAST_769:MUSCLE - CREATURE:FORGOTTEN_BEAST_769:EYE -"CREATURE:FORGOTTEN_BEAST_769:BRAIN -!CREATURE:FORGOTTEN_BEAST_769:LUNG -"CREATURE:FORGOTTEN_BEAST_769:HEART -"CREATURE:FORGOTTEN_BEAST_769:LIVER - CREATURE:FORGOTTEN_BEAST_769:GUT -$CREATURE:FORGOTTEN_BEAST_769:STOMACH -$CREATURE:FORGOTTEN_BEAST_769:GIZZARD -%CREATURE:FORGOTTEN_BEAST_769:PANCREAS -#CREATURE:FORGOTTEN_BEAST_769:SPLEEN -#CREATURE:FORGOTTEN_BEAST_769:KIDNEY -#CREATURE:FORGOTTEN_BEAST_770:MUSCLE - CREATURE:FORGOTTEN_BEAST_770:EYE -"CREATURE:FORGOTTEN_BEAST_770:BRAIN -!CREATURE:FORGOTTEN_BEAST_770:LUNG -"CREATURE:FORGOTTEN_BEAST_770:HEART -"CREATURE:FORGOTTEN_BEAST_770:LIVER - CREATURE:FORGOTTEN_BEAST_770:GUT -$CREATURE:FORGOTTEN_BEAST_770:STOMACH -$CREATURE:FORGOTTEN_BEAST_770:GIZZARD -%CREATURE:FORGOTTEN_BEAST_770:PANCREAS -#CREATURE:FORGOTTEN_BEAST_770:SPLEEN -#CREATURE:FORGOTTEN_BEAST_770:KIDNEY -#CREATURE:FORGOTTEN_BEAST_773:MUSCLE - CREATURE:FORGOTTEN_BEAST_773:EYE -"CREATURE:FORGOTTEN_BEAST_773:BRAIN -!CREATURE:FORGOTTEN_BEAST_773:LUNG -"CREATURE:FORGOTTEN_BEAST_773:HEART -"CREATURE:FORGOTTEN_BEAST_773:LIVER - CREATURE:FORGOTTEN_BEAST_773:GUT -$CREATURE:FORGOTTEN_BEAST_773:STOMACH -$CREATURE:FORGOTTEN_BEAST_773:GIZZARD -%CREATURE:FORGOTTEN_BEAST_773:PANCREAS -#CREATURE:FORGOTTEN_BEAST_773:SPLEEN -#CREATURE:FORGOTTEN_BEAST_773:KIDNEY -#CREATURE:FORGOTTEN_BEAST_774:MUSCLE - CREATURE:FORGOTTEN_BEAST_774:EYE -"CREATURE:FORGOTTEN_BEAST_774:BRAIN -!CREATURE:FORGOTTEN_BEAST_774:LUNG -"CREATURE:FORGOTTEN_BEAST_774:HEART -"CREATURE:FORGOTTEN_BEAST_774:LIVER - CREATURE:FORGOTTEN_BEAST_774:GUT -$CREATURE:FORGOTTEN_BEAST_774:STOMACH -$CREATURE:FORGOTTEN_BEAST_774:GIZZARD -%CREATURE:FORGOTTEN_BEAST_774:PANCREAS -#CREATURE:FORGOTTEN_BEAST_774:SPLEEN -#CREATURE:FORGOTTEN_BEAST_774:KIDNEY -#CREATURE:FORGOTTEN_BEAST_776:MUSCLE - CREATURE:FORGOTTEN_BEAST_776:EYE -"CREATURE:FORGOTTEN_BEAST_776:BRAIN -!CREATURE:FORGOTTEN_BEAST_776:LUNG -"CREATURE:FORGOTTEN_BEAST_776:HEART -"CREATURE:FORGOTTEN_BEAST_776:LIVER - CREATURE:FORGOTTEN_BEAST_776:GUT -$CREATURE:FORGOTTEN_BEAST_776:STOMACH -$CREATURE:FORGOTTEN_BEAST_776:GIZZARD -%CREATURE:FORGOTTEN_BEAST_776:PANCREAS -#CREATURE:FORGOTTEN_BEAST_776:SPLEEN -#CREATURE:FORGOTTEN_BEAST_776:KIDNEY -#CREATURE:FORGOTTEN_BEAST_777:MUSCLE - CREATURE:FORGOTTEN_BEAST_777:EYE -"CREATURE:FORGOTTEN_BEAST_777:BRAIN -!CREATURE:FORGOTTEN_BEAST_777:LUNG -"CREATURE:FORGOTTEN_BEAST_777:HEART -"CREATURE:FORGOTTEN_BEAST_777:LIVER - CREATURE:FORGOTTEN_BEAST_777:GUT -$CREATURE:FORGOTTEN_BEAST_777:STOMACH -$CREATURE:FORGOTTEN_BEAST_777:GIZZARD -%CREATURE:FORGOTTEN_BEAST_777:PANCREAS -#CREATURE:FORGOTTEN_BEAST_777:SPLEEN -#CREATURE:FORGOTTEN_BEAST_777:KIDNEY -#CREATURE:FORGOTTEN_BEAST_778:MUSCLE - CREATURE:FORGOTTEN_BEAST_778:EYE -"CREATURE:FORGOTTEN_BEAST_778:BRAIN -!CREATURE:FORGOTTEN_BEAST_778:LUNG -"CREATURE:FORGOTTEN_BEAST_778:HEART -"CREATURE:FORGOTTEN_BEAST_778:LIVER - CREATURE:FORGOTTEN_BEAST_778:GUT -$CREATURE:FORGOTTEN_BEAST_778:STOMACH -$CREATURE:FORGOTTEN_BEAST_778:GIZZARD -%CREATURE:FORGOTTEN_BEAST_778:PANCREAS -#CREATURE:FORGOTTEN_BEAST_778:SPLEEN -#CREATURE:FORGOTTEN_BEAST_778:KIDNEY -#CREATURE:FORGOTTEN_BEAST_779:MUSCLE - CREATURE:FORGOTTEN_BEAST_779:EYE -"CREATURE:FORGOTTEN_BEAST_779:BRAIN -!CREATURE:FORGOTTEN_BEAST_779:LUNG -"CREATURE:FORGOTTEN_BEAST_779:HEART -"CREATURE:FORGOTTEN_BEAST_779:LIVER - CREATURE:FORGOTTEN_BEAST_779:GUT -$CREATURE:FORGOTTEN_BEAST_779:STOMACH -$CREATURE:FORGOTTEN_BEAST_779:GIZZARD -%CREATURE:FORGOTTEN_BEAST_779:PANCREAS -#CREATURE:FORGOTTEN_BEAST_779:SPLEEN -#CREATURE:FORGOTTEN_BEAST_779:KIDNEY -#CREATURE:FORGOTTEN_BEAST_780:MUSCLE - CREATURE:FORGOTTEN_BEAST_780:EYE -"CREATURE:FORGOTTEN_BEAST_780:BRAIN -!CREATURE:FORGOTTEN_BEAST_780:LUNG -"CREATURE:FORGOTTEN_BEAST_780:HEART -"CREATURE:FORGOTTEN_BEAST_780:LIVER - CREATURE:FORGOTTEN_BEAST_780:GUT -$CREATURE:FORGOTTEN_BEAST_780:STOMACH -$CREATURE:FORGOTTEN_BEAST_780:GIZZARD -%CREATURE:FORGOTTEN_BEAST_780:PANCREAS -#CREATURE:FORGOTTEN_BEAST_780:SPLEEN -#CREATURE:FORGOTTEN_BEAST_780:KIDNEY -#CREATURE:FORGOTTEN_BEAST_781:MUSCLE - CREATURE:FORGOTTEN_BEAST_781:EYE -"CREATURE:FORGOTTEN_BEAST_781:BRAIN -!CREATURE:FORGOTTEN_BEAST_781:LUNG -"CREATURE:FORGOTTEN_BEAST_781:HEART -"CREATURE:FORGOTTEN_BEAST_781:LIVER - CREATURE:FORGOTTEN_BEAST_781:GUT -$CREATURE:FORGOTTEN_BEAST_781:STOMACH -$CREATURE:FORGOTTEN_BEAST_781:GIZZARD -%CREATURE:FORGOTTEN_BEAST_781:PANCREAS -#CREATURE:FORGOTTEN_BEAST_781:SPLEEN -#CREATURE:FORGOTTEN_BEAST_781:KIDNEY -#CREATURE:FORGOTTEN_BEAST_782:MUSCLE - CREATURE:FORGOTTEN_BEAST_782:EYE -"CREATURE:FORGOTTEN_BEAST_782:BRAIN -!CREATURE:FORGOTTEN_BEAST_782:LUNG -"CREATURE:FORGOTTEN_BEAST_782:HEART -"CREATURE:FORGOTTEN_BEAST_782:LIVER - CREATURE:FORGOTTEN_BEAST_782:GUT -$CREATURE:FORGOTTEN_BEAST_782:STOMACH -$CREATURE:FORGOTTEN_BEAST_782:GIZZARD -%CREATURE:FORGOTTEN_BEAST_782:PANCREAS -#CREATURE:FORGOTTEN_BEAST_782:SPLEEN -#CREATURE:FORGOTTEN_BEAST_782:KIDNEY -#CREATURE:FORGOTTEN_BEAST_783:MUSCLE - CREATURE:FORGOTTEN_BEAST_783:EYE -"CREATURE:FORGOTTEN_BEAST_783:BRAIN -!CREATURE:FORGOTTEN_BEAST_783:LUNG -"CREATURE:FORGOTTEN_BEAST_783:HEART -"CREATURE:FORGOTTEN_BEAST_783:LIVER - CREATURE:FORGOTTEN_BEAST_783:GUT -$CREATURE:FORGOTTEN_BEAST_783:STOMACH -$CREATURE:FORGOTTEN_BEAST_783:GIZZARD -%CREATURE:FORGOTTEN_BEAST_783:PANCREAS -#CREATURE:FORGOTTEN_BEAST_783:SPLEEN -#CREATURE:FORGOTTEN_BEAST_783:KIDNEY -#CREATURE:FORGOTTEN_BEAST_784:MUSCLE - CREATURE:FORGOTTEN_BEAST_784:EYE -"CREATURE:FORGOTTEN_BEAST_784:BRAIN -!CREATURE:FORGOTTEN_BEAST_784:LUNG -"CREATURE:FORGOTTEN_BEAST_784:HEART -"CREATURE:FORGOTTEN_BEAST_784:LIVER - CREATURE:FORGOTTEN_BEAST_784:GUT -$CREATURE:FORGOTTEN_BEAST_784:STOMACH -$CREATURE:FORGOTTEN_BEAST_784:GIZZARD -%CREATURE:FORGOTTEN_BEAST_784:PANCREAS -#CREATURE:FORGOTTEN_BEAST_784:SPLEEN -#CREATURE:FORGOTTEN_BEAST_784:KIDNEY -#CREATURE:FORGOTTEN_BEAST_785:MUSCLE - CREATURE:FORGOTTEN_BEAST_785:EYE -"CREATURE:FORGOTTEN_BEAST_785:BRAIN -!CREATURE:FORGOTTEN_BEAST_785:LUNG -"CREATURE:FORGOTTEN_BEAST_785:HEART -"CREATURE:FORGOTTEN_BEAST_785:LIVER - CREATURE:FORGOTTEN_BEAST_785:GUT -$CREATURE:FORGOTTEN_BEAST_785:STOMACH -$CREATURE:FORGOTTEN_BEAST_785:GIZZARD -%CREATURE:FORGOTTEN_BEAST_785:PANCREAS -#CREATURE:FORGOTTEN_BEAST_785:SPLEEN -#CREATURE:FORGOTTEN_BEAST_785:KIDNEY -#CREATURE:FORGOTTEN_BEAST_786:MUSCLE - CREATURE:FORGOTTEN_BEAST_786:EYE -"CREATURE:FORGOTTEN_BEAST_786:BRAIN -!CREATURE:FORGOTTEN_BEAST_786:LUNG -"CREATURE:FORGOTTEN_BEAST_786:HEART -"CREATURE:FORGOTTEN_BEAST_786:LIVER - CREATURE:FORGOTTEN_BEAST_786:GUT -$CREATURE:FORGOTTEN_BEAST_786:STOMACH -$CREATURE:FORGOTTEN_BEAST_786:GIZZARD -%CREATURE:FORGOTTEN_BEAST_786:PANCREAS -#CREATURE:FORGOTTEN_BEAST_786:SPLEEN -#CREATURE:FORGOTTEN_BEAST_786:KIDNEY -#CREATURE:FORGOTTEN_BEAST_787:MUSCLE - CREATURE:FORGOTTEN_BEAST_787:EYE -"CREATURE:FORGOTTEN_BEAST_787:BRAIN -!CREATURE:FORGOTTEN_BEAST_787:LUNG -"CREATURE:FORGOTTEN_BEAST_787:HEART -"CREATURE:FORGOTTEN_BEAST_787:LIVER - CREATURE:FORGOTTEN_BEAST_787:GUT -$CREATURE:FORGOTTEN_BEAST_787:STOMACH -$CREATURE:FORGOTTEN_BEAST_787:GIZZARD -%CREATURE:FORGOTTEN_BEAST_787:PANCREAS -#CREATURE:FORGOTTEN_BEAST_787:SPLEEN -#CREATURE:FORGOTTEN_BEAST_787:KIDNEY -#CREATURE:FORGOTTEN_BEAST_789:MUSCLE - CREATURE:FORGOTTEN_BEAST_789:EYE -"CREATURE:FORGOTTEN_BEAST_789:BRAIN -!CREATURE:FORGOTTEN_BEAST_789:LUNG -"CREATURE:FORGOTTEN_BEAST_789:HEART -"CREATURE:FORGOTTEN_BEAST_789:LIVER - CREATURE:FORGOTTEN_BEAST_789:GUT -$CREATURE:FORGOTTEN_BEAST_789:STOMACH -$CREATURE:FORGOTTEN_BEAST_789:GIZZARD -%CREATURE:FORGOTTEN_BEAST_789:PANCREAS -#CREATURE:FORGOTTEN_BEAST_789:SPLEEN -#CREATURE:FORGOTTEN_BEAST_789:KIDNEY -#CREATURE:FORGOTTEN_BEAST_792:MUSCLE - CREATURE:FORGOTTEN_BEAST_792:EYE -"CREATURE:FORGOTTEN_BEAST_792:BRAIN -!CREATURE:FORGOTTEN_BEAST_792:LUNG -"CREATURE:FORGOTTEN_BEAST_792:HEART -"CREATURE:FORGOTTEN_BEAST_792:LIVER - CREATURE:FORGOTTEN_BEAST_792:GUT -$CREATURE:FORGOTTEN_BEAST_792:STOMACH -$CREATURE:FORGOTTEN_BEAST_792:GIZZARD -%CREATURE:FORGOTTEN_BEAST_792:PANCREAS -#CREATURE:FORGOTTEN_BEAST_792:SPLEEN -#CREATURE:FORGOTTEN_BEAST_792:KIDNEY -#CREATURE:FORGOTTEN_BEAST_793:MUSCLE - CREATURE:FORGOTTEN_BEAST_793:EYE -"CREATURE:FORGOTTEN_BEAST_793:BRAIN -!CREATURE:FORGOTTEN_BEAST_793:LUNG -"CREATURE:FORGOTTEN_BEAST_793:HEART -"CREATURE:FORGOTTEN_BEAST_793:LIVER - CREATURE:FORGOTTEN_BEAST_793:GUT -$CREATURE:FORGOTTEN_BEAST_793:STOMACH -$CREATURE:FORGOTTEN_BEAST_793:GIZZARD -%CREATURE:FORGOTTEN_BEAST_793:PANCREAS -#CREATURE:FORGOTTEN_BEAST_793:SPLEEN -#CREATURE:FORGOTTEN_BEAST_793:KIDNEY -#CREATURE:FORGOTTEN_BEAST_794:MUSCLE - CREATURE:FORGOTTEN_BEAST_794:EYE -"CREATURE:FORGOTTEN_BEAST_794:BRAIN -!CREATURE:FORGOTTEN_BEAST_794:LUNG -"CREATURE:FORGOTTEN_BEAST_794:HEART -"CREATURE:FORGOTTEN_BEAST_794:LIVER - CREATURE:FORGOTTEN_BEAST_794:GUT -$CREATURE:FORGOTTEN_BEAST_794:STOMACH -$CREATURE:FORGOTTEN_BEAST_794:GIZZARD -%CREATURE:FORGOTTEN_BEAST_794:PANCREAS -#CREATURE:FORGOTTEN_BEAST_794:SPLEEN -#CREATURE:FORGOTTEN_BEAST_794:KIDNEY -#CREATURE:FORGOTTEN_BEAST_795:MUSCLE - CREATURE:FORGOTTEN_BEAST_795:EYE -"CREATURE:FORGOTTEN_BEAST_795:BRAIN -!CREATURE:FORGOTTEN_BEAST_795:LUNG -"CREATURE:FORGOTTEN_BEAST_795:HEART -"CREATURE:FORGOTTEN_BEAST_795:LIVER - CREATURE:FORGOTTEN_BEAST_795:GUT -$CREATURE:FORGOTTEN_BEAST_795:STOMACH -$CREATURE:FORGOTTEN_BEAST_795:GIZZARD -%CREATURE:FORGOTTEN_BEAST_795:PANCREAS -#CREATURE:FORGOTTEN_BEAST_795:SPLEEN -#CREATURE:FORGOTTEN_BEAST_795:KIDNEY -#CREATURE:FORGOTTEN_BEAST_796:MUSCLE - CREATURE:FORGOTTEN_BEAST_796:EYE -"CREATURE:FORGOTTEN_BEAST_796:BRAIN -!CREATURE:FORGOTTEN_BEAST_796:LUNG -"CREATURE:FORGOTTEN_BEAST_796:HEART -"CREATURE:FORGOTTEN_BEAST_796:LIVER - CREATURE:FORGOTTEN_BEAST_796:GUT -$CREATURE:FORGOTTEN_BEAST_796:STOMACH -$CREATURE:FORGOTTEN_BEAST_796:GIZZARD -%CREATURE:FORGOTTEN_BEAST_796:PANCREAS -#CREATURE:FORGOTTEN_BEAST_796:SPLEEN -#CREATURE:FORGOTTEN_BEAST_796:KIDNEY -#CREATURE:FORGOTTEN_BEAST_799:MUSCLE - CREATURE:FORGOTTEN_BEAST_799:EYE -"CREATURE:FORGOTTEN_BEAST_799:BRAIN -!CREATURE:FORGOTTEN_BEAST_799:LUNG -"CREATURE:FORGOTTEN_BEAST_799:HEART -"CREATURE:FORGOTTEN_BEAST_799:LIVER - CREATURE:FORGOTTEN_BEAST_799:GUT -$CREATURE:FORGOTTEN_BEAST_799:STOMACH -$CREATURE:FORGOTTEN_BEAST_799:GIZZARD -%CREATURE:FORGOTTEN_BEAST_799:PANCREAS -#CREATURE:FORGOTTEN_BEAST_799:SPLEEN -#CREATURE:FORGOTTEN_BEAST_799:KIDNEY -#CREATURE:FORGOTTEN_BEAST_800:MUSCLE - CREATURE:FORGOTTEN_BEAST_800:EYE -"CREATURE:FORGOTTEN_BEAST_800:BRAIN -!CREATURE:FORGOTTEN_BEAST_800:LUNG -"CREATURE:FORGOTTEN_BEAST_800:HEART -"CREATURE:FORGOTTEN_BEAST_800:LIVER - CREATURE:FORGOTTEN_BEAST_800:GUT -$CREATURE:FORGOTTEN_BEAST_800:STOMACH -$CREATURE:FORGOTTEN_BEAST_800:GIZZARD -%CREATURE:FORGOTTEN_BEAST_800:PANCREAS -#CREATURE:FORGOTTEN_BEAST_800:SPLEEN -#CREATURE:FORGOTTEN_BEAST_800:KIDNEY -#CREATURE:FORGOTTEN_BEAST_801:MUSCLE - CREATURE:FORGOTTEN_BEAST_801:EYE -"CREATURE:FORGOTTEN_BEAST_801:BRAIN -!CREATURE:FORGOTTEN_BEAST_801:LUNG -"CREATURE:FORGOTTEN_BEAST_801:HEART -"CREATURE:FORGOTTEN_BEAST_801:LIVER - CREATURE:FORGOTTEN_BEAST_801:GUT -$CREATURE:FORGOTTEN_BEAST_801:STOMACH -$CREATURE:FORGOTTEN_BEAST_801:GIZZARD -%CREATURE:FORGOTTEN_BEAST_801:PANCREAS -#CREATURE:FORGOTTEN_BEAST_801:SPLEEN -#CREATURE:FORGOTTEN_BEAST_801:KIDNEY -#CREATURE:FORGOTTEN_BEAST_802:MUSCLE - CREATURE:FORGOTTEN_BEAST_802:EYE -"CREATURE:FORGOTTEN_BEAST_802:BRAIN -!CREATURE:FORGOTTEN_BEAST_802:LUNG -"CREATURE:FORGOTTEN_BEAST_802:HEART -"CREATURE:FORGOTTEN_BEAST_802:LIVER - CREATURE:FORGOTTEN_BEAST_802:GUT -$CREATURE:FORGOTTEN_BEAST_802:STOMACH -$CREATURE:FORGOTTEN_BEAST_802:GIZZARD -%CREATURE:FORGOTTEN_BEAST_802:PANCREAS -#CREATURE:FORGOTTEN_BEAST_802:SPLEEN -#CREATURE:FORGOTTEN_BEAST_802:KIDNEY -#CREATURE:FORGOTTEN_BEAST_803:MUSCLE - CREATURE:FORGOTTEN_BEAST_803:EYE -"CREATURE:FORGOTTEN_BEAST_803:BRAIN -!CREATURE:FORGOTTEN_BEAST_803:LUNG -"CREATURE:FORGOTTEN_BEAST_803:HEART -"CREATURE:FORGOTTEN_BEAST_803:LIVER - CREATURE:FORGOTTEN_BEAST_803:GUT -$CREATURE:FORGOTTEN_BEAST_803:STOMACH -$CREATURE:FORGOTTEN_BEAST_803:GIZZARD -%CREATURE:FORGOTTEN_BEAST_803:PANCREAS -#CREATURE:FORGOTTEN_BEAST_803:SPLEEN -#CREATURE:FORGOTTEN_BEAST_803:KIDNEY -#CREATURE:FORGOTTEN_BEAST_804:MUSCLE - CREATURE:FORGOTTEN_BEAST_804:EYE -"CREATURE:FORGOTTEN_BEAST_804:BRAIN -!CREATURE:FORGOTTEN_BEAST_804:LUNG -"CREATURE:FORGOTTEN_BEAST_804:HEART -"CREATURE:FORGOTTEN_BEAST_804:LIVER - CREATURE:FORGOTTEN_BEAST_804:GUT -$CREATURE:FORGOTTEN_BEAST_804:STOMACH -$CREATURE:FORGOTTEN_BEAST_804:GIZZARD -%CREATURE:FORGOTTEN_BEAST_804:PANCREAS -#CREATURE:FORGOTTEN_BEAST_804:SPLEEN -#CREATURE:FORGOTTEN_BEAST_804:KIDNEY -#CREATURE:FORGOTTEN_BEAST_806:MUSCLE - CREATURE:FORGOTTEN_BEAST_806:EYE -"CREATURE:FORGOTTEN_BEAST_806:BRAIN -!CREATURE:FORGOTTEN_BEAST_806:LUNG -"CREATURE:FORGOTTEN_BEAST_806:HEART -"CREATURE:FORGOTTEN_BEAST_806:LIVER - CREATURE:FORGOTTEN_BEAST_806:GUT -$CREATURE:FORGOTTEN_BEAST_806:STOMACH -$CREATURE:FORGOTTEN_BEAST_806:GIZZARD -%CREATURE:FORGOTTEN_BEAST_806:PANCREAS -#CREATURE:FORGOTTEN_BEAST_806:SPLEEN -#CREATURE:FORGOTTEN_BEAST_806:KIDNEY -#CREATURE:FORGOTTEN_BEAST_807:MUSCLE - CREATURE:FORGOTTEN_BEAST_807:EYE -"CREATURE:FORGOTTEN_BEAST_807:BRAIN -!CREATURE:FORGOTTEN_BEAST_807:LUNG -"CREATURE:FORGOTTEN_BEAST_807:HEART -"CREATURE:FORGOTTEN_BEAST_807:LIVER - CREATURE:FORGOTTEN_BEAST_807:GUT -$CREATURE:FORGOTTEN_BEAST_807:STOMACH -$CREATURE:FORGOTTEN_BEAST_807:GIZZARD -%CREATURE:FORGOTTEN_BEAST_807:PANCREAS -#CREATURE:FORGOTTEN_BEAST_807:SPLEEN -#CREATURE:FORGOTTEN_BEAST_807:KIDNEY -#CREATURE:FORGOTTEN_BEAST_809:MUSCLE - CREATURE:FORGOTTEN_BEAST_809:EYE -"CREATURE:FORGOTTEN_BEAST_809:BRAIN -!CREATURE:FORGOTTEN_BEAST_809:LUNG -"CREATURE:FORGOTTEN_BEAST_809:HEART -"CREATURE:FORGOTTEN_BEAST_809:LIVER - CREATURE:FORGOTTEN_BEAST_809:GUT -$CREATURE:FORGOTTEN_BEAST_809:STOMACH -$CREATURE:FORGOTTEN_BEAST_809:GIZZARD -%CREATURE:FORGOTTEN_BEAST_809:PANCREAS -#CREATURE:FORGOTTEN_BEAST_809:SPLEEN -#CREATURE:FORGOTTEN_BEAST_809:KIDNEY -#CREATURE:FORGOTTEN_BEAST_810:MUSCLE - CREATURE:FORGOTTEN_BEAST_810:EYE -"CREATURE:FORGOTTEN_BEAST_810:BRAIN -!CREATURE:FORGOTTEN_BEAST_810:LUNG -"CREATURE:FORGOTTEN_BEAST_810:HEART -"CREATURE:FORGOTTEN_BEAST_810:LIVER - CREATURE:FORGOTTEN_BEAST_810:GUT -$CREATURE:FORGOTTEN_BEAST_810:STOMACH -$CREATURE:FORGOTTEN_BEAST_810:GIZZARD -%CREATURE:FORGOTTEN_BEAST_810:PANCREAS -#CREATURE:FORGOTTEN_BEAST_810:SPLEEN -#CREATURE:FORGOTTEN_BEAST_810:KIDNEY -#CREATURE:FORGOTTEN_BEAST_811:MUSCLE - CREATURE:FORGOTTEN_BEAST_811:EYE -"CREATURE:FORGOTTEN_BEAST_811:BRAIN -!CREATURE:FORGOTTEN_BEAST_811:LUNG -"CREATURE:FORGOTTEN_BEAST_811:HEART -"CREATURE:FORGOTTEN_BEAST_811:LIVER - CREATURE:FORGOTTEN_BEAST_811:GUT -$CREATURE:FORGOTTEN_BEAST_811:STOMACH -$CREATURE:FORGOTTEN_BEAST_811:GIZZARD -%CREATURE:FORGOTTEN_BEAST_811:PANCREAS -#CREATURE:FORGOTTEN_BEAST_811:SPLEEN -#CREATURE:FORGOTTEN_BEAST_811:KIDNEY -#CREATURE:FORGOTTEN_BEAST_812:MUSCLE - CREATURE:FORGOTTEN_BEAST_812:EYE -"CREATURE:FORGOTTEN_BEAST_812:BRAIN -!CREATURE:FORGOTTEN_BEAST_812:LUNG -"CREATURE:FORGOTTEN_BEAST_812:HEART -"CREATURE:FORGOTTEN_BEAST_812:LIVER - CREATURE:FORGOTTEN_BEAST_812:GUT -$CREATURE:FORGOTTEN_BEAST_812:STOMACH -$CREATURE:FORGOTTEN_BEAST_812:GIZZARD -%CREATURE:FORGOTTEN_BEAST_812:PANCREAS -#CREATURE:FORGOTTEN_BEAST_812:SPLEEN -#CREATURE:FORGOTTEN_BEAST_812:KIDNEY -#CREATURE:FORGOTTEN_BEAST_815:MUSCLE - CREATURE:FORGOTTEN_BEAST_815:EYE -"CREATURE:FORGOTTEN_BEAST_815:BRAIN -!CREATURE:FORGOTTEN_BEAST_815:LUNG -"CREATURE:FORGOTTEN_BEAST_815:HEART -"CREATURE:FORGOTTEN_BEAST_815:LIVER - CREATURE:FORGOTTEN_BEAST_815:GUT -$CREATURE:FORGOTTEN_BEAST_815:STOMACH -$CREATURE:FORGOTTEN_BEAST_815:GIZZARD -%CREATURE:FORGOTTEN_BEAST_815:PANCREAS -#CREATURE:FORGOTTEN_BEAST_815:SPLEEN -#CREATURE:FORGOTTEN_BEAST_815:KIDNEY -#CREATURE:FORGOTTEN_BEAST_817:MUSCLE - CREATURE:FORGOTTEN_BEAST_817:EYE -"CREATURE:FORGOTTEN_BEAST_817:BRAIN -!CREATURE:FORGOTTEN_BEAST_817:LUNG -"CREATURE:FORGOTTEN_BEAST_817:HEART -"CREATURE:FORGOTTEN_BEAST_817:LIVER - CREATURE:FORGOTTEN_BEAST_817:GUT -$CREATURE:FORGOTTEN_BEAST_817:STOMACH -$CREATURE:FORGOTTEN_BEAST_817:GIZZARD -%CREATURE:FORGOTTEN_BEAST_817:PANCREAS -#CREATURE:FORGOTTEN_BEAST_817:SPLEEN -#CREATURE:FORGOTTEN_BEAST_817:KIDNEY -#CREATURE:FORGOTTEN_BEAST_818:MUSCLE - CREATURE:FORGOTTEN_BEAST_818:EYE -"CREATURE:FORGOTTEN_BEAST_818:BRAIN -!CREATURE:FORGOTTEN_BEAST_818:LUNG -"CREATURE:FORGOTTEN_BEAST_818:HEART -"CREATURE:FORGOTTEN_BEAST_818:LIVER - CREATURE:FORGOTTEN_BEAST_818:GUT -$CREATURE:FORGOTTEN_BEAST_818:STOMACH -$CREATURE:FORGOTTEN_BEAST_818:GIZZARD -%CREATURE:FORGOTTEN_BEAST_818:PANCREAS -#CREATURE:FORGOTTEN_BEAST_818:SPLEEN -#CREATURE:FORGOTTEN_BEAST_818:KIDNEY -#CREATURE:FORGOTTEN_BEAST_819:MUSCLE - CREATURE:FORGOTTEN_BEAST_819:EYE -"CREATURE:FORGOTTEN_BEAST_819:BRAIN -!CREATURE:FORGOTTEN_BEAST_819:LUNG -"CREATURE:FORGOTTEN_BEAST_819:HEART -"CREATURE:FORGOTTEN_BEAST_819:LIVER - CREATURE:FORGOTTEN_BEAST_819:GUT -$CREATURE:FORGOTTEN_BEAST_819:STOMACH -$CREATURE:FORGOTTEN_BEAST_819:GIZZARD -%CREATURE:FORGOTTEN_BEAST_819:PANCREAS -#CREATURE:FORGOTTEN_BEAST_819:SPLEEN -#CREATURE:FORGOTTEN_BEAST_819:KIDNEY -#CREATURE:FORGOTTEN_BEAST_820:MUSCLE - CREATURE:FORGOTTEN_BEAST_820:EYE -"CREATURE:FORGOTTEN_BEAST_820:BRAIN -!CREATURE:FORGOTTEN_BEAST_820:LUNG -"CREATURE:FORGOTTEN_BEAST_820:HEART -"CREATURE:FORGOTTEN_BEAST_820:LIVER - CREATURE:FORGOTTEN_BEAST_820:GUT -$CREATURE:FORGOTTEN_BEAST_820:STOMACH -$CREATURE:FORGOTTEN_BEAST_820:GIZZARD -%CREATURE:FORGOTTEN_BEAST_820:PANCREAS -#CREATURE:FORGOTTEN_BEAST_820:SPLEEN -#CREATURE:FORGOTTEN_BEAST_820:KIDNEY -#CREATURE:FORGOTTEN_BEAST_821:MUSCLE - CREATURE:FORGOTTEN_BEAST_821:EYE -"CREATURE:FORGOTTEN_BEAST_821:BRAIN -!CREATURE:FORGOTTEN_BEAST_821:LUNG -"CREATURE:FORGOTTEN_BEAST_821:HEART -"CREATURE:FORGOTTEN_BEAST_821:LIVER - CREATURE:FORGOTTEN_BEAST_821:GUT -$CREATURE:FORGOTTEN_BEAST_821:STOMACH -$CREATURE:FORGOTTEN_BEAST_821:GIZZARD -%CREATURE:FORGOTTEN_BEAST_821:PANCREAS -#CREATURE:FORGOTTEN_BEAST_821:SPLEEN -#CREATURE:FORGOTTEN_BEAST_821:KIDNEY -#CREATURE:FORGOTTEN_BEAST_822:MUSCLE - CREATURE:FORGOTTEN_BEAST_822:EYE -"CREATURE:FORGOTTEN_BEAST_822:BRAIN -!CREATURE:FORGOTTEN_BEAST_822:LUNG -"CREATURE:FORGOTTEN_BEAST_822:HEART -"CREATURE:FORGOTTEN_BEAST_822:LIVER - CREATURE:FORGOTTEN_BEAST_822:GUT -$CREATURE:FORGOTTEN_BEAST_822:STOMACH -$CREATURE:FORGOTTEN_BEAST_822:GIZZARD -%CREATURE:FORGOTTEN_BEAST_822:PANCREAS -#CREATURE:FORGOTTEN_BEAST_822:SPLEEN -#CREATURE:FORGOTTEN_BEAST_822:KIDNEY -#CREATURE:FORGOTTEN_BEAST_824:MUSCLE - CREATURE:FORGOTTEN_BEAST_824:EYE -"CREATURE:FORGOTTEN_BEAST_824:BRAIN -!CREATURE:FORGOTTEN_BEAST_824:LUNG -"CREATURE:FORGOTTEN_BEAST_824:HEART -"CREATURE:FORGOTTEN_BEAST_824:LIVER - CREATURE:FORGOTTEN_BEAST_824:GUT -$CREATURE:FORGOTTEN_BEAST_824:STOMACH -$CREATURE:FORGOTTEN_BEAST_824:GIZZARD -%CREATURE:FORGOTTEN_BEAST_824:PANCREAS -#CREATURE:FORGOTTEN_BEAST_824:SPLEEN -#CREATURE:FORGOTTEN_BEAST_824:KIDNEY -#CREATURE:FORGOTTEN_BEAST_825:MUSCLE - CREATURE:FORGOTTEN_BEAST_825:EYE -"CREATURE:FORGOTTEN_BEAST_825:BRAIN -!CREATURE:FORGOTTEN_BEAST_825:LUNG -"CREATURE:FORGOTTEN_BEAST_825:HEART -"CREATURE:FORGOTTEN_BEAST_825:LIVER - CREATURE:FORGOTTEN_BEAST_825:GUT -$CREATURE:FORGOTTEN_BEAST_825:STOMACH -$CREATURE:FORGOTTEN_BEAST_825:GIZZARD -%CREATURE:FORGOTTEN_BEAST_825:PANCREAS -#CREATURE:FORGOTTEN_BEAST_825:SPLEEN -#CREATURE:FORGOTTEN_BEAST_825:KIDNEY -#CREATURE:FORGOTTEN_BEAST_826:MUSCLE - CREATURE:FORGOTTEN_BEAST_826:EYE -"CREATURE:FORGOTTEN_BEAST_826:BRAIN -!CREATURE:FORGOTTEN_BEAST_826:LUNG -"CREATURE:FORGOTTEN_BEAST_826:HEART -"CREATURE:FORGOTTEN_BEAST_826:LIVER - CREATURE:FORGOTTEN_BEAST_826:GUT -$CREATURE:FORGOTTEN_BEAST_826:STOMACH -$CREATURE:FORGOTTEN_BEAST_826:GIZZARD -%CREATURE:FORGOTTEN_BEAST_826:PANCREAS -#CREATURE:FORGOTTEN_BEAST_826:SPLEEN -#CREATURE:FORGOTTEN_BEAST_826:KIDNEY -#CREATURE:FORGOTTEN_BEAST_827:MUSCLE - CREATURE:FORGOTTEN_BEAST_827:EYE -"CREATURE:FORGOTTEN_BEAST_827:BRAIN -!CREATURE:FORGOTTEN_BEAST_827:LUNG -"CREATURE:FORGOTTEN_BEAST_827:HEART -"CREATURE:FORGOTTEN_BEAST_827:LIVER - CREATURE:FORGOTTEN_BEAST_827:GUT -$CREATURE:FORGOTTEN_BEAST_827:STOMACH -$CREATURE:FORGOTTEN_BEAST_827:GIZZARD -%CREATURE:FORGOTTEN_BEAST_827:PANCREAS -#CREATURE:FORGOTTEN_BEAST_827:SPLEEN -#CREATURE:FORGOTTEN_BEAST_827:KIDNEY -#CREATURE:FORGOTTEN_BEAST_828:MUSCLE - CREATURE:FORGOTTEN_BEAST_828:EYE -"CREATURE:FORGOTTEN_BEAST_828:BRAIN -!CREATURE:FORGOTTEN_BEAST_828:LUNG -"CREATURE:FORGOTTEN_BEAST_828:HEART -"CREATURE:FORGOTTEN_BEAST_828:LIVER - CREATURE:FORGOTTEN_BEAST_828:GUT -$CREATURE:FORGOTTEN_BEAST_828:STOMACH -$CREATURE:FORGOTTEN_BEAST_828:GIZZARD -%CREATURE:FORGOTTEN_BEAST_828:PANCREAS -#CREATURE:FORGOTTEN_BEAST_828:SPLEEN -#CREATURE:FORGOTTEN_BEAST_828:KIDNEY -#CREATURE:FORGOTTEN_BEAST_831:MUSCLE - CREATURE:FORGOTTEN_BEAST_831:EYE -"CREATURE:FORGOTTEN_BEAST_831:BRAIN -!CREATURE:FORGOTTEN_BEAST_831:LUNG -"CREATURE:FORGOTTEN_BEAST_831:HEART -"CREATURE:FORGOTTEN_BEAST_831:LIVER - CREATURE:FORGOTTEN_BEAST_831:GUT -$CREATURE:FORGOTTEN_BEAST_831:STOMACH -$CREATURE:FORGOTTEN_BEAST_831:GIZZARD -%CREATURE:FORGOTTEN_BEAST_831:PANCREAS -#CREATURE:FORGOTTEN_BEAST_831:SPLEEN -#CREATURE:FORGOTTEN_BEAST_831:KIDNEY -#CREATURE:FORGOTTEN_BEAST_833:MUSCLE - CREATURE:FORGOTTEN_BEAST_833:EYE -"CREATURE:FORGOTTEN_BEAST_833:BRAIN -!CREATURE:FORGOTTEN_BEAST_833:LUNG -"CREATURE:FORGOTTEN_BEAST_833:HEART -"CREATURE:FORGOTTEN_BEAST_833:LIVER - CREATURE:FORGOTTEN_BEAST_833:GUT -$CREATURE:FORGOTTEN_BEAST_833:STOMACH -$CREATURE:FORGOTTEN_BEAST_833:GIZZARD -%CREATURE:FORGOTTEN_BEAST_833:PANCREAS -#CREATURE:FORGOTTEN_BEAST_833:SPLEEN -#CREATURE:FORGOTTEN_BEAST_833:KIDNEY -#CREATURE:FORGOTTEN_BEAST_835:MUSCLE - CREATURE:FORGOTTEN_BEAST_835:EYE -"CREATURE:FORGOTTEN_BEAST_835:BRAIN -!CREATURE:FORGOTTEN_BEAST_835:LUNG -"CREATURE:FORGOTTEN_BEAST_835:HEART -"CREATURE:FORGOTTEN_BEAST_835:LIVER - CREATURE:FORGOTTEN_BEAST_835:GUT -$CREATURE:FORGOTTEN_BEAST_835:STOMACH -$CREATURE:FORGOTTEN_BEAST_835:GIZZARD -%CREATURE:FORGOTTEN_BEAST_835:PANCREAS -#CREATURE:FORGOTTEN_BEAST_835:SPLEEN -#CREATURE:FORGOTTEN_BEAST_835:KIDNEY -#CREATURE:FORGOTTEN_BEAST_837:MUSCLE - CREATURE:FORGOTTEN_BEAST_837:EYE -"CREATURE:FORGOTTEN_BEAST_837:BRAIN -!CREATURE:FORGOTTEN_BEAST_837:LUNG -"CREATURE:FORGOTTEN_BEAST_837:HEART -"CREATURE:FORGOTTEN_BEAST_837:LIVER - CREATURE:FORGOTTEN_BEAST_837:GUT -$CREATURE:FORGOTTEN_BEAST_837:STOMACH -$CREATURE:FORGOTTEN_BEAST_837:GIZZARD -%CREATURE:FORGOTTEN_BEAST_837:PANCREAS -#CREATURE:FORGOTTEN_BEAST_837:SPLEEN -#CREATURE:FORGOTTEN_BEAST_837:KIDNEY -#CREATURE:FORGOTTEN_BEAST_838:MUSCLE - CREATURE:FORGOTTEN_BEAST_838:EYE -"CREATURE:FORGOTTEN_BEAST_838:BRAIN -!CREATURE:FORGOTTEN_BEAST_838:LUNG -"CREATURE:FORGOTTEN_BEAST_838:HEART -"CREATURE:FORGOTTEN_BEAST_838:LIVER - CREATURE:FORGOTTEN_BEAST_838:GUT -$CREATURE:FORGOTTEN_BEAST_838:STOMACH -$CREATURE:FORGOTTEN_BEAST_838:GIZZARD -%CREATURE:FORGOTTEN_BEAST_838:PANCREAS -#CREATURE:FORGOTTEN_BEAST_838:SPLEEN -#CREATURE:FORGOTTEN_BEAST_838:KIDNEY -#CREATURE:FORGOTTEN_BEAST_842:MUSCLE - CREATURE:FORGOTTEN_BEAST_842:EYE -"CREATURE:FORGOTTEN_BEAST_842:BRAIN -!CREATURE:FORGOTTEN_BEAST_842:LUNG -"CREATURE:FORGOTTEN_BEAST_842:HEART -"CREATURE:FORGOTTEN_BEAST_842:LIVER - CREATURE:FORGOTTEN_BEAST_842:GUT -$CREATURE:FORGOTTEN_BEAST_842:STOMACH -$CREATURE:FORGOTTEN_BEAST_842:GIZZARD -%CREATURE:FORGOTTEN_BEAST_842:PANCREAS -#CREATURE:FORGOTTEN_BEAST_842:SPLEEN -#CREATURE:FORGOTTEN_BEAST_842:KIDNEY -#CREATURE:FORGOTTEN_BEAST_843:MUSCLE - CREATURE:FORGOTTEN_BEAST_843:EYE -"CREATURE:FORGOTTEN_BEAST_843:BRAIN -!CREATURE:FORGOTTEN_BEAST_843:LUNG -"CREATURE:FORGOTTEN_BEAST_843:HEART -"CREATURE:FORGOTTEN_BEAST_843:LIVER - CREATURE:FORGOTTEN_BEAST_843:GUT -$CREATURE:FORGOTTEN_BEAST_843:STOMACH -$CREATURE:FORGOTTEN_BEAST_843:GIZZARD -%CREATURE:FORGOTTEN_BEAST_843:PANCREAS -#CREATURE:FORGOTTEN_BEAST_843:SPLEEN -#CREATURE:FORGOTTEN_BEAST_843:KIDNEY -#CREATURE:FORGOTTEN_BEAST_844:MUSCLE - CREATURE:FORGOTTEN_BEAST_844:EYE -"CREATURE:FORGOTTEN_BEAST_844:BRAIN -!CREATURE:FORGOTTEN_BEAST_844:LUNG -"CREATURE:FORGOTTEN_BEAST_844:HEART -"CREATURE:FORGOTTEN_BEAST_844:LIVER - CREATURE:FORGOTTEN_BEAST_844:GUT -$CREATURE:FORGOTTEN_BEAST_844:STOMACH -$CREATURE:FORGOTTEN_BEAST_844:GIZZARD -%CREATURE:FORGOTTEN_BEAST_844:PANCREAS -#CREATURE:FORGOTTEN_BEAST_844:SPLEEN -#CREATURE:FORGOTTEN_BEAST_844:KIDNEY -#CREATURE:FORGOTTEN_BEAST_845:MUSCLE - CREATURE:FORGOTTEN_BEAST_845:EYE -"CREATURE:FORGOTTEN_BEAST_845:BRAIN -!CREATURE:FORGOTTEN_BEAST_845:LUNG -"CREATURE:FORGOTTEN_BEAST_845:HEART -"CREATURE:FORGOTTEN_BEAST_845:LIVER - CREATURE:FORGOTTEN_BEAST_845:GUT -$CREATURE:FORGOTTEN_BEAST_845:STOMACH -$CREATURE:FORGOTTEN_BEAST_845:GIZZARD -%CREATURE:FORGOTTEN_BEAST_845:PANCREAS -#CREATURE:FORGOTTEN_BEAST_845:SPLEEN -#CREATURE:FORGOTTEN_BEAST_845:KIDNEY -#CREATURE:FORGOTTEN_BEAST_846:MUSCLE - CREATURE:FORGOTTEN_BEAST_846:EYE -"CREATURE:FORGOTTEN_BEAST_846:BRAIN -!CREATURE:FORGOTTEN_BEAST_846:LUNG -"CREATURE:FORGOTTEN_BEAST_846:HEART -"CREATURE:FORGOTTEN_BEAST_846:LIVER - CREATURE:FORGOTTEN_BEAST_846:GUT -$CREATURE:FORGOTTEN_BEAST_846:STOMACH -$CREATURE:FORGOTTEN_BEAST_846:GIZZARD -%CREATURE:FORGOTTEN_BEAST_846:PANCREAS -#CREATURE:FORGOTTEN_BEAST_846:SPLEEN -#CREATURE:FORGOTTEN_BEAST_846:KIDNEY -#CREATURE:FORGOTTEN_BEAST_847:MUSCLE - CREATURE:FORGOTTEN_BEAST_847:EYE -"CREATURE:FORGOTTEN_BEAST_847:BRAIN -!CREATURE:FORGOTTEN_BEAST_847:LUNG -"CREATURE:FORGOTTEN_BEAST_847:HEART -"CREATURE:FORGOTTEN_BEAST_847:LIVER - CREATURE:FORGOTTEN_BEAST_847:GUT -$CREATURE:FORGOTTEN_BEAST_847:STOMACH -$CREATURE:FORGOTTEN_BEAST_847:GIZZARD -%CREATURE:FORGOTTEN_BEAST_847:PANCREAS -#CREATURE:FORGOTTEN_BEAST_847:SPLEEN -#CREATURE:FORGOTTEN_BEAST_847:KIDNEY -#CREATURE:FORGOTTEN_BEAST_848:MUSCLE - CREATURE:FORGOTTEN_BEAST_848:EYE -"CREATURE:FORGOTTEN_BEAST_848:BRAIN -!CREATURE:FORGOTTEN_BEAST_848:LUNG -"CREATURE:FORGOTTEN_BEAST_848:HEART -"CREATURE:FORGOTTEN_BEAST_848:LIVER - CREATURE:FORGOTTEN_BEAST_848:GUT -$CREATURE:FORGOTTEN_BEAST_848:STOMACH -$CREATURE:FORGOTTEN_BEAST_848:GIZZARD -%CREATURE:FORGOTTEN_BEAST_848:PANCREAS -#CREATURE:FORGOTTEN_BEAST_848:SPLEEN -#CREATURE:FORGOTTEN_BEAST_848:KIDNEY -#CREATURE:FORGOTTEN_BEAST_849:MUSCLE - CREATURE:FORGOTTEN_BEAST_849:EYE -"CREATURE:FORGOTTEN_BEAST_849:BRAIN -!CREATURE:FORGOTTEN_BEAST_849:LUNG -"CREATURE:FORGOTTEN_BEAST_849:HEART -"CREATURE:FORGOTTEN_BEAST_849:LIVER - CREATURE:FORGOTTEN_BEAST_849:GUT -$CREATURE:FORGOTTEN_BEAST_849:STOMACH -$CREATURE:FORGOTTEN_BEAST_849:GIZZARD -%CREATURE:FORGOTTEN_BEAST_849:PANCREAS -#CREATURE:FORGOTTEN_BEAST_849:SPLEEN -#CREATURE:FORGOTTEN_BEAST_849:KIDNEY -#CREATURE:FORGOTTEN_BEAST_851:MUSCLE - CREATURE:FORGOTTEN_BEAST_851:EYE -"CREATURE:FORGOTTEN_BEAST_851:BRAIN -!CREATURE:FORGOTTEN_BEAST_851:LUNG -"CREATURE:FORGOTTEN_BEAST_851:HEART -"CREATURE:FORGOTTEN_BEAST_851:LIVER - CREATURE:FORGOTTEN_BEAST_851:GUT -$CREATURE:FORGOTTEN_BEAST_851:STOMACH -$CREATURE:FORGOTTEN_BEAST_851:GIZZARD -%CREATURE:FORGOTTEN_BEAST_851:PANCREAS -#CREATURE:FORGOTTEN_BEAST_851:SPLEEN -#CREATURE:FORGOTTEN_BEAST_851:KIDNEY -#CREATURE:FORGOTTEN_BEAST_853:MUSCLE - CREATURE:FORGOTTEN_BEAST_853:EYE -"CREATURE:FORGOTTEN_BEAST_853:BRAIN -!CREATURE:FORGOTTEN_BEAST_853:LUNG -"CREATURE:FORGOTTEN_BEAST_853:HEART -"CREATURE:FORGOTTEN_BEAST_853:LIVER - CREATURE:FORGOTTEN_BEAST_853:GUT -$CREATURE:FORGOTTEN_BEAST_853:STOMACH -$CREATURE:FORGOTTEN_BEAST_853:GIZZARD -%CREATURE:FORGOTTEN_BEAST_853:PANCREAS -#CREATURE:FORGOTTEN_BEAST_853:SPLEEN -#CREATURE:FORGOTTEN_BEAST_853:KIDNEY -#CREATURE:FORGOTTEN_BEAST_854:MUSCLE - CREATURE:FORGOTTEN_BEAST_854:EYE -"CREATURE:FORGOTTEN_BEAST_854:BRAIN -!CREATURE:FORGOTTEN_BEAST_854:LUNG -"CREATURE:FORGOTTEN_BEAST_854:HEART -"CREATURE:FORGOTTEN_BEAST_854:LIVER - CREATURE:FORGOTTEN_BEAST_854:GUT -$CREATURE:FORGOTTEN_BEAST_854:STOMACH -$CREATURE:FORGOTTEN_BEAST_854:GIZZARD -%CREATURE:FORGOTTEN_BEAST_854:PANCREAS -#CREATURE:FORGOTTEN_BEAST_854:SPLEEN -#CREATURE:FORGOTTEN_BEAST_854:KIDNEY -#CREATURE:FORGOTTEN_BEAST_855:MUSCLE - CREATURE:FORGOTTEN_BEAST_855:EYE -"CREATURE:FORGOTTEN_BEAST_855:BRAIN -!CREATURE:FORGOTTEN_BEAST_855:LUNG -"CREATURE:FORGOTTEN_BEAST_855:HEART -"CREATURE:FORGOTTEN_BEAST_855:LIVER - CREATURE:FORGOTTEN_BEAST_855:GUT -$CREATURE:FORGOTTEN_BEAST_855:STOMACH -$CREATURE:FORGOTTEN_BEAST_855:GIZZARD -%CREATURE:FORGOTTEN_BEAST_855:PANCREAS -#CREATURE:FORGOTTEN_BEAST_855:SPLEEN -#CREATURE:FORGOTTEN_BEAST_855:KIDNEY -#CREATURE:FORGOTTEN_BEAST_857:MUSCLE - CREATURE:FORGOTTEN_BEAST_857:EYE -"CREATURE:FORGOTTEN_BEAST_857:BRAIN -!CREATURE:FORGOTTEN_BEAST_857:LUNG -"CREATURE:FORGOTTEN_BEAST_857:HEART -"CREATURE:FORGOTTEN_BEAST_857:LIVER - CREATURE:FORGOTTEN_BEAST_857:GUT -$CREATURE:FORGOTTEN_BEAST_857:STOMACH -$CREATURE:FORGOTTEN_BEAST_857:GIZZARD -%CREATURE:FORGOTTEN_BEAST_857:PANCREAS -#CREATURE:FORGOTTEN_BEAST_857:SPLEEN -#CREATURE:FORGOTTEN_BEAST_857:KIDNEY -#CREATURE:FORGOTTEN_BEAST_858:MUSCLE - CREATURE:FORGOTTEN_BEAST_858:EYE -"CREATURE:FORGOTTEN_BEAST_858:BRAIN -!CREATURE:FORGOTTEN_BEAST_858:LUNG -"CREATURE:FORGOTTEN_BEAST_858:HEART -"CREATURE:FORGOTTEN_BEAST_858:LIVER - CREATURE:FORGOTTEN_BEAST_858:GUT -$CREATURE:FORGOTTEN_BEAST_858:STOMACH -$CREATURE:FORGOTTEN_BEAST_858:GIZZARD -%CREATURE:FORGOTTEN_BEAST_858:PANCREAS -#CREATURE:FORGOTTEN_BEAST_858:SPLEEN -#CREATURE:FORGOTTEN_BEAST_858:KIDNEY -#CREATURE:FORGOTTEN_BEAST_859:MUSCLE - CREATURE:FORGOTTEN_BEAST_859:EYE -"CREATURE:FORGOTTEN_BEAST_859:BRAIN -!CREATURE:FORGOTTEN_BEAST_859:LUNG -"CREATURE:FORGOTTEN_BEAST_859:HEART -"CREATURE:FORGOTTEN_BEAST_859:LIVER - CREATURE:FORGOTTEN_BEAST_859:GUT -$CREATURE:FORGOTTEN_BEAST_859:STOMACH -$CREATURE:FORGOTTEN_BEAST_859:GIZZARD -%CREATURE:FORGOTTEN_BEAST_859:PANCREAS -#CREATURE:FORGOTTEN_BEAST_859:SPLEEN -#CREATURE:FORGOTTEN_BEAST_859:KIDNEY -#CREATURE:FORGOTTEN_BEAST_860:MUSCLE - CREATURE:FORGOTTEN_BEAST_860:EYE -"CREATURE:FORGOTTEN_BEAST_860:BRAIN -!CREATURE:FORGOTTEN_BEAST_860:LUNG -"CREATURE:FORGOTTEN_BEAST_860:HEART -"CREATURE:FORGOTTEN_BEAST_860:LIVER - CREATURE:FORGOTTEN_BEAST_860:GUT -$CREATURE:FORGOTTEN_BEAST_860:STOMACH -$CREATURE:FORGOTTEN_BEAST_860:GIZZARD -%CREATURE:FORGOTTEN_BEAST_860:PANCREAS -#CREATURE:FORGOTTEN_BEAST_860:SPLEEN -#CREATURE:FORGOTTEN_BEAST_860:KIDNEY -#CREATURE:FORGOTTEN_BEAST_861:MUSCLE - CREATURE:FORGOTTEN_BEAST_861:EYE -"CREATURE:FORGOTTEN_BEAST_861:BRAIN -!CREATURE:FORGOTTEN_BEAST_861:LUNG -"CREATURE:FORGOTTEN_BEAST_861:HEART -"CREATURE:FORGOTTEN_BEAST_861:LIVER - CREATURE:FORGOTTEN_BEAST_861:GUT -$CREATURE:FORGOTTEN_BEAST_861:STOMACH -$CREATURE:FORGOTTEN_BEAST_861:GIZZARD -%CREATURE:FORGOTTEN_BEAST_861:PANCREAS -#CREATURE:FORGOTTEN_BEAST_861:SPLEEN -#CREATURE:FORGOTTEN_BEAST_861:KIDNEY -#CREATURE:FORGOTTEN_BEAST_862:MUSCLE - CREATURE:FORGOTTEN_BEAST_862:EYE -"CREATURE:FORGOTTEN_BEAST_862:BRAIN -!CREATURE:FORGOTTEN_BEAST_862:LUNG -"CREATURE:FORGOTTEN_BEAST_862:HEART -"CREATURE:FORGOTTEN_BEAST_862:LIVER - CREATURE:FORGOTTEN_BEAST_862:GUT -$CREATURE:FORGOTTEN_BEAST_862:STOMACH -$CREATURE:FORGOTTEN_BEAST_862:GIZZARD -%CREATURE:FORGOTTEN_BEAST_862:PANCREAS -#CREATURE:FORGOTTEN_BEAST_862:SPLEEN -#CREATURE:FORGOTTEN_BEAST_862:KIDNEY -#CREATURE:FORGOTTEN_BEAST_865:MUSCLE - CREATURE:FORGOTTEN_BEAST_865:EYE -"CREATURE:FORGOTTEN_BEAST_865:BRAIN -!CREATURE:FORGOTTEN_BEAST_865:LUNG -"CREATURE:FORGOTTEN_BEAST_865:HEART -"CREATURE:FORGOTTEN_BEAST_865:LIVER - CREATURE:FORGOTTEN_BEAST_865:GUT -$CREATURE:FORGOTTEN_BEAST_865:STOMACH -$CREATURE:FORGOTTEN_BEAST_865:GIZZARD -%CREATURE:FORGOTTEN_BEAST_865:PANCREAS -#CREATURE:FORGOTTEN_BEAST_865:SPLEEN -#CREATURE:FORGOTTEN_BEAST_865:KIDNEY -#CREATURE:FORGOTTEN_BEAST_866:MUSCLE - CREATURE:FORGOTTEN_BEAST_866:EYE -"CREATURE:FORGOTTEN_BEAST_866:BRAIN -!CREATURE:FORGOTTEN_BEAST_866:LUNG -"CREATURE:FORGOTTEN_BEAST_866:HEART -"CREATURE:FORGOTTEN_BEAST_866:LIVER - CREATURE:FORGOTTEN_BEAST_866:GUT -$CREATURE:FORGOTTEN_BEAST_866:STOMACH -$CREATURE:FORGOTTEN_BEAST_866:GIZZARD -%CREATURE:FORGOTTEN_BEAST_866:PANCREAS -#CREATURE:FORGOTTEN_BEAST_866:SPLEEN -#CREATURE:FORGOTTEN_BEAST_866:KIDNEY -#CREATURE:FORGOTTEN_BEAST_867:MUSCLE - CREATURE:FORGOTTEN_BEAST_867:EYE -"CREATURE:FORGOTTEN_BEAST_867:BRAIN -!CREATURE:FORGOTTEN_BEAST_867:LUNG -"CREATURE:FORGOTTEN_BEAST_867:HEART -"CREATURE:FORGOTTEN_BEAST_867:LIVER - CREATURE:FORGOTTEN_BEAST_867:GUT -$CREATURE:FORGOTTEN_BEAST_867:STOMACH -$CREATURE:FORGOTTEN_BEAST_867:GIZZARD -%CREATURE:FORGOTTEN_BEAST_867:PANCREAS -#CREATURE:FORGOTTEN_BEAST_867:SPLEEN -#CREATURE:FORGOTTEN_BEAST_867:KIDNEY -CREATURE:TITAN_1:MUSCLE -CREATURE:TITAN_1:EYE -CREATURE:TITAN_1:BRAIN -CREATURE:TITAN_1:LUNG -CREATURE:TITAN_1:HEART -CREATURE:TITAN_1:LIVER -CREATURE:TITAN_1:GUT -CREATURE:TITAN_1:STOMACH -CREATURE:TITAN_1:GIZZARD -CREATURE:TITAN_1:PANCREAS -CREATURE:TITAN_1:SPLEEN -CREATURE:TITAN_1:KIDNEY -CREATURE:TITAN_3:MUSCLE -CREATURE:TITAN_3:EYE -CREATURE:TITAN_3:BRAIN -CREATURE:TITAN_3:LUNG -CREATURE:TITAN_3:HEART -CREATURE:TITAN_3:LIVER -CREATURE:TITAN_3:GUT -CREATURE:TITAN_3:STOMACH -CREATURE:TITAN_3:GIZZARD -CREATURE:TITAN_3:PANCREAS -CREATURE:TITAN_3:SPLEEN -CREATURE:TITAN_3:KIDNEY -CREATURE:TITAN_4:MUSCLE -CREATURE:TITAN_4:EYE -CREATURE:TITAN_4:BRAIN -CREATURE:TITAN_4:LUNG -CREATURE:TITAN_4:HEART -CREATURE:TITAN_4:LIVER -CREATURE:TITAN_4:GUT -CREATURE:TITAN_4:STOMACH -CREATURE:TITAN_4:GIZZARD -CREATURE:TITAN_4:PANCREAS -CREATURE:TITAN_4:SPLEEN -CREATURE:TITAN_4:KIDNEY -CREATURE:TITAN_6:MUSCLE -CREATURE:TITAN_6:EYE -CREATURE:TITAN_6:BRAIN -CREATURE:TITAN_6:LUNG -CREATURE:TITAN_6:HEART -CREATURE:TITAN_6:LIVER -CREATURE:TITAN_6:GUT -CREATURE:TITAN_6:STOMACH -CREATURE:TITAN_6:GIZZARD -CREATURE:TITAN_6:PANCREAS -CREATURE:TITAN_6:SPLEEN -CREATURE:TITAN_6:KIDNEY -CREATURE:TITAN_7:MUSCLE -CREATURE:TITAN_7:EYE -CREATURE:TITAN_7:BRAIN -CREATURE:TITAN_7:LUNG -CREATURE:TITAN_7:HEART -CREATURE:TITAN_7:LIVER -CREATURE:TITAN_7:GUT -CREATURE:TITAN_7:STOMACH -CREATURE:TITAN_7:GIZZARD -CREATURE:TITAN_7:PANCREAS -CREATURE:TITAN_7:SPLEEN -CREATURE:TITAN_7:KIDNEY -CREATURE:TITAN_8:MUSCLE -CREATURE:TITAN_8:EYE -CREATURE:TITAN_8:BRAIN -CREATURE:TITAN_8:LUNG -CREATURE:TITAN_8:HEART -CREATURE:TITAN_8:LIVER -CREATURE:TITAN_8:GUT -CREATURE:TITAN_8:STOMACH -CREATURE:TITAN_8:GIZZARD -CREATURE:TITAN_8:PANCREAS -CREATURE:TITAN_8:SPLEEN -CREATURE:TITAN_8:KIDNEY -CREATURE:TITAN_9:MUSCLE -CREATURE:TITAN_9:EYE -CREATURE:TITAN_9:BRAIN -CREATURE:TITAN_9:LUNG -CREATURE:TITAN_9:HEART -CREATURE:TITAN_9:LIVER -CREATURE:TITAN_9:GUT -CREATURE:TITAN_9:STOMACH -CREATURE:TITAN_9:GIZZARD -CREATURE:TITAN_9:PANCREAS -CREATURE:TITAN_9:SPLEEN -CREATURE:TITAN_9:KIDNEY -CREATURE:TITAN_10:MUSCLE -CREATURE:TITAN_10:EYE -CREATURE:TITAN_10:BRAIN -CREATURE:TITAN_10:LUNG -CREATURE:TITAN_10:HEART -CREATURE:TITAN_10:LIVER -CREATURE:TITAN_10:GUT -CREATURE:TITAN_10:STOMACH -CREATURE:TITAN_10:GIZZARD -CREATURE:TITAN_10:PANCREAS -CREATURE:TITAN_10:SPLEEN -CREATURE:TITAN_10:KIDNEY -CREATURE:TITAN_11:MUSCLE -CREATURE:TITAN_11:EYE -CREATURE:TITAN_11:BRAIN -CREATURE:TITAN_11:LUNG -CREATURE:TITAN_11:HEART -CREATURE:TITAN_11:LIVER -CREATURE:TITAN_11:GUT -CREATURE:TITAN_11:STOMACH -CREATURE:TITAN_11:GIZZARD -CREATURE:TITAN_11:PANCREAS -CREATURE:TITAN_11:SPLEEN -CREATURE:TITAN_11:KIDNEY -CREATURE:TITAN_12:MUSCLE -CREATURE:TITAN_12:EYE -CREATURE:TITAN_12:BRAIN -CREATURE:TITAN_12:LUNG -CREATURE:TITAN_12:HEART -CREATURE:TITAN_12:LIVER -CREATURE:TITAN_12:GUT -CREATURE:TITAN_12:STOMACH -CREATURE:TITAN_12:GIZZARD -CREATURE:TITAN_12:PANCREAS -CREATURE:TITAN_12:SPLEEN -CREATURE:TITAN_12:KIDNEY -CREATURE:TITAN_13:MUSCLE -CREATURE:TITAN_13:EYE -CREATURE:TITAN_13:BRAIN -CREATURE:TITAN_13:LUNG -CREATURE:TITAN_13:HEART -CREATURE:TITAN_13:LIVER -CREATURE:TITAN_13:GUT -CREATURE:TITAN_13:STOMACH -CREATURE:TITAN_13:GIZZARD -CREATURE:TITAN_13:PANCREAS -CREATURE:TITAN_13:SPLEEN -CREATURE:TITAN_13:KIDNEY -CREATURE:TITAN_14:MUSCLE -CREATURE:TITAN_14:EYE -CREATURE:TITAN_14:BRAIN -CREATURE:TITAN_14:LUNG -CREATURE:TITAN_14:HEART -CREATURE:TITAN_14:LIVER -CREATURE:TITAN_14:GUT -CREATURE:TITAN_14:STOMACH -CREATURE:TITAN_14:GIZZARD -CREATURE:TITAN_14:PANCREAS -CREATURE:TITAN_14:SPLEEN -CREATURE:TITAN_14:KIDNEY -CREATURE:TITAN_15:MUSCLE -CREATURE:TITAN_15:EYE -CREATURE:TITAN_15:BRAIN -CREATURE:TITAN_15:LUNG -CREATURE:TITAN_15:HEART -CREATURE:TITAN_15:LIVER -CREATURE:TITAN_15:GUT -CREATURE:TITAN_15:STOMACH -CREATURE:TITAN_15:GIZZARD -CREATURE:TITAN_15:PANCREAS -CREATURE:TITAN_15:SPLEEN -CREATURE:TITAN_15:KIDNEY -CREATURE:TITAN_18:MUSCLE -CREATURE:TITAN_18:EYE -CREATURE:TITAN_18:BRAIN -CREATURE:TITAN_18:LUNG -CREATURE:TITAN_18:HEART -CREATURE:TITAN_18:LIVER -CREATURE:TITAN_18:GUT -CREATURE:TITAN_18:STOMACH -CREATURE:TITAN_18:GIZZARD -CREATURE:TITAN_18:PANCREAS -CREATURE:TITAN_18:SPLEEN -CREATURE:TITAN_18:KIDNEY -CREATURE:TITAN_19:MUSCLE -CREATURE:TITAN_19:EYE -CREATURE:TITAN_19:BRAIN -CREATURE:TITAN_19:LUNG -CREATURE:TITAN_19:HEART -CREATURE:TITAN_19:LIVER -CREATURE:TITAN_19:GUT -CREATURE:TITAN_19:STOMACH -CREATURE:TITAN_19:GIZZARD -CREATURE:TITAN_19:PANCREAS -CREATURE:TITAN_19:SPLEEN -CREATURE:TITAN_19:KIDNEY -CREATURE:TITAN_21:MUSCLE -CREATURE:TITAN_21:EYE -CREATURE:TITAN_21:BRAIN -CREATURE:TITAN_21:LUNG -CREATURE:TITAN_21:HEART -CREATURE:TITAN_21:LIVER -CREATURE:TITAN_21:GUT -CREATURE:TITAN_21:STOMACH -CREATURE:TITAN_21:GIZZARD -CREATURE:TITAN_21:PANCREAS -CREATURE:TITAN_21:SPLEEN -CREATURE:TITAN_21:KIDNEY -CREATURE:TITAN_23:MUSCLE -CREATURE:TITAN_23:EYE -CREATURE:TITAN_23:BRAIN -CREATURE:TITAN_23:LUNG -CREATURE:TITAN_23:HEART -CREATURE:TITAN_23:LIVER -CREATURE:TITAN_23:GUT -CREATURE:TITAN_23:STOMACH -CREATURE:TITAN_23:GIZZARD -CREATURE:TITAN_23:PANCREAS -CREATURE:TITAN_23:SPLEEN -CREATURE:TITAN_23:KIDNEY -CREATURE:TITAN_24:MUSCLE -CREATURE:TITAN_24:EYE -CREATURE:TITAN_24:BRAIN -CREATURE:TITAN_24:LUNG -CREATURE:TITAN_24:HEART -CREATURE:TITAN_24:LIVER -CREATURE:TITAN_24:GUT -CREATURE:TITAN_24:STOMACH -CREATURE:TITAN_24:GIZZARD -CREATURE:TITAN_24:PANCREAS -CREATURE:TITAN_24:SPLEEN -CREATURE:TITAN_24:KIDNEY -CREATURE:TITAN_25:MUSCLE -CREATURE:TITAN_25:EYE -CREATURE:TITAN_25:BRAIN -CREATURE:TITAN_25:LUNG -CREATURE:TITAN_25:HEART -CREATURE:TITAN_25:LIVER -CREATURE:TITAN_25:GUT -CREATURE:TITAN_25:STOMACH -CREATURE:TITAN_25:GIZZARD -CREATURE:TITAN_25:PANCREAS -CREATURE:TITAN_25:SPLEEN -CREATURE:TITAN_25:KIDNEY -CREATURE:TITAN_26:MUSCLE -CREATURE:TITAN_26:EYE -CREATURE:TITAN_26:BRAIN -CREATURE:TITAN_26:LUNG -CREATURE:TITAN_26:HEART -CREATURE:TITAN_26:LIVER -CREATURE:TITAN_26:GUT -CREATURE:TITAN_26:STOMACH -CREATURE:TITAN_26:GIZZARD -CREATURE:TITAN_26:PANCREAS -CREATURE:TITAN_26:SPLEEN -CREATURE:TITAN_26:KIDNEY -CREATURE:TITAN_27:MUSCLE -CREATURE:TITAN_27:EYE -CREATURE:TITAN_27:BRAIN -CREATURE:TITAN_27:LUNG -CREATURE:TITAN_27:HEART -CREATURE:TITAN_27:LIVER -CREATURE:TITAN_27:GUT -CREATURE:TITAN_27:STOMACH -CREATURE:TITAN_27:GIZZARD -CREATURE:TITAN_27:PANCREAS -CREATURE:TITAN_27:SPLEEN -CREATURE:TITAN_27:KIDNEY -CREATURE:TITAN_28:MUSCLE -CREATURE:TITAN_28:EYE -CREATURE:TITAN_28:BRAIN -CREATURE:TITAN_28:LUNG -CREATURE:TITAN_28:HEART -CREATURE:TITAN_28:LIVER -CREATURE:TITAN_28:GUT -CREATURE:TITAN_28:STOMACH -CREATURE:TITAN_28:GIZZARD -CREATURE:TITAN_28:PANCREAS -CREATURE:TITAN_28:SPLEEN -CREATURE:TITAN_28:KIDNEY -CREATURE:TITAN_29:MUSCLE -CREATURE:TITAN_29:EYE -CREATURE:TITAN_29:BRAIN -CREATURE:TITAN_29:LUNG -CREATURE:TITAN_29:HEART -CREATURE:TITAN_29:LIVER -CREATURE:TITAN_29:GUT -CREATURE:TITAN_29:STOMACH -CREATURE:TITAN_29:GIZZARD -CREATURE:TITAN_29:PANCREAS -CREATURE:TITAN_29:SPLEEN -CREATURE:TITAN_29:KIDNEY -CREATURE:TITAN_30:MUSCLE -CREATURE:TITAN_30:EYE -CREATURE:TITAN_30:BRAIN -CREATURE:TITAN_30:LUNG -CREATURE:TITAN_30:HEART -CREATURE:TITAN_30:LIVER -CREATURE:TITAN_30:GUT -CREATURE:TITAN_30:STOMACH -CREATURE:TITAN_30:GIZZARD -CREATURE:TITAN_30:PANCREAS -CREATURE:TITAN_30:SPLEEN -CREATURE:TITAN_30:KIDNEY -CREATURE:TITAN_32:MUSCLE -CREATURE:TITAN_32:EYE -CREATURE:TITAN_32:BRAIN -CREATURE:TITAN_32:LUNG -CREATURE:TITAN_32:HEART -CREATURE:TITAN_32:LIVER -CREATURE:TITAN_32:GUT -CREATURE:TITAN_32:STOMACH -CREATURE:TITAN_32:GIZZARD -CREATURE:TITAN_32:PANCREAS -CREATURE:TITAN_32:SPLEEN -CREATURE:TITAN_32:KIDNEY -CREATURE:TITAN_33:MUSCLE -CREATURE:TITAN_33:EYE -CREATURE:TITAN_33:BRAIN -CREATURE:TITAN_33:LUNG -CREATURE:TITAN_33:HEART -CREATURE:TITAN_33:LIVER -CREATURE:TITAN_33:GUT -CREATURE:TITAN_33:STOMACH -CREATURE:TITAN_33:GIZZARD -CREATURE:TITAN_33:PANCREAS -CREATURE:TITAN_33:SPLEEN -CREATURE:TITAN_33:KIDNEY -CREATURE:DEMON_7:MUSCLE -CREATURE:DEMON_7:EYE -CREATURE:DEMON_7:BRAIN -CREATURE:DEMON_7:LUNG -CREATURE:DEMON_7:HEART -CREATURE:DEMON_7:LIVER -CREATURE:DEMON_7:GUT -CREATURE:DEMON_7:STOMACH -CREATURE:DEMON_7:GIZZARD -CREATURE:DEMON_7:PANCREAS -CREATURE:DEMON_7:SPLEEN -CREATURE:DEMON_7:KIDNEY -CREATURE:DEMON_8:MUSCLE -CREATURE:DEMON_8:EYE -CREATURE:DEMON_8:BRAIN -CREATURE:DEMON_8:LUNG -CREATURE:DEMON_8:HEART -CREATURE:DEMON_8:LIVER -CREATURE:DEMON_8:GUT -CREATURE:DEMON_8:STOMACH -CREATURE:DEMON_8:GIZZARD -CREATURE:DEMON_8:PANCREAS -CREATURE:DEMON_8:SPLEEN -CREATURE:DEMON_8:KIDNEY -CREATURE:DEMON_9:MUSCLE -CREATURE:DEMON_9:EYE -CREATURE:DEMON_9:BRAIN -CREATURE:DEMON_9:LUNG -CREATURE:DEMON_9:HEART -CREATURE:DEMON_9:LIVER -CREATURE:DEMON_9:GUT -CREATURE:DEMON_9:STOMACH -CREATURE:DEMON_9:GIZZARD -CREATURE:DEMON_9:PANCREAS -CREATURE:DEMON_9:SPLEEN -CREATURE:DEMON_9:KIDNEY -CREATURE:DEMON_10:MUSCLE -CREATURE:DEMON_10:EYE -CREATURE:DEMON_10:BRAIN -CREATURE:DEMON_10:LUNG -CREATURE:DEMON_10:HEART -CREATURE:DEMON_10:LIVER -CREATURE:DEMON_10:GUT -CREATURE:DEMON_10:STOMACH -CREATURE:DEMON_10:GIZZARD -CREATURE:DEMON_10:PANCREAS -CREATURE:DEMON_10:SPLEEN -CREATURE:DEMON_10:KIDNEY -CREATURE:DEMON_11:MUSCLE -CREATURE:DEMON_11:EYE -CREATURE:DEMON_11:BRAIN -CREATURE:DEMON_11:LUNG -CREATURE:DEMON_11:HEART -CREATURE:DEMON_11:LIVER -CREATURE:DEMON_11:GUT -CREATURE:DEMON_11:STOMACH -CREATURE:DEMON_11:GIZZARD -CREATURE:DEMON_11:PANCREAS -CREATURE:DEMON_11:SPLEEN -CREATURE:DEMON_11:KIDNEY -CREATURE:DEMON_12:MUSCLE -CREATURE:DEMON_12:EYE -CREATURE:DEMON_12:BRAIN -CREATURE:DEMON_12:LUNG -CREATURE:DEMON_12:HEART -CREATURE:DEMON_12:LIVER -CREATURE:DEMON_12:GUT -CREATURE:DEMON_12:STOMACH -CREATURE:DEMON_12:GIZZARD -CREATURE:DEMON_12:PANCREAS -CREATURE:DEMON_12:SPLEEN -CREATURE:DEMON_12:KIDNEY -CREATURE:DEMON_13:MUSCLE -CREATURE:DEMON_13:EYE -CREATURE:DEMON_13:BRAIN -CREATURE:DEMON_13:LUNG -CREATURE:DEMON_13:HEART -CREATURE:DEMON_13:LIVER -CREATURE:DEMON_13:GUT -CREATURE:DEMON_13:STOMACH -CREATURE:DEMON_13:GIZZARD -CREATURE:DEMON_13:PANCREAS -CREATURE:DEMON_13:SPLEEN -CREATURE:DEMON_13:KIDNEY -CREATURE:DEMON_14:MUSCLE -CREATURE:DEMON_14:EYE -CREATURE:DEMON_14:BRAIN -CREATURE:DEMON_14:LUNG -CREATURE:DEMON_14:HEART -CREATURE:DEMON_14:LIVER -CREATURE:DEMON_14:GUT -CREATURE:DEMON_14:STOMACH -CREATURE:DEMON_14:GIZZARD -CREATURE:DEMON_14:PANCREAS -CREATURE:DEMON_14:SPLEEN -CREATURE:DEMON_14:KIDNEY -CREATURE:DEMON_15:MUSCLE -CREATURE:DEMON_15:EYE -CREATURE:DEMON_15:BRAIN -CREATURE:DEMON_15:LUNG -CREATURE:DEMON_15:HEART -CREATURE:DEMON_15:LIVER -CREATURE:DEMON_15:GUT -CREATURE:DEMON_15:STOMACH -CREATURE:DEMON_15:GIZZARD -CREATURE:DEMON_15:PANCREAS -CREATURE:DEMON_15:SPLEEN -CREATURE:DEMON_15:KIDNEY -CREATURE:DEMON_16:MUSCLE -CREATURE:DEMON_16:EYE -CREATURE:DEMON_16:BRAIN -CREATURE:DEMON_16:LUNG -CREATURE:DEMON_16:HEART -CREATURE:DEMON_16:LIVER -CREATURE:DEMON_16:GUT -CREATURE:DEMON_16:STOMACH -CREATURE:DEMON_16:GIZZARD -CREATURE:DEMON_16:PANCREAS -CREATURE:DEMON_16:SPLEEN -CREATURE:DEMON_16:KIDNEY -CREATURE:DEMON_17:MUSCLE -CREATURE:DEMON_17:EYE -CREATURE:DEMON_17:BRAIN -CREATURE:DEMON_17:LUNG -CREATURE:DEMON_17:HEART -CREATURE:DEMON_17:LIVER -CREATURE:DEMON_17:GUT -CREATURE:DEMON_17:STOMACH -CREATURE:DEMON_17:GIZZARD -CREATURE:DEMON_17:PANCREAS -CREATURE:DEMON_17:SPLEEN -CREATURE:DEMON_17:KIDNEY -CREATURE:DEMON_18:MUSCLE -CREATURE:DEMON_18:EYE -CREATURE:DEMON_18:BRAIN -CREATURE:DEMON_18:LUNG -CREATURE:DEMON_18:HEART -CREATURE:DEMON_18:LIVER -CREATURE:DEMON_18:GUT -CREATURE:DEMON_18:STOMACH -CREATURE:DEMON_18:GIZZARD -CREATURE:DEMON_18:PANCREAS -CREATURE:DEMON_18:SPLEEN -CREATURE:DEMON_18:KIDNEY -CREATURE:DEMON_19:MUSCLE -CREATURE:DEMON_19:EYE -CREATURE:DEMON_19:BRAIN -CREATURE:DEMON_19:LUNG -CREATURE:DEMON_19:HEART -CREATURE:DEMON_19:LIVER -CREATURE:DEMON_19:GUT -CREATURE:DEMON_19:STOMACH -CREATURE:DEMON_19:GIZZARD -CREATURE:DEMON_19:PANCREAS -CREATURE:DEMON_19:SPLEEN -CREATURE:DEMON_19:KIDNEY -CREATURE:DEMON_20:MUSCLE -CREATURE:DEMON_20:EYE -CREATURE:DEMON_20:BRAIN -CREATURE:DEMON_20:LUNG -CREATURE:DEMON_20:HEART -CREATURE:DEMON_20:LIVER -CREATURE:DEMON_20:GUT -CREATURE:DEMON_20:STOMACH -CREATURE:DEMON_20:GIZZARD -CREATURE:DEMON_20:PANCREAS -CREATURE:DEMON_20:SPLEEN -CREATURE:DEMON_20:KIDNEY -CREATURE:DEMON_21:MUSCLE -CREATURE:DEMON_21:EYE -CREATURE:DEMON_21:BRAIN -CREATURE:DEMON_21:LUNG -CREATURE:DEMON_21:HEART -CREATURE:DEMON_21:LIVER -CREATURE:DEMON_21:GUT -CREATURE:DEMON_21:STOMACH -CREATURE:DEMON_21:GIZZARD -CREATURE:DEMON_21:PANCREAS -CREATURE:DEMON_21:SPLEEN -CREATURE:DEMON_21:KIDNEY -CREATURE:DEMON_22:MUSCLE -CREATURE:DEMON_22:EYE -CREATURE:DEMON_22:BRAIN -CREATURE:DEMON_22:LUNG -CREATURE:DEMON_22:HEART -CREATURE:DEMON_22:LIVER -CREATURE:DEMON_22:GUT -CREATURE:DEMON_22:STOMACH -CREATURE:DEMON_22:GIZZARD -CREATURE:DEMON_22:PANCREAS -CREATURE:DEMON_22:SPLEEN -CREATURE:DEMON_22:KIDNEY -CREATURE:DEMON_23:MUSCLE -CREATURE:DEMON_23:EYE -CREATURE:DEMON_23:BRAIN -CREATURE:DEMON_23:LUNG -CREATURE:DEMON_23:HEART -CREATURE:DEMON_23:LIVER -CREATURE:DEMON_23:GUT -CREATURE:DEMON_23:STOMACH -CREATURE:DEMON_23:GIZZARD -CREATURE:DEMON_23:PANCREAS -CREATURE:DEMON_23:SPLEEN -CREATURE:DEMON_23:KIDNEY -CREATURE:DEMON_24:MUSCLE -CREATURE:DEMON_24:EYE -CREATURE:DEMON_24:BRAIN -CREATURE:DEMON_24:LUNG -CREATURE:DEMON_24:HEART -CREATURE:DEMON_24:LIVER -CREATURE:DEMON_24:GUT -CREATURE:DEMON_24:STOMACH -CREATURE:DEMON_24:GIZZARD -CREATURE:DEMON_24:PANCREAS -CREATURE:DEMON_24:SPLEEN -CREATURE:DEMON_24:KIDNEY -CREATURE:DEMON_25:MUSCLE -CREATURE:DEMON_25:EYE -CREATURE:DEMON_25:BRAIN -CREATURE:DEMON_25:LUNG -CREATURE:DEMON_25:HEART -CREATURE:DEMON_25:LIVER -CREATURE:DEMON_25:GUT -CREATURE:DEMON_25:STOMACH -CREATURE:DEMON_25:GIZZARD -CREATURE:DEMON_25:PANCREAS -CREATURE:DEMON_25:SPLEEN -CREATURE:DEMON_25:KIDNEY -CREATURE:DEMON_26:MUSCLE -CREATURE:DEMON_26:EYE -CREATURE:DEMON_26:BRAIN -CREATURE:DEMON_26:LUNG -CREATURE:DEMON_26:HEART -CREATURE:DEMON_26:LIVER -CREATURE:DEMON_26:GUT -CREATURE:DEMON_26:STOMACH -CREATURE:DEMON_26:GIZZARD -CREATURE:DEMON_26:PANCREAS -CREATURE:DEMON_26:SPLEEN -CREATURE:DEMON_26:KIDNEY -CREATURE:DEMON_27:MUSCLE -CREATURE:DEMON_27:EYE -CREATURE:DEMON_27:BRAIN -CREATURE:DEMON_27:LUNG -CREATURE:DEMON_27:HEART -CREATURE:DEMON_27:LIVER -CREATURE:DEMON_27:GUT -CREATURE:DEMON_27:STOMACH -CREATURE:DEMON_27:GIZZARD -CREATURE:DEMON_27:PANCREAS -CREATURE:DEMON_27:SPLEEN -CREATURE:DEMON_27:KIDNEY -CREATURE:DEMON_28:MUSCLE -CREATURE:DEMON_28:EYE -CREATURE:DEMON_28:BRAIN -CREATURE:DEMON_28:LUNG -CREATURE:DEMON_28:HEART -CREATURE:DEMON_28:LIVER -CREATURE:DEMON_28:GUT -CREATURE:DEMON_28:STOMACH -CREATURE:DEMON_28:GIZZARD -CREATURE:DEMON_28:PANCREAS -CREATURE:DEMON_28:SPLEEN -CREATURE:DEMON_28:KIDNEY -CREATURE:DEMON_29:MUSCLE -CREATURE:DEMON_29:EYE -CREATURE:DEMON_29:BRAIN -CREATURE:DEMON_29:LUNG -CREATURE:DEMON_29:HEART -CREATURE:DEMON_29:LIVER -CREATURE:DEMON_29:GUT -CREATURE:DEMON_29:STOMACH -CREATURE:DEMON_29:GIZZARD -CREATURE:DEMON_29:PANCREAS -CREATURE:DEMON_29:SPLEEN -CREATURE:DEMON_29:KIDNEY -CREATURE:DEMON_31:MUSCLE -CREATURE:DEMON_31:EYE -CREATURE:DEMON_31:BRAIN -CREATURE:DEMON_31:LUNG -CREATURE:DEMON_31:HEART -CREATURE:DEMON_31:LIVER -CREATURE:DEMON_31:GUT -CREATURE:DEMON_31:STOMACH -CREATURE:DEMON_31:GIZZARD -CREATURE:DEMON_31:PANCREAS -CREATURE:DEMON_31:SPLEEN -CREATURE:DEMON_31:KIDNEY -CREATURE:DEMON_32:MUSCLE -CREATURE:DEMON_32:EYE -CREATURE:DEMON_32:BRAIN -CREATURE:DEMON_32:LUNG -CREATURE:DEMON_32:HEART -CREATURE:DEMON_32:LIVER -CREATURE:DEMON_32:GUT -CREATURE:DEMON_32:STOMACH -CREATURE:DEMON_32:GIZZARD -CREATURE:DEMON_32:PANCREAS -CREATURE:DEMON_32:SPLEEN -CREATURE:DEMON_32:KIDNEY -CREATURE:DEMON_38:MUSCLE -CREATURE:DEMON_38:EYE -CREATURE:DEMON_38:BRAIN -CREATURE:DEMON_38:LUNG -CREATURE:DEMON_38:HEART -CREATURE:DEMON_38:LIVER -CREATURE:DEMON_38:GUT -CREATURE:DEMON_38:STOMACH -CREATURE:DEMON_38:GIZZARD -CREATURE:DEMON_38:PANCREAS -CREATURE:DEMON_38:SPLEEN -CREATURE:DEMON_38:KIDNEY -CREATURE:DEMON_39:MUSCLE -CREATURE:DEMON_39:EYE -CREATURE:DEMON_39:BRAIN -CREATURE:DEMON_39:LUNG -CREATURE:DEMON_39:HEART -CREATURE:DEMON_39:LIVER -CREATURE:DEMON_39:GUT -CREATURE:DEMON_39:STOMACH -CREATURE:DEMON_39:GIZZARD -CREATURE:DEMON_39:PANCREAS -CREATURE:DEMON_39:SPLEEN -CREATURE:DEMON_39:KIDNEY -CREATURE:DEMON_40:MUSCLE -CREATURE:DEMON_40:EYE -CREATURE:DEMON_40:BRAIN -CREATURE:DEMON_40:LUNG -CREATURE:DEMON_40:HEART -CREATURE:DEMON_40:LIVER -CREATURE:DEMON_40:GUT -CREATURE:DEMON_40:STOMACH -CREATURE:DEMON_40:GIZZARD -CREATURE:DEMON_40:PANCREAS -CREATURE:DEMON_40:SPLEEN -CREATURE:DEMON_40:KIDNEY -CREATURE:DEMON_41:MUSCLE -CREATURE:DEMON_41:EYE -CREATURE:DEMON_41:BRAIN -CREATURE:DEMON_41:LUNG -CREATURE:DEMON_41:HEART -CREATURE:DEMON_41:LIVER -CREATURE:DEMON_41:GUT -CREATURE:DEMON_41:STOMACH -CREATURE:DEMON_41:GIZZARD -CREATURE:DEMON_41:PANCREAS -CREATURE:DEMON_41:SPLEEN -CREATURE:DEMON_41:KIDNEY -CREATURE:DEMON_42:MUSCLE -CREATURE:DEMON_42:EYE -CREATURE:DEMON_42:BRAIN -CREATURE:DEMON_42:LUNG -CREATURE:DEMON_42:HEART -CREATURE:DEMON_42:LIVER -CREATURE:DEMON_42:GUT -CREATURE:DEMON_42:STOMACH -CREATURE:DEMON_42:GIZZARD -CREATURE:DEMON_42:PANCREAS -CREATURE:DEMON_42:SPLEEN -CREATURE:DEMON_42:KIDNEY -CREATURE:DEMON_43:MUSCLE -CREATURE:DEMON_43:EYE -CREATURE:DEMON_43:BRAIN -CREATURE:DEMON_43:LUNG -CREATURE:DEMON_43:HEART -CREATURE:DEMON_43:LIVER -CREATURE:DEMON_43:GUT -CREATURE:DEMON_43:STOMACH -CREATURE:DEMON_43:GIZZARD -CREATURE:DEMON_43:PANCREAS -CREATURE:DEMON_43:SPLEEN -CREATURE:DEMON_43:KIDNEY -CREATURE:DEMON_44:MUSCLE -CREATURE:DEMON_44:EYE -CREATURE:DEMON_44:BRAIN -CREATURE:DEMON_44:LUNG -CREATURE:DEMON_44:HEART -CREATURE:DEMON_44:LIVER -CREATURE:DEMON_44:GUT -CREATURE:DEMON_44:STOMACH -CREATURE:DEMON_44:GIZZARD -CREATURE:DEMON_44:PANCREAS -CREATURE:DEMON_44:SPLEEN -CREATURE:DEMON_44:KIDNEY -CREATURE:DEMON_45:MUSCLE -CREATURE:DEMON_45:EYE -CREATURE:DEMON_45:BRAIN -CREATURE:DEMON_45:LUNG -CREATURE:DEMON_45:HEART -CREATURE:DEMON_45:LIVER -CREATURE:DEMON_45:GUT -CREATURE:DEMON_45:STOMACH -CREATURE:DEMON_45:GIZZARD -CREATURE:DEMON_45:PANCREAS -CREATURE:DEMON_45:SPLEEN -CREATURE:DEMON_45:KIDNEY -CREATURE:DEMON_47:MUSCLE -CREATURE:DEMON_47:EYE -CREATURE:DEMON_47:BRAIN -CREATURE:DEMON_47:LUNG -CREATURE:DEMON_47:HEART -CREATURE:DEMON_47:LIVER -CREATURE:DEMON_47:GUT -CREATURE:DEMON_47:STOMACH -CREATURE:DEMON_47:GIZZARD -CREATURE:DEMON_47:PANCREAS -CREATURE:DEMON_47:SPLEEN -CREATURE:DEMON_47:KIDNEY -CREATURE:DEMON_48:MUSCLE -CREATURE:DEMON_48:EYE -CREATURE:DEMON_48:BRAIN -CREATURE:DEMON_48:LUNG -CREATURE:DEMON_48:HEART -CREATURE:DEMON_48:LIVER -CREATURE:DEMON_48:GUT -CREATURE:DEMON_48:STOMACH -CREATURE:DEMON_48:GIZZARD -CREATURE:DEMON_48:PANCREAS -CREATURE:DEMON_48:SPLEEN -CREATURE:DEMON_48:KIDNEY -CREATURE:DEMON_49:MUSCLE -CREATURE:DEMON_49:EYE -CREATURE:DEMON_49:BRAIN -CREATURE:DEMON_49:LUNG -CREATURE:DEMON_49:HEART -CREATURE:DEMON_49:LIVER -CREATURE:DEMON_49:GUT -CREATURE:DEMON_49:STOMACH -CREATURE:DEMON_49:GIZZARD -CREATURE:DEMON_49:PANCREAS -CREATURE:DEMON_49:SPLEEN -CREATURE:DEMON_49:KIDNEY -CREATURE:DEMON_52:MUSCLE -CREATURE:DEMON_52:EYE -CREATURE:DEMON_52:BRAIN -CREATURE:DEMON_52:LUNG -CREATURE:DEMON_52:HEART -CREATURE:DEMON_52:LIVER -CREATURE:DEMON_52:GUT -CREATURE:DEMON_52:STOMACH -CREATURE:DEMON_52:GIZZARD -CREATURE:DEMON_52:PANCREAS -CREATURE:DEMON_52:SPLEEN -CREATURE:DEMON_52:KIDNEY - CREATURE:NIGHT_CREATURE_1:MUSCLE -CREATURE:NIGHT_CREATURE_1:EYE -CREATURE:NIGHT_CREATURE_1:BRAIN -CREATURE:NIGHT_CREATURE_1:LUNG -CREATURE:NIGHT_CREATURE_1:HEART -CREATURE:NIGHT_CREATURE_1:LIVER -CREATURE:NIGHT_CREATURE_1:GUT -!CREATURE:NIGHT_CREATURE_1:STOMACH -!CREATURE:NIGHT_CREATURE_1:GIZZARD -"CREATURE:NIGHT_CREATURE_1:PANCREAS - CREATURE:NIGHT_CREATURE_1:SPLEEN - CREATURE:NIGHT_CREATURE_1:KIDNEY - CREATURE:NIGHT_CREATURE_2:MUSCLE -CREATURE:NIGHT_CREATURE_2:EYE -CREATURE:NIGHT_CREATURE_2:BRAIN -CREATURE:NIGHT_CREATURE_2:LUNG -CREATURE:NIGHT_CREATURE_2:HEART -CREATURE:NIGHT_CREATURE_2:LIVER -CREATURE:NIGHT_CREATURE_2:GUT -!CREATURE:NIGHT_CREATURE_2:STOMACH -!CREATURE:NIGHT_CREATURE_2:GIZZARD -"CREATURE:NIGHT_CREATURE_2:PANCREAS - CREATURE:NIGHT_CREATURE_2:SPLEEN - CREATURE:NIGHT_CREATURE_2:KIDNEY - CREATURE:NIGHT_CREATURE_3:MUSCLE -CREATURE:NIGHT_CREATURE_3:EYE -CREATURE:NIGHT_CREATURE_3:BRAIN -CREATURE:NIGHT_CREATURE_3:LUNG -CREATURE:NIGHT_CREATURE_3:HEART -CREATURE:NIGHT_CREATURE_3:LIVER -CREATURE:NIGHT_CREATURE_3:GUT -!CREATURE:NIGHT_CREATURE_3:STOMACH -!CREATURE:NIGHT_CREATURE_3:GIZZARD -"CREATURE:NIGHT_CREATURE_3:PANCREAS - CREATURE:NIGHT_CREATURE_3:SPLEEN - CREATURE:NIGHT_CREATURE_3:KIDNEY - CREATURE:NIGHT_CREATURE_4:MUSCLE -CREATURE:NIGHT_CREATURE_4:EYE -CREATURE:NIGHT_CREATURE_4:BRAIN -CREATURE:NIGHT_CREATURE_4:LUNG -CREATURE:NIGHT_CREATURE_4:HEART -CREATURE:NIGHT_CREATURE_4:LIVER -CREATURE:NIGHT_CREATURE_4:GUT -!CREATURE:NIGHT_CREATURE_4:STOMACH -!CREATURE:NIGHT_CREATURE_4:GIZZARD -"CREATURE:NIGHT_CREATURE_4:PANCREAS - CREATURE:NIGHT_CREATURE_4:SPLEEN - CREATURE:NIGHT_CREATURE_4:KIDNEY - CREATURE:NIGHT_CREATURE_5:MUSCLE -CREATURE:NIGHT_CREATURE_5:EYE -CREATURE:NIGHT_CREATURE_5:BRAIN -CREATURE:NIGHT_CREATURE_5:LUNG -CREATURE:NIGHT_CREATURE_5:HEART -CREATURE:NIGHT_CREATURE_5:LIVER -CREATURE:NIGHT_CREATURE_5:GUT -!CREATURE:NIGHT_CREATURE_5:STOMACH -!CREATURE:NIGHT_CREATURE_5:GIZZARD -"CREATURE:NIGHT_CREATURE_5:PANCREAS - CREATURE:NIGHT_CREATURE_5:SPLEEN - CREATURE:NIGHT_CREATURE_5:KIDNEY - CREATURE:NIGHT_CREATURE_6:MUSCLE -CREATURE:NIGHT_CREATURE_6:EYE -CREATURE:NIGHT_CREATURE_6:BRAIN -CREATURE:NIGHT_CREATURE_6:LUNG -CREATURE:NIGHT_CREATURE_6:HEART -CREATURE:NIGHT_CREATURE_6:LIVER -CREATURE:NIGHT_CREATURE_6:GUT -!CREATURE:NIGHT_CREATURE_6:STOMACH -!CREATURE:NIGHT_CREATURE_6:GIZZARD -"CREATURE:NIGHT_CREATURE_6:PANCREAS - CREATURE:NIGHT_CREATURE_6:SPLEEN - CREATURE:NIGHT_CREATURE_6:KIDNEY - CREATURE:NIGHT_CREATURE_7:MUSCLE -CREATURE:NIGHT_CREATURE_7:EYE -CREATURE:NIGHT_CREATURE_7:BRAIN -CREATURE:NIGHT_CREATURE_7:LUNG -CREATURE:NIGHT_CREATURE_7:HEART -CREATURE:NIGHT_CREATURE_7:LIVER -CREATURE:NIGHT_CREATURE_7:GUT -!CREATURE:NIGHT_CREATURE_7:STOMACH -!CREATURE:NIGHT_CREATURE_7:GIZZARD -"CREATURE:NIGHT_CREATURE_7:PANCREAS - CREATURE:NIGHT_CREATURE_7:SPLEEN - CREATURE:NIGHT_CREATURE_7:KIDNEY - CREATURE:NIGHT_CREATURE_8:MUSCLE -CREATURE:NIGHT_CREATURE_8:EYE -CREATURE:NIGHT_CREATURE_8:BRAIN -CREATURE:NIGHT_CREATURE_8:LUNG -CREATURE:NIGHT_CREATURE_8:HEART -CREATURE:NIGHT_CREATURE_8:LIVER -CREATURE:NIGHT_CREATURE_8:GUT -!CREATURE:NIGHT_CREATURE_8:STOMACH -!CREATURE:NIGHT_CREATURE_8:GIZZARD -"CREATURE:NIGHT_CREATURE_8:PANCREAS - CREATURE:NIGHT_CREATURE_8:SPLEEN - CREATURE:NIGHT_CREATURE_8:KIDNEY - CREATURE:NIGHT_CREATURE_9:MUSCLE -CREATURE:NIGHT_CREATURE_9:EYE -CREATURE:NIGHT_CREATURE_9:BRAIN -CREATURE:NIGHT_CREATURE_9:LUNG -CREATURE:NIGHT_CREATURE_9:HEART -CREATURE:NIGHT_CREATURE_9:LIVER -CREATURE:NIGHT_CREATURE_9:GUT -!CREATURE:NIGHT_CREATURE_9:STOMACH -!CREATURE:NIGHT_CREATURE_9:GIZZARD -"CREATURE:NIGHT_CREATURE_9:PANCREAS - CREATURE:NIGHT_CREATURE_9:SPLEEN - CREATURE:NIGHT_CREATURE_9:KIDNEY -!CREATURE:NIGHT_CREATURE_10:MUSCLE -CREATURE:NIGHT_CREATURE_10:EYE - CREATURE:NIGHT_CREATURE_10:BRAIN -CREATURE:NIGHT_CREATURE_10:LUNG - CREATURE:NIGHT_CREATURE_10:HEART - CREATURE:NIGHT_CREATURE_10:LIVER -CREATURE:NIGHT_CREATURE_10:GUT -"CREATURE:NIGHT_CREATURE_10:STOMACH -"CREATURE:NIGHT_CREATURE_10:GIZZARD -#CREATURE:NIGHT_CREATURE_10:PANCREAS -!CREATURE:NIGHT_CREATURE_10:SPLEEN -!CREATURE:NIGHT_CREATURE_10:KIDNEY -!CREATURE:NIGHT_CREATURE_11:MUSCLE -CREATURE:NIGHT_CREATURE_11:EYE - CREATURE:NIGHT_CREATURE_11:BRAIN -CREATURE:NIGHT_CREATURE_11:LUNG - CREATURE:NIGHT_CREATURE_11:HEART - CREATURE:NIGHT_CREATURE_11:LIVER -CREATURE:NIGHT_CREATURE_11:GUT -"CREATURE:NIGHT_CREATURE_11:STOMACH -"CREATURE:NIGHT_CREATURE_11:GIZZARD -#CREATURE:NIGHT_CREATURE_11:PANCREAS -!CREATURE:NIGHT_CREATURE_11:SPLEEN -!CREATURE:NIGHT_CREATURE_11:KIDNEY -!CREATURE:NIGHT_CREATURE_12:MUSCLE -CREATURE:NIGHT_CREATURE_12:EYE - CREATURE:NIGHT_CREATURE_12:BRAIN -CREATURE:NIGHT_CREATURE_12:LUNG - CREATURE:NIGHT_CREATURE_12:HEART - CREATURE:NIGHT_CREATURE_12:LIVER -CREATURE:NIGHT_CREATURE_12:GUT -"CREATURE:NIGHT_CREATURE_12:STOMACH -"CREATURE:NIGHT_CREATURE_12:GIZZARD -#CREATURE:NIGHT_CREATURE_12:PANCREAS -!CREATURE:NIGHT_CREATURE_12:SPLEEN -!CREATURE:NIGHT_CREATURE_12:KIDNEY -!CREATURE:NIGHT_CREATURE_13:MUSCLE -CREATURE:NIGHT_CREATURE_13:EYE - CREATURE:NIGHT_CREATURE_13:BRAIN -CREATURE:NIGHT_CREATURE_13:LUNG - CREATURE:NIGHT_CREATURE_13:HEART - CREATURE:NIGHT_CREATURE_13:LIVER -CREATURE:NIGHT_CREATURE_13:GUT -"CREATURE:NIGHT_CREATURE_13:STOMACH -"CREATURE:NIGHT_CREATURE_13:GIZZARD -#CREATURE:NIGHT_CREATURE_13:PANCREAS -!CREATURE:NIGHT_CREATURE_13:SPLEEN -!CREATURE:NIGHT_CREATURE_13:KIDNEY -!CREATURE:NIGHT_CREATURE_14:MUSCLE -CREATURE:NIGHT_CREATURE_14:EYE - CREATURE:NIGHT_CREATURE_14:BRAIN -CREATURE:NIGHT_CREATURE_14:LUNG - CREATURE:NIGHT_CREATURE_14:HEART - CREATURE:NIGHT_CREATURE_14:LIVER -CREATURE:NIGHT_CREATURE_14:GUT -"CREATURE:NIGHT_CREATURE_14:STOMACH -"CREATURE:NIGHT_CREATURE_14:GIZZARD -#CREATURE:NIGHT_CREATURE_14:PANCREAS -!CREATURE:NIGHT_CREATURE_14:SPLEEN -!CREATURE:NIGHT_CREATURE_14:KIDNEY -!CREATURE:NIGHT_CREATURE_15:MUSCLE -CREATURE:NIGHT_CREATURE_15:EYE - CREATURE:NIGHT_CREATURE_15:BRAIN -CREATURE:NIGHT_CREATURE_15:LUNG - CREATURE:NIGHT_CREATURE_15:HEART - CREATURE:NIGHT_CREATURE_15:LIVER -CREATURE:NIGHT_CREATURE_15:GUT -"CREATURE:NIGHT_CREATURE_15:STOMACH -"CREATURE:NIGHT_CREATURE_15:GIZZARD -#CREATURE:NIGHT_CREATURE_15:PANCREAS -!CREATURE:NIGHT_CREATURE_15:SPLEEN -!CREATURE:NIGHT_CREATURE_15:KIDNEY -!CREATURE:NIGHT_CREATURE_16:MUSCLE -CREATURE:NIGHT_CREATURE_16:EYE - CREATURE:NIGHT_CREATURE_16:BRAIN -CREATURE:NIGHT_CREATURE_16:LUNG - CREATURE:NIGHT_CREATURE_16:HEART - CREATURE:NIGHT_CREATURE_16:LIVER -CREATURE:NIGHT_CREATURE_16:GUT -"CREATURE:NIGHT_CREATURE_16:STOMACH -"CREATURE:NIGHT_CREATURE_16:GIZZARD -#CREATURE:NIGHT_CREATURE_16:PANCREAS -!CREATURE:NIGHT_CREATURE_16:SPLEEN -!CREATURE:NIGHT_CREATURE_16:KIDNEY -!CREATURE:NIGHT_CREATURE_17:MUSCLE -CREATURE:NIGHT_CREATURE_17:EYE - CREATURE:NIGHT_CREATURE_17:BRAIN -CREATURE:NIGHT_CREATURE_17:LUNG - CREATURE:NIGHT_CREATURE_17:HEART - CREATURE:NIGHT_CREATURE_17:LIVER -CREATURE:NIGHT_CREATURE_17:GUT -"CREATURE:NIGHT_CREATURE_17:STOMACH -"CREATURE:NIGHT_CREATURE_17:GIZZARD -#CREATURE:NIGHT_CREATURE_17:PANCREAS -!CREATURE:NIGHT_CREATURE_17:SPLEEN -!CREATURE:NIGHT_CREATURE_17:KIDNEY -!CREATURE:NIGHT_CREATURE_18:MUSCLE -CREATURE:NIGHT_CREATURE_18:EYE - CREATURE:NIGHT_CREATURE_18:BRAIN -CREATURE:NIGHT_CREATURE_18:LUNG - CREATURE:NIGHT_CREATURE_18:HEART - CREATURE:NIGHT_CREATURE_18:LIVER -CREATURE:NIGHT_CREATURE_18:GUT -"CREATURE:NIGHT_CREATURE_18:STOMACH -"CREATURE:NIGHT_CREATURE_18:GIZZARD -#CREATURE:NIGHT_CREATURE_18:PANCREAS -!CREATURE:NIGHT_CREATURE_18:SPLEEN -!CREATURE:NIGHT_CREATURE_18:KIDNEY -!CREATURE:NIGHT_CREATURE_19:MUSCLE -CREATURE:NIGHT_CREATURE_19:EYE - CREATURE:NIGHT_CREATURE_19:BRAIN -CREATURE:NIGHT_CREATURE_19:LUNG - CREATURE:NIGHT_CREATURE_19:HEART - CREATURE:NIGHT_CREATURE_19:LIVER -CREATURE:NIGHT_CREATURE_19:GUT -"CREATURE:NIGHT_CREATURE_19:STOMACH -"CREATURE:NIGHT_CREATURE_19:GIZZARD -#CREATURE:NIGHT_CREATURE_19:PANCREAS -!CREATURE:NIGHT_CREATURE_19:SPLEEN -!CREATURE:NIGHT_CREATURE_19:KIDNEY -!CREATURE:NIGHT_CREATURE_20:MUSCLE -CREATURE:NIGHT_CREATURE_20:EYE - CREATURE:NIGHT_CREATURE_20:BRAIN -CREATURE:NIGHT_CREATURE_20:LUNG - CREATURE:NIGHT_CREATURE_20:HEART - CREATURE:NIGHT_CREATURE_20:LIVER -CREATURE:NIGHT_CREATURE_20:GUT -"CREATURE:NIGHT_CREATURE_20:STOMACH -"CREATURE:NIGHT_CREATURE_20:GIZZARD -#CREATURE:NIGHT_CREATURE_20:PANCREAS -!CREATURE:NIGHT_CREATURE_20:SPLEEN -!CREATURE:NIGHT_CREATURE_20:KIDNEY -!CREATURE:NIGHT_CREATURE_21:MUSCLE -CREATURE:NIGHT_CREATURE_21:EYE - CREATURE:NIGHT_CREATURE_21:BRAIN -CREATURE:NIGHT_CREATURE_21:LUNG - CREATURE:NIGHT_CREATURE_21:HEART - CREATURE:NIGHT_CREATURE_21:LIVER -CREATURE:NIGHT_CREATURE_21:GUT -"CREATURE:NIGHT_CREATURE_21:STOMACH -"CREATURE:NIGHT_CREATURE_21:GIZZARD -#CREATURE:NIGHT_CREATURE_21:PANCREAS -!CREATURE:NIGHT_CREATURE_21:SPLEEN -!CREATURE:NIGHT_CREATURE_21:KIDNEY -!CREATURE:NIGHT_CREATURE_22:MUSCLE -CREATURE:NIGHT_CREATURE_22:EYE - CREATURE:NIGHT_CREATURE_22:BRAIN -CREATURE:NIGHT_CREATURE_22:LUNG - CREATURE:NIGHT_CREATURE_22:HEART - CREATURE:NIGHT_CREATURE_22:LIVER -CREATURE:NIGHT_CREATURE_22:GUT -"CREATURE:NIGHT_CREATURE_22:STOMACH -"CREATURE:NIGHT_CREATURE_22:GIZZARD -#CREATURE:NIGHT_CREATURE_22:PANCREAS -!CREATURE:NIGHT_CREATURE_22:SPLEEN -!CREATURE:NIGHT_CREATURE_22:KIDNEY -!CREATURE:NIGHT_CREATURE_23:MUSCLE -CREATURE:NIGHT_CREATURE_23:EYE - CREATURE:NIGHT_CREATURE_23:BRAIN -CREATURE:NIGHT_CREATURE_23:LUNG - CREATURE:NIGHT_CREATURE_23:HEART - CREATURE:NIGHT_CREATURE_23:LIVER -CREATURE:NIGHT_CREATURE_23:GUT -"CREATURE:NIGHT_CREATURE_23:STOMACH -"CREATURE:NIGHT_CREATURE_23:GIZZARD -#CREATURE:NIGHT_CREATURE_23:PANCREAS -!CREATURE:NIGHT_CREATURE_23:SPLEEN -!CREATURE:NIGHT_CREATURE_23:KIDNEY -!CREATURE:NIGHT_CREATURE_24:MUSCLE -CREATURE:NIGHT_CREATURE_24:EYE - CREATURE:NIGHT_CREATURE_24:BRAIN -CREATURE:NIGHT_CREATURE_24:LUNG - CREATURE:NIGHT_CREATURE_24:HEART - CREATURE:NIGHT_CREATURE_24:LIVER -CREATURE:NIGHT_CREATURE_24:GUT -"CREATURE:NIGHT_CREATURE_24:STOMACH -"CREATURE:NIGHT_CREATURE_24:GIZZARD -#CREATURE:NIGHT_CREATURE_24:PANCREAS -!CREATURE:NIGHT_CREATURE_24:SPLEEN -!CREATURE:NIGHT_CREATURE_24:KIDNEY -!CREATURE:NIGHT_CREATURE_25:MUSCLE -CREATURE:NIGHT_CREATURE_25:EYE - CREATURE:NIGHT_CREATURE_25:BRAIN -CREATURE:NIGHT_CREATURE_25:LUNG - CREATURE:NIGHT_CREATURE_25:HEART - CREATURE:NIGHT_CREATURE_25:LIVER -CREATURE:NIGHT_CREATURE_25:GUT -"CREATURE:NIGHT_CREATURE_25:STOMACH -"CREATURE:NIGHT_CREATURE_25:GIZZARD -#CREATURE:NIGHT_CREATURE_25:PANCREAS -!CREATURE:NIGHT_CREATURE_25:SPLEEN -!CREATURE:NIGHT_CREATURE_25:KIDNEY -!CREATURE:NIGHT_CREATURE_26:MUSCLE -CREATURE:NIGHT_CREATURE_26:EYE - CREATURE:NIGHT_CREATURE_26:BRAIN -CREATURE:NIGHT_CREATURE_26:LUNG - CREATURE:NIGHT_CREATURE_26:HEART - CREATURE:NIGHT_CREATURE_26:LIVER -CREATURE:NIGHT_CREATURE_26:GUT -"CREATURE:NIGHT_CREATURE_26:STOMACH -"CREATURE:NIGHT_CREATURE_26:GIZZARD -#CREATURE:NIGHT_CREATURE_26:PANCREAS -!CREATURE:NIGHT_CREATURE_26:SPLEEN -!CREATURE:NIGHT_CREATURE_26:KIDNEY -!CREATURE:NIGHT_CREATURE_27:MUSCLE -CREATURE:NIGHT_CREATURE_27:EYE - CREATURE:NIGHT_CREATURE_27:BRAIN -CREATURE:NIGHT_CREATURE_27:LUNG - CREATURE:NIGHT_CREATURE_27:HEART - CREATURE:NIGHT_CREATURE_27:LIVER -CREATURE:NIGHT_CREATURE_27:GUT -"CREATURE:NIGHT_CREATURE_27:STOMACH -"CREATURE:NIGHT_CREATURE_27:GIZZARD -#CREATURE:NIGHT_CREATURE_27:PANCREAS -!CREATURE:NIGHT_CREATURE_27:SPLEEN -!CREATURE:NIGHT_CREATURE_27:KIDNEY -!CREATURE:NIGHT_CREATURE_28:MUSCLE -CREATURE:NIGHT_CREATURE_28:EYE - CREATURE:NIGHT_CREATURE_28:BRAIN -CREATURE:NIGHT_CREATURE_28:LUNG - CREATURE:NIGHT_CREATURE_28:HEART - CREATURE:NIGHT_CREATURE_28:LIVER -CREATURE:NIGHT_CREATURE_28:GUT -"CREATURE:NIGHT_CREATURE_28:STOMACH -"CREATURE:NIGHT_CREATURE_28:GIZZARD -#CREATURE:NIGHT_CREATURE_28:PANCREAS -!CREATURE:NIGHT_CREATURE_28:SPLEEN -!CREATURE:NIGHT_CREATURE_28:KIDNEY -!CREATURE:NIGHT_CREATURE_29:MUSCLE -CREATURE:NIGHT_CREATURE_29:EYE - CREATURE:NIGHT_CREATURE_29:BRAIN -CREATURE:NIGHT_CREATURE_29:LUNG - CREATURE:NIGHT_CREATURE_29:HEART - CREATURE:NIGHT_CREATURE_29:LIVER -CREATURE:NIGHT_CREATURE_29:GUT -"CREATURE:NIGHT_CREATURE_29:STOMACH -"CREATURE:NIGHT_CREATURE_29:GIZZARD -#CREATURE:NIGHT_CREATURE_29:PANCREAS -!CREATURE:NIGHT_CREATURE_29:SPLEEN -!CREATURE:NIGHT_CREATURE_29:KIDNEY -!CREATURE:NIGHT_CREATURE_30:MUSCLE -CREATURE:NIGHT_CREATURE_30:EYE - CREATURE:NIGHT_CREATURE_30:BRAIN -CREATURE:NIGHT_CREATURE_30:LUNG - CREATURE:NIGHT_CREATURE_30:HEART - CREATURE:NIGHT_CREATURE_30:LIVER -CREATURE:NIGHT_CREATURE_30:GUT -"CREATURE:NIGHT_CREATURE_30:STOMACH -"CREATURE:NIGHT_CREATURE_30:GIZZARD -#CREATURE:NIGHT_CREATURE_30:PANCREAS -!CREATURE:NIGHT_CREATURE_30:SPLEEN -!CREATURE:NIGHT_CREATURE_30:KIDNEY -!CREATURE:NIGHT_CREATURE_31:MUSCLE -CREATURE:NIGHT_CREATURE_31:EYE - CREATURE:NIGHT_CREATURE_31:BRAIN -CREATURE:NIGHT_CREATURE_31:LUNG - CREATURE:NIGHT_CREATURE_31:HEART - CREATURE:NIGHT_CREATURE_31:LIVER -CREATURE:NIGHT_CREATURE_31:GUT -"CREATURE:NIGHT_CREATURE_31:STOMACH -"CREATURE:NIGHT_CREATURE_31:GIZZARD -#CREATURE:NIGHT_CREATURE_31:PANCREAS -!CREATURE:NIGHT_CREATURE_31:SPLEEN -!CREATURE:NIGHT_CREATURE_31:KIDNEY -!CREATURE:NIGHT_CREATURE_32:MUSCLE -CREATURE:NIGHT_CREATURE_32:EYE - CREATURE:NIGHT_CREATURE_32:BRAIN -CREATURE:NIGHT_CREATURE_32:LUNG - CREATURE:NIGHT_CREATURE_32:HEART - CREATURE:NIGHT_CREATURE_32:LIVER -CREATURE:NIGHT_CREATURE_32:GUT -"CREATURE:NIGHT_CREATURE_32:STOMACH -"CREATURE:NIGHT_CREATURE_32:GIZZARD -#CREATURE:NIGHT_CREATURE_32:PANCREAS -!CREATURE:NIGHT_CREATURE_32:SPLEEN -!CREATURE:NIGHT_CREATURE_32:KIDNEY -!CREATURE:NIGHT_CREATURE_33:MUSCLE -CREATURE:NIGHT_CREATURE_33:EYE - CREATURE:NIGHT_CREATURE_33:BRAIN -CREATURE:NIGHT_CREATURE_33:LUNG - CREATURE:NIGHT_CREATURE_33:HEART - CREATURE:NIGHT_CREATURE_33:LIVER -CREATURE:NIGHT_CREATURE_33:GUT -"CREATURE:NIGHT_CREATURE_33:STOMACH -"CREATURE:NIGHT_CREATURE_33:GIZZARD -#CREATURE:NIGHT_CREATURE_33:PANCREAS -!CREATURE:NIGHT_CREATURE_33:SPLEEN -!CREATURE:NIGHT_CREATURE_33:KIDNEY -!CREATURE:NIGHT_CREATURE_34:MUSCLE -CREATURE:NIGHT_CREATURE_34:EYE - CREATURE:NIGHT_CREATURE_34:BRAIN -CREATURE:NIGHT_CREATURE_34:LUNG - CREATURE:NIGHT_CREATURE_34:HEART - CREATURE:NIGHT_CREATURE_34:LIVER -CREATURE:NIGHT_CREATURE_34:GUT -"CREATURE:NIGHT_CREATURE_34:STOMACH -"CREATURE:NIGHT_CREATURE_34:GIZZARD -#CREATURE:NIGHT_CREATURE_34:PANCREAS -!CREATURE:NIGHT_CREATURE_34:SPLEEN -!CREATURE:NIGHT_CREATURE_34:KIDNEY -!CREATURE:NIGHT_CREATURE_35:MUSCLE -CREATURE:NIGHT_CREATURE_35:EYE - CREATURE:NIGHT_CREATURE_35:BRAIN -CREATURE:NIGHT_CREATURE_35:LUNG - CREATURE:NIGHT_CREATURE_35:HEART - CREATURE:NIGHT_CREATURE_35:LIVER -CREATURE:NIGHT_CREATURE_35:GUT -"CREATURE:NIGHT_CREATURE_35:STOMACH -"CREATURE:NIGHT_CREATURE_35:GIZZARD -#CREATURE:NIGHT_CREATURE_35:PANCREAS -!CREATURE:NIGHT_CREATURE_35:SPLEEN -!CREATURE:NIGHT_CREATURE_35:KIDNEY -!CREATURE:NIGHT_CREATURE_36:MUSCLE -CREATURE:NIGHT_CREATURE_36:EYE - CREATURE:NIGHT_CREATURE_36:BRAIN -CREATURE:NIGHT_CREATURE_36:LUNG - CREATURE:NIGHT_CREATURE_36:HEART - CREATURE:NIGHT_CREATURE_36:LIVER -CREATURE:NIGHT_CREATURE_36:GUT -"CREATURE:NIGHT_CREATURE_36:STOMACH -"CREATURE:NIGHT_CREATURE_36:GIZZARD -#CREATURE:NIGHT_CREATURE_36:PANCREAS -!CREATURE:NIGHT_CREATURE_36:SPLEEN -!CREATURE:NIGHT_CREATURE_36:KIDNEY -!CREATURE:NIGHT_CREATURE_37:MUSCLE -CREATURE:NIGHT_CREATURE_37:EYE - CREATURE:NIGHT_CREATURE_37:BRAIN -CREATURE:NIGHT_CREATURE_37:LUNG - CREATURE:NIGHT_CREATURE_37:HEART - CREATURE:NIGHT_CREATURE_37:LIVER -CREATURE:NIGHT_CREATURE_37:GUT -"CREATURE:NIGHT_CREATURE_37:STOMACH -"CREATURE:NIGHT_CREATURE_37:GIZZARD -#CREATURE:NIGHT_CREATURE_37:PANCREAS -!CREATURE:NIGHT_CREATURE_37:SPLEEN -!CREATURE:NIGHT_CREATURE_37:KIDNEY -!CREATURE:NIGHT_CREATURE_38:MUSCLE -CREATURE:NIGHT_CREATURE_38:EYE - CREATURE:NIGHT_CREATURE_38:BRAIN -CREATURE:NIGHT_CREATURE_38:LUNG - CREATURE:NIGHT_CREATURE_38:HEART - CREATURE:NIGHT_CREATURE_38:LIVER -CREATURE:NIGHT_CREATURE_38:GUT -"CREATURE:NIGHT_CREATURE_38:STOMACH -"CREATURE:NIGHT_CREATURE_38:GIZZARD -#CREATURE:NIGHT_CREATURE_38:PANCREAS -!CREATURE:NIGHT_CREATURE_38:SPLEEN -!CREATURE:NIGHT_CREATURE_38:KIDNEY -!CREATURE:NIGHT_CREATURE_39:MUSCLE -CREATURE:NIGHT_CREATURE_39:EYE - CREATURE:NIGHT_CREATURE_39:BRAIN -CREATURE:NIGHT_CREATURE_39:LUNG - CREATURE:NIGHT_CREATURE_39:HEART - CREATURE:NIGHT_CREATURE_39:LIVER -CREATURE:NIGHT_CREATURE_39:GUT -"CREATURE:NIGHT_CREATURE_39:STOMACH -"CREATURE:NIGHT_CREATURE_39:GIZZARD -#CREATURE:NIGHT_CREATURE_39:PANCREAS -!CREATURE:NIGHT_CREATURE_39:SPLEEN -!CREATURE:NIGHT_CREATURE_39:KIDNEY -!CREATURE:NIGHT_CREATURE_40:MUSCLE -CREATURE:NIGHT_CREATURE_40:EYE - CREATURE:NIGHT_CREATURE_40:BRAIN -CREATURE:NIGHT_CREATURE_40:LUNG - CREATURE:NIGHT_CREATURE_40:HEART - CREATURE:NIGHT_CREATURE_40:LIVER -CREATURE:NIGHT_CREATURE_40:GUT -"CREATURE:NIGHT_CREATURE_40:STOMACH -"CREATURE:NIGHT_CREATURE_40:GIZZARD -#CREATURE:NIGHT_CREATURE_40:PANCREAS -!CREATURE:NIGHT_CREATURE_40:SPLEEN -!CREATURE:NIGHT_CREATURE_40:KIDNEY -!CREATURE:NIGHT_CREATURE_41:MUSCLE -CREATURE:NIGHT_CREATURE_41:EYE - CREATURE:NIGHT_CREATURE_41:BRAIN -CREATURE:NIGHT_CREATURE_41:LUNG - CREATURE:NIGHT_CREATURE_41:HEART - CREATURE:NIGHT_CREATURE_41:LIVER -CREATURE:NIGHT_CREATURE_41:GUT -"CREATURE:NIGHT_CREATURE_41:STOMACH -"CREATURE:NIGHT_CREATURE_41:GIZZARD -#CREATURE:NIGHT_CREATURE_41:PANCREAS -!CREATURE:NIGHT_CREATURE_41:SPLEEN -!CREATURE:NIGHT_CREATURE_41:KIDNEY -!CREATURE:NIGHT_CREATURE_42:MUSCLE -CREATURE:NIGHT_CREATURE_42:EYE - CREATURE:NIGHT_CREATURE_42:BRAIN -CREATURE:NIGHT_CREATURE_42:LUNG - CREATURE:NIGHT_CREATURE_42:HEART - CREATURE:NIGHT_CREATURE_42:LIVER -CREATURE:NIGHT_CREATURE_42:GUT -"CREATURE:NIGHT_CREATURE_42:STOMACH -"CREATURE:NIGHT_CREATURE_42:GIZZARD -#CREATURE:NIGHT_CREATURE_42:PANCREAS -!CREATURE:NIGHT_CREATURE_42:SPLEEN -!CREATURE:NIGHT_CREATURE_42:KIDNEY -!CREATURE:NIGHT_CREATURE_43:MUSCLE -CREATURE:NIGHT_CREATURE_43:EYE - CREATURE:NIGHT_CREATURE_43:BRAIN -CREATURE:NIGHT_CREATURE_43:LUNG - CREATURE:NIGHT_CREATURE_43:HEART - CREATURE:NIGHT_CREATURE_43:LIVER -CREATURE:NIGHT_CREATURE_43:GUT -"CREATURE:NIGHT_CREATURE_43:STOMACH -"CREATURE:NIGHT_CREATURE_43:GIZZARD -#CREATURE:NIGHT_CREATURE_43:PANCREAS -!CREATURE:NIGHT_CREATURE_43:SPLEEN -!CREATURE:NIGHT_CREATURE_43:KIDNEY -!CREATURE:NIGHT_CREATURE_44:MUSCLE -CREATURE:NIGHT_CREATURE_44:EYE - CREATURE:NIGHT_CREATURE_44:BRAIN -CREATURE:NIGHT_CREATURE_44:LUNG - CREATURE:NIGHT_CREATURE_44:HEART - CREATURE:NIGHT_CREATURE_44:LIVER -CREATURE:NIGHT_CREATURE_44:GUT -"CREATURE:NIGHT_CREATURE_44:STOMACH -"CREATURE:NIGHT_CREATURE_44:GIZZARD -#CREATURE:NIGHT_CREATURE_44:PANCREAS -!CREATURE:NIGHT_CREATURE_44:SPLEEN -!CREATURE:NIGHT_CREATURE_44:KIDNEY -!CREATURE:NIGHT_CREATURE_45:MUSCLE -CREATURE:NIGHT_CREATURE_45:EYE - CREATURE:NIGHT_CREATURE_45:BRAIN -CREATURE:NIGHT_CREATURE_45:LUNG - CREATURE:NIGHT_CREATURE_45:HEART - CREATURE:NIGHT_CREATURE_45:LIVER -CREATURE:NIGHT_CREATURE_45:GUT -"CREATURE:NIGHT_CREATURE_45:STOMACH -"CREATURE:NIGHT_CREATURE_45:GIZZARD -#CREATURE:NIGHT_CREATURE_45:PANCREAS -!CREATURE:NIGHT_CREATURE_45:SPLEEN -!CREATURE:NIGHT_CREATURE_45:KIDNEY -!CREATURE:NIGHT_CREATURE_46:MUSCLE -CREATURE:NIGHT_CREATURE_46:EYE - CREATURE:NIGHT_CREATURE_46:BRAIN -CREATURE:NIGHT_CREATURE_46:LUNG - CREATURE:NIGHT_CREATURE_46:HEART - CREATURE:NIGHT_CREATURE_46:LIVER -CREATURE:NIGHT_CREATURE_46:GUT -"CREATURE:NIGHT_CREATURE_46:STOMACH -"CREATURE:NIGHT_CREATURE_46:GIZZARD -#CREATURE:NIGHT_CREATURE_46:PANCREAS -!CREATURE:NIGHT_CREATURE_46:SPLEEN -!CREATURE:NIGHT_CREATURE_46:KIDNEY -!CREATURE:NIGHT_CREATURE_47:MUSCLE -CREATURE:NIGHT_CREATURE_47:EYE - CREATURE:NIGHT_CREATURE_47:BRAIN -CREATURE:NIGHT_CREATURE_47:LUNG - CREATURE:NIGHT_CREATURE_47:HEART - CREATURE:NIGHT_CREATURE_47:LIVER -CREATURE:NIGHT_CREATURE_47:GUT -"CREATURE:NIGHT_CREATURE_47:STOMACH -"CREATURE:NIGHT_CREATURE_47:GIZZARD -#CREATURE:NIGHT_CREATURE_47:PANCREAS -!CREATURE:NIGHT_CREATURE_47:SPLEEN -!CREATURE:NIGHT_CREATURE_47:KIDNEY -!CREATURE:NIGHT_CREATURE_48:MUSCLE -CREATURE:NIGHT_CREATURE_48:EYE - CREATURE:NIGHT_CREATURE_48:BRAIN -CREATURE:NIGHT_CREATURE_48:LUNG - CREATURE:NIGHT_CREATURE_48:HEART - CREATURE:NIGHT_CREATURE_48:LIVER -CREATURE:NIGHT_CREATURE_48:GUT -"CREATURE:NIGHT_CREATURE_48:STOMACH -"CREATURE:NIGHT_CREATURE_48:GIZZARD -#CREATURE:NIGHT_CREATURE_48:PANCREAS -!CREATURE:NIGHT_CREATURE_48:SPLEEN -!CREATURE:NIGHT_CREATURE_48:KIDNEY -!CREATURE:NIGHT_CREATURE_49:MUSCLE -CREATURE:NIGHT_CREATURE_49:EYE - CREATURE:NIGHT_CREATURE_49:BRAIN -CREATURE:NIGHT_CREATURE_49:LUNG - CREATURE:NIGHT_CREATURE_49:HEART - CREATURE:NIGHT_CREATURE_49:LIVER -CREATURE:NIGHT_CREATURE_49:GUT -"CREATURE:NIGHT_CREATURE_49:STOMACH -"CREATURE:NIGHT_CREATURE_49:GIZZARD -#CREATURE:NIGHT_CREATURE_49:PANCREAS -!CREATURE:NIGHT_CREATURE_49:SPLEEN -!CREATURE:NIGHT_CREATURE_49:KIDNEY -!CREATURE:NIGHT_CREATURE_50:MUSCLE -CREATURE:NIGHT_CREATURE_50:EYE - CREATURE:NIGHT_CREATURE_50:BRAIN -CREATURE:NIGHT_CREATURE_50:LUNG - CREATURE:NIGHT_CREATURE_50:HEART - CREATURE:NIGHT_CREATURE_50:LIVER -CREATURE:NIGHT_CREATURE_50:GUT -"CREATURE:NIGHT_CREATURE_50:STOMACH -"CREATURE:NIGHT_CREATURE_50:GIZZARD -#CREATURE:NIGHT_CREATURE_50:PANCREAS -!CREATURE:NIGHT_CREATURE_50:SPLEEN -!CREATURE:NIGHT_CREATURE_50:KIDNEY -!CREATURE:NIGHT_CREATURE_51:MUSCLE -CREATURE:NIGHT_CREATURE_51:EYE - CREATURE:NIGHT_CREATURE_51:BRAIN -CREATURE:NIGHT_CREATURE_51:LUNG - CREATURE:NIGHT_CREATURE_51:HEART - CREATURE:NIGHT_CREATURE_51:LIVER -CREATURE:NIGHT_CREATURE_51:GUT -"CREATURE:NIGHT_CREATURE_51:STOMACH -"CREATURE:NIGHT_CREATURE_51:GIZZARD -#CREATURE:NIGHT_CREATURE_51:PANCREAS -!CREATURE:NIGHT_CREATURE_51:SPLEEN -!CREATURE:NIGHT_CREATURE_51:KIDNEY -!CREATURE:NIGHT_CREATURE_52:MUSCLE -CREATURE:NIGHT_CREATURE_52:EYE - CREATURE:NIGHT_CREATURE_52:BRAIN -CREATURE:NIGHT_CREATURE_52:LUNG - CREATURE:NIGHT_CREATURE_52:HEART - CREATURE:NIGHT_CREATURE_52:LIVER -CREATURE:NIGHT_CREATURE_52:GUT -"CREATURE:NIGHT_CREATURE_52:STOMACH -"CREATURE:NIGHT_CREATURE_52:GIZZARD -#CREATURE:NIGHT_CREATURE_52:PANCREAS -!CREATURE:NIGHT_CREATURE_52:SPLEEN -!CREATURE:NIGHT_CREATURE_52:KIDNEY -!CREATURE:NIGHT_CREATURE_53:MUSCLE -CREATURE:NIGHT_CREATURE_53:EYE - CREATURE:NIGHT_CREATURE_53:BRAIN -CREATURE:NIGHT_CREATURE_53:LUNG - CREATURE:NIGHT_CREATURE_53:HEART - CREATURE:NIGHT_CREATURE_53:LIVER -CREATURE:NIGHT_CREATURE_53:GUT -"CREATURE:NIGHT_CREATURE_53:STOMACH -"CREATURE:NIGHT_CREATURE_53:GIZZARD -#CREATURE:NIGHT_CREATURE_53:PANCREAS -!CREATURE:NIGHT_CREATURE_53:SPLEEN -!CREATURE:NIGHT_CREATURE_53:KIDNEY -!CREATURE:NIGHT_CREATURE_54:MUSCLE -CREATURE:NIGHT_CREATURE_54:EYE - CREATURE:NIGHT_CREATURE_54:BRAIN -CREATURE:NIGHT_CREATURE_54:LUNG - CREATURE:NIGHT_CREATURE_54:HEART - CREATURE:NIGHT_CREATURE_54:LIVER -CREATURE:NIGHT_CREATURE_54:GUT -"CREATURE:NIGHT_CREATURE_54:STOMACH -"CREATURE:NIGHT_CREATURE_54:GIZZARD -#CREATURE:NIGHT_CREATURE_54:PANCREAS -!CREATURE:NIGHT_CREATURE_54:SPLEEN -!CREATURE:NIGHT_CREATURE_54:KIDNEY -!CREATURE:NIGHT_CREATURE_55:MUSCLE -CREATURE:NIGHT_CREATURE_55:EYE - CREATURE:NIGHT_CREATURE_55:BRAIN -CREATURE:NIGHT_CREATURE_55:LUNG - CREATURE:NIGHT_CREATURE_55:HEART - CREATURE:NIGHT_CREATURE_55:LIVER -CREATURE:NIGHT_CREATURE_55:GUT -"CREATURE:NIGHT_CREATURE_55:STOMACH -"CREATURE:NIGHT_CREATURE_55:GIZZARD -#CREATURE:NIGHT_CREATURE_55:PANCREAS -!CREATURE:NIGHT_CREATURE_55:SPLEEN -!CREATURE:NIGHT_CREATURE_55:KIDNEY -!CREATURE:NIGHT_CREATURE_56:MUSCLE -CREATURE:NIGHT_CREATURE_56:EYE - CREATURE:NIGHT_CREATURE_56:BRAIN -CREATURE:NIGHT_CREATURE_56:LUNG - CREATURE:NIGHT_CREATURE_56:HEART - CREATURE:NIGHT_CREATURE_56:LIVER -CREATURE:NIGHT_CREATURE_56:GUT -"CREATURE:NIGHT_CREATURE_56:STOMACH -"CREATURE:NIGHT_CREATURE_56:GIZZARD -#CREATURE:NIGHT_CREATURE_56:PANCREAS -!CREATURE:NIGHT_CREATURE_56:SPLEEN -!CREATURE:NIGHT_CREATURE_56:KIDNEY -!CREATURE:NIGHT_CREATURE_57:MUSCLE -CREATURE:NIGHT_CREATURE_57:EYE - CREATURE:NIGHT_CREATURE_57:BRAIN -CREATURE:NIGHT_CREATURE_57:LUNG - CREATURE:NIGHT_CREATURE_57:HEART - CREATURE:NIGHT_CREATURE_57:LIVER -CREATURE:NIGHT_CREATURE_57:GUT -"CREATURE:NIGHT_CREATURE_57:STOMACH -"CREATURE:NIGHT_CREATURE_57:GIZZARD -#CREATURE:NIGHT_CREATURE_57:PANCREAS -!CREATURE:NIGHT_CREATURE_57:SPLEEN -!CREATURE:NIGHT_CREATURE_57:KIDNEY -!CREATURE:NIGHT_CREATURE_58:MUSCLE -CREATURE:NIGHT_CREATURE_58:EYE - CREATURE:NIGHT_CREATURE_58:BRAIN -CREATURE:NIGHT_CREATURE_58:LUNG - CREATURE:NIGHT_CREATURE_58:HEART - CREATURE:NIGHT_CREATURE_58:LIVER -CREATURE:NIGHT_CREATURE_58:GUT -"CREATURE:NIGHT_CREATURE_58:STOMACH -"CREATURE:NIGHT_CREATURE_58:GIZZARD -#CREATURE:NIGHT_CREATURE_58:PANCREAS -!CREATURE:NIGHT_CREATURE_58:SPLEEN -!CREATURE:NIGHT_CREATURE_58:KIDNEY -!CREATURE:NIGHT_CREATURE_59:MUSCLE -CREATURE:NIGHT_CREATURE_59:EYE - CREATURE:NIGHT_CREATURE_59:BRAIN -CREATURE:NIGHT_CREATURE_59:LUNG - CREATURE:NIGHT_CREATURE_59:HEART - CREATURE:NIGHT_CREATURE_59:LIVER -CREATURE:NIGHT_CREATURE_59:GUT -"CREATURE:NIGHT_CREATURE_59:STOMACH -"CREATURE:NIGHT_CREATURE_59:GIZZARD -#CREATURE:NIGHT_CREATURE_59:PANCREAS -!CREATURE:NIGHT_CREATURE_59:SPLEEN -!CREATURE:NIGHT_CREATURE_59:KIDNEY -!CREATURE:NIGHT_CREATURE_60:MUSCLE -CREATURE:NIGHT_CREATURE_60:EYE - CREATURE:NIGHT_CREATURE_60:BRAIN -CREATURE:NIGHT_CREATURE_60:LUNG - CREATURE:NIGHT_CREATURE_60:HEART - CREATURE:NIGHT_CREATURE_60:LIVER -CREATURE:NIGHT_CREATURE_60:GUT -"CREATURE:NIGHT_CREATURE_60:STOMACH -"CREATURE:NIGHT_CREATURE_60:GIZZARD -#CREATURE:NIGHT_CREATURE_60:PANCREAS -!CREATURE:NIGHT_CREATURE_60:SPLEEN -!CREATURE:NIGHT_CREATURE_60:KIDNEY -!CREATURE:NIGHT_CREATURE_61:MUSCLE -CREATURE:NIGHT_CREATURE_61:EYE - CREATURE:NIGHT_CREATURE_61:BRAIN -CREATURE:NIGHT_CREATURE_61:LUNG - CREATURE:NIGHT_CREATURE_61:HEART - CREATURE:NIGHT_CREATURE_61:LIVER -CREATURE:NIGHT_CREATURE_61:GUT -"CREATURE:NIGHT_CREATURE_61:STOMACH -"CREATURE:NIGHT_CREATURE_61:GIZZARD -#CREATURE:NIGHT_CREATURE_61:PANCREAS -!CREATURE:NIGHT_CREATURE_61:SPLEEN -!CREATURE:NIGHT_CREATURE_61:KIDNEY -!CREATURE:NIGHT_CREATURE_62:MUSCLE -CREATURE:NIGHT_CREATURE_62:EYE - CREATURE:NIGHT_CREATURE_62:BRAIN -CREATURE:NIGHT_CREATURE_62:LUNG - CREATURE:NIGHT_CREATURE_62:HEART - CREATURE:NIGHT_CREATURE_62:LIVER -CREATURE:NIGHT_CREATURE_62:GUT -"CREATURE:NIGHT_CREATURE_62:STOMACH -"CREATURE:NIGHT_CREATURE_62:GIZZARD -#CREATURE:NIGHT_CREATURE_62:PANCREAS -!CREATURE:NIGHT_CREATURE_62:SPLEEN -!CREATURE:NIGHT_CREATURE_62:KIDNEY -!CREATURE:NIGHT_CREATURE_63:MUSCLE -CREATURE:NIGHT_CREATURE_63:EYE - CREATURE:NIGHT_CREATURE_63:BRAIN -CREATURE:NIGHT_CREATURE_63:LUNG - CREATURE:NIGHT_CREATURE_63:HEART - CREATURE:NIGHT_CREATURE_63:LIVER -CREATURE:NIGHT_CREATURE_63:GUT -"CREATURE:NIGHT_CREATURE_63:STOMACH -"CREATURE:NIGHT_CREATURE_63:GIZZARD -#CREATURE:NIGHT_CREATURE_63:PANCREAS -!CREATURE:NIGHT_CREATURE_63:SPLEEN -!CREATURE:NIGHT_CREATURE_63:KIDNEY -!CREATURE:NIGHT_CREATURE_64:MUSCLE -CREATURE:NIGHT_CREATURE_64:EYE - CREATURE:NIGHT_CREATURE_64:BRAIN -CREATURE:NIGHT_CREATURE_64:LUNG - CREATURE:NIGHT_CREATURE_64:HEART - CREATURE:NIGHT_CREATURE_64:LIVER -CREATURE:NIGHT_CREATURE_64:GUT -"CREATURE:NIGHT_CREATURE_64:STOMACH -"CREATURE:NIGHT_CREATURE_64:GIZZARD -#CREATURE:NIGHT_CREATURE_64:PANCREAS -!CREATURE:NIGHT_CREATURE_64:SPLEEN -!CREATURE:NIGHT_CREATURE_64:KIDNEY -!CREATURE:NIGHT_CREATURE_65:MUSCLE -CREATURE:NIGHT_CREATURE_65:EYE - CREATURE:NIGHT_CREATURE_65:BRAIN -CREATURE:NIGHT_CREATURE_65:LUNG - CREATURE:NIGHT_CREATURE_65:HEART - CREATURE:NIGHT_CREATURE_65:LIVER -CREATURE:NIGHT_CREATURE_65:GUT -"CREATURE:NIGHT_CREATURE_65:STOMACH -"CREATURE:NIGHT_CREATURE_65:GIZZARD -#CREATURE:NIGHT_CREATURE_65:PANCREAS -!CREATURE:NIGHT_CREATURE_65:SPLEEN -!CREATURE:NIGHT_CREATURE_65:KIDNEY -!CREATURE:NIGHT_CREATURE_66:MUSCLE -CREATURE:NIGHT_CREATURE_66:EYE - CREATURE:NIGHT_CREATURE_66:BRAIN -CREATURE:NIGHT_CREATURE_66:LUNG - CREATURE:NIGHT_CREATURE_66:HEART - CREATURE:NIGHT_CREATURE_66:LIVER -CREATURE:NIGHT_CREATURE_66:GUT -"CREATURE:NIGHT_CREATURE_66:STOMACH -"CREATURE:NIGHT_CREATURE_66:GIZZARD -#CREATURE:NIGHT_CREATURE_66:PANCREAS -!CREATURE:NIGHT_CREATURE_66:SPLEEN -!CREATURE:NIGHT_CREATURE_66:KIDNEY -!CREATURE:NIGHT_CREATURE_67:MUSCLE -CREATURE:NIGHT_CREATURE_67:EYE - CREATURE:NIGHT_CREATURE_67:BRAIN -CREATURE:NIGHT_CREATURE_67:LUNG - CREATURE:NIGHT_CREATURE_67:HEART - CREATURE:NIGHT_CREATURE_67:LIVER -CREATURE:NIGHT_CREATURE_67:GUT -"CREATURE:NIGHT_CREATURE_67:STOMACH -"CREATURE:NIGHT_CREATURE_67:GIZZARD -#CREATURE:NIGHT_CREATURE_67:PANCREAS -!CREATURE:NIGHT_CREATURE_67:SPLEEN -!CREATURE:NIGHT_CREATURE_67:KIDNEY -!CREATURE:NIGHT_CREATURE_68:MUSCLE -CREATURE:NIGHT_CREATURE_68:EYE - CREATURE:NIGHT_CREATURE_68:BRAIN -CREATURE:NIGHT_CREATURE_68:LUNG - CREATURE:NIGHT_CREATURE_68:HEART - CREATURE:NIGHT_CREATURE_68:LIVER -CREATURE:NIGHT_CREATURE_68:GUT -"CREATURE:NIGHT_CREATURE_68:STOMACH -"CREATURE:NIGHT_CREATURE_68:GIZZARD -#CREATURE:NIGHT_CREATURE_68:PANCREAS -!CREATURE:NIGHT_CREATURE_68:SPLEEN -!CREATURE:NIGHT_CREATURE_68:KIDNEY -!CREATURE:NIGHT_CREATURE_69:MUSCLE -CREATURE:NIGHT_CREATURE_69:EYE - CREATURE:NIGHT_CREATURE_69:BRAIN -CREATURE:NIGHT_CREATURE_69:LUNG - CREATURE:NIGHT_CREATURE_69:HEART - CREATURE:NIGHT_CREATURE_69:LIVER -CREATURE:NIGHT_CREATURE_69:GUT -"CREATURE:NIGHT_CREATURE_69:STOMACH -"CREATURE:NIGHT_CREATURE_69:GIZZARD -#CREATURE:NIGHT_CREATURE_69:PANCREAS -!CREATURE:NIGHT_CREATURE_69:SPLEEN -!CREATURE:NIGHT_CREATURE_69:KIDNEY -!CREATURE:NIGHT_CREATURE_70:MUSCLE -CREATURE:NIGHT_CREATURE_70:EYE - CREATURE:NIGHT_CREATURE_70:BRAIN -CREATURE:NIGHT_CREATURE_70:LUNG - CREATURE:NIGHT_CREATURE_70:HEART - CREATURE:NIGHT_CREATURE_70:LIVER -CREATURE:NIGHT_CREATURE_70:GUT -"CREATURE:NIGHT_CREATURE_70:STOMACH -"CREATURE:NIGHT_CREATURE_70:GIZZARD -#CREATURE:NIGHT_CREATURE_70:PANCREAS -!CREATURE:NIGHT_CREATURE_70:SPLEEN -!CREATURE:NIGHT_CREATURE_70:KIDNEY -!CREATURE:NIGHT_CREATURE_71:MUSCLE -CREATURE:NIGHT_CREATURE_71:EYE - CREATURE:NIGHT_CREATURE_71:BRAIN -CREATURE:NIGHT_CREATURE_71:LUNG - CREATURE:NIGHT_CREATURE_71:HEART - CREATURE:NIGHT_CREATURE_71:LIVER -CREATURE:NIGHT_CREATURE_71:GUT -"CREATURE:NIGHT_CREATURE_71:STOMACH -"CREATURE:NIGHT_CREATURE_71:GIZZARD -#CREATURE:NIGHT_CREATURE_71:PANCREAS -!CREATURE:NIGHT_CREATURE_71:SPLEEN -!CREATURE:NIGHT_CREATURE_71:KIDNEY -!CREATURE:NIGHT_CREATURE_72:MUSCLE -CREATURE:NIGHT_CREATURE_72:EYE - CREATURE:NIGHT_CREATURE_72:BRAIN -CREATURE:NIGHT_CREATURE_72:LUNG - CREATURE:NIGHT_CREATURE_72:HEART - CREATURE:NIGHT_CREATURE_72:LIVER -CREATURE:NIGHT_CREATURE_72:GUT -"CREATURE:NIGHT_CREATURE_72:STOMACH -"CREATURE:NIGHT_CREATURE_72:GIZZARD -#CREATURE:NIGHT_CREATURE_72:PANCREAS -!CREATURE:NIGHT_CREATURE_72:SPLEEN -!CREATURE:NIGHT_CREATURE_72:KIDNEY -!CREATURE:NIGHT_CREATURE_73:MUSCLE -CREATURE:NIGHT_CREATURE_73:EYE - CREATURE:NIGHT_CREATURE_73:BRAIN -CREATURE:NIGHT_CREATURE_73:LUNG - CREATURE:NIGHT_CREATURE_73:HEART - CREATURE:NIGHT_CREATURE_73:LIVER -CREATURE:NIGHT_CREATURE_73:GUT -"CREATURE:NIGHT_CREATURE_73:STOMACH -"CREATURE:NIGHT_CREATURE_73:GIZZARD -#CREATURE:NIGHT_CREATURE_73:PANCREAS -!CREATURE:NIGHT_CREATURE_73:SPLEEN -!CREATURE:NIGHT_CREATURE_73:KIDNEY -!CREATURE:NIGHT_CREATURE_74:MUSCLE -CREATURE:NIGHT_CREATURE_74:EYE - CREATURE:NIGHT_CREATURE_74:BRAIN -CREATURE:NIGHT_CREATURE_74:LUNG - CREATURE:NIGHT_CREATURE_74:HEART - CREATURE:NIGHT_CREATURE_74:LIVER -CREATURE:NIGHT_CREATURE_74:GUT -"CREATURE:NIGHT_CREATURE_74:STOMACH -"CREATURE:NIGHT_CREATURE_74:GIZZARD -#CREATURE:NIGHT_CREATURE_74:PANCREAS -!CREATURE:NIGHT_CREATURE_74:SPLEEN -!CREATURE:NIGHT_CREATURE_74:KIDNEY -!CREATURE:NIGHT_CREATURE_75:MUSCLE -CREATURE:NIGHT_CREATURE_75:EYE - CREATURE:NIGHT_CREATURE_75:BRAIN -CREATURE:NIGHT_CREATURE_75:LUNG - CREATURE:NIGHT_CREATURE_75:HEART - CREATURE:NIGHT_CREATURE_75:LIVER -CREATURE:NIGHT_CREATURE_75:GUT -"CREATURE:NIGHT_CREATURE_75:STOMACH -"CREATURE:NIGHT_CREATURE_75:GIZZARD -#CREATURE:NIGHT_CREATURE_75:PANCREAS -!CREATURE:NIGHT_CREATURE_75:SPLEEN -!CREATURE:NIGHT_CREATURE_75:KIDNEY -!CREATURE:NIGHT_CREATURE_76:MUSCLE -CREATURE:NIGHT_CREATURE_76:EYE - CREATURE:NIGHT_CREATURE_76:BRAIN -CREATURE:NIGHT_CREATURE_76:LUNG - CREATURE:NIGHT_CREATURE_76:HEART - CREATURE:NIGHT_CREATURE_76:LIVER -CREATURE:NIGHT_CREATURE_76:GUT -"CREATURE:NIGHT_CREATURE_76:STOMACH -"CREATURE:NIGHT_CREATURE_76:GIZZARD -#CREATURE:NIGHT_CREATURE_76:PANCREAS -!CREATURE:NIGHT_CREATURE_76:SPLEEN -!CREATURE:NIGHT_CREATURE_76:KIDNEY -!CREATURE:NIGHT_CREATURE_77:MUSCLE -CREATURE:NIGHT_CREATURE_77:EYE - CREATURE:NIGHT_CREATURE_77:BRAIN -CREATURE:NIGHT_CREATURE_77:LUNG - CREATURE:NIGHT_CREATURE_77:HEART - CREATURE:NIGHT_CREATURE_77:LIVER -CREATURE:NIGHT_CREATURE_77:GUT -"CREATURE:NIGHT_CREATURE_77:STOMACH -"CREATURE:NIGHT_CREATURE_77:GIZZARD -#CREATURE:NIGHT_CREATURE_77:PANCREAS -!CREATURE:NIGHT_CREATURE_77:SPLEEN -!CREATURE:NIGHT_CREATURE_77:KIDNEY -!CREATURE:NIGHT_CREATURE_78:MUSCLE -CREATURE:NIGHT_CREATURE_78:EYE - CREATURE:NIGHT_CREATURE_78:BRAIN -CREATURE:NIGHT_CREATURE_78:LUNG - CREATURE:NIGHT_CREATURE_78:HEART - CREATURE:NIGHT_CREATURE_78:LIVER -CREATURE:NIGHT_CREATURE_78:GUT -"CREATURE:NIGHT_CREATURE_78:STOMACH -"CREATURE:NIGHT_CREATURE_78:GIZZARD -#CREATURE:NIGHT_CREATURE_78:PANCREAS -!CREATURE:NIGHT_CREATURE_78:SPLEEN -!CREATURE:NIGHT_CREATURE_78:KIDNEY -!CREATURE:NIGHT_CREATURE_79:MUSCLE -CREATURE:NIGHT_CREATURE_79:EYE - CREATURE:NIGHT_CREATURE_79:BRAIN -CREATURE:NIGHT_CREATURE_79:LUNG - CREATURE:NIGHT_CREATURE_79:HEART - CREATURE:NIGHT_CREATURE_79:LIVER -CREATURE:NIGHT_CREATURE_79:GUT -"CREATURE:NIGHT_CREATURE_79:STOMACH -"CREATURE:NIGHT_CREATURE_79:GIZZARD -#CREATURE:NIGHT_CREATURE_79:PANCREAS -!CREATURE:NIGHT_CREATURE_79:SPLEEN -!CREATURE:NIGHT_CREATURE_79:KIDNEY -!CREATURE:NIGHT_CREATURE_80:MUSCLE -CREATURE:NIGHT_CREATURE_80:EYE - CREATURE:NIGHT_CREATURE_80:BRAIN -CREATURE:NIGHT_CREATURE_80:LUNG - CREATURE:NIGHT_CREATURE_80:HEART - CREATURE:NIGHT_CREATURE_80:LIVER -CREATURE:NIGHT_CREATURE_80:GUT -"CREATURE:NIGHT_CREATURE_80:STOMACH -"CREATURE:NIGHT_CREATURE_80:GIZZARD -#CREATURE:NIGHT_CREATURE_80:PANCREAS -!CREATURE:NIGHT_CREATURE_80:SPLEEN -!CREATURE:NIGHT_CREATURE_80:KIDNEY -!CREATURE:NIGHT_CREATURE_81:MUSCLE -CREATURE:NIGHT_CREATURE_81:EYE - CREATURE:NIGHT_CREATURE_81:BRAIN -CREATURE:NIGHT_CREATURE_81:LUNG - CREATURE:NIGHT_CREATURE_81:HEART - CREATURE:NIGHT_CREATURE_81:LIVER -CREATURE:NIGHT_CREATURE_81:GUT -"CREATURE:NIGHT_CREATURE_81:STOMACH -"CREATURE:NIGHT_CREATURE_81:GIZZARD -#CREATURE:NIGHT_CREATURE_81:PANCREAS -!CREATURE:NIGHT_CREATURE_81:SPLEEN -!CREATURE:NIGHT_CREATURE_81:KIDNEY -!CREATURE:NIGHT_CREATURE_82:MUSCLE -CREATURE:NIGHT_CREATURE_82:EYE - CREATURE:NIGHT_CREATURE_82:BRAIN -CREATURE:NIGHT_CREATURE_82:LUNG - CREATURE:NIGHT_CREATURE_82:HEART - CREATURE:NIGHT_CREATURE_82:LIVER -CREATURE:NIGHT_CREATURE_82:GUT -"CREATURE:NIGHT_CREATURE_82:STOMACH -"CREATURE:NIGHT_CREATURE_82:GIZZARD -#CREATURE:NIGHT_CREATURE_82:PANCREAS -!CREATURE:NIGHT_CREATURE_82:SPLEEN -!CREATURE:NIGHT_CREATURE_82:KIDNEY -!CREATURE:NIGHT_CREATURE_83:MUSCLE -CREATURE:NIGHT_CREATURE_83:EYE - CREATURE:NIGHT_CREATURE_83:BRAIN -CREATURE:NIGHT_CREATURE_83:LUNG - CREATURE:NIGHT_CREATURE_83:HEART - CREATURE:NIGHT_CREATURE_83:LIVER -CREATURE:NIGHT_CREATURE_83:GUT -"CREATURE:NIGHT_CREATURE_83:STOMACH -"CREATURE:NIGHT_CREATURE_83:GIZZARD -#CREATURE:NIGHT_CREATURE_83:PANCREAS -!CREATURE:NIGHT_CREATURE_83:SPLEEN -!CREATURE:NIGHT_CREATURE_83:KIDNEY -!CREATURE:NIGHT_CREATURE_84:MUSCLE -CREATURE:NIGHT_CREATURE_84:EYE - CREATURE:NIGHT_CREATURE_84:BRAIN -CREATURE:NIGHT_CREATURE_84:LUNG - CREATURE:NIGHT_CREATURE_84:HEART - CREATURE:NIGHT_CREATURE_84:LIVER -CREATURE:NIGHT_CREATURE_84:GUT -"CREATURE:NIGHT_CREATURE_84:STOMACH -"CREATURE:NIGHT_CREATURE_84:GIZZARD -#CREATURE:NIGHT_CREATURE_84:PANCREAS -!CREATURE:NIGHT_CREATURE_84:SPLEEN -!CREATURE:NIGHT_CREATURE_84:KIDNEY -!CREATURE:NIGHT_CREATURE_85:MUSCLE -CREATURE:NIGHT_CREATURE_85:EYE - CREATURE:NIGHT_CREATURE_85:BRAIN -CREATURE:NIGHT_CREATURE_85:LUNG - CREATURE:NIGHT_CREATURE_85:HEART - CREATURE:NIGHT_CREATURE_85:LIVER -CREATURE:NIGHT_CREATURE_85:GUT -"CREATURE:NIGHT_CREATURE_85:STOMACH -"CREATURE:NIGHT_CREATURE_85:GIZZARD -#CREATURE:NIGHT_CREATURE_85:PANCREAS -!CREATURE:NIGHT_CREATURE_85:SPLEEN -!CREATURE:NIGHT_CREATURE_85:KIDNEY -!CREATURE:NIGHT_CREATURE_86:MUSCLE -CREATURE:NIGHT_CREATURE_86:EYE - CREATURE:NIGHT_CREATURE_86:BRAIN -CREATURE:NIGHT_CREATURE_86:LUNG - CREATURE:NIGHT_CREATURE_86:HEART - CREATURE:NIGHT_CREATURE_86:LIVER -CREATURE:NIGHT_CREATURE_86:GUT -"CREATURE:NIGHT_CREATURE_86:STOMACH -"CREATURE:NIGHT_CREATURE_86:GIZZARD -#CREATURE:NIGHT_CREATURE_86:PANCREAS -!CREATURE:NIGHT_CREATURE_86:SPLEEN -!CREATURE:NIGHT_CREATURE_86:KIDNEY -!CREATURE:NIGHT_CREATURE_87:MUSCLE -CREATURE:NIGHT_CREATURE_87:EYE - CREATURE:NIGHT_CREATURE_87:BRAIN -CREATURE:NIGHT_CREATURE_87:LUNG - CREATURE:NIGHT_CREATURE_87:HEART - CREATURE:NIGHT_CREATURE_87:LIVER -CREATURE:NIGHT_CREATURE_87:GUT -"CREATURE:NIGHT_CREATURE_87:STOMACH -"CREATURE:NIGHT_CREATURE_87:GIZZARD -#CREATURE:NIGHT_CREATURE_87:PANCREAS -!CREATURE:NIGHT_CREATURE_87:SPLEEN -!CREATURE:NIGHT_CREATURE_87:KIDNEY -!CREATURE:NIGHT_CREATURE_88:MUSCLE -CREATURE:NIGHT_CREATURE_88:EYE - CREATURE:NIGHT_CREATURE_88:BRAIN -CREATURE:NIGHT_CREATURE_88:LUNG - CREATURE:NIGHT_CREATURE_88:HEART - CREATURE:NIGHT_CREATURE_88:LIVER -CREATURE:NIGHT_CREATURE_88:GUT -"CREATURE:NIGHT_CREATURE_88:STOMACH -"CREATURE:NIGHT_CREATURE_88:GIZZARD -#CREATURE:NIGHT_CREATURE_88:PANCREAS -!CREATURE:NIGHT_CREATURE_88:SPLEEN -!CREATURE:NIGHT_CREATURE_88:KIDNEY -!CREATURE:NIGHT_CREATURE_89:MUSCLE -CREATURE:NIGHT_CREATURE_89:EYE - CREATURE:NIGHT_CREATURE_89:BRAIN -CREATURE:NIGHT_CREATURE_89:LUNG - CREATURE:NIGHT_CREATURE_89:HEART - CREATURE:NIGHT_CREATURE_89:LIVER -CREATURE:NIGHT_CREATURE_89:GUT -"CREATURE:NIGHT_CREATURE_89:STOMACH -"CREATURE:NIGHT_CREATURE_89:GIZZARD -#CREATURE:NIGHT_CREATURE_89:PANCREAS -!CREATURE:NIGHT_CREATURE_89:SPLEEN -!CREATURE:NIGHT_CREATURE_89:KIDNEY -!CREATURE:NIGHT_CREATURE_90:MUSCLE -CREATURE:NIGHT_CREATURE_90:EYE - CREATURE:NIGHT_CREATURE_90:BRAIN -CREATURE:NIGHT_CREATURE_90:LUNG - CREATURE:NIGHT_CREATURE_90:HEART - CREATURE:NIGHT_CREATURE_90:LIVER -CREATURE:NIGHT_CREATURE_90:GUT -"CREATURE:NIGHT_CREATURE_90:STOMACH -"CREATURE:NIGHT_CREATURE_90:GIZZARD -#CREATURE:NIGHT_CREATURE_90:PANCREAS -!CREATURE:NIGHT_CREATURE_90:SPLEEN -!CREATURE:NIGHT_CREATURE_90:KIDNEY -!CREATURE:NIGHT_CREATURE_91:MUSCLE -CREATURE:NIGHT_CREATURE_91:EYE - CREATURE:NIGHT_CREATURE_91:BRAIN -CREATURE:NIGHT_CREATURE_91:LUNG - CREATURE:NIGHT_CREATURE_91:HEART - CREATURE:NIGHT_CREATURE_91:LIVER -CREATURE:NIGHT_CREATURE_91:GUT -"CREATURE:NIGHT_CREATURE_91:STOMACH -"CREATURE:NIGHT_CREATURE_91:GIZZARD -#CREATURE:NIGHT_CREATURE_91:PANCREAS -!CREATURE:NIGHT_CREATURE_91:SPLEEN -!CREATURE:NIGHT_CREATURE_91:KIDNEY -!CREATURE:NIGHT_CREATURE_92:MUSCLE -CREATURE:NIGHT_CREATURE_92:EYE - CREATURE:NIGHT_CREATURE_92:BRAIN -CREATURE:NIGHT_CREATURE_92:LUNG - CREATURE:NIGHT_CREATURE_92:HEART - CREATURE:NIGHT_CREATURE_92:LIVER -CREATURE:NIGHT_CREATURE_92:GUT -"CREATURE:NIGHT_CREATURE_92:STOMACH -"CREATURE:NIGHT_CREATURE_92:GIZZARD -#CREATURE:NIGHT_CREATURE_92:PANCREAS -!CREATURE:NIGHT_CREATURE_92:SPLEEN -!CREATURE:NIGHT_CREATURE_92:KIDNEY -!CREATURE:NIGHT_CREATURE_93:MUSCLE -CREATURE:NIGHT_CREATURE_93:EYE - CREATURE:NIGHT_CREATURE_93:BRAIN -CREATURE:NIGHT_CREATURE_93:LUNG - CREATURE:NIGHT_CREATURE_93:HEART - CREATURE:NIGHT_CREATURE_93:LIVER -CREATURE:NIGHT_CREATURE_93:GUT -"CREATURE:NIGHT_CREATURE_93:STOMACH -"CREATURE:NIGHT_CREATURE_93:GIZZARD -#CREATURE:NIGHT_CREATURE_93:PANCREAS -!CREATURE:NIGHT_CREATURE_93:SPLEEN -!CREATURE:NIGHT_CREATURE_93:KIDNEY -!CREATURE:NIGHT_CREATURE_94:MUSCLE -CREATURE:NIGHT_CREATURE_94:EYE - CREATURE:NIGHT_CREATURE_94:BRAIN -CREATURE:NIGHT_CREATURE_94:LUNG - CREATURE:NIGHT_CREATURE_94:HEART - CREATURE:NIGHT_CREATURE_94:LIVER -CREATURE:NIGHT_CREATURE_94:GUT -"CREATURE:NIGHT_CREATURE_94:STOMACH -"CREATURE:NIGHT_CREATURE_94:GIZZARD -#CREATURE:NIGHT_CREATURE_94:PANCREAS -!CREATURE:NIGHT_CREATURE_94:SPLEEN -!CREATURE:NIGHT_CREATURE_94:KIDNEY -!CREATURE:NIGHT_CREATURE_95:MUSCLE -CREATURE:NIGHT_CREATURE_95:EYE - CREATURE:NIGHT_CREATURE_95:BRAIN -CREATURE:NIGHT_CREATURE_95:LUNG - CREATURE:NIGHT_CREATURE_95:HEART - CREATURE:NIGHT_CREATURE_95:LIVER -CREATURE:NIGHT_CREATURE_95:GUT -"CREATURE:NIGHT_CREATURE_95:STOMACH -"CREATURE:NIGHT_CREATURE_95:GIZZARD -#CREATURE:NIGHT_CREATURE_95:PANCREAS -!CREATURE:NIGHT_CREATURE_95:SPLEEN -!CREATURE:NIGHT_CREATURE_95:KIDNEY -!CREATURE:NIGHT_CREATURE_96:MUSCLE -CREATURE:NIGHT_CREATURE_96:EYE - CREATURE:NIGHT_CREATURE_96:BRAIN -CREATURE:NIGHT_CREATURE_96:LUNG - CREATURE:NIGHT_CREATURE_96:HEART - CREATURE:NIGHT_CREATURE_96:LIVER -CREATURE:NIGHT_CREATURE_96:GUT -"CREATURE:NIGHT_CREATURE_96:STOMACH -"CREATURE:NIGHT_CREATURE_96:GIZZARD -#CREATURE:NIGHT_CREATURE_96:PANCREAS -!CREATURE:NIGHT_CREATURE_96:SPLEEN -!CREATURE:NIGHT_CREATURE_96:KIDNEY -!CREATURE:NIGHT_CREATURE_97:MUSCLE -CREATURE:NIGHT_CREATURE_97:EYE - CREATURE:NIGHT_CREATURE_97:BRAIN -CREATURE:NIGHT_CREATURE_97:LUNG - CREATURE:NIGHT_CREATURE_97:HEART - CREATURE:NIGHT_CREATURE_97:LIVER -CREATURE:NIGHT_CREATURE_97:GUT -"CREATURE:NIGHT_CREATURE_97:STOMACH -"CREATURE:NIGHT_CREATURE_97:GIZZARD -#CREATURE:NIGHT_CREATURE_97:PANCREAS -!CREATURE:NIGHT_CREATURE_97:SPLEEN -!CREATURE:NIGHT_CREATURE_97:KIDNEY -!CREATURE:NIGHT_CREATURE_98:MUSCLE -CREATURE:NIGHT_CREATURE_98:EYE - CREATURE:NIGHT_CREATURE_98:BRAIN -CREATURE:NIGHT_CREATURE_98:LUNG - CREATURE:NIGHT_CREATURE_98:HEART - CREATURE:NIGHT_CREATURE_98:LIVER -CREATURE:NIGHT_CREATURE_98:GUT -"CREATURE:NIGHT_CREATURE_98:STOMACH -"CREATURE:NIGHT_CREATURE_98:GIZZARD -#CREATURE:NIGHT_CREATURE_98:PANCREAS -!CREATURE:NIGHT_CREATURE_98:SPLEEN -!CREATURE:NIGHT_CREATURE_98:KIDNEY -!CREATURE:NIGHT_CREATURE_99:MUSCLE -CREATURE:NIGHT_CREATURE_99:EYE - CREATURE:NIGHT_CREATURE_99:BRAIN -CREATURE:NIGHT_CREATURE_99:LUNG - CREATURE:NIGHT_CREATURE_99:HEART - CREATURE:NIGHT_CREATURE_99:LIVER -CREATURE:NIGHT_CREATURE_99:GUT -"CREATURE:NIGHT_CREATURE_99:STOMACH -"CREATURE:NIGHT_CREATURE_99:GIZZARD -#CREATURE:NIGHT_CREATURE_99:PANCREAS -!CREATURE:NIGHT_CREATURE_99:SPLEEN -!CREATURE:NIGHT_CREATURE_99:KIDNEY -"CREATURE:NIGHT_CREATURE_100:MUSCLE -CREATURE:NIGHT_CREATURE_100:EYE -!CREATURE:NIGHT_CREATURE_100:BRAIN - CREATURE:NIGHT_CREATURE_100:LUNG -!CREATURE:NIGHT_CREATURE_100:HEART -!CREATURE:NIGHT_CREATURE_100:LIVER -CREATURE:NIGHT_CREATURE_100:GUT -#CREATURE:NIGHT_CREATURE_100:STOMACH -#CREATURE:NIGHT_CREATURE_100:GIZZARD -$CREATURE:NIGHT_CREATURE_100:PANCREAS -"CREATURE:NIGHT_CREATURE_100:SPLEEN -"CREATURE:NIGHT_CREATURE_100:KIDNEY -"CREATURE:NIGHT_CREATURE_101:MUSCLE -CREATURE:NIGHT_CREATURE_101:EYE -!CREATURE:NIGHT_CREATURE_101:BRAIN - CREATURE:NIGHT_CREATURE_101:LUNG -!CREATURE:NIGHT_CREATURE_101:HEART -!CREATURE:NIGHT_CREATURE_101:LIVER -CREATURE:NIGHT_CREATURE_101:GUT -#CREATURE:NIGHT_CREATURE_101:STOMACH -#CREATURE:NIGHT_CREATURE_101:GIZZARD -$CREATURE:NIGHT_CREATURE_101:PANCREAS -"CREATURE:NIGHT_CREATURE_101:SPLEEN -"CREATURE:NIGHT_CREATURE_101:KIDNEY -"CREATURE:NIGHT_CREATURE_102:MUSCLE -CREATURE:NIGHT_CREATURE_102:EYE -!CREATURE:NIGHT_CREATURE_102:BRAIN - CREATURE:NIGHT_CREATURE_102:LUNG -!CREATURE:NIGHT_CREATURE_102:HEART -!CREATURE:NIGHT_CREATURE_102:LIVER -CREATURE:NIGHT_CREATURE_102:GUT -#CREATURE:NIGHT_CREATURE_102:STOMACH -#CREATURE:NIGHT_CREATURE_102:GIZZARD -$CREATURE:NIGHT_CREATURE_102:PANCREAS -"CREATURE:NIGHT_CREATURE_102:SPLEEN -"CREATURE:NIGHT_CREATURE_102:KIDNEY -"CREATURE:NIGHT_CREATURE_103:MUSCLE -CREATURE:NIGHT_CREATURE_103:EYE -!CREATURE:NIGHT_CREATURE_103:BRAIN - CREATURE:NIGHT_CREATURE_103:LUNG -!CREATURE:NIGHT_CREATURE_103:HEART -!CREATURE:NIGHT_CREATURE_103:LIVER -CREATURE:NIGHT_CREATURE_103:GUT -#CREATURE:NIGHT_CREATURE_103:STOMACH -#CREATURE:NIGHT_CREATURE_103:GIZZARD -$CREATURE:NIGHT_CREATURE_103:PANCREAS -"CREATURE:NIGHT_CREATURE_103:SPLEEN -"CREATURE:NIGHT_CREATURE_103:KIDNEY -"CREATURE:NIGHT_CREATURE_104:MUSCLE -CREATURE:NIGHT_CREATURE_104:EYE -!CREATURE:NIGHT_CREATURE_104:BRAIN - CREATURE:NIGHT_CREATURE_104:LUNG -!CREATURE:NIGHT_CREATURE_104:HEART -!CREATURE:NIGHT_CREATURE_104:LIVER -CREATURE:NIGHT_CREATURE_104:GUT -#CREATURE:NIGHT_CREATURE_104:STOMACH -#CREATURE:NIGHT_CREATURE_104:GIZZARD -$CREATURE:NIGHT_CREATURE_104:PANCREAS -"CREATURE:NIGHT_CREATURE_104:SPLEEN -"CREATURE:NIGHT_CREATURE_104:KIDNEY -CREATURE:HF1248 DIVINE_1:MUSCLE -CREATURE:HF1248 DIVINE_1:EYE -CREATURE:HF1248 DIVINE_1:BRAIN -CREATURE:HF1248 DIVINE_1:LUNG -CREATURE:HF1248 DIVINE_1:HEART -CREATURE:HF1248 DIVINE_1:LIVER -CREATURE:HF1248 DIVINE_1:GUT - CREATURE:HF1248 DIVINE_1:STOMACH - CREATURE:HF1248 DIVINE_1:GIZZARD -!CREATURE:HF1248 DIVINE_1:PANCREAS -CREATURE:HF1248 DIVINE_1:SPLEEN -CREATURE:HF1248 DIVINE_1:KIDNEY -CREATURE:HF1248 DIVINE_2:MUSCLE -CREATURE:HF1248 DIVINE_2:EYE -CREATURE:HF1248 DIVINE_2:BRAIN -CREATURE:HF1248 DIVINE_2:LUNG -CREATURE:HF1248 DIVINE_2:HEART -CREATURE:HF1248 DIVINE_2:LIVER -CREATURE:HF1248 DIVINE_2:GUT - CREATURE:HF1248 DIVINE_2:STOMACH - CREATURE:HF1248 DIVINE_2:GIZZARD -!CREATURE:HF1248 DIVINE_2:PANCREAS -CREATURE:HF1248 DIVINE_2:SPLEEN -CREATURE:HF1248 DIVINE_2:KIDNEY -CREATURE:HF1248 DIVINE_3:MUSCLE -CREATURE:HF1248 DIVINE_3:EYE -CREATURE:HF1248 DIVINE_3:BRAIN -CREATURE:HF1248 DIVINE_3:LUNG -CREATURE:HF1248 DIVINE_3:HEART -CREATURE:HF1248 DIVINE_3:LIVER -CREATURE:HF1248 DIVINE_3:GUT - CREATURE:HF1248 DIVINE_3:STOMACH - CREATURE:HF1248 DIVINE_3:GIZZARD -!CREATURE:HF1248 DIVINE_3:PANCREAS -CREATURE:HF1248 DIVINE_3:SPLEEN -CREATURE:HF1248 DIVINE_3:KIDNEY -CREATURE:HF1108 DIVINE_2:MUSCLE -CREATURE:HF1108 DIVINE_2:EYE -CREATURE:HF1108 DIVINE_2:BRAIN -CREATURE:HF1108 DIVINE_2:LUNG -CREATURE:HF1108 DIVINE_2:HEART -CREATURE:HF1108 DIVINE_2:LIVER -CREATURE:HF1108 DIVINE_2:GUT - CREATURE:HF1108 DIVINE_2:STOMACH - CREATURE:HF1108 DIVINE_2:GIZZARD -!CREATURE:HF1108 DIVINE_2:PANCREAS -CREATURE:HF1108 DIVINE_2:SPLEEN -CREATURE:HF1108 DIVINE_2:KIDNEY -CREATURE:HF1249 DIVINE_1:MUSCLE -CREATURE:HF1249 DIVINE_1:EYE -CREATURE:HF1249 DIVINE_1:BRAIN -CREATURE:HF1249 DIVINE_1:LUNG -CREATURE:HF1249 DIVINE_1:HEART -CREATURE:HF1249 DIVINE_1:LIVER -CREATURE:HF1249 DIVINE_1:GUT - CREATURE:HF1249 DIVINE_1:STOMACH - CREATURE:HF1249 DIVINE_1:GIZZARD -!CREATURE:HF1249 DIVINE_1:PANCREAS -CREATURE:HF1249 DIVINE_1:SPLEEN -CREATURE:HF1249 DIVINE_1:KIDNEY -CREATURE:HF1249 DIVINE_3:MUSCLE -CREATURE:HF1249 DIVINE_3:EYE -CREATURE:HF1249 DIVINE_3:BRAIN -CREATURE:HF1249 DIVINE_3:LUNG -CREATURE:HF1249 DIVINE_3:HEART -CREATURE:HF1249 DIVINE_3:LIVER -CREATURE:HF1249 DIVINE_3:GUT - CREATURE:HF1249 DIVINE_3:STOMACH - CREATURE:HF1249 DIVINE_3:GIZZARD -!CREATURE:HF1249 DIVINE_3:PANCREAS -CREATURE:HF1249 DIVINE_3:SPLEEN -CREATURE:HF1249 DIVINE_3:KIDNEY -CREATURE:HF1345 DIVINE_3:MUSCLE -CREATURE:HF1345 DIVINE_3:EYE -CREATURE:HF1345 DIVINE_3:BRAIN -CREATURE:HF1345 DIVINE_3:LUNG -CREATURE:HF1345 DIVINE_3:HEART -CREATURE:HF1345 DIVINE_3:LIVER -CREATURE:HF1345 DIVINE_3:GUT - CREATURE:HF1345 DIVINE_3:STOMACH - CREATURE:HF1345 DIVINE_3:GIZZARD -!CREATURE:HF1345 DIVINE_3:PANCREAS -CREATURE:HF1345 DIVINE_3:SPLEEN -CREATURE:HF1345 DIVINE_3:KIDNEYCUTTLEFISH:FEMALECUTTLEFISH:MALENAUTILUS:FEMALE NAUTILUS:MALEMOGHOPPER:FEMALEMOGHOPPER:MALEPOND_TURTLE:FEMALEPOND_TURTLE:MALEMUSSEL:DEFAULTOYSTER:DEFAULTFISH_SALMON:FEMALEFISH_SALMON:MALEFISH_CLOWNFISH:FEMALEFISH_CLOWNFISH:MALEFISH_HAGFISH:FEMALEFISH_HAGFISH:MALEFISH_LAMPREY_BROOK:FEMALEFISH_LAMPREY_BROOK:MALEFISH_RAY_BAT:FEMALEFISH_RAY_BAT:MALEFISH_RAY_THORNBACK:FEMALEFISH_RAY_THORNBACK:MALEFISH_RATFISH_SPOTTED:FEMALEFISH_RATFISH_SPOTTED:MALEFISH_HERRING:FEMALEFISH_HERRING:MALEFISH_SHAD:FEMALEFISH_SHAD:MALEFISH_ANCHOVY:FEMALEFISH_ANCHOVY:MALEFISH_TROUT_STEELHEAD:FEMALEFISH_TROUT_STEELHEAD:MALEFISH_HAKE:FEMALEFISH_HAKE:MALEFISH_SEAHORSE:FEMALEFISH_SEAHORSE:MALEFISH_GLASSEYE:FEMALEFISH_GLASSEYE:MALE FISH_PUFFER_WHITE_SPOTTED:FEMALEFISH_PUFFER_WHITE_SPOTTED:MALEFISH_SOLE:FEMALEFISH_SOLE:MALEFISH_FLOUNDER:FEMALEFISH_FLOUNDER:MALEFISH_MACKEREL:FEMALEFISH_MACKEREL:MALEJELLYFISH_SEA_NETTLE:DEFAULT SQUID:FEMALE -SQUID:MALEFISH_LUNGFISH:FEMALEFISH_LUNGFISH:MALEFISH_LOACH_CLOWN:FEMALEFISH_LOACH_CLOWN:MALEFISH_BULLHEAD_BROWN:FEMALEFISH_BULLHEAD_BROWN:MALEFISH_BULLHEAD_YELLOW:FEMALEFISH_BULLHEAD_YELLOW:MALEFISH_BULLHEAD_BLACK:FEMALEFISH_BULLHEAD_BLACK:MALEFISH_KNIFEFISH_BANDED:FEMALEFISH_KNIFEFISH_BANDED:MALEFISH_CHAR:FEMALEFISH_CHAR:MALEFISH_TROUT_RAINBOW:FEMALEFISH_TROUT_RAINBOW:MALEFISH_MOLLY_SAILFIN:FEMALEFISH_MOLLY_SAILFIN:MALEFISH_GUPPY:FEMALEFISH_GUPPY:MALEFISH_PERCH:FEMALEFISH_PERCH:MALEFISH_CAVE:FEMALEFISH_CAVE:MALELOBSTER_CAVE:FEMALELOBSTER_CAVE:MALEBIRD_BLUEJAY:FEMALEBLUEJAY_MAN:FEMALEGIANT_BLUEJAY:FEMALEBIRD_CARDINAL:FEMALECARDINAL_MAN:FEMALEGIANT_CARDINAL:FEMALEBIRD_GRACKLE:FEMALEGRACKLE_MAN:FEMALEGIANT_GRACKLE:FEMALEBIRD_ORIOLE:FEMALEORIOLE_MAN:FEMALEGIANT_ORIOLE:FEMALEBIRD_RW_BLACKBIRD:FEMALERW_BLACKBIRD_MAN:FEMALEGIANT_RW_BLACKBIRD:FEMALEBIRD_PENGUIN:FEMALEBIRD_PENGUIN_LITTLE:FEMALEBIRD_PENGUIN_EMPEROR:FEMALEPENGUIN MAN:FEMALEBIRD_PENGUIN_GIANT:FEMALEBIRD_FALCON_PEREGRINE:FEMALEPEREGRINE FALCON MAN:FEMALEGIANT PEREGRINE FALCON:FEMALEBIRD_KIWI:FEMALEKIWI MAN:FEMALEBIRD_KIWI_GIANT:FEMALEBIRD_OSTRICH:FEMALEOSTRICH MAN:FEMALEBIRD_OSTRICH_GIANT:FEMALEBIRD_CROW:FEMALECROW_MAN:FEMALEGIANT_CROW:FEMALEBIRD_RAVEN:FEMALERAVEN_MAN:FEMALEGIANT_RAVEN:FEMALEBIRD_CASSOWARY:FEMALECASSOWARY_MAN:FEMALEGIANT_CASSOWARY:FEMALEBIRD_KEA:FEMALEKEA_MAN:FEMALEGIANT_KEA:FEMALEBIRD_OWL_SNOWY:FEMALESNOWY_OWL_MAN:FEMALEGIANT_SNOWY_OWL:FEMALESPARROW:FEMALESPARROW_MAN:FEMALEGIANT_SPARROW:FEMALEBIRD_STORK_WHITE:FEMALEWHITE_STORK_MAN:FEMALEGIANT_WHITE_STORK:FEMALEBIRD_LOON:FEMALELOON_MAN:FEMALEGIANT_LOON:FEMALEBIRD_OWL_BARN:FEMALEBARN_OWL_MAN:FEMALEGIANT_BARN_OWL:FEMALEBIRD_PARAKEET:FEMALEPARAKEET_MAN:FEMALEGIANT_PARAKEET:FEMALEBIRD_KAKAPO:FEMALEKAKAPO_MAN:FEMALEGIANT_KAKAPO:FEMALEBIRD_PARROT_GREY:FEMALEGREY_PARROT_MAN:FEMALEGIANT_GREY_PARROT:FEMALEBIRD_PUFFIN:FEMALEPUFFIN_MAN:FEMALEGIANT_PUFFIN:FEMALEBIRD_SWAN:FEMALESWAN_MAN:FEMALEGIANT_SWAN:FEMALEBIRD_LORIKEET:FEMALELORIKEET_MAN:FEMALEGIANT_LORIKEET:FEMALEBIRD_WREN:FEMALEWREN_MAN:FEMALEGIANT_WREN:FEMALEBIRD_OSPREY:FEMALEOSPREY_MAN:FEMALEGIANT_OSPREY:FEMALEBIRD_EMU:FEMALEEMU_MAN:FEMALEGIANT_EMU:FEMALEBIRD_COCKATIEL:FEMALECOCKATIEL_MAN:FEMALEGIANT_COCKATIEL:FEMALE BIRD_LOVEBIRD_PEACH-FACED:FEMALEPEACH-FACED_LOVEBIRD_MAN:FEMALE!GIANT_PEACH-FACED_LOVEBIRD:FEMALEBIRD_MAGPIE:FEMALEMAGPIE_MAN:FEMALEGIANT_MAGPIE:FEMALEBIRD_KESTREL:FEMALEKESTREL_MAN:FEMALEGIANT_KESTREL:FEMALEBIRD_ALBATROSS:FEMALEALBATROSS_MAN:FEMALEGIANT_ALBATROSS:FEMALEBIRD_OWL_GREAT_HORNED:FEMALEGREAT_HORNED_OWL_MAN:FEMALEGIANT_GREAT_HORNED_OWL:FEMALEBIRD_EAGLE:FEMALEEAGLE_MAN:FEMALEGIANT_EAGLE:FEMALEBIRD_HORNBILL:FEMALEHORNBILL_MAN:FEMALEGIANT_HORNBILL:FEMALEBIRD_LOVEBIRD_MASKED:FEMALEMASKED_LOVEBIRD_MAN:FEMALEGIANT_MASKED_LOVEBIRD:FEMALEBIRD_BUSHTIT:FEMALEBUSHTIT_MAN:FEMALEGIANT_BUSHTIT:FEMALEDESERT TORTOISE:FEMALEDESERT_TORTOISE_MAN:FEMALEGIANT_DESERT_TORTOISE:FEMALEGILA_MONSTER:FEMALEGILA_MONSTER_MAN:FEMALEGIANT_GILA_MONSTER:FEMALEBIRD_CHICKEN:FEMALEBIRD_DUCK:FEMALEBIRD_GOOSE:FEMALEBIRD_GUINEAFOWL:FEMALEBIRD_PEAFOWL_BLUE:FEMALEBIRD_TURKEY:FEMALEPLATYPUS:FEMALEPLATYPUS MAN:FEMALEPLATYPUS, GIANT:FEMALEALLIGATOR:FEMALEALLIGATOR_MAN:FEMALEGIANT_ALLIGATOR:FEMALEBIRD_BUZZARD:FEMALEBUZZARD_MAN:FEMALEGIANT_BUZZARD:FEMALECROCODILE_SALTWATER:FEMALECROCODILE_SALTWATER_MAN:FEMALE GIANT_CROCODILE_SALTWATER:FEMALEBIRD_VULTURE:FEMALEVULTURE_MAN:FEMALEGIANT_VULTURE:FEMALEGIANT TORTOISE:FEMALEGIANT TORTOISE MAN:FEMALEGIGANTIC TORTOISE:FEMALECRUNDLE:FEMALEELK_BIRD:FEMALEHELMET_SNAKE:FEMALEJABBERER:FEMALECAVE_DRAGON:FEMALELIZARD_RHINO_TWO_LEGGED:FEMALE SKINK:FEMALESKINK_MAN:FEMALEGIANT_SKINK:FEMALECHAMELEON:FEMALECHAMELEON_MAN:FEMALEGIANT_CHAMELEON:FEMALE ANOLE:FEMALEANOLE_MAN:FEMALEGIANT_ANOLE:FEMALE IGUANA:FEMALEIGUANA_MAN:FEMALEGIANT_IGUANA:FEMALESNAPPING TURTLE:FEMALE ALLIGATOR SNAPPING TURTLE:FEMALESNAPPING_TURTLE_MAN:FEMALEGIANT_SNAPPING_TURTLE:FEMALEPOND_TURTLE:FEMALEPOND_TURTLE_MAN:FEMALEGIANT_POND_TURTLE:FEMALE KOBOLD:FEMALE DRAGON:FEMALEBEAK_DOG:FEMALESEA_SERPENT:FEMALEBIRD_ROC:FEMALECROCODILE_CAVE:FEMALEBIRD_SWALLOW_CAVE:FEMALECAVE_SWALLOW_MAN:FEMALEBIRD_SWALLOW_CAVE_GIANT:FEMALEREPTILE_MAN:FEMALESERPENT_MAN:FEMALE ADDER:FEMALEADDER_MAN:FEMALEGIANT_ADDER:FEMALEECHIDNA:FEMALEECHIDNA_MAN:FEMALEGIANT_ECHIDNA:FEMALEKINGSNAKE:FEMALEKINGSNAKE_MAN:FEMALEGIANT_KINGSNAKE:FEMALEMONITOR_LIZARD:FEMALEMONITOR_LIZARD_MAN:FEMALEGIANT_MONITOR_LIZARD:FEMALEKING_COBRA:FEMALEKING_COBRA_MAN:FEMALEGIANT_KING_COBRA:FEMALEBLACK_MAMBA:FEMALEBLACK_MAMBA_MAN:FEMALEGIANT_BLACK_MAMBA:FEMALEBUSHMASTER:FEMALEBUSHMASTER_MAN:FEMALEGIANT_BUSHMASTER:FEMALE PYTHON:FEMALEPYTHON_MAN:FEMALEGIANT_PYTHON:FEMALENAGA:FEMALE_TWONAGA:FEMALE_FOURNAGA:FEMALE_SIX"#PLANT:SINGLE-GRAIN_WHEAT:STRUCTURAL" PLANT:TWO-GRAIN_WHEAT:STRUCTURAL"PLANT:SOFT_WHEAT:STRUCTURAL"PLANT:HARD_WHEAT:STRUCTURAL"PLANT:SPELT:STRUCTURAL"PLANT:BARLEY:STRUCTURAL"PLANT:BUCKWHEAT:STRUCTURAL"PLANT:OATS:STRUCTURAL"PLANT:ALFALFA:STRUCTURAL"PLANT:RYE:STRUCTURAL"PLANT:SORGHUM:STRUCTURAL"PLANT:RICE:STRUCTURAL"PLANT:MAIZE:STRUCTURAL"PLANT:QUINOA:STRUCTURAL"PLANT:KANIWA:STRUCTURAL"PLANT:BITTER_VETCH:STRUCTURAL"!PLANT:PENDANT_AMARANTH:STRUCTURAL"PLANT:BLOOD_AMARANTH:STRUCTURAL" PLANT:PURPLE_AMARANTH:STRUCTURAL"PLANT:RED_SPINACH:STRUCTURAL"'PLANT:ELEPHANT-HEAD_AMARANTH:STRUCTURAL"PLANT:PEARL_MILLET:STRUCTURAL"PLANT:WHITE_MILLET:STRUCTURAL"PLANT:FINGER_MILLET:STRUCTURAL"PLANT:FOXTAIL_MILLET:STRUCTURAL"PLANT:FONIO:STRUCTURAL"PLANT:TEFF:STRUCTURAL"PLANT:FLAX:STRUCTURAL"PLANT:JUTE:STRUCTURAL"PLANT:HEMP:STRUCTURAL"PLANT:COTTON:STRUCTURAL"PLANT:RAMIE:STRUCTURAL"PLANT:KENAF:STRUCTURAL"PLANT:PAPYRUS_SEDGE:STRUCTURAL"PLANT:ARTICHOKE:STRUCTURAL"PLANT:ASPARAGUS:STRUCTURAL""PLANT:BAMBARA_GROUNDNUT:STRUCTURAL"PLANT:STRING_BEAN:STRUCTURAL"PLANT:BROAD_BEAN:STRUCTURAL"PLANT:BEET:STRUCTURAL"PLANT:BITTER_MELON:STRUCTURAL"PLANT:CABBAGE:STRUCTURAL"PLANT:CAPER:STRUCTURAL"PLANT:WILD_CARROT:STRUCTURAL"PLANT:CASSAVA:STRUCTURAL"PLANT:CELERY:STRUCTURAL"PLANT:CHICKPEA:STRUCTURAL"PLANT:CHICORY:STRUCTURAL"PLANT:COWPEA:STRUCTURAL"PLANT:CUCUMBER:STRUCTURAL"PLANT:EGGPLANT:STRUCTURAL"PLANT:GARDEN_CRESS:STRUCTURAL"PLANT:GARLIC:STRUCTURAL"PLANT:HORNED_MELON:STRUCTURAL"PLANT:LEEK:STRUCTURAL"PLANT:LENTIL:STRUCTURAL"PLANT:LETTUCE:STRUCTURAL"PLANT:MUNG_BEAN:STRUCTURAL"PLANT:MUSKMELON:STRUCTURAL"PLANT:ONION:STRUCTURAL"PLANT:PARSNIP:STRUCTURAL"PLANT:PEA:STRUCTURAL"PLANT:PEANUT:STRUCTURAL"PLANT:PEPPER:STRUCTURAL"PLANT:POTATO:STRUCTURAL"PLANT:RADISH:STRUCTURAL"PLANT:RED_BEAN:STRUCTURAL"PLANT:RHUBARB:STRUCTURAL"PLANT:SOYBEAN:STRUCTURAL"PLANT:SPINACH:STRUCTURAL"PLANT:SQUASH:STRUCTURAL"PLANT:SWEET_POTATO:STRUCTURAL"PLANT:TARO:STRUCTURAL"PLANT:TOMATO:STRUCTURAL"PLANT:TOMATILLO:STRUCTURAL"PLANT:TURNIP:STRUCTURAL"PLANT:URAD_BEAN:STRUCTURAL"PLANT:WATERMELON:STRUCTURAL"PLANT:WINTER_MELON:STRUCTURAL"PLANT:LESSER_YAM:STRUCTURAL"PLANT:LONG_YAM:STRUCTURAL"PLANT:PURPLE_YAM:STRUCTURAL"PLANT:WHITE_YAM:STRUCTURAL"PLANT:PASSION_FRUIT:STRUCTURAL"PLANT:GRAPE:STRUCTURAL"PLANT:CRANBERRY:STRUCTURAL"PLANT:BILBERRY:STRUCTURAL"PLANT:BLUEBERRY:STRUCTURAL"PLANT:BLACKBERRY:STRUCTURAL"PLANT:RASPBERRY:STRUCTURAL"PLANT:PINEAPPLE:STRUCTURAL"PLANT:MEADOW-GRASS:STRUCTURAL"PLANT:HAIR GRASS:STRUCTURAL"PLANT:BENTGRASS:STRUCTURAL"PLANT:RYEGRASS:STRUCTURAL"PLANT:FESCUE GRASS:STRUCTURAL"PLANT:REEDGRASS:STRUCTURAL"PLANT:KNOTGRASS:STRUCTURAL"PLANT:ZOYSIA:STRUCTURAL""PLANT:DOG'S TOOTH GRASS:STRUCTURAL"PLANT:DALLISGRASS:STRUCTURAL"PLANT:CARPETGRASS:STRUCTURAL"PLANT:SATINTAIL:STRUCTURAL"PLANT:GRAMA:STRUCTURAL"PLANT:DROPSEED GRASS:STRUCTURAL"PLANT:NEEDLE GRASS:STRUCTURAL"$PLANT:BABY TOES SUCCULENT:STRUCTURAL"PLANT:PEBBLE PLANTS:STRUCTURAL"PLANT:BLUE SEDGE:STRUCTURAL"PLANT:FIELD SEDGE:STRUCTURAL""PLANT:PURPLE MOOR GRASS:STRUCTURAL"PLANT:VELVET GRASS:STRUCTURAL"PLANT:MEADOWSWEET:STRUCTURAL"PLANT:RUSH:STRUCTURAL"PLANT:MARSH THISTLE:STRUCTURAL"PLANT:COMMON REED:STRUCTURAL"PLANT:CATTAIL:STRUCTURAL"PLANT:SAWGRASS:STRUCTURAL"PLANT:COTTONGRASS:STRUCTURAL"'PLANT:WHITE MOUNTAIN HEATHER:STRUCTURAL"PLANT:MOUNTAIN AVENS:STRUCTURAL"PLANT:CLOUDBERRY:STRUCTURAL"PLANT:WORMY TENDRILS:STRUCTURAL"PLANT:EYEBALL:STRUCTURAL"PLANT:BUBBLE BULBS:STRUCTURAL"PLANT:DOWNY GRASS:STRUCTURAL"PLANT:CAVE MOSS:STRUCTURAL"PLANT:FLOOR FUNGI:STRUCTURAL"PLANT:UNDERLICHEN:STRUCTURAL"PLANT:BAMBOO, ARROW:STRUCTURAL"PLANT:BAMBOO, GOLDEN:STRUCTURAL"PLANT:BAMBOO, HEDGE:STRUCTURAL"PLANT:ABACA:STRUCTURAL"PLANT:BANANA:STRUCTURAL"PLANT:CARAMBOLA:STRUCTURAL"PLANT:CASHEW:STRUCTURAL"PLANT:COFFEE:STRUCTURAL"PLANT:DURIAN:STRUCTURAL"PLANT:GUAVA:STRUCTURAL"PLANT:PAPAYA:STRUCTURAL"PLANT:PARADISE_NUT:STRUCTURAL"PLANT:RAMBUTAN:STRUCTURAL"PLANT:TEA:STRUCTURAL"PLANT:AVOCADO:STRUCTURAL"PLANT:LIME:STRUCTURAL"PLANT:POMELO:STRUCTURAL"PLANT:CITRON:STRUCTURAL"PLANT:ORANGE:STRUCTURAL"PLANT:BITTER_ORANGE:STRUCTURAL"PLANT:FINGER_LIME:STRUCTURAL"PLANT:ROUND_LIME:STRUCTURAL"PLANT:DESERT_LIME:STRUCTURAL"PLANT:KUMQUAT:STRUCTURAL"PLANT:CUSTARD-APPLE:STRUCTURAL"PLANT:DATE_PALM:STRUCTURAL"PLANT:LYCHEE:STRUCTURAL"PLANT:MACADAMIA:STRUCTURAL"PLANT:OLIVE:STRUCTURAL"PLANT:POMEGRANATE:STRUCTURAL"PLANT:ALMOND:STRUCTURAL"PLANT:APPLE:STRUCTURAL"PLANT:APRICOT:STRUCTURAL"PLANT:BAYBERRY:STRUCTURAL"PLANT:CHERRY:STRUCTURAL"PLANT:GINKGO:STRUCTURAL"PLANT:HAZEL:STRUCTURAL"PLANT:PEACH:STRUCTURAL"PLANT:PEAR:STRUCTURAL"PLANT:PECAN:STRUCTURAL"PLANT:PERSIMMON:STRUCTURAL"PLANT:PLUM:STRUCTURAL"PLANT:SAND_PEAR:STRUCTURAL"PLANT:WALNUT:STRUCTURAL"&PLANT:MUSHROOM_HELMET_PLUMP:STRUCTURAL"PLANT:GRASS_TAIL_PIG:STRUCTURAL"!PLANT:GRASS_WHEAT_CAVE:STRUCTURAL"PLANT:POD_SWEET:STRUCTURAL"PLANT:BUSH_QUARRY:STRUCTURAL"PLANT:ROOT_MUCK:STRUCTURAL"PLANT:TUBER_BLOATED:STRUCTURAL"PLANT:BULB_KOBOLD:STRUCTURAL" PLANT:BERRIES_PRICKLE:STRUCTURAL"PLANT:BERRIES_STRAW:STRUCTURAL"PLANT:GRASS_LONGLAND:STRUCTURAL"PLANT:HERB_VALLEY:STRUCTURAL"PLANT:WEED_RAT:STRUCTURAL"PLANT:BERRIES_FISHER:STRUCTURAL"PLANT:REED_ROPE:STRUCTURAL"$PLANT:MUSHROOM_CUP_DIMPLE:STRUCTURAL"PLANT:WEED_BLADE:STRUCTURAL"PLANT:ROOT_HIDE:STRUCTURAL"PLANT:SLIVER_BARB:STRUCTURAL"PLANT:BERRY_SUN:STRUCTURAL"PLANT:VINE_WHIP:STRUCTURAL"PLANT:MANGROVE:STRUCTURAL"PLANT:SAGUARO:STRUCTURAL"PLANT:PINE:STRUCTURAL"PLANT:CEDAR:STRUCTURAL"PLANT:OAK:STRUCTURAL"PLANT:MAHOGANY:STRUCTURAL"PLANT:ACACIA:STRUCTURAL"PLANT:KAPOK:STRUCTURAL"PLANT:MAPLE:STRUCTURAL"PLANT:WILLOW:STRUCTURAL"PLANT:TOWER_CAP:STRUCTURAL"PLANT:BLACK_CAP:STRUCTURAL"PLANT:NETHER_CAP:STRUCTURAL"PLANT:GOBLIN_CAP:STRUCTURAL"PLANT:FUNGIWOOD:STRUCTURAL"PLANT:TUNNEL_TUBE:STRUCTURAL"PLANT:SPORE_TREE:STRUCTURAL"PLANT:BLOOD_THORN:STRUCTURAL"PLANT:GLUMPRONG:STRUCTURAL"PLANT:FEATHER:STRUCTURAL"PLANT:HIGHWOOD:STRUCTURAL"PLANT:LARCH:STRUCTURAL"PLANT:CHESTNUT:STRUCTURAL"PLANT:ALDER:STRUCTURAL"PLANT:BIRCH:STRUCTURAL"PLANT:ASH:STRUCTURAL"PLANT:CANDLENUT:STRUCTURAL"PLANT:MANGO:STRUCTURAL"PLANT:RUBBER:STRUCTURAL"PLANT:CACAO:STRUCTURAL"PLANT:PALM:STRUCTURAL*PLANT:SINGLE-GRAIN_WHEAT:DRINK*PLANT:TWO-GRAIN_WHEAT:DRINK*PLANT:SOFT_WHEAT:DRINK*PLANT:HARD_WHEAT:DRINK*PLANT:SPELT:DRINK*PLANT:BARLEY:DRINK*PLANT:BUCKWHEAT:DRINK*PLANT:RYE:DRINK*PLANT:SORGHUM:DRINK*PLANT:RICE:DRINK*PLANT:MAIZE:DRINK*PLANT:QUINOA:DRINK*PLANT:KANIWA:DRINK*PLANT:PENDANT_AMARANTH:DRINK*PLANT:BLOOD_AMARANTH:DRINK*PLANT:PURPLE_AMARANTH:DRINK*PLANT:PEARL_MILLET:DRINK*PLANT:WHITE_MILLET:DRINK*PLANT:FINGER_MILLET:DRINK*PLANT:FOXTAIL_MILLET:DRINK*PLANT:FONIO:DRINK*PLANT:TEFF:DRINK*PLANT:ARTICHOKE:DRINK*PLANT:BEET:DRINK*PLANT:WILD_CARROT:DRINK*PLANT:CASSAVA:DRINK*PLANT:PARSNIP:DRINK*PLANT:POTATO:DRINK*PLANT:RADISH:DRINK*PLANT:SWEET_POTATO:DRINK*PLANT:TOMATO:DRINK*PLANT:TOMATILLO:DRINK*PLANT:TURNIP:DRINK*PLANT:PASSION_FRUIT:DRINK*PLANT:GRAPE:DRINK*PLANT:CRANBERRY:DRINK*PLANT:BILBERRY:DRINK*PLANT:BLUEBERRY:DRINK*PLANT:BLACKBERRY:DRINK*PLANT:RASPBERRY:DRINK*PLANT:PINEAPPLE:DRINK*PLANT:BANANA:DRINK*PLANT:CARAMBOLA:DRINK*PLANT:DURIAN:DRINK*PLANT:GUAVA:DRINK*PLANT:PAPAYA:DRINK*PLANT:RAMBUTAN:DRINK*PLANT:CUSTARD-APPLE:DRINK*PLANT:DATE_PALM:DRINK*PLANT:LYCHEE:DRINK*PLANT:POMEGRANATE:DRINK*PLANT:APPLE:DRINK*PLANT:APRICOT:DRINK*PLANT:BAYBERRY:DRINK*PLANT:CHERRY:DRINK*PLANT:PEACH:DRINK*PLANT:PEAR:DRINK*PLANT:PERSIMMON:DRINK*PLANT:PLUM:DRINK*PLANT:SAND_PEAR:DRINK*!PLANT:MUSHROOM_HELMET_PLUMP:DRINK*PLANT:GRASS_TAIL_PIG:DRINK*PLANT:GRASS_WHEAT_CAVE:DRINK*PLANT:POD_SWEET:DRINK*PLANT:ROOT_MUCK:DRINK*PLANT:TUBER_BLOATED:DRINK*PLANT:BERRIES_PRICKLE:DRINK*PLANT:BERRIES_STRAW:DRINK*PLANT:GRASS_LONGLAND:DRINK*PLANT:WEED_RAT:DRINK*PLANT:BERRIES_FISHER:DRINK*PLANT:REED_ROPE:DRINK*PLANT:SLIVER_BARB:DRINK*PLANT:BERRY_SUN:DRINK*PLANT:VINE_WHIP:DRINK*PLANT:MANGO:DRINK2CREATURE:HONEY_BEE:MEAD2CREATURE:BUMBLEBEE:MEADBCREATURE:DONKEY:CHEESEBCREATURE:HORSE:CHEESEBCREATURE:COW:CHEESEBCREATURE:SHEEP:CHEESEBCREATURE:PIG:CHEESEBCREATURE:GOAT:CHEESEBCREATURE:WATER_BUFFALO:CHEESEBCREATURE:REINDEER:CHEESEBCREATURE:YAK:CHEESEBCREATURE:LLAMA:CHEESEBCREATURE:ALPACA:CHEESEBCREATURE:CAMEL_1_HUMP:CHEESEB CREATURE:CAMEL_1_HUMP_MAN:CHEESEB"CREATURE:GIANT_CAMEL_1_HUMP:CHEESEBCREATURE:CAMEL_2_HUMP:CHEESEB CREATURE:CAMEL_2_HUMP_MAN:CHEESEB"CREATURE:GIANT_CAMEL_2_HUMP:CHEESEBCREATURE:MAGGOT_PURRING:CHEESEBCREATURE:KANGAROO:CHEESEBCREATURE:KANGAROO_MAN:CHEESEBCREATURE:GIANT_KANGAROO:CHEESEBCREATURE:TAPIR:CHEESEBCREATURE:TAPIR_MAN:CHEESEBCREATURE:GIANT_TAPIR:CHEESEJPLANT:SINGLE-GRAIN_WHEAT:SEEDJPLANT:TWO-GRAIN_WHEAT:SEEDJPLANT:SOFT_WHEAT:SEEDJPLANT:HARD_WHEAT:SEEDJPLANT:SPELT:SEEDJPLANT:BARLEY:SEEDJPLANT:BUCKWHEAT:SEEDJPLANT:OATS:SEEDJPLANT:ALFALFA:SEEDJPLANT:RYE:SEEDJPLANT:SORGHUM:SEEDJPLANT:RICE:SEEDJPLANT:MAIZE:SEEDJPLANT:QUINOA:SEEDJPLANT:KANIWA:SEEDJPLANT:BITTER_VETCH:SEEDJPLANT:PENDANT_AMARANTH:SEEDJPLANT:BLOOD_AMARANTH:SEEDJPLANT:PURPLE_AMARANTH:SEEDJPLANT:RED_SPINACH:SEEDJ!PLANT:ELEPHANT-HEAD_AMARANTH:SEEDJPLANT:PEARL_MILLET:SEEDJPLANT:WHITE_MILLET:SEEDJPLANT:FINGER_MILLET:SEEDJPLANT:FOXTAIL_MILLET:SEEDJPLANT:FONIO:SEEDJPLANT:TEFF:SEEDJPLANT:FLAX:SEEDJPLANT:JUTE:SEEDJPLANT:HEMP:SEEDJPLANT:COTTON:SEEDJPLANT:RAMIE:SEEDJPLANT:KENAF:SEEDJPLANT:PAPYRUS_SEDGE:SEEDJPLANT:ARTICHOKE:SEEDJPLANT:ASPARAGUS:SEEDJPLANT:BAMBARA_GROUNDNUT:SEEDJPLANT:STRING_BEAN:SEEDJPLANT:BROAD_BEAN:SEEDJPLANT:BEET:SEEDJPLANT:BITTER_MELON:SEEDJPLANT:CABBAGE:SEEDJPLANT:CAPER:SEEDJPLANT:WILD_CARROT:SEEDJPLANT:CASSAVA:SEEDJPLANT:CELERY:SEEDJPLANT:CHICKPEA:SEEDJPLANT:CHICORY:SEEDJPLANT:COWPEA:SEEDJPLANT:CUCUMBER:SEEDJPLANT:EGGPLANT:SEEDJPLANT:GARDEN_CRESS:SEEDJPLANT:GARLIC:SEEDJPLANT:HORNED_MELON:SEEDJPLANT:LEEK:SEEDJPLANT:LENTIL:SEEDJPLANT:LETTUCE:SEEDJPLANT:MUNG_BEAN:SEEDJPLANT:MUSKMELON:SEEDJPLANT:ONION:SEEDJPLANT:PARSNIP:SEEDJPLANT:PEA:SEEDJPLANT:PEANUT:SEEDJPLANT:PEPPER:SEEDJPLANT:POTATO:SEEDJPLANT:RADISH:SEEDJPLANT:RED_BEAN:SEEDJPLANT:RHUBARB:SEEDJPLANT:SOYBEAN:SEEDJPLANT:SPINACH:SEEDJPLANT:SQUASH:SEEDJPLANT:SWEET_POTATO:SEEDJPLANT:TARO:SEEDJPLANT:TOMATO:SEEDJPLANT:TOMATILLO:SEEDJPLANT:TURNIP:SEEDJPLANT:URAD_BEAN:SEEDJPLANT:WATERMELON:SEEDJPLANT:WINTER_MELON:SEEDJPLANT:LESSER_YAM:SEEDJPLANT:LONG_YAM:SEEDJPLANT:PURPLE_YAM:SEEDJPLANT:WHITE_YAM:SEEDJPLANT:PASSION_FRUIT:SEEDJPLANT:GRAPE:SEEDJPLANT:CRANBERRY:SEEDJPLANT:BILBERRY:SEEDJPLANT:BLUEBERRY:SEEDJPLANT:BLACKBERRY:SEEDJPLANT:RASPBERRY:SEEDJPLANT:PINEAPPLE:SEEDJPLANT:ABACA:SEEDJPLANT:BANANA:SEEDJPLANT:CARAMBOLA:SEEDJPLANT:CASHEW:SEEDJPLANT:COFFEE:SEEDJPLANT:DURIAN:SEEDJPLANT:GUAVA:SEEDJPLANT:PAPAYA:SEEDJPLANT:PARADISE_NUT:SEEDJPLANT:RAMBUTAN:SEEDJPLANT:TEA:SEEDJPLANT:AVOCADO:SEEDJPLANT:LIME:SEEDJPLANT:POMELO:SEEDJPLANT:CITRON:SEEDJPLANT:ORANGE:SEEDJPLANT:BITTER_ORANGE:SEEDJPLANT:FINGER_LIME:SEEDJPLANT:ROUND_LIME:SEEDJPLANT:DESERT_LIME:SEEDJPLANT:KUMQUAT:SEEDJPLANT:CUSTARD-APPLE:SEEDJPLANT:DATE_PALM:SEEDJPLANT:LYCHEE:SEEDJPLANT:MACADAMIA:SEEDJPLANT:OLIVE:SEEDJPLANT:POMEGRANATE:SEEDJPLANT:ALMOND:SEEDJPLANT:APPLE:SEEDJPLANT:APRICOT:SEEDJPLANT:BAYBERRY:SEEDJPLANT:CHERRY:SEEDJPLANT:GINKGO:SEEDJPLANT:HAZEL:SEEDJPLANT:PEACH:SEEDJPLANT:PEAR:SEEDJPLANT:PECAN:SEEDJPLANT:PERSIMMON:SEEDJPLANT:PLUM:SEEDJPLANT:SAND_PEAR:SEEDJPLANT:WALNUT:SEEDJ PLANT:MUSHROOM_HELMET_PLUMP:SEEDJPLANT:GRASS_TAIL_PIG:SEEDJPLANT:GRASS_WHEAT_CAVE:SEEDJPLANT:POD_SWEET:SEEDJPLANT:BUSH_QUARRY:SEEDJPLANT:ROOT_MUCK:SEEDJPLANT:TUBER_BLOATED:SEEDJPLANT:BERRIES_PRICKLE:SEEDJPLANT:BERRIES_STRAW:SEEDJPLANT:GRASS_LONGLAND:SEEDJPLANT:WEED_RAT:SEEDJPLANT:BERRIES_FISHER:SEEDJPLANT:REED_ROPE:SEEDJPLANT:MUSHROOM_CUP_DIMPLE:SEEDJPLANT:WEED_BLADE:SEEDJPLANT:ROOT_HIDE:SEEDJPLANT:SLIVER_BARB:SEEDJPLANT:BERRY_SUN:SEEDJPLANT:VINE_WHIP:SEEDJPLANT:OAK:SEEDJPLANT:ACACIA:SEEDJPLANT:CHESTNUT:SEEDJPLANT:CANDLENUT:SEEDJPLANT:MANGO:SEEDJPLANT:CACAO:SEEDRPLANT:BITTER_VETCH:LEAFRPLANT:BLOOD_AMARANTH:LEAFRPLANT:PURPLE_AMARANTH:LEAFRPLANT:RED_SPINACH:LEAFR!PLANT:ELEPHANT-HEAD_AMARANTH:LEAFRPLANT:ARTICHOKE:HEARTRPLANT:BITTER_MELON:LEAFRPLANT:BITTER_MELON:FRUITRPLANT:CAPER:LEAFRPLANT:CAPER:BUDRPLANT:CAPER:FRUITRPLANT:CUCUMBER:FRUITRPLANT:EGGPLANT:FRUITRPLANT:GARDEN_CRESS:LEAFRPLANT:GARLIC:BULBRPLANT:HORNED_MELON:FRUITRPLANT:LETTUCE:LEAFRPLANT:MUSKMELON:FRUITRPLANT:ONION:BULBRPLANT:PEPPER:FRUITRPLANT:SPINACH:LEAFRPLANT:SQUASH:FRUITRPLANT:TOMATO:FRUITRPLANT:TOMATILLO:FRUITRPLANT:WATERMELON:FRUITRPLANT:WINTER_MELON:FRUITRPLANT:PASSION_FRUIT:FRUITRPLANT:GRAPE:FRUITRPLANT:CRANBERRY:FRUITRPLANT:BILBERRY:FRUITRPLANT:BLUEBERRY:FRUITRPLANT:BLACKBERRY:FRUITRPLANT:RASPBERRY:FRUITRPLANT:PINEAPPLE:FRUITRPLANT:BANANA:FRUITRPLANT:CARAMBOLA:FRUITRPLANT:CASHEW:FRUITRPLANT:COFFEE:FRUITRPLANT:DURIAN:FRUITRPLANT:GUAVA:FRUITRPLANT:PAPAYA:FRUITRPLANT:PARADISE_NUT:FRUITRPLANT:RAMBUTAN:FRUITRPLANT:AVOCADO:FRUITRPLANT:LIME:FRUITRPLANT:POMELO:FRUITRPLANT:CITRON:FRUITRPLANT:ORANGE:FRUITRPLANT:BITTER_ORANGE:FRUITRPLANT:FINGER_LIME:FRUITRPLANT:ROUND_LIME:FRUITRPLANT:DESERT_LIME:FRUITRPLANT:KUMQUAT:FRUITRPLANT:CUSTARD-APPLE:FRUITRPLANT:DATE_PALM:FLOWERRPLANT:DATE_PALM:FRUITRPLANT:LYCHEE:FRUITRPLANT:OLIVE:FRUITRPLANT:POMEGRANATE:FRUITRPLANT:APPLE:FRUITRPLANT:APRICOT:FRUITRPLANT:BAYBERRY:FRUITRPLANT:CHERRY:FRUITRPLANT:PEACH:FRUITRPLANT:PEAR:FRUITRPLANT:PERSIMMON:FRUITRPLANT:PLUM:FRUITRPLANT:SAND_PEAR:FRUITRPLANT:BUSH_QUARRY:LEAFRPLANT:BERRIES_STRAW:FRUITRPLANT:SAGUARO:FRUITRPLANT:FEATHER:EGGRPLANT:MANGO:FRUITRPLANT:PALM:NUTZPLANT:SINGLE-GRAIN_WHEAT:MILLZPLANT:TWO-GRAIN_WHEAT:MILLZPLANT:SOFT_WHEAT:MILLZPLANT:HARD_WHEAT:MILLZPLANT:SPELT:MILLZPLANT:BARLEY:MILLZPLANT:BUCKWHEAT:MILLZPLANT:OATS:MILLZPLANT:RYE:MILLZPLANT:SORGHUM:MILLZPLANT:RICE:MILLZPLANT:MAIZE:MILLZPLANT:QUINOA:MILLZPLANT:KANIWA:MILLZPLANT:PENDANT_AMARANTH:MILLZPLANT:BLOOD_AMARANTH:MILLZPLANT:PURPLE_AMARANTH:MILLZPLANT:PEARL_MILLET:MILLZPLANT:WHITE_MILLET:MILLZPLANT:FINGER_MILLET:MILLZPLANT:FOXTAIL_MILLET:MILLZPLANT:FONIO:MILLZPLANT:TEFF:MILLZPLANT:FLAX:MILLZPLANT:HEMP:MILLZPLANT:GRASS_WHEAT_CAVE:MILLZPLANT:POD_SWEET:MILLZPLANT:GRASS_LONGLAND:MILLZPLANT:MUSHROOM_CUP_DIMPLE:MILLZPLANT:WEED_BLADE:MILLZPLANT:ROOT_HIDE:MILLZPLANT:SLIVER_BARB:MILLZPLANT:VINE_WHIP:MILLjCREATURE:TOAD:FATjCREATURE:TOAD:TALLOWjCREATURE:TOAD_MAN:FATjCREATURE:TOAD_MAN:TALLOWjCREATURE:GIANT_TOAD:FATjCREATURE:GIANT_TOAD:TALLOWjCREATURE:WORM:FATjCREATURE:WORM:TALLOWjCREATURE:WORM_MAN:FATjCREATURE:WORM_MAN:TALLOWjCREATURE:BIRD_BLUEJAY:FATjCREATURE:BIRD_BLUEJAY:TALLOWjCREATURE:BLUEJAY_MAN:FATjCREATURE:BLUEJAY_MAN:TALLOWjCREATURE:GIANT_BLUEJAY:FATjCREATURE:GIANT_BLUEJAY:TALLOWjCREATURE:BIRD_CARDINAL:FATjCREATURE:BIRD_CARDINAL:TALLOWjCREATURE:CARDINAL_MAN:FATjCREATURE:CARDINAL_MAN:TALLOWjCREATURE:GIANT_CARDINAL:FATjCREATURE:GIANT_CARDINAL:TALLOWjCREATURE:BIRD_GRACKLE:FATjCREATURE:BIRD_GRACKLE:TALLOWjCREATURE:GRACKLE_MAN:FATjCREATURE:GRACKLE_MAN:TALLOWjCREATURE:GIANT_GRACKLE:FATjCREATURE:GIANT_GRACKLE:TALLOWjCREATURE:BIRD_ORIOLE:FATjCREATURE:BIRD_ORIOLE:TALLOWjCREATURE:ORIOLE_MAN:FATjCREATURE:ORIOLE_MAN:TALLOWjCREATURE:GIANT_ORIOLE:FATjCREATURE:GIANT_ORIOLE:TALLOWjCREATURE:BIRD_RW_BLACKBIRD:FATj!CREATURE:BIRD_RW_BLACKBIRD:TALLOWjCREATURE:RW_BLACKBIRD_MAN:FATj CREATURE:RW_BLACKBIRD_MAN:TALLOWjCREATURE:GIANT_RW_BLACKBIRD:FATj"CREATURE:GIANT_RW_BLACKBIRD:TALLOWjCREATURE:BIRD_PENGUIN:FATjCREATURE:BIRD_PENGUIN:TALLOWj CREATURE:BIRD_PENGUIN_LITTLE:FATj#CREATURE:BIRD_PENGUIN_LITTLE:TALLOWj!CREATURE:BIRD_PENGUIN_EMPEROR:FATj$CREATURE:BIRD_PENGUIN_EMPEROR:TALLOWjCREATURE:PENGUIN MAN:FATjCREATURE:PENGUIN MAN:TALLOWjCREATURE:BIRD_PENGUIN_GIANT:FATj"CREATURE:BIRD_PENGUIN_GIANT:TALLOWj"CREATURE:BIRD_FALCON_PEREGRINE:FATj%CREATURE:BIRD_FALCON_PEREGRINE:TALLOWj!CREATURE:PEREGRINE FALCON MAN:FATj$CREATURE:PEREGRINE FALCON MAN:TALLOWj#CREATURE:GIANT PEREGRINE FALCON:FATj&CREATURE:GIANT PEREGRINE FALCON:TALLOWjCREATURE:BIRD_KIWI:FATjCREATURE:BIRD_KIWI:TALLOWjCREATURE:KIWI MAN:FATjCREATURE:KIWI MAN:TALLOWjCREATURE:BIRD_KIWI_GIANT:FATjCREATURE:BIRD_KIWI_GIANT:TALLOWjCREATURE:BIRD_OSTRICH:FATjCREATURE:BIRD_OSTRICH:TALLOWjCREATURE:OSTRICH MAN:FATjCREATURE:OSTRICH MAN:TALLOWjCREATURE:BIRD_OSTRICH_GIANT:FATj"CREATURE:BIRD_OSTRICH_GIANT:TALLOWjCREATURE:BIRD_CROW:FATjCREATURE:BIRD_CROW:TALLOWjCREATURE:CROW_MAN:FATjCREATURE:CROW_MAN:TALLOWjCREATURE:GIANT_CROW:FATjCREATURE:GIANT_CROW:TALLOWjCREATURE:BIRD_RAVEN:FATjCREATURE:BIRD_RAVEN:TALLOWjCREATURE:RAVEN_MAN:FATjCREATURE:RAVEN_MAN:TALLOWjCREATURE:GIANT_RAVEN:FATjCREATURE:GIANT_RAVEN:TALLOWjCREATURE:BIRD_CASSOWARY:FATjCREATURE:BIRD_CASSOWARY:TALLOWjCREATURE:CASSOWARY_MAN:FATjCREATURE:CASSOWARY_MAN:TALLOWjCREATURE:GIANT_CASSOWARY:FATjCREATURE:GIANT_CASSOWARY:TALLOWjCREATURE:BIRD_KEA:FATjCREATURE:BIRD_KEA:TALLOWjCREATURE:KEA_MAN:FATjCREATURE:KEA_MAN:TALLOWjCREATURE:GIANT_KEA:FATjCREATURE:GIANT_KEA:TALLOWjCREATURE:BIRD_OWL_SNOWY:FATjCREATURE:BIRD_OWL_SNOWY:TALLOWjCREATURE:SNOWY_OWL_MAN:FATjCREATURE:SNOWY_OWL_MAN:TALLOWjCREATURE:GIANT_SNOWY_OWL:FATjCREATURE:GIANT_SNOWY_OWL:TALLOWjCREATURE:SPARROW:FATjCREATURE:SPARROW:TALLOWjCREATURE:SPARROW_MAN:FATjCREATURE:SPARROW_MAN:TALLOWjCREATURE:GIANT_SPARROW:FATjCREATURE:GIANT_SPARROW:TALLOWjCREATURE:BIRD_STORK_WHITE:FATj CREATURE:BIRD_STORK_WHITE:TALLOWjCREATURE:WHITE_STORK_MAN:FATjCREATURE:WHITE_STORK_MAN:TALLOWjCREATURE:GIANT_WHITE_STORK:FATj!CREATURE:GIANT_WHITE_STORK:TALLOWjCREATURE:BIRD_LOON:FATjCREATURE:BIRD_LOON:TALLOWjCREATURE:LOON_MAN:FATjCREATURE:LOON_MAN:TALLOWjCREATURE:GIANT_LOON:FATjCREATURE:GIANT_LOON:TALLOWjCREATURE:BIRD_OWL_BARN:FATjCREATURE:BIRD_OWL_BARN:TALLOWjCREATURE:BARN_OWL_MAN:FATjCREATURE:BARN_OWL_MAN:TALLOWjCREATURE:GIANT_BARN_OWL:FATjCREATURE:GIANT_BARN_OWL:TALLOWjCREATURE:BIRD_PARAKEET:FATjCREATURE:BIRD_PARAKEET:TALLOWjCREATURE:PARAKEET_MAN:FATjCREATURE:PARAKEET_MAN:TALLOWjCREATURE:GIANT_PARAKEET:FATjCREATURE:GIANT_PARAKEET:TALLOWjCREATURE:BIRD_KAKAPO:FATjCREATURE:BIRD_KAKAPO:TALLOWjCREATURE:KAKAPO_MAN:FATjCREATURE:KAKAPO_MAN:TALLOWjCREATURE:GIANT_KAKAPO:FATjCREATURE:GIANT_KAKAPO:TALLOWjCREATURE:BIRD_PARROT_GREY:FATj CREATURE:BIRD_PARROT_GREY:TALLOWjCREATURE:GREY_PARROT_MAN:FATjCREATURE:GREY_PARROT_MAN:TALLOWjCREATURE:GIANT_GREY_PARROT:FATj!CREATURE:GIANT_GREY_PARROT:TALLOWjCREATURE:BIRD_PUFFIN:FATjCREATURE:BIRD_PUFFIN:TALLOWjCREATURE:PUFFIN_MAN:FATjCREATURE:PUFFIN_MAN:TALLOWjCREATURE:GIANT_PUFFIN:FATjCREATURE:GIANT_PUFFIN:TALLOWjCREATURE:BIRD_SWAN:FATjCREATURE:BIRD_SWAN:TALLOWjCREATURE:SWAN_MAN:FATjCREATURE:SWAN_MAN:TALLOWjCREATURE:GIANT_SWAN:FATjCREATURE:GIANT_SWAN:TALLOWjCREATURE:BIRD_LORIKEET:FATjCREATURE:BIRD_LORIKEET:TALLOWjCREATURE:LORIKEET_MAN:FATjCREATURE:LORIKEET_MAN:TALLOWjCREATURE:GIANT_LORIKEET:FATjCREATURE:GIANT_LORIKEET:TALLOWjCREATURE:BIRD_WREN:FATjCREATURE:BIRD_WREN:TALLOWjCREATURE:WREN_MAN:FATjCREATURE:WREN_MAN:TALLOWjCREATURE:GIANT_WREN:FATjCREATURE:GIANT_WREN:TALLOWjCREATURE:BIRD_OSPREY:FATjCREATURE:BIRD_OSPREY:TALLOWjCREATURE:OSPREY_MAN:FATjCREATURE:OSPREY_MAN:TALLOWjCREATURE:GIANT_OSPREY:FATjCREATURE:GIANT_OSPREY:TALLOWjCREATURE:BIRD_EMU:FATjCREATURE:BIRD_EMU:TALLOWjCREATURE:EMU_MAN:FATjCREATURE:EMU_MAN:TALLOWjCREATURE:GIANT_EMU:FATjCREATURE:GIANT_EMU:TALLOWjCREATURE:BIRD_COCKATIEL:FATjCREATURE:BIRD_COCKATIEL:TALLOWjCREATURE:COCKATIEL_MAN:FATjCREATURE:COCKATIEL_MAN:TALLOWjCREATURE:GIANT_COCKATIEL:FATjCREATURE:GIANT_COCKATIEL:TALLOWj&CREATURE:BIRD_LOVEBIRD_PEACH-FACED:FATj)CREATURE:BIRD_LOVEBIRD_PEACH-FACED:TALLOWj%CREATURE:PEACH-FACED_LOVEBIRD_MAN:FATj(CREATURE:PEACH-FACED_LOVEBIRD_MAN:TALLOWj'CREATURE:GIANT_PEACH-FACED_LOVEBIRD:FATj*CREATURE:GIANT_PEACH-FACED_LOVEBIRD:TALLOWjCREATURE:BIRD_MAGPIE:FATjCREATURE:BIRD_MAGPIE:TALLOWjCREATURE:MAGPIE_MAN:FATjCREATURE:MAGPIE_MAN:TALLOWjCREATURE:GIANT_MAGPIE:FATjCREATURE:GIANT_MAGPIE:TALLOWjCREATURE:BIRD_KESTREL:FATjCREATURE:BIRD_KESTREL:TALLOWjCREATURE:KESTREL_MAN:FATjCREATURE:KESTREL_MAN:TALLOWjCREATURE:GIANT_KESTREL:FATjCREATURE:GIANT_KESTREL:TALLOWjCREATURE:BIRD_ALBATROSS:FATjCREATURE:BIRD_ALBATROSS:TALLOWjCREATURE:ALBATROSS_MAN:FATjCREATURE:ALBATROSS_MAN:TALLOWjCREATURE:GIANT_ALBATROSS:FATjCREATURE:GIANT_ALBATROSS:TALLOWj"CREATURE:BIRD_OWL_GREAT_HORNED:FATj%CREATURE:BIRD_OWL_GREAT_HORNED:TALLOWj!CREATURE:GREAT_HORNED_OWL_MAN:FATj$CREATURE:GREAT_HORNED_OWL_MAN:TALLOWj#CREATURE:GIANT_GREAT_HORNED_OWL:FATj&CREATURE:GIANT_GREAT_HORNED_OWL:TALLOWjCREATURE:BIRD_EAGLE:FATjCREATURE:BIRD_EAGLE:TALLOWjCREATURE:EAGLE_MAN:FATjCREATURE:EAGLE_MAN:TALLOWjCREATURE:GIANT_EAGLE:FATjCREATURE:GIANT_EAGLE:TALLOWjCREATURE:BIRD_HORNBILL:FATjCREATURE:BIRD_HORNBILL:TALLOWjCREATURE:HORNBILL_MAN:FATjCREATURE:HORNBILL_MAN:TALLOWjCREATURE:GIANT_HORNBILL:FATjCREATURE:GIANT_HORNBILL:TALLOWj!CREATURE:BIRD_LOVEBIRD_MASKED:FATj$CREATURE:BIRD_LOVEBIRD_MASKED:TALLOWj CREATURE:MASKED_LOVEBIRD_MAN:FATj#CREATURE:MASKED_LOVEBIRD_MAN:TALLOWj"CREATURE:GIANT_MASKED_LOVEBIRD:FATj%CREATURE:GIANT_MASKED_LOVEBIRD:TALLOWjCREATURE:BIRD_BUSHTIT:FATjCREATURE:BIRD_BUSHTIT:TALLOWjCREATURE:BUSHTIT_MAN:FATjCREATURE:BUSHTIT_MAN:TALLOWjCREATURE:GIANT_BUSHTIT:FATjCREATURE:GIANT_BUSHTIT:TALLOWjCREATURE:DAMSELFLY:FATjCREATURE:DAMSELFLY:TALLOWjCREATURE:DAMSELFLY_MAN:FATjCREATURE:DAMSELFLY_MAN:TALLOWjCREATURE:GIANT_DAMSELFLY:FATjCREATURE:GIANT_DAMSELFLY:TALLOWjCREATURE:MOTH:FATjCREATURE:MOTH:TALLOWjCREATURE:MOTH_MAN:FATjCREATURE:MOTH_MAN:TALLOWjCREATURE:GIANT_MOTH:FATjCREATURE:GIANT_MOTH:TALLOWjCREATURE:GRASSHOPPER:FATjCREATURE:GRASSHOPPER:TALLOWjCREATURE:GRASSHOPPER_MAN:FATjCREATURE:GRASSHOPPER_MAN:TALLOWjCREATURE:GIANT_GRASSHOPPER:FATj!CREATURE:GIANT_GRASSHOPPER:TALLOWjCREATURE:BARK_SCORPION:FATjCREATURE:BARK_SCORPION:TALLOWjCREATURE:BARK_SCORPION_MAN:FATj!CREATURE:BARK_SCORPION_MAN:TALLOWj CREATURE:GIANT_BARK_SCORPION:FATj#CREATURE:GIANT_BARK_SCORPION:TALLOWjCREATURE:MANTIS:FATjCREATURE:MANTIS:TALLOWjCREATURE:MANTIS_MAN:FATjCREATURE:MANTIS_MAN:TALLOWjCREATURE:GIANT_MANTIS:FATjCREATURE:GIANT_MANTIS:TALLOWjCREATURE:TICK:FATjCREATURE:TICK:TALLOWjCREATURE:TICK_MAN:FATjCREATURE:TICK_MAN:TALLOWjCREATURE:GIANT_TICK:FATjCREATURE:GIANT_TICK:TALLOWjCREATURE:LOUSE:FATjCREATURE:LOUSE:TALLOWjCREATURE:LOUSE_MAN:FATjCREATURE:LOUSE_MAN:TALLOWjCREATURE:GIANT_LOUSE:FATjCREATURE:GIANT_LOUSE:TALLOWjCREATURE:THRIPS:FATjCREATURE:THRIPS:TALLOWjCREATURE:THRIPS_MAN:FATjCREATURE:THRIPS_MAN:TALLOWjCREATURE:GIANT_THRIPS:FATjCREATURE:GIANT_THRIPS:TALLOWjCREATURE:SLUG:FATjCREATURE:SLUG:TALLOWjCREATURE:SLUG_MAN:FATjCREATURE:SLUG_MAN:TALLOWjCREATURE:GIANT_SLUG:FATjCREATURE:GIANT_SLUG:TALLOWjCREATURE:MOSQUITO:FATjCREATURE:MOSQUITO:TALLOWjCREATURE:MOSQUITO_MAN:FATjCREATURE:MOSQUITO_MAN:TALLOWjCREATURE:GIANT_MOSQUITO:FATjCREATURE:GIANT_MOSQUITO:TALLOWjCREATURE:SPIDER_JUMPING:FATjCREATURE:SPIDER_JUMPING:TALLOWjCREATURE:JUMPING_SPIDER_MAN:FATj"CREATURE:JUMPING_SPIDER_MAN:TALLOWj!CREATURE:GIANT_JUMPING_SPIDER:FATj$CREATURE:GIANT_JUMPING_SPIDER:TALLOWjCREATURE:TERMITE:FATjCREATURE:TERMITE:TALLOWjCREATURE:MOON_SNAIL:FATjCREATURE:MOON_SNAIL:TALLOWjCREATURE:MOON_SNAIL_MAN:FATjCREATURE:MOON_SNAIL_MAN:TALLOWjCREATURE:GIANT_MOON_SNAIL:FATj CREATURE:GIANT_MOON_SNAIL:TALLOWj!CREATURE:SPIDER_BROWN_RECLUSE:FATj$CREATURE:SPIDER_BROWN_RECLUSE:TALLOWj%CREATURE:BROWN_RECLUSE_SPIDER_MAN:FATj(CREATURE:BROWN_RECLUSE_SPIDER_MAN:TALLOWj'CREATURE:GIANT_BROWN_RECLUSE_SPIDER:FATj*CREATURE:GIANT_BROWN_RECLUSE_SPIDER:TALLOWjCREATURE:SNAIL:FATjCREATURE:SNAIL:TALLOWjCREATURE:SNAIL_MAN:FATjCREATURE:SNAIL_MAN:TALLOWjCREATURE:GIANT_SNAIL:FATjCREATURE:GIANT_SNAIL:TALLOWjCREATURE:GECKO_LEOPARD:FATjCREATURE:GECKO_LEOPARD:TALLOWjCREATURE:LEOPARD_GECKO_MAN:FATj!CREATURE:LEOPARD_GECKO_MAN:TALLOWj CREATURE:GIANT_LEOPARD_GECKO:FATj#CREATURE:GIANT_LEOPARD_GECKO:TALLOWjCREATURE:DESERT TORTOISE:FATjCREATURE:DESERT TORTOISE:TALLOWj CREATURE:DESERT_TORTOISE_MAN:FATj#CREATURE:DESERT_TORTOISE_MAN:TALLOWj"CREATURE:GIANT_DESERT_TORTOISE:FATj%CREATURE:GIANT_DESERT_TORTOISE:TALLOWjCREATURE:GILA_MONSTER:FATjCREATURE:GILA_MONSTER:TALLOWjCREATURE:GILA_MONSTER_MAN:FATj CREATURE:GILA_MONSTER_MAN:TALLOWjCREATURE:GIANT_GILA_MONSTER:FATj"CREATURE:GIANT_GILA_MONSTER:TALLOWjCREATURE:DOG:FATjCREATURE:DOG:TALLOWjCREATURE:CAT:FATjCREATURE:CAT:TALLOWjCREATURE:MULE:FATjCREATURE:MULE:TALLOWjCREATURE:DONKEY:FATjCREATURE:DONKEY:TALLOWjCREATURE:HORSE:FATjCREATURE:HORSE:TALLOWjCREATURE:COW:FATjCREATURE:COW:TALLOWjCREATURE:SHEEP:FATjCREATURE:SHEEP:TALLOWjCREATURE:PIG:FATjCREATURE:PIG:TALLOWjCREATURE:GOAT:FATjCREATURE:GOAT:TALLOWjCREATURE:BIRD_CHICKEN:FATjCREATURE:BIRD_CHICKEN:TALLOWjCREATURE:CAVY:FATjCREATURE:CAVY:TALLOWjCREATURE:BIRD_DUCK:FATjCREATURE:BIRD_DUCK:TALLOWjCREATURE:WATER_BUFFALO:FATjCREATURE:WATER_BUFFALO:TALLOWjCREATURE:REINDEER:FATjCREATURE:REINDEER:TALLOWjCREATURE:BIRD_GOOSE:FATjCREATURE:BIRD_GOOSE:TALLOWjCREATURE:YAK:FATjCREATURE:YAK:TALLOWjCREATURE:LLAMA:FATjCREATURE:LLAMA:TALLOWjCREATURE:ALPACA:FATjCREATURE:ALPACA:TALLOWjCREATURE:BIRD_GUINEAFOWL:FATjCREATURE:BIRD_GUINEAFOWL:TALLOWjCREATURE:BIRD_PEAFOWL_BLUE:FATj!CREATURE:BIRD_PEAFOWL_BLUE:TALLOWjCREATURE:BIRD_TURKEY:FATjCREATURE:BIRD_TURKEY:TALLOWjCREATURE:RABBIT:FATjCREATURE:RABBIT:TALLOWjCREATURE:FLY:FATjCREATURE:FLY:TALLOWjCREATURE:FLY_MAN:FATjCREATURE:FLY_MAN:TALLOWjCREATURE:GIANT_FLY:FATjCREATURE:GIANT_FLY:TALLOWjCREATURE:ROACH_LARGE:FATjCREATURE:ROACH_LARGE:TALLOWjCREATURE:ROACH_MAN:FATjCREATURE:ROACH_MAN:TALLOWjCREATURE:GIANT_ROACH:FATjCREATURE:GIANT_ROACH:TALLOWjCREATURE:BEETLE:FATjCREATURE:BEETLE:TALLOWjCREATURE:BEETLE_MAN:FATjCREATURE:BEETLE_MAN:TALLOWjCREATURE:GIANT_BEETLE:FATjCREATURE:GIANT_BEETLE:TALLOWjCREATURE:ANT:FATjCREATURE:ANT:TALLOWjCREATURE:BUTTERFLY_MONARCH:FATj!CREATURE:BUTTERFLY_MONARCH:TALLOWj"CREATURE:BUTTERFLY_MONARCH_MAN:FATj%CREATURE:BUTTERFLY_MONARCH_MAN:TALLOWj$CREATURE:GIANT_BUTTERFLY_MONARCH:FATj'CREATURE:GIANT_BUTTERFLY_MONARCH:TALLOWjCREATURE:FIREFLY:FATjCREATURE:FIREFLY:TALLOWjCREATURE:FIREFLY_MAN:FATjCREATURE:FIREFLY_MAN:TALLOWjCREATURE:GIANT_FIREFLY:FATjCREATURE:GIANT_FIREFLY:TALLOWjCREATURE:DRAGONFLY:FATjCREATURE:DRAGONFLY:TALLOWjCREATURE:DRAGONFLY_MAN:FATjCREATURE:DRAGONFLY_MAN:TALLOWjCREATURE:GIANT_DRAGONFLY:FATjCREATURE:GIANT_DRAGONFLY:TALLOWjCREATURE:HONEY_BEE:WAXjCREATURE:HONEY_BEE:FATjCREATURE:HONEY_BEE:TALLOWjCREATURE:BUMBLEBEE:WAXjCREATURE:BUMBLEBEE:FATjCREATURE:BUMBLEBEE:TALLOWjCREATURE:GOAT_MOUNTAIN:FATjCREATURE:GOAT_MOUNTAIN:TALLOWjCREATURE:GOAT_MOUNTAIN_MAN:FATj!CREATURE:GOAT_MOUNTAIN_MAN:TALLOWj CREATURE:GIANT_GOAT_MOUNTAIN:FATj#CREATURE:GIANT_GOAT_MOUNTAIN:TALLOWjCREATURE:MARMOT_HOARY:FATjCREATURE:MARMOT_HOARY:TALLOWjCREATURE:MARMOT_HOARY_MAN:FATj CREATURE:MARMOT_HOARY_MAN:TALLOWjCREATURE:GIANT_MARMOT_HOARY:FATj"CREATURE:GIANT_MARMOT_HOARY:TALLOWjCREATURE:GNOME_MOUNTAIN:FATjCREATURE:GNOME_MOUNTAIN:TALLOWjCREATURE:GNOME_DARK:FATjCREATURE:GNOME_DARK:TALLOWjCREATURE:WALRUS:FATjCREATURE:WALRUS:TALLOWjCREATURE:WALRUS_MAN:FATjCREATURE:WALRUS_MAN:TALLOWjCREATURE:GIANT_WALRUS:FATjCREATURE:GIANT_WALRUS:TALLOWjCREATURE:FISH_LAMPREY_SEA:FATj CREATURE:FISH_LAMPREY_SEA:TALLOWjCREATURE:SHARK_GREAT_WHITE:FATj!CREATURE:SHARK_GREAT_WHITE:TALLOWjCREATURE:SHARK_FRILL:FATjCREATURE:SHARK_FRILL:TALLOWj CREATURE:SHARK_SPINY_DOGFISH:FATj#CREATURE:SHARK_SPINY_DOGFISH:TALLOWj$CREATURE:SHARK_WOBBEGONG_SPOTTED:FATj'CREATURE:SHARK_WOBBEGONG_SPOTTED:TALLOWjCREATURE:SHARK_WHALE:FATjCREATURE:SHARK_WHALE:TALLOWjCREATURE:SHARK_BASKING:FATjCREATURE:SHARK_BASKING:TALLOWjCREATURE:SHARK_NURSE:FATjCREATURE:SHARK_NURSE:TALLOWj CREATURE:SHARK_MAKO_SHORTFIN:FATj#CREATURE:SHARK_MAKO_SHORTFIN:TALLOWjCREATURE:SHARK_MAKO_LONGFIN:FATj"CREATURE:SHARK_MAKO_LONGFIN:TALLOWjCREATURE:SHARK_TIGER:FATjCREATURE:SHARK_TIGER:TALLOWjCREATURE:SHARK_BULL:FATjCREATURE:SHARK_BULL:TALLOWj CREATURE:SHARK_REEF_BLACKTIP:FATj#CREATURE:SHARK_REEF_BLACKTIP:TALLOWj CREATURE:SHARK_REEF_WHITETIP:FATj#CREATURE:SHARK_REEF_WHITETIP:TALLOWjCREATURE:SHARK_BLUE:FATjCREATURE:SHARK_BLUE:TALLOWjCREATURE:SHARK_HAMMERHEAD:FATj CREATURE:SHARK_HAMMERHEAD:TALLOWjCREATURE:SHARK_ANGEL:FATjCREATURE:SHARK_ANGEL:TALLOWjCREATURE:FISH_SKATE_COMMON:FATj!CREATURE:FISH_SKATE_COMMON:TALLOWjCREATURE:FISH_RAY_MANTA:FATjCREATURE:FISH_RAY_MANTA:TALLOWjCREATURE:FISH_STINGRAY:FATjCREATURE:FISH_STINGRAY:TALLOWjCREATURE:FISH_COELACANTH:FATjCREATURE:FISH_COELACANTH:TALLOWjCREATURE:FISH_STURGEON:FATjCREATURE:FISH_STURGEON:TALLOWjCREATURE:FISH_CONGER_EEL:FATjCREATURE:FISH_CONGER_EEL:TALLOWjCREATURE:FISH_MILKFISH:FATjCREATURE:FISH_MILKFISH:TALLOWjCREATURE:FISH_COD:FATjCREATURE:FISH_COD:TALLOWjCREATURE:FISH_OPAH:FATjCREATURE:FISH_OPAH:TALLOWjCREATURE:FISH_GROUPER_GIANT:FATj"CREATURE:FISH_GROUPER_GIANT:TALLOWjCREATURE:FISH_BLUEFISH:FATjCREATURE:FISH_BLUEFISH:TALLOWjCREATURE:FISH_SUNFISH_OCEAN:FATj"CREATURE:FISH_SUNFISH_OCEAN:TALLOWjCREATURE:FISH_SWORDFISH:FATjCREATURE:FISH_SWORDFISH:TALLOWjCREATURE:FISH_MARLIN:FATjCREATURE:FISH_MARLIN:TALLOWjCREATURE:FISH_HALIBUT:FATjCREATURE:FISH_HALIBUT:TALLOWj!CREATURE:FISH_BARRACUDA_GREAT:FATj$CREATURE:FISH_BARRACUDA_GREAT:TALLOWjCREATURE:FISH_TUNA_BLUEFIN:FATj!CREATURE:FISH_TUNA_BLUEFIN:TALLOWjCREATURE:NARWHAL:FATjCREATURE:NARWHAL:TALLOWjCREATURE:NARWHAL MAN:FATjCREATURE:NARWHAL MAN:TALLOWjCREATURE:NARWHAL, GIANT:FATjCREATURE:NARWHAL, GIANT:TALLOWjCREATURE:HIPPO:FATjCREATURE:HIPPO:TALLOWjCREATURE:HIPPO_MAN:FATjCREATURE:HIPPO_MAN:TALLOWjCREATURE:GIANT_HIPPO:FATjCREATURE:GIANT_HIPPO:TALLOWjCREATURE:FISH_GAR_LONGNOSE:FATj!CREATURE:FISH_GAR_LONGNOSE:TALLOWjCREATURE:FISH_CARP:FATjCREATURE:FISH_CARP:TALLOWjCREATURE:FISH_TIGERFISH:FATjCREATURE:FISH_TIGERFISH:TALLOWjCREATURE:FISH_PIKE:FATjCREATURE:FISH_PIKE:TALLOWjCREATURE:PLATYPUS:FATjCREATURE:PLATYPUS:TALLOWjCREATURE:PLATYPUS MAN:FATjCREATURE:PLATYPUS MAN:TALLOWjCREATURE:PLATYPUS, GIANT:FATjCREATURE:PLATYPUS, GIANT:TALLOWjCREATURE:BEAR_GRIZZLY:FATjCREATURE:BEAR_GRIZZLY:TALLOWjCREATURE:BEAR_GRIZZLY_MAN:FATj CREATURE:BEAR_GRIZZLY_MAN:TALLOWjCREATURE:GIANT_BEAR_GRIZZLY:FATj"CREATURE:GIANT_BEAR_GRIZZLY:TALLOWjCREATURE:BEAR_BLACK:FATjCREATURE:BEAR_BLACK:TALLOWjCREATURE:BEAR_BLACK_MAN:FATjCREATURE:BEAR_BLACK_MAN:TALLOWjCREATURE:GIANT_BEAR_BLACK:FATj CREATURE:GIANT_BEAR_BLACK:TALLOWjCREATURE:DEER:FATjCREATURE:DEER:TALLOWjCREATURE:DEER_MAN:FATjCREATURE:DEER_MAN:TALLOWjCREATURE:GIANT_DEER:FATjCREATURE:GIANT_DEER:TALLOWjCREATURE:FOX:FATjCREATURE:FOX:TALLOWjCREATURE:FOX_MAN:FATjCREATURE:FOX_MAN:TALLOWjCREATURE:GIANT_FOX:FATjCREATURE:GIANT_FOX:TALLOWjCREATURE:RACCOON:FATjCREATURE:RACCOON:TALLOWjCREATURE:RACCOON_MAN:FATjCREATURE:RACCOON_MAN:TALLOWjCREATURE:GIANT_RACCOON:FATjCREATURE:GIANT_RACCOON:TALLOWjCREATURE:MACAQUE_RHESUS:FATjCREATURE:MACAQUE_RHESUS:TALLOWjCREATURE:MACAQUE_RHESUS_MAN:FATj"CREATURE:MACAQUE_RHESUS_MAN:TALLOWj!CREATURE:GIANT_MACAQUE_RHESUS:FATj$CREATURE:GIANT_MACAQUE_RHESUS:TALLOWjCREATURE:COUGAR:FATjCREATURE:COUGAR:TALLOWjCREATURE:COUGAR_MAN:FATjCREATURE:COUGAR_MAN:TALLOWjCREATURE:GIANT_COUGAR:FATjCREATURE:GIANT_COUGAR:TALLOWjCREATURE:WOLF:FATjCREATURE:WOLF:TALLOWjCREATURE:WOLF_MAN:FATjCREATURE:WOLF_MAN:TALLOWjCREATURE:GIANT_WOLF:FATjCREATURE:GIANT_WOLF:TALLOWjCREATURE:GROUNDHOG:FATjCREATURE:GROUNDHOG:TALLOWjCREATURE:GROUNDHOG_MAN:FATjCREATURE:GROUNDHOG_MAN:TALLOWjCREATURE:GIANT_GROUNDHOG:FATjCREATURE:GIANT_GROUNDHOG:TALLOWjCREATURE:ALLIGATOR:FATjCREATURE:ALLIGATOR:TALLOWjCREATURE:ALLIGATOR_MAN:FATjCREATURE:ALLIGATOR_MAN:TALLOWjCREATURE:GIANT_ALLIGATOR:FATjCREATURE:GIANT_ALLIGATOR:TALLOWjCREATURE:BIRD_BUZZARD:FATjCREATURE:BIRD_BUZZARD:TALLOWjCREATURE:BUZZARD_MAN:FATjCREATURE:BUZZARD_MAN:TALLOWjCREATURE:GIANT_BUZZARD:FATjCREATURE:GIANT_BUZZARD:TALLOWjCREATURE:PANDA:FATjCREATURE:PANDA:TALLOWjCREATURE:PANDA, GIGANTIC:FATjCREATURE:PANDA, GIGANTIC:TALLOWjCREATURE:PANDA MAN:FATjCREATURE:PANDA MAN:TALLOWjCREATURE:CAPYBARA:FATjCREATURE:CAPYBARA:TALLOWjCREATURE:CAPYBARA, GIANT:FATjCREATURE:CAPYBARA, GIANT:TALLOWjCREATURE:CAPYBARA MAN:FATjCREATURE:CAPYBARA MAN:TALLOWjCREATURE:BADGER:FATjCREATURE:BADGER:TALLOWjCREATURE:BADGER MAN:FATjCREATURE:BADGER MAN:TALLOWjCREATURE:BADGER, GIANT:FATjCREATURE:BADGER, GIANT:TALLOWjCREATURE:MOOSE:FATjCREATURE:MOOSE:TALLOWjCREATURE:MOOSE MAN:FATjCREATURE:MOOSE MAN:TALLOWjCREATURE:MOOSE, GIANT:FATjCREATURE:MOOSE, GIANT:TALLOWjCREATURE:RED PANDA:FATjCREATURE:RED PANDA:TALLOWjCREATURE:RED PANDA MAN:FATjCREATURE:RED PANDA MAN:TALLOWjCREATURE:RED PANDA, GIANT:FATj CREATURE:RED PANDA, GIANT:TALLOWjCREATURE:ELEPHANT:FATjCREATURE:ELEPHANT:TALLOWjCREATURE:ELEPHANT_MAN:FATjCREATURE:ELEPHANT_MAN:TALLOWjCREATURE:GIANT_ELEPHANT:FATjCREATURE:GIANT_ELEPHANT:TALLOWjCREATURE:WARTHOG:FATjCREATURE:WARTHOG:TALLOWjCREATURE:WARTHOG_MAN:FATjCREATURE:WARTHOG_MAN:TALLOWjCREATURE:GIANT_WARTHOG:FATjCREATURE:GIANT_WARTHOG:TALLOWjCREATURE:LION:FATjCREATURE:LION:TALLOWjCREATURE:LION_MAN:FATjCREATURE:LION_MAN:TALLOWjCREATURE:GIANT_LION:FATjCREATURE:GIANT_LION:TALLOWjCREATURE:LEOPARD:FATjCREATURE:LEOPARD:TALLOWjCREATURE:LEOPARD_MAN:FATjCREATURE:LEOPARD_MAN:TALLOWjCREATURE:GIANT_LEOPARD:FATjCREATURE:GIANT_LEOPARD:TALLOWjCREATURE:JAGUAR:FATjCREATURE:JAGUAR:TALLOWjCREATURE:JAGUAR_MAN:FATjCREATURE:JAGUAR_MAN:TALLOWjCREATURE:GIANT_JAGUAR:FATjCREATURE:GIANT_JAGUAR:TALLOWjCREATURE:TIGER:FATjCREATURE:TIGER:TALLOWjCREATURE:TIGER_MAN:FATjCREATURE:TIGER_MAN:TALLOWjCREATURE:GIANT_TIGER:FATjCREATURE:GIANT_TIGER:TALLOWjCREATURE:CHEETAH:FATjCREATURE:CHEETAH:TALLOWjCREATURE:CHEETAH_MAN:FATjCREATURE:CHEETAH_MAN:TALLOWjCREATURE:GIANT_CHEETAH:FATjCREATURE:GIANT_CHEETAH:TALLOWjCREATURE:GAZELLE:FATjCREATURE:GAZELLE:TALLOWjCREATURE:GAZELLE_MAN:FATjCREATURE:GAZELLE_MAN:TALLOWjCREATURE:GIANT_GAZELLE:FATjCREATURE:GIANT_GAZELLE:TALLOWjCREATURE:MANDRILL:FATjCREATURE:MANDRILL:TALLOWjCREATURE:MANDRILL_MAN:FATjCREATURE:MANDRILL_MAN:TALLOWjCREATURE:GIANT_MANDRILL:FATjCREATURE:GIANT_MANDRILL:TALLOWjCREATURE:CHIMPANZEE:FATjCREATURE:CHIMPANZEE:TALLOWjCREATURE:BONOBO:FATjCREATURE:BONOBO:TALLOWjCREATURE:GORILLA:FATjCREATURE:GORILLA:TALLOWjCREATURE:ORANGUTAN:FATjCREATURE:ORANGUTAN:TALLOWjCREATURE:GIBBON_SIAMANG:FATjCREATURE:GIBBON_SIAMANG:TALLOWj CREATURE:GIBBON_WHITE_HANDED:FATj#CREATURE:GIBBON_WHITE_HANDED:TALLOWj CREATURE:GIBBON_BLACK_HANDED:FATj#CREATURE:GIBBON_BLACK_HANDED:TALLOWjCREATURE:GIBBON_GRAY:FATjCREATURE:GIBBON_GRAY:TALLOWjCREATURE:GIBBON_SILVERY:FATjCREATURE:GIBBON_SILVERY:TALLOWjCREATURE:GIBBON_PILEATED:FATjCREATURE:GIBBON_PILEATED:TALLOWjCREATURE:GIBBON_BILOU:FATjCREATURE:GIBBON_BILOU:TALLOWj CREATURE:GIBBON_WHITE_BROWED:FATj#CREATURE:GIBBON_WHITE_BROWED:TALLOWj!CREATURE:GIBBON_BLACK_CRESTED:FATj$CREATURE:GIBBON_BLACK_CRESTED:TALLOWjCREATURE:CAMEL_1_HUMP:FATjCREATURE:CAMEL_1_HUMP:TALLOWjCREATURE:CAMEL_1_HUMP_MAN:FATj CREATURE:CAMEL_1_HUMP_MAN:TALLOWjCREATURE:GIANT_CAMEL_1_HUMP:FATj"CREATURE:GIANT_CAMEL_1_HUMP:TALLOWjCREATURE:CAMEL_2_HUMP:FATjCREATURE:CAMEL_2_HUMP:TALLOWjCREATURE:CAMEL_2_HUMP_MAN:FATj CREATURE:CAMEL_2_HUMP_MAN:TALLOWjCREATURE:GIANT_CAMEL_2_HUMP:FATj"CREATURE:GIANT_CAMEL_2_HUMP:TALLOWj CREATURE:CROCODILE_SALTWATER:FATj#CREATURE:CROCODILE_SALTWATER:TALLOWj$CREATURE:CROCODILE_SALTWATER_MAN:FATj'CREATURE:CROCODILE_SALTWATER_MAN:TALLOWj&CREATURE:GIANT_CROCODILE_SALTWATER:FATj)CREATURE:GIANT_CROCODILE_SALTWATER:TALLOWjCREATURE:BIRD_VULTURE:FATjCREATURE:BIRD_VULTURE:TALLOWjCREATURE:VULTURE_MAN:FATjCREATURE:VULTURE_MAN:TALLOWjCREATURE:GIANT_VULTURE:FATjCREATURE:GIANT_VULTURE:TALLOWjCREATURE:RHINOCEROS:FATjCREATURE:RHINOCEROS:TALLOWjCREATURE:RHINOCEROS_MAN:FATjCREATURE:RHINOCEROS_MAN:TALLOWjCREATURE:GIANT_RHINOCEROS:FATj CREATURE:GIANT_RHINOCEROS:TALLOWjCREATURE:GIRAFFE:FATjCREATURE:GIRAFFE:TALLOWjCREATURE:GIRAFFE_MAN:FATjCREATURE:GIRAFFE_MAN:TALLOWjCREATURE:GIANT_GIRAFFE:FATjCREATURE:GIANT_GIRAFFE:TALLOWjCREATURE:HONEY BADGER:FATjCREATURE:HONEY BADGER:TALLOWjCREATURE:HONEY BADGER MAN:FATj CREATURE:HONEY BADGER MAN:TALLOWj CREATURE:HONEY BADGER, GIANT:FATj#CREATURE:HONEY BADGER, GIANT:TALLOWjCREATURE:GIANT TORTOISE:FATjCREATURE:GIANT TORTOISE:TALLOWjCREATURE:GIANT TORTOISE MAN:FATj"CREATURE:GIANT TORTOISE MAN:TALLOWjCREATURE:GIGANTIC TORTOISE:FATj!CREATURE:GIGANTIC TORTOISE:TALLOWjCREATURE:ARMADILLO:FATjCREATURE:ARMADILLO:TALLOWjCREATURE:ARMADILLO MAN:FATjCREATURE:ARMADILLO MAN:TALLOWjCREATURE:ARMADILLO, GIANT:FATj CREATURE:ARMADILLO, GIANT:TALLOWjCREATURE:MUSKOX:FATjCREATURE:MUSKOX:TALLOWjCREATURE:MUSKOX_MAN:FATjCREATURE:MUSKOX_MAN:TALLOWjCREATURE:GIANT_MUSKOX:FATjCREATURE:GIANT_MUSKOX:TALLOWjCREATURE:ELK:FATjCREATURE:ELK:TALLOWjCREATURE:ELK_MAN:FATjCREATURE:ELK_MAN:TALLOWjCREATURE:GIANT_ELK:FATjCREATURE:GIANT_ELK:TALLOWjCREATURE:BEAR_POLAR:FATjCREATURE:BEAR_POLAR:TALLOWjCREATURE:BEAR_POLAR_MAN:FATjCREATURE:BEAR_POLAR_MAN:TALLOWjCREATURE:GIANT_BEAR_POLAR:FATj CREATURE:GIANT_BEAR_POLAR:TALLOWjCREATURE:WOLVERINE:FATjCREATURE:WOLVERINE:TALLOWjCREATURE:WOLVERINE_MAN:FATjCREATURE:WOLVERINE_MAN:TALLOWjCREATURE:GIANT_WOLVERINE:FATjCREATURE:GIANT_WOLVERINE:TALLOWjCREATURE:CHINCHILLA:FATjCREATURE:CHINCHILLA:TALLOWjCREATURE:CHINCHILLA_MAN:FATjCREATURE:CHINCHILLA_MAN:TALLOWjCREATURE:GIANT_CHINCHILLA:FATj CREATURE:GIANT_CHINCHILLA:TALLOWjCREATURE:FLOATING_GUTS:FATjCREATURE:FLOATING_GUTS:TALLOWjCREATURE:DRUNIAN:FATjCREATURE:DRUNIAN:TALLOWjCREATURE:CREEPING_EYE:FATjCREATURE:CREEPING_EYE:TALLOWj#CREATURE:VORACIOUS_CAVE_CRAWLER:FATj&CREATURE:VORACIOUS_CAVE_CRAWLER:TALLOWjCREATURE:BLIND_CAVE_OGRE:FATjCREATURE:BLIND_CAVE_OGRE:TALLOWjCREATURE:CAP_HOPPER:FATjCREATURE:CAP_HOPPER:TALLOWjCREATURE:MAGMA_CRAB:FATjCREATURE:MAGMA_CRAB:TALLOWjCREATURE:CRUNDLE:FATjCREATURE:CRUNDLE:TALLOWjCREATURE:HUNGRY_HEAD:FATjCREATURE:HUNGRY_HEAD:TALLOWjCREATURE:ELK_BIRD:FATjCREATURE:ELK_BIRD:TALLOWjCREATURE:HELMET_SNAKE:FATjCREATURE:HELMET_SNAKE:TALLOWjCREATURE:GREEN_DEVOURER:FATjCREATURE:GREEN_DEVOURER:TALLOWjCREATURE:RUTHERER:FATjCREATURE:RUTHERER:TALLOWjCREATURE:CREEPY_CRAWLER:FATjCREATURE:CREEPY_CRAWLER:TALLOWjCREATURE:DRALTHA:FATjCREATURE:DRALTHA:TALLOWjCREATURE:GIANT_EARTHWORM:FATjCREATURE:GIANT_EARTHWORM:TALLOWjCREATURE:BUGBAT:FATjCREATURE:BUGBAT:TALLOWjCREATURE:MANERA:FATjCREATURE:MANERA:TALLOWjCREATURE:MOLEMARIAN:FATjCREATURE:MOLEMARIAN:TALLOWjCREATURE:JABBERER:FATjCREATURE:JABBERER:TALLOWjCREATURE:POND_GRABBER:FATjCREATURE:POND_GRABBER:TALLOWjCREATURE:BLIND_CAVE_BEAR:FATjCREATURE:BLIND_CAVE_BEAR:TALLOWjCREATURE:CAVE_DRAGON:FATjCREATURE:CAVE_DRAGON:TALLOWjCREATURE:REACHER:FATjCREATURE:REACHER:TALLOWjCREATURE:GORLAK:FATjCREATURE:GORLAK:TALLOWjCREATURE:OCTOPUS:FATjCREATURE:OCTOPUS:TALLOWjCREATURE:OCTOPUS_MAN:FATjCREATURE:OCTOPUS_MAN:TALLOWjCREATURE:GIANT_OCTOPUS:FATjCREATURE:GIANT_OCTOPUS:TALLOWjCREATURE:CRAB:FATjCREATURE:CRAB:TALLOWjCREATURE:CRAB_MAN:FATjCREATURE:CRAB_MAN:TALLOWjCREATURE:GIANT_CRAB:FATjCREATURE:GIANT_CRAB:TALLOWjCREATURE:LEOPARD_SEAL:FATjCREATURE:LEOPARD_SEAL:TALLOWjCREATURE:LEOPARD_SEAL_MAN:FATj CREATURE:LEOPARD_SEAL_MAN:TALLOWjCREATURE:GIANT_LEOPARD_SEAL:FATj"CREATURE:GIANT_LEOPARD_SEAL:TALLOWjCREATURE:CUTTLEFISH:FATjCREATURE:CUTTLEFISH:TALLOWjCREATURE:CUTTLEFISH_MAN:FATjCREATURE:CUTTLEFISH_MAN:TALLOWjCREATURE:GIANT_CUTTLEFISH:FATj CREATURE:GIANT_CUTTLEFISH:TALLOWjCREATURE:ORCA:FATjCREATURE:ORCA:TALLOWjCREATURE:ORCA_MAN:FATjCREATURE:ORCA_MAN:TALLOWjCREATURE:GIANT_ORCA:FATjCREATURE:GIANT_ORCA:TALLOWjCREATURE:HORSESHOE_CRAB:FATjCREATURE:HORSESHOE_CRAB:TALLOWjCREATURE:HORSESHOE_CRAB_MAN:FATj"CREATURE:HORSESHOE_CRAB_MAN:TALLOWj!CREATURE:GIANT_HORSESHOE_CRAB:FATj$CREATURE:GIANT_HORSESHOE_CRAB:TALLOWjCREATURE:SPERM_WHALE:FATjCREATURE:SPERM_WHALE:TALLOWjCREATURE:SPERM_WHALE_MAN:FATjCREATURE:SPERM_WHALE_MAN:TALLOWjCREATURE:GIANT_SPERM_WHALE:FATj!CREATURE:GIANT_SPERM_WHALE:TALLOWjCREATURE:ELEPHANT_SEAL:FATjCREATURE:ELEPHANT_SEAL:TALLOWjCREATURE:ELEPHANT_SEAL_MAN:FATj!CREATURE:ELEPHANT_SEAL_MAN:TALLOWj CREATURE:GIANT_ELEPHANT_SEAL:FATj#CREATURE:GIANT_ELEPHANT_SEAL:TALLOWjCREATURE:HARP_SEAL:FATjCREATURE:HARP_SEAL:TALLOWjCREATURE:HARP_SEAL_MAN:FATjCREATURE:HARP_SEAL_MAN:TALLOWjCREATURE:GIANT_HARP_SEAL:FATjCREATURE:GIANT_HARP_SEAL:TALLOWjCREATURE:NAUTILUS:FATjCREATURE:NAUTILUS:TALLOWjCREATURE:NAUTILUS_MAN:FATjCREATURE:NAUTILUS_MAN:TALLOWjCREATURE:GIANT_NAUTILUS:FATjCREATURE:GIANT_NAUTILUS:TALLOWjCREATURE:FOXSQUIRREL:FATjCREATURE:FOXSQUIRREL:TALLOWjCREATURE:MOGHOPPER:FATjCREATURE:MOGHOPPER:TALLOWjCREATURE:RAT_DEMON:FATjCREATURE:RAT_DEMON:TALLOWjCREATURE:WAMBLER_FLUFFY:TALLOWjCREATURE:WAMBLER_FLUFFY:FATj$CREATURE:LIZARD_RHINO_TWO_LEGGED:FATj'CREATURE:LIZARD_RHINO_TWO_LEGGED:TALLOWjCREATURE:WORM_KNUCKLE:FATjCREATURE:WORM_KNUCKLE:TALLOWjCREATURE:SPIDER_PHANTOM:FATjCREATURE:SPIDER_PHANTOM:TALLOWjCREATURE:FLY_ACORN:FATjCREATURE:FLY_ACORN:TALLOWjCREATURE:GNAT_BLOOD:FATjCREATURE:GNAT_BLOOD:TALLOWjCREATURE:LIZARD:FATjCREATURE:LIZARD:TALLOWjCREATURE:LIZARD_MAN:FATjCREATURE:LIZARD_MAN:TALLOWjCREATURE:GIANT_LIZARD:FATjCREATURE:GIANT_LIZARD:TALLOWjCREATURE:SKINK:FATjCREATURE:SKINK:TALLOWjCREATURE:SKINK_MAN:FATjCREATURE:SKINK_MAN:TALLOWjCREATURE:GIANT_SKINK:FATjCREATURE:GIANT_SKINK:TALLOWjCREATURE:CHAMELEON:FATjCREATURE:CHAMELEON:TALLOWjCREATURE:CHAMELEON_MAN:FATjCREATURE:CHAMELEON_MAN:TALLOWjCREATURE:GIANT_CHAMELEON:FATjCREATURE:GIANT_CHAMELEON:TALLOWjCREATURE:ANOLE:FATjCREATURE:ANOLE:TALLOWjCREATURE:ANOLE_MAN:FATjCREATURE:ANOLE_MAN:TALLOWjCREATURE:GIANT_ANOLE:FATjCREATURE:GIANT_ANOLE:TALLOWjCREATURE:IGUANA:FATjCREATURE:IGUANA:TALLOWjCREATURE:IGUANA_MAN:FATjCREATURE:IGUANA_MAN:TALLOWjCREATURE:GIANT_IGUANA:FATjCREATURE:GIANT_IGUANA:TALLOWjCREATURE:RIVER OTTER:FATjCREATURE:RIVER OTTER:TALLOWjCREATURE:SEA OTTER:FATjCREATURE:SEA OTTER:TALLOWjCREATURE:OTTER_MAN:FATjCREATURE:OTTER_MAN:TALLOWjCREATURE:GIANT_OTTER:FATjCREATURE:GIANT_OTTER:TALLOWjCREATURE:SNAPPING TURTLE:FATjCREATURE:SNAPPING TURTLE:TALLOWj&CREATURE:ALLIGATOR SNAPPING TURTLE:FATj)CREATURE:ALLIGATOR SNAPPING TURTLE:TALLOWj CREATURE:SNAPPING_TURTLE_MAN:FATj#CREATURE:SNAPPING_TURTLE_MAN:TALLOWj"CREATURE:GIANT_SNAPPING_TURTLE:FATj%CREATURE:GIANT_SNAPPING_TURTLE:TALLOWjCREATURE:BEAVER:FATjCREATURE:BEAVER:TALLOWjCREATURE:BEAVER_MAN:FATjCREATURE:BEAVER_MAN:TALLOWjCREATURE:GIANT_BEAVER:FATjCREATURE:GIANT_BEAVER:TALLOWjCREATURE:LEECH:FATjCREATURE:LEECH:TALLOWjCREATURE:LEECH_MAN:FATjCREATURE:LEECH_MAN:TALLOWjCREATURE:GIANT_LEECH:FATjCREATURE:GIANT_LEECH:TALLOWjCREATURE:AXOLOTL:FATjCREATURE:AXOLOTL:TALLOWjCREATURE:AXOLOTL_MAN:FATjCREATURE:AXOLOTL_MAN:TALLOWjCREATURE:GIANT_AXOLOTL:FATjCREATURE:GIANT_AXOLOTL:TALLOWjCREATURE:MINK:FATjCREATURE:MINK:TALLOWjCREATURE:MINK_MAN:FATjCREATURE:MINK_MAN:TALLOWjCREATURE:GIANT_MINK:FATjCREATURE:GIANT_MINK:TALLOWjCREATURE:POND_TURTLE:FATjCREATURE:POND_TURTLE:TALLOWjCREATURE:POND_TURTLE_MAN:FATjCREATURE:POND_TURTLE_MAN:TALLOWjCREATURE:GIANT_POND_TURTLE:FATj!CREATURE:GIANT_POND_TURTLE:TALLOWjCREATURE:RAT:FATjCREATURE:RAT:TALLOWjCREATURE:RAT_MAN:FATjCREATURE:RAT_MAN:TALLOWjCREATURE:SQUIRREL_GRAY:FATjCREATURE:SQUIRREL_GRAY:TALLOWjCREATURE:SQUIRREL_GRAY_MAN:FATj!CREATURE:SQUIRREL_GRAY_MAN:TALLOWj CREATURE:GIANT_SQUIRREL_GRAY:FATj#CREATURE:GIANT_SQUIRREL_GRAY:TALLOWjCREATURE:SQUIRREL_RED:FATjCREATURE:SQUIRREL_RED:TALLOWjCREATURE:SQUIRREL_RED_MAN:FATj CREATURE:SQUIRREL_RED_MAN:TALLOWjCREATURE:GIANT_SQUIRREL_RED:FATj"CREATURE:GIANT_SQUIRREL_RED:TALLOWjCREATURE:CHIPMUNK:FATjCREATURE:CHIPMUNK:TALLOWjCREATURE:CHIPMUNK_MAN:FATjCREATURE:CHIPMUNK_MAN:TALLOWjCREATURE:GIANT_CHIPMUNK:FATjCREATURE:GIANT_CHIPMUNK:TALLOWjCREATURE:HAMSTER:FATjCREATURE:HAMSTER:TALLOWjCREATURE:HAMSTER_MAN:FATjCREATURE:HAMSTER_MAN:TALLOWjCREATURE:GIANT_HAMSTER:FATjCREATURE:GIANT_HAMSTER:TALLOWjCREATURE:HEDGEHOG:FATjCREATURE:HEDGEHOG:TALLOWjCREATURE:HEDGEHOG_MAN:FATjCREATURE:HEDGEHOG_MAN:TALLOWjCREATURE:GIANT_HEDGEHOG:FATjCREATURE:GIANT_HEDGEHOG:TALLOWjCREATURE:SQUIRREL_FLYING:FATjCREATURE:SQUIRREL_FLYING:TALLOWj CREATURE:FLYING_SQUIRREL_MAN:FATj#CREATURE:FLYING_SQUIRREL_MAN:TALLOWj"CREATURE:GIANT_FLYING_SQUIRREL:FATj%CREATURE:GIANT_FLYING_SQUIRREL:TALLOWjCREATURE:MUSSEL:FATjCREATURE:MUSSEL:TALLOWjCREATURE:OYSTER:FATjCREATURE:OYSTER:TALLOWjCREATURE:FISH_SALMON:FATjCREATURE:FISH_SALMON:TALLOWjCREATURE:FISH_CLOWNFISH:FATjCREATURE:FISH_CLOWNFISH:TALLOWjCREATURE:FISH_HAGFISH:FATjCREATURE:FISH_HAGFISH:TALLOWjCREATURE:FISH_LAMPREY_BROOK:FATj"CREATURE:FISH_LAMPREY_BROOK:TALLOWjCREATURE:FISH_RAY_BAT:FATjCREATURE:FISH_RAY_BAT:TALLOWjCREATURE:FISH_RAY_THORNBACK:FATj"CREATURE:FISH_RAY_THORNBACK:TALLOWj!CREATURE:FISH_RATFISH_SPOTTED:FATj$CREATURE:FISH_RATFISH_SPOTTED:TALLOWjCREATURE:FISH_HERRING:FATjCREATURE:FISH_HERRING:TALLOWjCREATURE:FISH_SHAD:FATjCREATURE:FISH_SHAD:TALLOWjCREATURE:FISH_ANCHOVY:FATjCREATURE:FISH_ANCHOVY:TALLOWj!CREATURE:FISH_TROUT_STEELHEAD:FATj$CREATURE:FISH_TROUT_STEELHEAD:TALLOWjCREATURE:FISH_HAKE:FATjCREATURE:FISH_HAKE:TALLOWjCREATURE:FISH_SEAHORSE:FATjCREATURE:FISH_SEAHORSE:TALLOWjCREATURE:FISH_GLASSEYE:FATjCREATURE:FISH_GLASSEYE:TALLOWj&CREATURE:FISH_PUFFER_WHITE_SPOTTED:FATj)CREATURE:FISH_PUFFER_WHITE_SPOTTED:TALLOWjCREATURE:FISH_SOLE:FATjCREATURE:FISH_SOLE:TALLOWjCREATURE:FISH_FLOUNDER:FATjCREATURE:FISH_FLOUNDER:TALLOWjCREATURE:FISH_MACKEREL:FATjCREATURE:FISH_MACKEREL:TALLOWj!CREATURE:JELLYFISH_SEA_NETTLE:FATj$CREATURE:JELLYFISH_SEA_NETTLE:TALLOWjCREATURE:SQUID:FATjCREATURE:SQUID:TALLOWjCREATURE:SQUID MAN:FATjCREATURE:SQUID MAN:TALLOWjCREATURE:GIGANTIC SQUID:FATjCREATURE:GIGANTIC SQUID:TALLOWjCREATURE:FISH_LUNGFISH:FATjCREATURE:FISH_LUNGFISH:TALLOWjCREATURE:FISH_LOACH_CLOWN:FATj CREATURE:FISH_LOACH_CLOWN:TALLOWj CREATURE:FISH_BULLHEAD_BROWN:FATj#CREATURE:FISH_BULLHEAD_BROWN:TALLOWj!CREATURE:FISH_BULLHEAD_YELLOW:FATj$CREATURE:FISH_BULLHEAD_YELLOW:TALLOWj CREATURE:FISH_BULLHEAD_BLACK:FATj#CREATURE:FISH_BULLHEAD_BLACK:TALLOWj"CREATURE:FISH_KNIFEFISH_BANDED:FATj%CREATURE:FISH_KNIFEFISH_BANDED:TALLOWjCREATURE:FISH_CHAR:FATjCREATURE:FISH_CHAR:TALLOWjCREATURE:FISH_TROUT_RAINBOW:FATj"CREATURE:FISH_TROUT_RAINBOW:TALLOWjCREATURE:FISH_MOLLY_SAILFIN:FATj"CREATURE:FISH_MOLLY_SAILFIN:TALLOWjCREATURE:FISH_GUPPY:FATjCREATURE:FISH_GUPPY:TALLOWjCREATURE:FISH_PERCH:FATjCREATURE:FISH_PERCH:TALLOWjCREATURE:DWARF:FATjCREATURE:DWARF:TALLOWjCREATURE:HUMAN:FATjCREATURE:HUMAN:TALLOWjCREATURE:ELF:FATjCREATURE:ELF:TALLOWjCREATURE:GOBLIN:FATjCREATURE:GOBLIN:TALLOWjCREATURE:KOBOLD:FATjCREATURE:KOBOLD:TALLOWjCREATURE:GREMLIN:FATjCREATURE:GREMLIN:TALLOWjCREATURE:TROLL:FATjCREATURE:TROLL:TALLOWjCREATURE:OGRE:FATjCREATURE:OGRE:TALLOWjCREATURE:UNICORN:FATjCREATURE:UNICORN:TALLOWjCREATURE:DRAGON:FATjCREATURE:DRAGON:TALLOWjCREATURE:SATYR:FATjCREATURE:SATYR:TALLOWjCREATURE:GIANT:FATjCREATURE:GIANT:TALLOWjCREATURE:CYCLOPS:FATjCREATURE:CYCLOPS:TALLOWjCREATURE:ETTIN:FATjCREATURE:ETTIN:TALLOWjCREATURE:MINOTAUR:FATjCREATURE:MINOTAUR:TALLOWjCREATURE:YETI:FATjCREATURE:YETI:TALLOWjCREATURE:SASQUATCH:FATjCREATURE:SASQUATCH:TALLOWjCREATURE:BLIZZARD_MAN:FATjCREATURE:BLIZZARD_MAN:TALLOWjCREATURE:WOLF_ICE:FATjCREATURE:WOLF_ICE:TALLOWjCREATURE:FAIRY:FATjCREATURE:FAIRY:TALLOWjCREATURE:PIXIE:FATjCREATURE:PIXIE:TALLOWjCREATURE:BEAK_DOG:FATjCREATURE:BEAK_DOG:TALLOWjCREATURE:GRIMELING:FATjCREATURE:GRIMELING:TALLOWjCREATURE:BLENDEC_FOUL:FATjCREATURE:BLENDEC_FOUL:TALLOWjCREATURE:STRANGLER:FATjCREATURE:STRANGLER:TALLOWjCREATURE:NIGHTWING:FATjCREATURE:NIGHTWING:TALLOWjCREATURE:HARPY:FATjCREATURE:HARPY:TALLOWjCREATURE:HYDRA:FATjCREATURE:HYDRA:TALLOWjCREATURE:MERPERSON:FATjCREATURE:MERPERSON:TALLOWjCREATURE:SEA_SERPENT:FATjCREATURE:SEA_SERPENT:TALLOWjCREATURE:SEA_MONSTER:FATjCREATURE:SEA_MONSTER:TALLOWjCREATURE:BIRD_ROC:FATjCREATURE:BIRD_ROC:TALLOWjCREATURE:CROCODILE_CAVE:FATjCREATURE:CROCODILE_CAVE:TALLOWjCREATURE:TOAD_GIANT_CAVE:FATjCREATURE:TOAD_GIANT_CAVE:TALLOWjCREATURE:OLM_GIANT:FATjCREATURE:OLM_GIANT:TALLOWjCREATURE:BAT_GIANT:FATjCREATURE:BAT_GIANT:TALLOWjCREATURE:RAT_GIANT:FATjCREATURE:RAT_GIANT:TALLOWjCREATURE:RAT_LARGE:FATjCREATURE:RAT_LARGE:TALLOWjCREATURE:MOLE_DOG_NAKED:FATjCREATURE:MOLE_DOG_NAKED:TALLOWjCREATURE:TROGLODYTE:FATjCREATURE:TROGLODYTE:TALLOWjCREATURE:MOLE_GIANT:FATjCREATURE:MOLE_GIANT:TALLOWjCREATURE:IMP_FIRE:FATjCREATURE:IMP_FIRE:TALLOWjCREATURE:SPIDER_CAVE_GIANT:FATj!CREATURE:SPIDER_CAVE_GIANT:TALLOWjCREATURE:SPIDER_CAVE:FATjCREATURE:SPIDER_CAVE:TALLOWjCREATURE:FISH_CAVE:FATjCREATURE:FISH_CAVE:TALLOWjCREATURE:CAVE_FISH_MAN:FATjCREATURE:CAVE_FISH_MAN:TALLOWjCREATURE:LOBSTER_CAVE:FATjCREATURE:LOBSTER_CAVE:TALLOWjCREATURE:OLM:FATjCREATURE:OLM:TALLOWjCREATURE:OLM_MAN:FATjCREATURE:OLM_MAN:TALLOWjCREATURE:BAT:FATjCREATURE:BAT:TALLOWjCREATURE:BAT_MAN:FATjCREATURE:BAT_MAN:TALLOWjCREATURE:MAGGOT_PURRING:FATjCREATURE:MAGGOT_PURRING:TALLOWjCREATURE:BIRD_SWALLOW_CAVE:FATj!CREATURE:BIRD_SWALLOW_CAVE:TALLOWjCREATURE:CAVE_SWALLOW_MAN:FATj CREATURE:CAVE_SWALLOW_MAN:TALLOWj$CREATURE:BIRD_SWALLOW_CAVE_GIANT:FATj'CREATURE:BIRD_SWALLOW_CAVE_GIANT:TALLOWjCREATURE:AMPHIBIAN_MAN:FATjCREATURE:AMPHIBIAN_MAN:TALLOWjCREATURE:REPTILE_MAN:FATjCREATURE:REPTILE_MAN:TALLOWjCREATURE:SERPENT_MAN:FATjCREATURE:SERPENT_MAN:TALLOWjCREATURE:ANT_MAN:FATjCREATURE:ANT_MAN:TALLOWjCREATURE:RODENT MAN:FATjCREATURE:RODENT MAN:TALLOWjCREATURE:WILD_BOAR:FATjCREATURE:WILD_BOAR:TALLOWjCREATURE:WILD_BOAR_MAN:FATjCREATURE:WILD_BOAR_MAN:TALLOWjCREATURE:GIANT_WILD_BOAR:FATjCREATURE:GIANT_WILD_BOAR:TALLOWjCREATURE:COYOTE:FATjCREATURE:COYOTE:TALLOWjCREATURE:COYOTE_MAN:FATjCREATURE:COYOTE_MAN:TALLOWjCREATURE:GIANT_COYOTE:FATjCREATURE:GIANT_COYOTE:TALLOWjCREATURE:KANGAROO:FATjCREATURE:KANGAROO:TALLOWjCREATURE:KANGAROO_MAN:FATjCREATURE:KANGAROO_MAN:TALLOWjCREATURE:GIANT_KANGAROO:FATjCREATURE:GIANT_KANGAROO:TALLOWjCREATURE:KOALA:FATjCREATURE:KOALA:TALLOWjCREATURE:KOALA_MAN:FATjCREATURE:KOALA_MAN:TALLOWjCREATURE:GIANT_KOALA:FATjCREATURE:GIANT_KOALA:TALLOWjCREATURE:ADDER:FATjCREATURE:ADDER:TALLOWjCREATURE:ADDER_MAN:FATjCREATURE:ADDER_MAN:TALLOWjCREATURE:GIANT_ADDER:FATjCREATURE:GIANT_ADDER:TALLOWjCREATURE:ECHIDNA:FATjCREATURE:ECHIDNA:TALLOWjCREATURE:ECHIDNA_MAN:FATjCREATURE:ECHIDNA_MAN:TALLOWjCREATURE:GIANT_ECHIDNA:FATjCREATURE:GIANT_ECHIDNA:TALLOWjCREATURE:PORCUPINE:FATjCREATURE:PORCUPINE:TALLOWjCREATURE:PORCUPINE_MAN:FATjCREATURE:PORCUPINE_MAN:TALLOWjCREATURE:GIANT_PORCUPINE:FATjCREATURE:GIANT_PORCUPINE:TALLOWjCREATURE:KINGSNAKE:FATjCREATURE:KINGSNAKE:TALLOWjCREATURE:KINGSNAKE_MAN:FATjCREATURE:KINGSNAKE_MAN:TALLOWjCREATURE:GIANT_KINGSNAKE:FATjCREATURE:GIANT_KINGSNAKE:TALLOWjCREATURE:GRAY_LANGUR:FATjCREATURE:GRAY_LANGUR:TALLOWjCREATURE:GRAY_LANGUR_MAN:FATjCREATURE:GRAY_LANGUR_MAN:TALLOWjCREATURE:GIANT_GRAY_LANGUR:FATj!CREATURE:GIANT_GRAY_LANGUR:TALLOWjCREATURE:BOBCAT:FATjCREATURE:BOBCAT:TALLOWjCREATURE:BOBCAT_MAN:FATjCREATURE:BOBCAT_MAN:TALLOWjCREATURE:GIANT_BOBCAT:FATjCREATURE:GIANT_BOBCAT:TALLOWjCREATURE:SKUNK:FATjCREATURE:SKUNK:TALLOWjCREATURE:SKUNK_MAN:FATjCREATURE:SKUNK_MAN:TALLOWjCREATURE:GIANT_SKUNK:FATjCREATURE:GIANT_SKUNK:TALLOWjCREATURE:GREEN_TREE_FROG:FATjCREATURE:GREEN_TREE_FROG:TALLOWj CREATURE:GREEN_TREE_FROG_MAN:FATj#CREATURE:GREEN_TREE_FROG_MAN:TALLOWj"CREATURE:GIANT_GREEN_TREE_FROG:FATj%CREATURE:GIANT_GREEN_TREE_FROG:TALLOWjCREATURE:HARE:FATjCREATURE:HARE:TALLOWjCREATURE:HARE_MAN:FATjCREATURE:HARE_MAN:TALLOWjCREATURE:GIANT_HARE:FATjCREATURE:GIANT_HARE:TALLOWjCREATURE:RATTLESNAKE:FATjCREATURE:RATTLESNAKE:TALLOWjCREATURE:RATTLESNAKE_MAN:FATjCREATURE:RATTLESNAKE_MAN:TALLOWjCREATURE:GIANT_RATTLESNAKE:FATj!CREATURE:GIANT_RATTLESNAKE:TALLOWjCREATURE:WEASEL:FATjCREATURE:WEASEL:TALLOWjCREATURE:WEASEL_MAN:FATjCREATURE:WEASEL_MAN:TALLOWjCREATURE:GIANT_WEASEL:FATjCREATURE:GIANT_WEASEL:TALLOWjCREATURE:COPPERHEAD_SNAKE:FATj CREATURE:COPPERHEAD_SNAKE:TALLOWj!CREATURE:COPPERHEAD_SNAKE_MAN:FATj$CREATURE:COPPERHEAD_SNAKE_MAN:TALLOWj#CREATURE:GIANT_COPPERHEAD_SNAKE:FATj&CREATURE:GIANT_COPPERHEAD_SNAKE:TALLOWjCREATURE:IBEX:FATjCREATURE:IBEX:TALLOWjCREATURE:IBEX_MAN:FATjCREATURE:IBEX_MAN:TALLOWjCREATURE:GIANT_IBEX:FATjCREATURE:GIANT_IBEX:TALLOWjCREATURE:WOMBAT:FATjCREATURE:WOMBAT:TALLOWjCREATURE:WOMBAT_MAN:FATjCREATURE:WOMBAT_MAN:TALLOWjCREATURE:GIANT_WOMBAT:FATjCREATURE:GIANT_WOMBAT:TALLOWjCREATURE:DINGO:FATjCREATURE:DINGO:TALLOWjCREATURE:DINGO_MAN:FATjCREATURE:DINGO_MAN:TALLOWjCREATURE:GIANT_DINGO:FATjCREATURE:GIANT_DINGO:TALLOWjCREATURE:COATI:FATjCREATURE:COATI:TALLOWjCREATURE:COATI_MAN:FATjCREATURE:COATI_MAN:TALLOWjCREATURE:GIANT_COATI:FATjCREATURE:GIANT_COATI:TALLOWjCREATURE:OPOSSUM:FATjCREATURE:OPOSSUM:TALLOWjCREATURE:OPOSSUM_MAN:FATjCREATURE:OPOSSUM_MAN:TALLOWjCREATURE:GIANT_OPOSSUM:FATjCREATURE:GIANT_OPOSSUM:TALLOWjCREATURE:MONGOOSE:FATjCREATURE:MONGOOSE:TALLOWjCREATURE:MONGOOSE_MAN:FATjCREATURE:MONGOOSE_MAN:TALLOWjCREATURE:GIANT_MONGOOSE:FATjCREATURE:GIANT_MONGOOSE:TALLOWjCREATURE:HYENA:FATjCREATURE:HYENA:TALLOWjCREATURE:HYENA_MAN:FATjCREATURE:HYENA_MAN:TALLOWjCREATURE:GIANT_HYENA:FATjCREATURE:GIANT_HYENA:TALLOWjCREATURE:ANACONDA:FATjCREATURE:ANACONDA:TALLOWjCREATURE:ANACONDA_MAN:FATjCREATURE:ANACONDA_MAN:TALLOWjCREATURE:GIANT_ANACONDA:FATjCREATURE:GIANT_ANACONDA:TALLOWjCREATURE:MONITOR_LIZARD:FATjCREATURE:MONITOR_LIZARD:TALLOWjCREATURE:MONITOR_LIZARD_MAN:FATj"CREATURE:MONITOR_LIZARD_MAN:TALLOWj!CREATURE:GIANT_MONITOR_LIZARD:FATj$CREATURE:GIANT_MONITOR_LIZARD:TALLOWjCREATURE:KING_COBRA:FATjCREATURE:KING_COBRA:TALLOWjCREATURE:KING_COBRA_MAN:FATjCREATURE:KING_COBRA_MAN:TALLOWjCREATURE:GIANT_KING_COBRA:FATj CREATURE:GIANT_KING_COBRA:TALLOWjCREATURE:OCELOT:FATjCREATURE:OCELOT:TALLOWjCREATURE:OCELOT_MAN:FATjCREATURE:OCELOT_MAN:TALLOWjCREATURE:GIANT_OCELOT:FATjCREATURE:GIANT_OCELOT:TALLOWjCREATURE:JACKAL:FATjCREATURE:JACKAL:TALLOWjCREATURE:JACKAL_MAN:FATjCREATURE:JACKAL_MAN:TALLOWjCREATURE:GIANT_JACKAL:FATjCREATURE:GIANT_JACKAL:TALLOWjCREATURE:CAPUCHIN:FATjCREATURE:CAPUCHIN:TALLOWjCREATURE:CAPUCHIN_MAN:FATjCREATURE:CAPUCHIN_MAN:TALLOWjCREATURE:GIANT_CAPUCHIN:FATjCREATURE:GIANT_CAPUCHIN:TALLOWjCREATURE:SLOTH:FATjCREATURE:SLOTH:TALLOWjCREATURE:SLOTH_MAN:FATjCREATURE:SLOTH_MAN:TALLOWjCREATURE:GIANT_SLOTH:FATjCREATURE:GIANT_SLOTH:TALLOWjCREATURE:SPIDER_MONKEY:FATjCREATURE:SPIDER_MONKEY:TALLOWjCREATURE:SPIDER_MONKEY_MAN:FATj!CREATURE:SPIDER_MONKEY_MAN:TALLOWj CREATURE:GIANT_SPIDER_MONKEY:FATj#CREATURE:GIANT_SPIDER_MONKEY:TALLOWjCREATURE:PANGOLIN:FATjCREATURE:PANGOLIN:TALLOWjCREATURE:PANGOLIN_MAN:FATjCREATURE:PANGOLIN_MAN:TALLOWjCREATURE:GIANT_PANGOLIN:FATjCREATURE:GIANT_PANGOLIN:TALLOWjCREATURE:BLACK_MAMBA:FATjCREATURE:BLACK_MAMBA:TALLOWjCREATURE:BLACK_MAMBA_MAN:FATjCREATURE:BLACK_MAMBA_MAN:TALLOWjCREATURE:GIANT_BLACK_MAMBA:FATj!CREATURE:GIANT_BLACK_MAMBA:TALLOWjCREATURE:BEAR_SLOTH:FATjCREATURE:BEAR_SLOTH:TALLOWjCREATURE:SLOTH_BEAR_MAN:FATjCREATURE:SLOTH_BEAR_MAN:TALLOWjCREATURE:GIANT_SLOTH_BEAR:FATj CREATURE:GIANT_SLOTH_BEAR:TALLOWjCREATURE:AYE-AYE:FATjCREATURE:AYE-AYE:TALLOWjCREATURE:AYE-AYE_MAN:FATjCREATURE:AYE-AYE_MAN:TALLOWjCREATURE:GIANT_AYE-AYE:FATjCREATURE:GIANT_AYE-AYE:TALLOWjCREATURE:BUSHMASTER:FATjCREATURE:BUSHMASTER:TALLOWjCREATURE:BUSHMASTER_MAN:FATjCREATURE:BUSHMASTER_MAN:TALLOWjCREATURE:GIANT_BUSHMASTER:FATj CREATURE:GIANT_BUSHMASTER:TALLOWjCREATURE:PYTHON:FATjCREATURE:PYTHON:TALLOWjCREATURE:PYTHON_MAN:FATjCREATURE:PYTHON_MAN:TALLOWjCREATURE:GIANT_PYTHON:FATjCREATURE:GIANT_PYTHON:TALLOWjCREATURE:TAPIR:FATjCREATURE:TAPIR:TALLOWjCREATURE:TAPIR_MAN:FATjCREATURE:TAPIR_MAN:TALLOWjCREATURE:GIANT_TAPIR:FATjCREATURE:GIANT_TAPIR:TALLOWjCREATURE:IMPALA:FATjCREATURE:IMPALA:TALLOWjCREATURE:IMPALA_MAN:FATjCREATURE:IMPALA_MAN:TALLOWjCREATURE:GIANT_IMPALA:FATjCREATURE:GIANT_IMPALA:TALLOWjCREATURE:AARDVARK:FATjCREATURE:AARDVARK:TALLOWjCREATURE:AARDVARK_MAN:FATjCREATURE:AARDVARK_MAN:TALLOWjCREATURE:GIANT_AARDVARK:FATjCREATURE:GIANT_AARDVARK:TALLOWjCREATURE:LION_TAMARIN:FATjCREATURE:LION_TAMARIN:TALLOWjCREATURE:LION_TAMARIN_MAN:FATj CREATURE:LION_TAMARIN_MAN:TALLOWjCREATURE:GIANT_LION_TAMARIN:FATj"CREATURE:GIANT_LION_TAMARIN:TALLOWjCREATURE:STOAT:FATjCREATURE:STOAT:TALLOWjCREATURE:STOAT_MAN:FATjCREATURE:STOAT_MAN:TALLOWjCREATURE:GIANT_STOAT:FATjCREATURE:GIANT_STOAT:TALLOWjCREATURE:LYNX:FATjCREATURE:LYNX:TALLOWjCREATURE:LYNX_MAN:FATjCREATURE:LYNX_MAN:TALLOWjCREATURE:GIANT_LYNX:FATjCREATURE:GIANT_LYNX:TALLOWjCREATURE:GNOLL:FATjCREATURE:GNOLL:TALLOWjCREATURE:NAGA:FATjCREATURE:NAGA:TALLOWjCREATURE:FORGOTTEN_BEAST_2:FATj!CREATURE:FORGOTTEN_BEAST_2:TALLOWjCREATURE:FORGOTTEN_BEAST_4:FATj!CREATURE:FORGOTTEN_BEAST_4:TALLOWjCREATURE:FORGOTTEN_BEAST_5:FATj!CREATURE:FORGOTTEN_BEAST_5:TALLOWjCREATURE:FORGOTTEN_BEAST_6:FATj!CREATURE:FORGOTTEN_BEAST_6:TALLOWjCREATURE:FORGOTTEN_BEAST_7:FATj!CREATURE:FORGOTTEN_BEAST_7:TALLOWjCREATURE:FORGOTTEN_BEAST_10:FATj"CREATURE:FORGOTTEN_BEAST_10:TALLOWjCREATURE:FORGOTTEN_BEAST_12:FATj"CREATURE:FORGOTTEN_BEAST_12:TALLOWjCREATURE:FORGOTTEN_BEAST_13:FATj"CREATURE:FORGOTTEN_BEAST_13:TALLOWjCREATURE:FORGOTTEN_BEAST_16:FATj"CREATURE:FORGOTTEN_BEAST_16:TALLOWjCREATURE:FORGOTTEN_BEAST_17:FATj"CREATURE:FORGOTTEN_BEAST_17:TALLOWjCREATURE:FORGOTTEN_BEAST_18:FATj"CREATURE:FORGOTTEN_BEAST_18:TALLOWjCREATURE:FORGOTTEN_BEAST_19:FATj"CREATURE:FORGOTTEN_BEAST_19:TALLOWjCREATURE:FORGOTTEN_BEAST_20:FATj"CREATURE:FORGOTTEN_BEAST_20:TALLOWjCREATURE:FORGOTTEN_BEAST_22:FATj"CREATURE:FORGOTTEN_BEAST_22:TALLOWjCREATURE:FORGOTTEN_BEAST_23:FATj"CREATURE:FORGOTTEN_BEAST_23:TALLOWjCREATURE:FORGOTTEN_BEAST_24:FATj"CREATURE:FORGOTTEN_BEAST_24:TALLOWjCREATURE:FORGOTTEN_BEAST_25:FATj"CREATURE:FORGOTTEN_BEAST_25:TALLOWjCREATURE:FORGOTTEN_BEAST_26:FATj"CREATURE:FORGOTTEN_BEAST_26:TALLOWjCREATURE:FORGOTTEN_BEAST_27:FATj"CREATURE:FORGOTTEN_BEAST_27:TALLOWjCREATURE:FORGOTTEN_BEAST_28:FATj"CREATURE:FORGOTTEN_BEAST_28:TALLOWjCREATURE:FORGOTTEN_BEAST_29:FATj"CREATURE:FORGOTTEN_BEAST_29:TALLOWjCREATURE:FORGOTTEN_BEAST_32:FATj"CREATURE:FORGOTTEN_BEAST_32:TALLOWjCREATURE:FORGOTTEN_BEAST_33:FATj"CREATURE:FORGOTTEN_BEAST_33:TALLOWjCREATURE:FORGOTTEN_BEAST_34:FATj"CREATURE:FORGOTTEN_BEAST_34:TALLOWjCREATURE:FORGOTTEN_BEAST_35:FATj"CREATURE:FORGOTTEN_BEAST_35:TALLOWjCREATURE:FORGOTTEN_BEAST_36:FATj"CREATURE:FORGOTTEN_BEAST_36:TALLOWjCREATURE:FORGOTTEN_BEAST_39:FATj"CREATURE:FORGOTTEN_BEAST_39:TALLOWjCREATURE:FORGOTTEN_BEAST_41:FATj"CREATURE:FORGOTTEN_BEAST_41:TALLOWjCREATURE:FORGOTTEN_BEAST_42:FATj"CREATURE:FORGOTTEN_BEAST_42:TALLOWjCREATURE:FORGOTTEN_BEAST_43:FATj"CREATURE:FORGOTTEN_BEAST_43:TALLOWjCREATURE:FORGOTTEN_BEAST_44:FATj"CREATURE:FORGOTTEN_BEAST_44:TALLOWjCREATURE:FORGOTTEN_BEAST_45:FATj"CREATURE:FORGOTTEN_BEAST_45:TALLOWjCREATURE:FORGOTTEN_BEAST_47:FATj"CREATURE:FORGOTTEN_BEAST_47:TALLOWjCREATURE:FORGOTTEN_BEAST_50:FATj"CREATURE:FORGOTTEN_BEAST_50:TALLOWjCREATURE:FORGOTTEN_BEAST_52:FATj"CREATURE:FORGOTTEN_BEAST_52:TALLOWjCREATURE:FORGOTTEN_BEAST_53:FATj"CREATURE:FORGOTTEN_BEAST_53:TALLOWjCREATURE:FORGOTTEN_BEAST_55:FATj"CREATURE:FORGOTTEN_BEAST_55:TALLOWjCREATURE:FORGOTTEN_BEAST_56:FATj"CREATURE:FORGOTTEN_BEAST_56:TALLOWjCREATURE:FORGOTTEN_BEAST_58:FATj"CREATURE:FORGOTTEN_BEAST_58:TALLOWjCREATURE:FORGOTTEN_BEAST_59:FATj"CREATURE:FORGOTTEN_BEAST_59:TALLOWjCREATURE:FORGOTTEN_BEAST_60:FATj"CREATURE:FORGOTTEN_BEAST_60:TALLOWjCREATURE:FORGOTTEN_BEAST_61:FATj"CREATURE:FORGOTTEN_BEAST_61:TALLOWjCREATURE:FORGOTTEN_BEAST_64:FATj"CREATURE:FORGOTTEN_BEAST_64:TALLOWjCREATURE:FORGOTTEN_BEAST_66:FATj"CREATURE:FORGOTTEN_BEAST_66:TALLOWjCREATURE:FORGOTTEN_BEAST_67:FATj"CREATURE:FORGOTTEN_BEAST_67:TALLOWjCREATURE:FORGOTTEN_BEAST_69:FATj"CREATURE:FORGOTTEN_BEAST_69:TALLOWjCREATURE:FORGOTTEN_BEAST_71:FATj"CREATURE:FORGOTTEN_BEAST_71:TALLOWjCREATURE:FORGOTTEN_BEAST_72:FATj"CREATURE:FORGOTTEN_BEAST_72:TALLOWjCREATURE:FORGOTTEN_BEAST_73:FATj"CREATURE:FORGOTTEN_BEAST_73:TALLOWjCREATURE:FORGOTTEN_BEAST_74:FATj"CREATURE:FORGOTTEN_BEAST_74:TALLOWjCREATURE:FORGOTTEN_BEAST_75:FATj"CREATURE:FORGOTTEN_BEAST_75:TALLOWjCREATURE:FORGOTTEN_BEAST_78:FATj"CREATURE:FORGOTTEN_BEAST_78:TALLOWjCREATURE:FORGOTTEN_BEAST_80:FATj"CREATURE:FORGOTTEN_BEAST_80:TALLOWjCREATURE:FORGOTTEN_BEAST_81:FATj"CREATURE:FORGOTTEN_BEAST_81:TALLOWjCREATURE:FORGOTTEN_BEAST_82:FATj"CREATURE:FORGOTTEN_BEAST_82:TALLOWjCREATURE:FORGOTTEN_BEAST_83:FATj"CREATURE:FORGOTTEN_BEAST_83:TALLOWjCREATURE:FORGOTTEN_BEAST_84:FATj"CREATURE:FORGOTTEN_BEAST_84:TALLOWjCREATURE:FORGOTTEN_BEAST_86:FATj"CREATURE:FORGOTTEN_BEAST_86:TALLOWjCREATURE:FORGOTTEN_BEAST_87:FATj"CREATURE:FORGOTTEN_BEAST_87:TALLOWjCREATURE:FORGOTTEN_BEAST_89:FATj"CREATURE:FORGOTTEN_BEAST_89:TALLOWjCREATURE:FORGOTTEN_BEAST_90:FATj"CREATURE:FORGOTTEN_BEAST_90:TALLOWjCREATURE:FORGOTTEN_BEAST_92:FATj"CREATURE:FORGOTTEN_BEAST_92:TALLOWjCREATURE:FORGOTTEN_BEAST_94:FATj"CREATURE:FORGOTTEN_BEAST_94:TALLOWjCREATURE:FORGOTTEN_BEAST_95:FATj"CREATURE:FORGOTTEN_BEAST_95:TALLOWjCREATURE:FORGOTTEN_BEAST_96:FATj"CREATURE:FORGOTTEN_BEAST_96:TALLOWjCREATURE:FORGOTTEN_BEAST_97:FATj"CREATURE:FORGOTTEN_BEAST_97:TALLOWjCREATURE:FORGOTTEN_BEAST_98:FATj"CREATURE:FORGOTTEN_BEAST_98:TALLOWj CREATURE:FORGOTTEN_BEAST_100:FATj#CREATURE:FORGOTTEN_BEAST_100:TALLOWj CREATURE:FORGOTTEN_BEAST_105:FATj#CREATURE:FORGOTTEN_BEAST_105:TALLOWj CREATURE:FORGOTTEN_BEAST_106:FATj#CREATURE:FORGOTTEN_BEAST_106:TALLOWj CREATURE:FORGOTTEN_BEAST_107:FATj#CREATURE:FORGOTTEN_BEAST_107:TALLOWj CREATURE:FORGOTTEN_BEAST_108:FATj#CREATURE:FORGOTTEN_BEAST_108:TALLOWj CREATURE:FORGOTTEN_BEAST_109:FATj#CREATURE:FORGOTTEN_BEAST_109:TALLOWj CREATURE:FORGOTTEN_BEAST_111:FATj#CREATURE:FORGOTTEN_BEAST_111:TALLOWj CREATURE:FORGOTTEN_BEAST_112:FATj#CREATURE:FORGOTTEN_BEAST_112:TALLOWj CREATURE:FORGOTTEN_BEAST_113:FATj#CREATURE:FORGOTTEN_BEAST_113:TALLOWj CREATURE:FORGOTTEN_BEAST_114:FATj#CREATURE:FORGOTTEN_BEAST_114:TALLOWj CREATURE:FORGOTTEN_BEAST_115:FATj#CREATURE:FORGOTTEN_BEAST_115:TALLOWj CREATURE:FORGOTTEN_BEAST_116:FATj#CREATURE:FORGOTTEN_BEAST_116:TALLOWj CREATURE:FORGOTTEN_BEAST_117:FATj#CREATURE:FORGOTTEN_BEAST_117:TALLOWj CREATURE:FORGOTTEN_BEAST_118:FATj#CREATURE:FORGOTTEN_BEAST_118:TALLOWj CREATURE:FORGOTTEN_BEAST_119:FATj#CREATURE:FORGOTTEN_BEAST_119:TALLOWj CREATURE:FORGOTTEN_BEAST_120:FATj#CREATURE:FORGOTTEN_BEAST_120:TALLOWj CREATURE:FORGOTTEN_BEAST_122:FATj#CREATURE:FORGOTTEN_BEAST_122:TALLOWj CREATURE:FORGOTTEN_BEAST_123:FATj#CREATURE:FORGOTTEN_BEAST_123:TALLOWj CREATURE:FORGOTTEN_BEAST_124:FATj#CREATURE:FORGOTTEN_BEAST_124:TALLOWj CREATURE:FORGOTTEN_BEAST_125:FATj#CREATURE:FORGOTTEN_BEAST_125:TALLOWj CREATURE:FORGOTTEN_BEAST_127:FATj#CREATURE:FORGOTTEN_BEAST_127:TALLOWj CREATURE:FORGOTTEN_BEAST_128:FATj#CREATURE:FORGOTTEN_BEAST_128:TALLOWj CREATURE:FORGOTTEN_BEAST_130:FATj#CREATURE:FORGOTTEN_BEAST_130:TALLOWj CREATURE:FORGOTTEN_BEAST_131:FATj#CREATURE:FORGOTTEN_BEAST_131:TALLOWj CREATURE:FORGOTTEN_BEAST_132:FATj#CREATURE:FORGOTTEN_BEAST_132:TALLOWj CREATURE:FORGOTTEN_BEAST_133:FATj#CREATURE:FORGOTTEN_BEAST_133:TALLOWj CREATURE:FORGOTTEN_BEAST_134:FATj#CREATURE:FORGOTTEN_BEAST_134:TALLOWj CREATURE:FORGOTTEN_BEAST_135:FATj#CREATURE:FORGOTTEN_BEAST_135:TALLOWj CREATURE:FORGOTTEN_BEAST_137:FATj#CREATURE:FORGOTTEN_BEAST_137:TALLOWj CREATURE:FORGOTTEN_BEAST_138:FATj#CREATURE:FORGOTTEN_BEAST_138:TALLOWj CREATURE:FORGOTTEN_BEAST_139:FATj#CREATURE:FORGOTTEN_BEAST_139:TALLOWj CREATURE:FORGOTTEN_BEAST_141:FATj#CREATURE:FORGOTTEN_BEAST_141:TALLOWj CREATURE:FORGOTTEN_BEAST_142:FATj#CREATURE:FORGOTTEN_BEAST_142:TALLOWj CREATURE:FORGOTTEN_BEAST_144:FATj#CREATURE:FORGOTTEN_BEAST_144:TALLOWj CREATURE:FORGOTTEN_BEAST_146:FATj#CREATURE:FORGOTTEN_BEAST_146:TALLOWj CREATURE:FORGOTTEN_BEAST_148:FATj#CREATURE:FORGOTTEN_BEAST_148:TALLOWj CREATURE:FORGOTTEN_BEAST_149:FATj#CREATURE:FORGOTTEN_BEAST_149:TALLOWj CREATURE:FORGOTTEN_BEAST_150:FATj#CREATURE:FORGOTTEN_BEAST_150:TALLOWj CREATURE:FORGOTTEN_BEAST_152:FATj#CREATURE:FORGOTTEN_BEAST_152:TALLOWj CREATURE:FORGOTTEN_BEAST_154:FATj#CREATURE:FORGOTTEN_BEAST_154:TALLOWj CREATURE:FORGOTTEN_BEAST_156:FATj#CREATURE:FORGOTTEN_BEAST_156:TALLOWj CREATURE:FORGOTTEN_BEAST_157:FATj#CREATURE:FORGOTTEN_BEAST_157:TALLOWj CREATURE:FORGOTTEN_BEAST_158:FATj#CREATURE:FORGOTTEN_BEAST_158:TALLOWj CREATURE:FORGOTTEN_BEAST_159:FATj#CREATURE:FORGOTTEN_BEAST_159:TALLOWj CREATURE:FORGOTTEN_BEAST_161:FATj#CREATURE:FORGOTTEN_BEAST_161:TALLOWj CREATURE:FORGOTTEN_BEAST_162:FATj#CREATURE:FORGOTTEN_BEAST_162:TALLOWj CREATURE:FORGOTTEN_BEAST_163:FATj#CREATURE:FORGOTTEN_BEAST_163:TALLOWj CREATURE:FORGOTTEN_BEAST_165:FATj#CREATURE:FORGOTTEN_BEAST_165:TALLOWj CREATURE:FORGOTTEN_BEAST_167:FATj#CREATURE:FORGOTTEN_BEAST_167:TALLOWj CREATURE:FORGOTTEN_BEAST_168:FATj#CREATURE:FORGOTTEN_BEAST_168:TALLOWj CREATURE:FORGOTTEN_BEAST_169:FATj#CREATURE:FORGOTTEN_BEAST_169:TALLOWj CREATURE:FORGOTTEN_BEAST_170:FATj#CREATURE:FORGOTTEN_BEAST_170:TALLOWj CREATURE:FORGOTTEN_BEAST_171:FATj#CREATURE:FORGOTTEN_BEAST_171:TALLOWj CREATURE:FORGOTTEN_BEAST_172:FATj#CREATURE:FORGOTTEN_BEAST_172:TALLOWj CREATURE:FORGOTTEN_BEAST_173:FATj#CREATURE:FORGOTTEN_BEAST_173:TALLOWj CREATURE:FORGOTTEN_BEAST_176:FATj#CREATURE:FORGOTTEN_BEAST_176:TALLOWj CREATURE:FORGOTTEN_BEAST_177:FATj#CREATURE:FORGOTTEN_BEAST_177:TALLOWj CREATURE:FORGOTTEN_BEAST_178:FATj#CREATURE:FORGOTTEN_BEAST_178:TALLOWj CREATURE:FORGOTTEN_BEAST_179:FATj#CREATURE:FORGOTTEN_BEAST_179:TALLOWj CREATURE:FORGOTTEN_BEAST_180:FATj#CREATURE:FORGOTTEN_BEAST_180:TALLOWj CREATURE:FORGOTTEN_BEAST_181:FATj#CREATURE:FORGOTTEN_BEAST_181:TALLOWj CREATURE:FORGOTTEN_BEAST_182:FATj#CREATURE:FORGOTTEN_BEAST_182:TALLOWj CREATURE:FORGOTTEN_BEAST_183:FATj#CREATURE:FORGOTTEN_BEAST_183:TALLOWj CREATURE:FORGOTTEN_BEAST_184:FATj#CREATURE:FORGOTTEN_BEAST_184:TALLOWj CREATURE:FORGOTTEN_BEAST_185:FATj#CREATURE:FORGOTTEN_BEAST_185:TALLOWj CREATURE:FORGOTTEN_BEAST_186:FATj#CREATURE:FORGOTTEN_BEAST_186:TALLOWj CREATURE:FORGOTTEN_BEAST_188:FATj#CREATURE:FORGOTTEN_BEAST_188:TALLOWj CREATURE:FORGOTTEN_BEAST_189:FATj#CREATURE:FORGOTTEN_BEAST_189:TALLOWj CREATURE:FORGOTTEN_BEAST_190:FATj#CREATURE:FORGOTTEN_BEAST_190:TALLOWj CREATURE:FORGOTTEN_BEAST_191:FATj#CREATURE:FORGOTTEN_BEAST_191:TALLOWj CREATURE:FORGOTTEN_BEAST_193:FATj#CREATURE:FORGOTTEN_BEAST_193:TALLOWj CREATURE:FORGOTTEN_BEAST_194:FATj#CREATURE:FORGOTTEN_BEAST_194:TALLOWj CREATURE:FORGOTTEN_BEAST_195:FATj#CREATURE:FORGOTTEN_BEAST_195:TALLOWj CREATURE:FORGOTTEN_BEAST_196:FATj#CREATURE:FORGOTTEN_BEAST_196:TALLOWj CREATURE:FORGOTTEN_BEAST_197:FATj#CREATURE:FORGOTTEN_BEAST_197:TALLOWj CREATURE:FORGOTTEN_BEAST_199:FATj#CREATURE:FORGOTTEN_BEAST_199:TALLOWj CREATURE:FORGOTTEN_BEAST_200:FATj#CREATURE:FORGOTTEN_BEAST_200:TALLOWj CREATURE:FORGOTTEN_BEAST_201:FATj#CREATURE:FORGOTTEN_BEAST_201:TALLOWj CREATURE:FORGOTTEN_BEAST_204:FATj#CREATURE:FORGOTTEN_BEAST_204:TALLOWj CREATURE:FORGOTTEN_BEAST_205:FATj#CREATURE:FORGOTTEN_BEAST_205:TALLOWj CREATURE:FORGOTTEN_BEAST_206:FATj#CREATURE:FORGOTTEN_BEAST_206:TALLOWj CREATURE:FORGOTTEN_BEAST_207:FATj#CREATURE:FORGOTTEN_BEAST_207:TALLOWj CREATURE:FORGOTTEN_BEAST_208:FATj#CREATURE:FORGOTTEN_BEAST_208:TALLOWj CREATURE:FORGOTTEN_BEAST_209:FATj#CREATURE:FORGOTTEN_BEAST_209:TALLOWj CREATURE:FORGOTTEN_BEAST_210:FATj#CREATURE:FORGOTTEN_BEAST_210:TALLOWj CREATURE:FORGOTTEN_BEAST_211:FATj#CREATURE:FORGOTTEN_BEAST_211:TALLOWj CREATURE:FORGOTTEN_BEAST_212:FATj#CREATURE:FORGOTTEN_BEAST_212:TALLOWj CREATURE:FORGOTTEN_BEAST_213:FATj#CREATURE:FORGOTTEN_BEAST_213:TALLOWj CREATURE:FORGOTTEN_BEAST_214:FATj#CREATURE:FORGOTTEN_BEAST_214:TALLOWj CREATURE:FORGOTTEN_BEAST_215:FATj#CREATURE:FORGOTTEN_BEAST_215:TALLOWj CREATURE:FORGOTTEN_BEAST_216:FATj#CREATURE:FORGOTTEN_BEAST_216:TALLOWj CREATURE:FORGOTTEN_BEAST_217:FATj#CREATURE:FORGOTTEN_BEAST_217:TALLOWj CREATURE:FORGOTTEN_BEAST_218:FATj#CREATURE:FORGOTTEN_BEAST_218:TALLOWj CREATURE:FORGOTTEN_BEAST_220:FATj#CREATURE:FORGOTTEN_BEAST_220:TALLOWj CREATURE:FORGOTTEN_BEAST_221:FATj#CREATURE:FORGOTTEN_BEAST_221:TALLOWj CREATURE:FORGOTTEN_BEAST_224:FATj#CREATURE:FORGOTTEN_BEAST_224:TALLOWj CREATURE:FORGOTTEN_BEAST_225:FATj#CREATURE:FORGOTTEN_BEAST_225:TALLOWj CREATURE:FORGOTTEN_BEAST_228:FATj#CREATURE:FORGOTTEN_BEAST_228:TALLOWj CREATURE:FORGOTTEN_BEAST_231:FATj#CREATURE:FORGOTTEN_BEAST_231:TALLOWj CREATURE:FORGOTTEN_BEAST_232:FATj#CREATURE:FORGOTTEN_BEAST_232:TALLOWj CREATURE:FORGOTTEN_BEAST_235:FATj#CREATURE:FORGOTTEN_BEAST_235:TALLOWj CREATURE:FORGOTTEN_BEAST_236:FATj#CREATURE:FORGOTTEN_BEAST_236:TALLOWj CREATURE:FORGOTTEN_BEAST_237:FATj#CREATURE:FORGOTTEN_BEAST_237:TALLOWj CREATURE:FORGOTTEN_BEAST_239:FATj#CREATURE:FORGOTTEN_BEAST_239:TALLOWj CREATURE:FORGOTTEN_BEAST_240:FATj#CREATURE:FORGOTTEN_BEAST_240:TALLOWj CREATURE:FORGOTTEN_BEAST_242:FATj#CREATURE:FORGOTTEN_BEAST_242:TALLOWj CREATURE:FORGOTTEN_BEAST_243:FATj#CREATURE:FORGOTTEN_BEAST_243:TALLOWj CREATURE:FORGOTTEN_BEAST_244:FATj#CREATURE:FORGOTTEN_BEAST_244:TALLOWj CREATURE:FORGOTTEN_BEAST_245:FATj#CREATURE:FORGOTTEN_BEAST_245:TALLOWj CREATURE:FORGOTTEN_BEAST_246:FATj#CREATURE:FORGOTTEN_BEAST_246:TALLOWj CREATURE:FORGOTTEN_BEAST_247:FATj#CREATURE:FORGOTTEN_BEAST_247:TALLOWj CREATURE:FORGOTTEN_BEAST_248:FATj#CREATURE:FORGOTTEN_BEAST_248:TALLOWj CREATURE:FORGOTTEN_BEAST_249:FATj#CREATURE:FORGOTTEN_BEAST_249:TALLOWj CREATURE:FORGOTTEN_BEAST_253:FATj#CREATURE:FORGOTTEN_BEAST_253:TALLOWj CREATURE:FORGOTTEN_BEAST_255:FATj#CREATURE:FORGOTTEN_BEAST_255:TALLOWj CREATURE:FORGOTTEN_BEAST_256:FATj#CREATURE:FORGOTTEN_BEAST_256:TALLOWj CREATURE:FORGOTTEN_BEAST_259:FATj#CREATURE:FORGOTTEN_BEAST_259:TALLOWj CREATURE:FORGOTTEN_BEAST_260:FATj#CREATURE:FORGOTTEN_BEAST_260:TALLOWj CREATURE:FORGOTTEN_BEAST_263:FATj#CREATURE:FORGOTTEN_BEAST_263:TALLOWj CREATURE:FORGOTTEN_BEAST_264:FATj#CREATURE:FORGOTTEN_BEAST_264:TALLOWj CREATURE:FORGOTTEN_BEAST_265:FATj#CREATURE:FORGOTTEN_BEAST_265:TALLOWj CREATURE:FORGOTTEN_BEAST_266:FATj#CREATURE:FORGOTTEN_BEAST_266:TALLOWj CREATURE:FORGOTTEN_BEAST_268:FATj#CREATURE:FORGOTTEN_BEAST_268:TALLOWj CREATURE:FORGOTTEN_BEAST_269:FATj#CREATURE:FORGOTTEN_BEAST_269:TALLOWj CREATURE:FORGOTTEN_BEAST_270:FATj#CREATURE:FORGOTTEN_BEAST_270:TALLOWj CREATURE:FORGOTTEN_BEAST_271:FATj#CREATURE:FORGOTTEN_BEAST_271:TALLOWj CREATURE:FORGOTTEN_BEAST_272:FATj#CREATURE:FORGOTTEN_BEAST_272:TALLOWj CREATURE:FORGOTTEN_BEAST_273:FATj#CREATURE:FORGOTTEN_BEAST_273:TALLOWj CREATURE:FORGOTTEN_BEAST_274:FATj#CREATURE:FORGOTTEN_BEAST_274:TALLOWj CREATURE:FORGOTTEN_BEAST_275:FATj#CREATURE:FORGOTTEN_BEAST_275:TALLOWj CREATURE:FORGOTTEN_BEAST_276:FATj#CREATURE:FORGOTTEN_BEAST_276:TALLOWj CREATURE:FORGOTTEN_BEAST_277:FATj#CREATURE:FORGOTTEN_BEAST_277:TALLOWj CREATURE:FORGOTTEN_BEAST_279:FATj#CREATURE:FORGOTTEN_BEAST_279:TALLOWj CREATURE:FORGOTTEN_BEAST_280:FATj#CREATURE:FORGOTTEN_BEAST_280:TALLOWj CREATURE:FORGOTTEN_BEAST_281:FATj#CREATURE:FORGOTTEN_BEAST_281:TALLOWj CREATURE:FORGOTTEN_BEAST_282:FATj#CREATURE:FORGOTTEN_BEAST_282:TALLOWj CREATURE:FORGOTTEN_BEAST_283:FATj#CREATURE:FORGOTTEN_BEAST_283:TALLOWj CREATURE:FORGOTTEN_BEAST_285:FATj#CREATURE:FORGOTTEN_BEAST_285:TALLOWj CREATURE:FORGOTTEN_BEAST_286:FATj#CREATURE:FORGOTTEN_BEAST_286:TALLOWj CREATURE:FORGOTTEN_BEAST_287:FATj#CREATURE:FORGOTTEN_BEAST_287:TALLOWj CREATURE:FORGOTTEN_BEAST_288:FATj#CREATURE:FORGOTTEN_BEAST_288:TALLOWj CREATURE:FORGOTTEN_BEAST_289:FATj#CREATURE:FORGOTTEN_BEAST_289:TALLOWj CREATURE:FORGOTTEN_BEAST_290:FATj#CREATURE:FORGOTTEN_BEAST_290:TALLOWj CREATURE:FORGOTTEN_BEAST_293:FATj#CREATURE:FORGOTTEN_BEAST_293:TALLOWj CREATURE:FORGOTTEN_BEAST_295:FATj#CREATURE:FORGOTTEN_BEAST_295:TALLOWj CREATURE:FORGOTTEN_BEAST_297:FATj#CREATURE:FORGOTTEN_BEAST_297:TALLOWj CREATURE:FORGOTTEN_BEAST_300:FATj#CREATURE:FORGOTTEN_BEAST_300:TALLOWj CREATURE:FORGOTTEN_BEAST_302:FATj#CREATURE:FORGOTTEN_BEAST_302:TALLOWj CREATURE:FORGOTTEN_BEAST_306:FATj#CREATURE:FORGOTTEN_BEAST_306:TALLOWj CREATURE:FORGOTTEN_BEAST_307:FATj#CREATURE:FORGOTTEN_BEAST_307:TALLOWj CREATURE:FORGOTTEN_BEAST_310:FATj#CREATURE:FORGOTTEN_BEAST_310:TALLOWj CREATURE:FORGOTTEN_BEAST_311:FATj#CREATURE:FORGOTTEN_BEAST_311:TALLOWj CREATURE:FORGOTTEN_BEAST_312:FATj#CREATURE:FORGOTTEN_BEAST_312:TALLOWj CREATURE:FORGOTTEN_BEAST_314:FATj#CREATURE:FORGOTTEN_BEAST_314:TALLOWj CREATURE:FORGOTTEN_BEAST_316:FATj#CREATURE:FORGOTTEN_BEAST_316:TALLOWj CREATURE:FORGOTTEN_BEAST_317:FATj#CREATURE:FORGOTTEN_BEAST_317:TALLOWj CREATURE:FORGOTTEN_BEAST_318:FATj#CREATURE:FORGOTTEN_BEAST_318:TALLOWj CREATURE:FORGOTTEN_BEAST_320:FATj#CREATURE:FORGOTTEN_BEAST_320:TALLOWj CREATURE:FORGOTTEN_BEAST_321:FATj#CREATURE:FORGOTTEN_BEAST_321:TALLOWj CREATURE:FORGOTTEN_BEAST_322:FATj#CREATURE:FORGOTTEN_BEAST_322:TALLOWj CREATURE:FORGOTTEN_BEAST_323:FATj#CREATURE:FORGOTTEN_BEAST_323:TALLOWj CREATURE:FORGOTTEN_BEAST_324:FATj#CREATURE:FORGOTTEN_BEAST_324:TALLOWj CREATURE:FORGOTTEN_BEAST_325:FATj#CREATURE:FORGOTTEN_BEAST_325:TALLOWj CREATURE:FORGOTTEN_BEAST_326:FATj#CREATURE:FORGOTTEN_BEAST_326:TALLOWj CREATURE:FORGOTTEN_BEAST_327:FATj#CREATURE:FORGOTTEN_BEAST_327:TALLOWj CREATURE:FORGOTTEN_BEAST_328:FATj#CREATURE:FORGOTTEN_BEAST_328:TALLOWj CREATURE:FORGOTTEN_BEAST_329:FATj#CREATURE:FORGOTTEN_BEAST_329:TALLOWj CREATURE:FORGOTTEN_BEAST_330:FATj#CREATURE:FORGOTTEN_BEAST_330:TALLOWj CREATURE:FORGOTTEN_BEAST_332:FATj#CREATURE:FORGOTTEN_BEAST_332:TALLOWj CREATURE:FORGOTTEN_BEAST_333:FATj#CREATURE:FORGOTTEN_BEAST_333:TALLOWj CREATURE:FORGOTTEN_BEAST_335:FATj#CREATURE:FORGOTTEN_BEAST_335:TALLOWj CREATURE:FORGOTTEN_BEAST_336:FATj#CREATURE:FORGOTTEN_BEAST_336:TALLOWj CREATURE:FORGOTTEN_BEAST_337:FATj#CREATURE:FORGOTTEN_BEAST_337:TALLOWj CREATURE:FORGOTTEN_BEAST_338:FATj#CREATURE:FORGOTTEN_BEAST_338:TALLOWj CREATURE:FORGOTTEN_BEAST_339:FATj#CREATURE:FORGOTTEN_BEAST_339:TALLOWj CREATURE:FORGOTTEN_BEAST_341:FATj#CREATURE:FORGOTTEN_BEAST_341:TALLOWj CREATURE:FORGOTTEN_BEAST_342:FATj#CREATURE:FORGOTTEN_BEAST_342:TALLOWj CREATURE:FORGOTTEN_BEAST_343:FATj#CREATURE:FORGOTTEN_BEAST_343:TALLOWj CREATURE:FORGOTTEN_BEAST_344:FATj#CREATURE:FORGOTTEN_BEAST_344:TALLOWj CREATURE:FORGOTTEN_BEAST_347:FATj#CREATURE:FORGOTTEN_BEAST_347:TALLOWj CREATURE:FORGOTTEN_BEAST_348:FATj#CREATURE:FORGOTTEN_BEAST_348:TALLOWj CREATURE:FORGOTTEN_BEAST_349:FATj#CREATURE:FORGOTTEN_BEAST_349:TALLOWj CREATURE:FORGOTTEN_BEAST_351:FATj#CREATURE:FORGOTTEN_BEAST_351:TALLOWj CREATURE:FORGOTTEN_BEAST_352:FATj#CREATURE:FORGOTTEN_BEAST_352:TALLOWj CREATURE:FORGOTTEN_BEAST_353:FATj#CREATURE:FORGOTTEN_BEAST_353:TALLOWj CREATURE:FORGOTTEN_BEAST_354:FATj#CREATURE:FORGOTTEN_BEAST_354:TALLOWj CREATURE:FORGOTTEN_BEAST_355:FATj#CREATURE:FORGOTTEN_BEAST_355:TALLOWj CREATURE:FORGOTTEN_BEAST_356:FATj#CREATURE:FORGOTTEN_BEAST_356:TALLOWj CREATURE:FORGOTTEN_BEAST_357:FATj#CREATURE:FORGOTTEN_BEAST_357:TALLOWj CREATURE:FORGOTTEN_BEAST_358:FATj#CREATURE:FORGOTTEN_BEAST_358:TALLOWj CREATURE:FORGOTTEN_BEAST_359:FATj#CREATURE:FORGOTTEN_BEAST_359:TALLOWj CREATURE:FORGOTTEN_BEAST_361:FATj#CREATURE:FORGOTTEN_BEAST_361:TALLOWj CREATURE:FORGOTTEN_BEAST_363:FATj#CREATURE:FORGOTTEN_BEAST_363:TALLOWj CREATURE:FORGOTTEN_BEAST_364:FATj#CREATURE:FORGOTTEN_BEAST_364:TALLOWj CREATURE:FORGOTTEN_BEAST_365:FATj#CREATURE:FORGOTTEN_BEAST_365:TALLOWj CREATURE:FORGOTTEN_BEAST_366:FATj#CREATURE:FORGOTTEN_BEAST_366:TALLOWj CREATURE:FORGOTTEN_BEAST_367:FATj#CREATURE:FORGOTTEN_BEAST_367:TALLOWj CREATURE:FORGOTTEN_BEAST_368:FATj#CREATURE:FORGOTTEN_BEAST_368:TALLOWj CREATURE:FORGOTTEN_BEAST_370:FATj#CREATURE:FORGOTTEN_BEAST_370:TALLOWj CREATURE:FORGOTTEN_BEAST_372:FATj#CREATURE:FORGOTTEN_BEAST_372:TALLOWj CREATURE:FORGOTTEN_BEAST_374:FATj#CREATURE:FORGOTTEN_BEAST_374:TALLOWj CREATURE:FORGOTTEN_BEAST_375:FATj#CREATURE:FORGOTTEN_BEAST_375:TALLOWj CREATURE:FORGOTTEN_BEAST_377:FATj#CREATURE:FORGOTTEN_BEAST_377:TALLOWj CREATURE:FORGOTTEN_BEAST_378:FATj#CREATURE:FORGOTTEN_BEAST_378:TALLOWj CREATURE:FORGOTTEN_BEAST_379:FATj#CREATURE:FORGOTTEN_BEAST_379:TALLOWj CREATURE:FORGOTTEN_BEAST_380:FATj#CREATURE:FORGOTTEN_BEAST_380:TALLOWj CREATURE:FORGOTTEN_BEAST_381:FATj#CREATURE:FORGOTTEN_BEAST_381:TALLOWj CREATURE:FORGOTTEN_BEAST_382:FATj#CREATURE:FORGOTTEN_BEAST_382:TALLOWj CREATURE:FORGOTTEN_BEAST_383:FATj#CREATURE:FORGOTTEN_BEAST_383:TALLOWj CREATURE:FORGOTTEN_BEAST_384:FATj#CREATURE:FORGOTTEN_BEAST_384:TALLOWj CREATURE:FORGOTTEN_BEAST_385:FATj#CREATURE:FORGOTTEN_BEAST_385:TALLOWj CREATURE:FORGOTTEN_BEAST_386:FATj#CREATURE:FORGOTTEN_BEAST_386:TALLOWj CREATURE:FORGOTTEN_BEAST_387:FATj#CREATURE:FORGOTTEN_BEAST_387:TALLOWj CREATURE:FORGOTTEN_BEAST_388:FATj#CREATURE:FORGOTTEN_BEAST_388:TALLOWj CREATURE:FORGOTTEN_BEAST_389:FATj#CREATURE:FORGOTTEN_BEAST_389:TALLOWj CREATURE:FORGOTTEN_BEAST_390:FATj#CREATURE:FORGOTTEN_BEAST_390:TALLOWj CREATURE:FORGOTTEN_BEAST_391:FATj#CREATURE:FORGOTTEN_BEAST_391:TALLOWj CREATURE:FORGOTTEN_BEAST_392:FATj#CREATURE:FORGOTTEN_BEAST_392:TALLOWj CREATURE:FORGOTTEN_BEAST_393:FATj#CREATURE:FORGOTTEN_BEAST_393:TALLOWj CREATURE:FORGOTTEN_BEAST_396:FATj#CREATURE:FORGOTTEN_BEAST_396:TALLOWj CREATURE:FORGOTTEN_BEAST_397:FATj#CREATURE:FORGOTTEN_BEAST_397:TALLOWj CREATURE:FORGOTTEN_BEAST_398:FATj#CREATURE:FORGOTTEN_BEAST_398:TALLOWj CREATURE:FORGOTTEN_BEAST_400:FATj#CREATURE:FORGOTTEN_BEAST_400:TALLOWj CREATURE:FORGOTTEN_BEAST_403:FATj#CREATURE:FORGOTTEN_BEAST_403:TALLOWj CREATURE:FORGOTTEN_BEAST_404:FATj#CREATURE:FORGOTTEN_BEAST_404:TALLOWj CREATURE:FORGOTTEN_BEAST_405:FATj#CREATURE:FORGOTTEN_BEAST_405:TALLOWj CREATURE:FORGOTTEN_BEAST_406:FATj#CREATURE:FORGOTTEN_BEAST_406:TALLOWj CREATURE:FORGOTTEN_BEAST_407:FATj#CREATURE:FORGOTTEN_BEAST_407:TALLOWj CREATURE:FORGOTTEN_BEAST_408:FATj#CREATURE:FORGOTTEN_BEAST_408:TALLOWj CREATURE:FORGOTTEN_BEAST_409:FATj#CREATURE:FORGOTTEN_BEAST_409:TALLOWj CREATURE:FORGOTTEN_BEAST_410:FATj#CREATURE:FORGOTTEN_BEAST_410:TALLOWj CREATURE:FORGOTTEN_BEAST_411:FATj#CREATURE:FORGOTTEN_BEAST_411:TALLOWj CREATURE:FORGOTTEN_BEAST_412:FATj#CREATURE:FORGOTTEN_BEAST_412:TALLOWj CREATURE:FORGOTTEN_BEAST_413:FATj#CREATURE:FORGOTTEN_BEAST_413:TALLOWj CREATURE:FORGOTTEN_BEAST_414:FATj#CREATURE:FORGOTTEN_BEAST_414:TALLOWj CREATURE:FORGOTTEN_BEAST_416:FATj#CREATURE:FORGOTTEN_BEAST_416:TALLOWj CREATURE:FORGOTTEN_BEAST_417:FATj#CREATURE:FORGOTTEN_BEAST_417:TALLOWj CREATURE:FORGOTTEN_BEAST_418:FATj#CREATURE:FORGOTTEN_BEAST_418:TALLOWj CREATURE:FORGOTTEN_BEAST_420:FATj#CREATURE:FORGOTTEN_BEAST_420:TALLOWj CREATURE:FORGOTTEN_BEAST_421:FATj#CREATURE:FORGOTTEN_BEAST_421:TALLOWj CREATURE:FORGOTTEN_BEAST_422:FATj#CREATURE:FORGOTTEN_BEAST_422:TALLOWj CREATURE:FORGOTTEN_BEAST_423:FATj#CREATURE:FORGOTTEN_BEAST_423:TALLOWj CREATURE:FORGOTTEN_BEAST_424:FATj#CREATURE:FORGOTTEN_BEAST_424:TALLOWj CREATURE:FORGOTTEN_BEAST_427:FATj#CREATURE:FORGOTTEN_BEAST_427:TALLOWj CREATURE:FORGOTTEN_BEAST_429:FATj#CREATURE:FORGOTTEN_BEAST_429:TALLOWj CREATURE:FORGOTTEN_BEAST_430:FATj#CREATURE:FORGOTTEN_BEAST_430:TALLOWj CREATURE:FORGOTTEN_BEAST_432:FATj#CREATURE:FORGOTTEN_BEAST_432:TALLOWj CREATURE:FORGOTTEN_BEAST_433:FATj#CREATURE:FORGOTTEN_BEAST_433:TALLOWj CREATURE:FORGOTTEN_BEAST_434:FATj#CREATURE:FORGOTTEN_BEAST_434:TALLOWj CREATURE:FORGOTTEN_BEAST_435:FATj#CREATURE:FORGOTTEN_BEAST_435:TALLOWj CREATURE:FORGOTTEN_BEAST_436:FATj#CREATURE:FORGOTTEN_BEAST_436:TALLOWj CREATURE:FORGOTTEN_BEAST_437:FATj#CREATURE:FORGOTTEN_BEAST_437:TALLOWj CREATURE:FORGOTTEN_BEAST_438:FATj#CREATURE:FORGOTTEN_BEAST_438:TALLOWj CREATURE:FORGOTTEN_BEAST_440:FATj#CREATURE:FORGOTTEN_BEAST_440:TALLOWj CREATURE:FORGOTTEN_BEAST_441:FATj#CREATURE:FORGOTTEN_BEAST_441:TALLOWj CREATURE:FORGOTTEN_BEAST_442:FATj#CREATURE:FORGOTTEN_BEAST_442:TALLOWj CREATURE:FORGOTTEN_BEAST_444:FATj#CREATURE:FORGOTTEN_BEAST_444:TALLOWj CREATURE:FORGOTTEN_BEAST_446:FATj#CREATURE:FORGOTTEN_BEAST_446:TALLOWj CREATURE:FORGOTTEN_BEAST_447:FATj#CREATURE:FORGOTTEN_BEAST_447:TALLOWj CREATURE:FORGOTTEN_BEAST_448:FATj#CREATURE:FORGOTTEN_BEAST_448:TALLOWj CREATURE:FORGOTTEN_BEAST_449:FATj#CREATURE:FORGOTTEN_BEAST_449:TALLOWj CREATURE:FORGOTTEN_BEAST_450:FATj#CREATURE:FORGOTTEN_BEAST_450:TALLOWj CREATURE:FORGOTTEN_BEAST_451:FATj#CREATURE:FORGOTTEN_BEAST_451:TALLOWj CREATURE:FORGOTTEN_BEAST_453:FATj#CREATURE:FORGOTTEN_BEAST_453:TALLOWj CREATURE:FORGOTTEN_BEAST_454:FATj#CREATURE:FORGOTTEN_BEAST_454:TALLOWj CREATURE:FORGOTTEN_BEAST_455:FATj#CREATURE:FORGOTTEN_BEAST_455:TALLOWj CREATURE:FORGOTTEN_BEAST_457:FATj#CREATURE:FORGOTTEN_BEAST_457:TALLOWj CREATURE:FORGOTTEN_BEAST_459:FATj#CREATURE:FORGOTTEN_BEAST_459:TALLOWj CREATURE:FORGOTTEN_BEAST_461:FATj#CREATURE:FORGOTTEN_BEAST_461:TALLOWj CREATURE:FORGOTTEN_BEAST_462:FATj#CREATURE:FORGOTTEN_BEAST_462:TALLOWj CREATURE:FORGOTTEN_BEAST_463:FATj#CREATURE:FORGOTTEN_BEAST_463:TALLOWj CREATURE:FORGOTTEN_BEAST_465:FATj#CREATURE:FORGOTTEN_BEAST_465:TALLOWj CREATURE:FORGOTTEN_BEAST_466:FATj#CREATURE:FORGOTTEN_BEAST_466:TALLOWj CREATURE:FORGOTTEN_BEAST_468:FATj#CREATURE:FORGOTTEN_BEAST_468:TALLOWj CREATURE:FORGOTTEN_BEAST_469:FATj#CREATURE:FORGOTTEN_BEAST_469:TALLOWj CREATURE:FORGOTTEN_BEAST_470:FATj#CREATURE:FORGOTTEN_BEAST_470:TALLOWj CREATURE:FORGOTTEN_BEAST_471:FATj#CREATURE:FORGOTTEN_BEAST_471:TALLOWj CREATURE:FORGOTTEN_BEAST_472:FATj#CREATURE:FORGOTTEN_BEAST_472:TALLOWj CREATURE:FORGOTTEN_BEAST_474:FATj#CREATURE:FORGOTTEN_BEAST_474:TALLOWj CREATURE:FORGOTTEN_BEAST_475:FATj#CREATURE:FORGOTTEN_BEAST_475:TALLOWj CREATURE:FORGOTTEN_BEAST_476:FATj#CREATURE:FORGOTTEN_BEAST_476:TALLOWj CREATURE:FORGOTTEN_BEAST_478:FATj#CREATURE:FORGOTTEN_BEAST_478:TALLOWj CREATURE:FORGOTTEN_BEAST_479:FATj#CREATURE:FORGOTTEN_BEAST_479:TALLOWj CREATURE:FORGOTTEN_BEAST_480:FATj#CREATURE:FORGOTTEN_BEAST_480:TALLOWj CREATURE:FORGOTTEN_BEAST_481:FATj#CREATURE:FORGOTTEN_BEAST_481:TALLOWj CREATURE:FORGOTTEN_BEAST_483:FATj#CREATURE:FORGOTTEN_BEAST_483:TALLOWj CREATURE:FORGOTTEN_BEAST_486:FATj#CREATURE:FORGOTTEN_BEAST_486:TALLOWj CREATURE:FORGOTTEN_BEAST_487:FATj#CREATURE:FORGOTTEN_BEAST_487:TALLOWj CREATURE:FORGOTTEN_BEAST_489:FATj#CREATURE:FORGOTTEN_BEAST_489:TALLOWj CREATURE:FORGOTTEN_BEAST_492:FATj#CREATURE:FORGOTTEN_BEAST_492:TALLOWj CREATURE:FORGOTTEN_BEAST_494:FATj#CREATURE:FORGOTTEN_BEAST_494:TALLOWj CREATURE:FORGOTTEN_BEAST_495:FATj#CREATURE:FORGOTTEN_BEAST_495:TALLOWj CREATURE:FORGOTTEN_BEAST_496:FATj#CREATURE:FORGOTTEN_BEAST_496:TALLOWj CREATURE:FORGOTTEN_BEAST_497:FATj#CREATURE:FORGOTTEN_BEAST_497:TALLOWj CREATURE:FORGOTTEN_BEAST_498:FATj#CREATURE:FORGOTTEN_BEAST_498:TALLOWj CREATURE:FORGOTTEN_BEAST_499:FATj#CREATURE:FORGOTTEN_BEAST_499:TALLOWj CREATURE:FORGOTTEN_BEAST_501:FATj#CREATURE:FORGOTTEN_BEAST_501:TALLOWj CREATURE:FORGOTTEN_BEAST_503:FATj#CREATURE:FORGOTTEN_BEAST_503:TALLOWj CREATURE:FORGOTTEN_BEAST_504:FATj#CREATURE:FORGOTTEN_BEAST_504:TALLOWj CREATURE:FORGOTTEN_BEAST_505:FATj#CREATURE:FORGOTTEN_BEAST_505:TALLOWj CREATURE:FORGOTTEN_BEAST_507:FATj#CREATURE:FORGOTTEN_BEAST_507:TALLOWj CREATURE:FORGOTTEN_BEAST_508:FATj#CREATURE:FORGOTTEN_BEAST_508:TALLOWj CREATURE:FORGOTTEN_BEAST_510:FATj#CREATURE:FORGOTTEN_BEAST_510:TALLOWj CREATURE:FORGOTTEN_BEAST_512:FATj#CREATURE:FORGOTTEN_BEAST_512:TALLOWj CREATURE:FORGOTTEN_BEAST_513:FATj#CREATURE:FORGOTTEN_BEAST_513:TALLOWj CREATURE:FORGOTTEN_BEAST_514:FATj#CREATURE:FORGOTTEN_BEAST_514:TALLOWj CREATURE:FORGOTTEN_BEAST_515:FATj#CREATURE:FORGOTTEN_BEAST_515:TALLOWj CREATURE:FORGOTTEN_BEAST_516:FATj#CREATURE:FORGOTTEN_BEAST_516:TALLOWj CREATURE:FORGOTTEN_BEAST_517:FATj#CREATURE:FORGOTTEN_BEAST_517:TALLOWj CREATURE:FORGOTTEN_BEAST_518:FATj#CREATURE:FORGOTTEN_BEAST_518:TALLOWj CREATURE:FORGOTTEN_BEAST_519:FATj#CREATURE:FORGOTTEN_BEAST_519:TALLOWj CREATURE:FORGOTTEN_BEAST_520:FATj#CREATURE:FORGOTTEN_BEAST_520:TALLOWj CREATURE:FORGOTTEN_BEAST_521:FATj#CREATURE:FORGOTTEN_BEAST_521:TALLOWj CREATURE:FORGOTTEN_BEAST_522:FATj#CREATURE:FORGOTTEN_BEAST_522:TALLOWj CREATURE:FORGOTTEN_BEAST_523:FATj#CREATURE:FORGOTTEN_BEAST_523:TALLOWj CREATURE:FORGOTTEN_BEAST_525:FATj#CREATURE:FORGOTTEN_BEAST_525:TALLOWj CREATURE:FORGOTTEN_BEAST_526:FATj#CREATURE:FORGOTTEN_BEAST_526:TALLOWj CREATURE:FORGOTTEN_BEAST_527:FATj#CREATURE:FORGOTTEN_BEAST_527:TALLOWj CREATURE:FORGOTTEN_BEAST_528:FATj#CREATURE:FORGOTTEN_BEAST_528:TALLOWj CREATURE:FORGOTTEN_BEAST_529:FATj#CREATURE:FORGOTTEN_BEAST_529:TALLOWj CREATURE:FORGOTTEN_BEAST_530:FATj#CREATURE:FORGOTTEN_BEAST_530:TALLOWj CREATURE:FORGOTTEN_BEAST_531:FATj#CREATURE:FORGOTTEN_BEAST_531:TALLOWj CREATURE:FORGOTTEN_BEAST_532:FATj#CREATURE:FORGOTTEN_BEAST_532:TALLOWj CREATURE:FORGOTTEN_BEAST_533:FATj#CREATURE:FORGOTTEN_BEAST_533:TALLOWj CREATURE:FORGOTTEN_BEAST_534:FATj#CREATURE:FORGOTTEN_BEAST_534:TALLOWj CREATURE:FORGOTTEN_BEAST_535:FATj#CREATURE:FORGOTTEN_BEAST_535:TALLOWj CREATURE:FORGOTTEN_BEAST_536:FATj#CREATURE:FORGOTTEN_BEAST_536:TALLOWj CREATURE:FORGOTTEN_BEAST_539:FATj#CREATURE:FORGOTTEN_BEAST_539:TALLOWj CREATURE:FORGOTTEN_BEAST_540:FATj#CREATURE:FORGOTTEN_BEAST_540:TALLOWj CREATURE:FORGOTTEN_BEAST_541:FATj#CREATURE:FORGOTTEN_BEAST_541:TALLOWj CREATURE:FORGOTTEN_BEAST_543:FATj#CREATURE:FORGOTTEN_BEAST_543:TALLOWj CREATURE:FORGOTTEN_BEAST_545:FATj#CREATURE:FORGOTTEN_BEAST_545:TALLOWj CREATURE:FORGOTTEN_BEAST_546:FATj#CREATURE:FORGOTTEN_BEAST_546:TALLOWj CREATURE:FORGOTTEN_BEAST_547:FATj#CREATURE:FORGOTTEN_BEAST_547:TALLOWj CREATURE:FORGOTTEN_BEAST_548:FATj#CREATURE:FORGOTTEN_BEAST_548:TALLOWj CREATURE:FORGOTTEN_BEAST_549:FATj#CREATURE:FORGOTTEN_BEAST_549:TALLOWj CREATURE:FORGOTTEN_BEAST_550:FATj#CREATURE:FORGOTTEN_BEAST_550:TALLOWj CREATURE:FORGOTTEN_BEAST_551:FATj#CREATURE:FORGOTTEN_BEAST_551:TALLOWj CREATURE:FORGOTTEN_BEAST_554:FATj#CREATURE:FORGOTTEN_BEAST_554:TALLOWj CREATURE:FORGOTTEN_BEAST_555:FATj#CREATURE:FORGOTTEN_BEAST_555:TALLOWj CREATURE:FORGOTTEN_BEAST_556:FATj#CREATURE:FORGOTTEN_BEAST_556:TALLOWj CREATURE:FORGOTTEN_BEAST_557:FATj#CREATURE:FORGOTTEN_BEAST_557:TALLOWj CREATURE:FORGOTTEN_BEAST_561:FATj#CREATURE:FORGOTTEN_BEAST_561:TALLOWj CREATURE:FORGOTTEN_BEAST_562:FATj#CREATURE:FORGOTTEN_BEAST_562:TALLOWj CREATURE:FORGOTTEN_BEAST_564:FATj#CREATURE:FORGOTTEN_BEAST_564:TALLOWj CREATURE:FORGOTTEN_BEAST_569:FATj#CREATURE:FORGOTTEN_BEAST_569:TALLOWj CREATURE:FORGOTTEN_BEAST_570:FATj#CREATURE:FORGOTTEN_BEAST_570:TALLOWj CREATURE:FORGOTTEN_BEAST_571:FATj#CREATURE:FORGOTTEN_BEAST_571:TALLOWj CREATURE:FORGOTTEN_BEAST_572:FATj#CREATURE:FORGOTTEN_BEAST_572:TALLOWj CREATURE:FORGOTTEN_BEAST_574:FATj#CREATURE:FORGOTTEN_BEAST_574:TALLOWj CREATURE:FORGOTTEN_BEAST_576:FATj#CREATURE:FORGOTTEN_BEAST_576:TALLOWj CREATURE:FORGOTTEN_BEAST_578:FATj#CREATURE:FORGOTTEN_BEAST_578:TALLOWj CREATURE:FORGOTTEN_BEAST_579:FATj#CREATURE:FORGOTTEN_BEAST_579:TALLOWj CREATURE:FORGOTTEN_BEAST_580:FATj#CREATURE:FORGOTTEN_BEAST_580:TALLOWj CREATURE:FORGOTTEN_BEAST_581:FATj#CREATURE:FORGOTTEN_BEAST_581:TALLOWj CREATURE:FORGOTTEN_BEAST_583:FATj#CREATURE:FORGOTTEN_BEAST_583:TALLOWj CREATURE:FORGOTTEN_BEAST_584:FATj#CREATURE:FORGOTTEN_BEAST_584:TALLOWj CREATURE:FORGOTTEN_BEAST_586:FATj#CREATURE:FORGOTTEN_BEAST_586:TALLOWj CREATURE:FORGOTTEN_BEAST_588:FATj#CREATURE:FORGOTTEN_BEAST_588:TALLOWj CREATURE:FORGOTTEN_BEAST_589:FATj#CREATURE:FORGOTTEN_BEAST_589:TALLOWj CREATURE:FORGOTTEN_BEAST_590:FATj#CREATURE:FORGOTTEN_BEAST_590:TALLOWj CREATURE:FORGOTTEN_BEAST_592:FATj#CREATURE:FORGOTTEN_BEAST_592:TALLOWj CREATURE:FORGOTTEN_BEAST_593:FATj#CREATURE:FORGOTTEN_BEAST_593:TALLOWj CREATURE:FORGOTTEN_BEAST_594:FATj#CREATURE:FORGOTTEN_BEAST_594:TALLOWj CREATURE:FORGOTTEN_BEAST_595:FATj#CREATURE:FORGOTTEN_BEAST_595:TALLOWj CREATURE:FORGOTTEN_BEAST_596:FATj#CREATURE:FORGOTTEN_BEAST_596:TALLOWj CREATURE:FORGOTTEN_BEAST_597:FATj#CREATURE:FORGOTTEN_BEAST_597:TALLOWj CREATURE:FORGOTTEN_BEAST_599:FATj#CREATURE:FORGOTTEN_BEAST_599:TALLOWj CREATURE:FORGOTTEN_BEAST_600:FATj#CREATURE:FORGOTTEN_BEAST_600:TALLOWj CREATURE:FORGOTTEN_BEAST_601:FATj#CREATURE:FORGOTTEN_BEAST_601:TALLOWj CREATURE:FORGOTTEN_BEAST_603:FATj#CREATURE:FORGOTTEN_BEAST_603:TALLOWj CREATURE:FORGOTTEN_BEAST_605:FATj#CREATURE:FORGOTTEN_BEAST_605:TALLOWj CREATURE:FORGOTTEN_BEAST_607:FATj#CREATURE:FORGOTTEN_BEAST_607:TALLOWj CREATURE:FORGOTTEN_BEAST_608:FATj#CREATURE:FORGOTTEN_BEAST_608:TALLOWj CREATURE:FORGOTTEN_BEAST_609:FATj#CREATURE:FORGOTTEN_BEAST_609:TALLOWj CREATURE:FORGOTTEN_BEAST_610:FATj#CREATURE:FORGOTTEN_BEAST_610:TALLOWj CREATURE:FORGOTTEN_BEAST_611:FATj#CREATURE:FORGOTTEN_BEAST_611:TALLOWj CREATURE:FORGOTTEN_BEAST_612:FATj#CREATURE:FORGOTTEN_BEAST_612:TALLOWj CREATURE:FORGOTTEN_BEAST_613:FATj#CREATURE:FORGOTTEN_BEAST_613:TALLOWj CREATURE:FORGOTTEN_BEAST_614:FATj#CREATURE:FORGOTTEN_BEAST_614:TALLOWj CREATURE:FORGOTTEN_BEAST_616:FATj#CREATURE:FORGOTTEN_BEAST_616:TALLOWj CREATURE:FORGOTTEN_BEAST_619:FATj#CREATURE:FORGOTTEN_BEAST_619:TALLOWj CREATURE:FORGOTTEN_BEAST_620:FATj#CREATURE:FORGOTTEN_BEAST_620:TALLOWj CREATURE:FORGOTTEN_BEAST_621:FATj#CREATURE:FORGOTTEN_BEAST_621:TALLOWj CREATURE:FORGOTTEN_BEAST_623:FATj#CREATURE:FORGOTTEN_BEAST_623:TALLOWj CREATURE:FORGOTTEN_BEAST_624:FATj#CREATURE:FORGOTTEN_BEAST_624:TALLOWj CREATURE:FORGOTTEN_BEAST_625:FATj#CREATURE:FORGOTTEN_BEAST_625:TALLOWj CREATURE:FORGOTTEN_BEAST_626:FATj#CREATURE:FORGOTTEN_BEAST_626:TALLOWj CREATURE:FORGOTTEN_BEAST_627:FATj#CREATURE:FORGOTTEN_BEAST_627:TALLOWj CREATURE:FORGOTTEN_BEAST_628:FATj#CREATURE:FORGOTTEN_BEAST_628:TALLOWj CREATURE:FORGOTTEN_BEAST_629:FATj#CREATURE:FORGOTTEN_BEAST_629:TALLOWj CREATURE:FORGOTTEN_BEAST_630:FATj#CREATURE:FORGOTTEN_BEAST_630:TALLOWj CREATURE:FORGOTTEN_BEAST_631:FATj#CREATURE:FORGOTTEN_BEAST_631:TALLOWj CREATURE:FORGOTTEN_BEAST_632:FATj#CREATURE:FORGOTTEN_BEAST_632:TALLOWj CREATURE:FORGOTTEN_BEAST_633:FATj#CREATURE:FORGOTTEN_BEAST_633:TALLOWj CREATURE:FORGOTTEN_BEAST_634:FATj#CREATURE:FORGOTTEN_BEAST_634:TALLOWj CREATURE:FORGOTTEN_BEAST_635:FATj#CREATURE:FORGOTTEN_BEAST_635:TALLOWj CREATURE:FORGOTTEN_BEAST_636:FATj#CREATURE:FORGOTTEN_BEAST_636:TALLOWj CREATURE:FORGOTTEN_BEAST_637:FATj#CREATURE:FORGOTTEN_BEAST_637:TALLOWj CREATURE:FORGOTTEN_BEAST_639:FATj#CREATURE:FORGOTTEN_BEAST_639:TALLOWj CREATURE:FORGOTTEN_BEAST_640:FATj#CREATURE:FORGOTTEN_BEAST_640:TALLOWj CREATURE:FORGOTTEN_BEAST_643:FATj#CREATURE:FORGOTTEN_BEAST_643:TALLOWj CREATURE:FORGOTTEN_BEAST_644:FATj#CREATURE:FORGOTTEN_BEAST_644:TALLOWj CREATURE:FORGOTTEN_BEAST_645:FATj#CREATURE:FORGOTTEN_BEAST_645:TALLOWj CREATURE:FORGOTTEN_BEAST_646:FATj#CREATURE:FORGOTTEN_BEAST_646:TALLOWj CREATURE:FORGOTTEN_BEAST_647:FATj#CREATURE:FORGOTTEN_BEAST_647:TALLOWj CREATURE:FORGOTTEN_BEAST_649:FATj#CREATURE:FORGOTTEN_BEAST_649:TALLOWj CREATURE:FORGOTTEN_BEAST_650:FATj#CREATURE:FORGOTTEN_BEAST_650:TALLOWj CREATURE:FORGOTTEN_BEAST_651:FATj#CREATURE:FORGOTTEN_BEAST_651:TALLOWj CREATURE:FORGOTTEN_BEAST_652:FATj#CREATURE:FORGOTTEN_BEAST_652:TALLOWj CREATURE:FORGOTTEN_BEAST_656:FATj#CREATURE:FORGOTTEN_BEAST_656:TALLOWj CREATURE:FORGOTTEN_BEAST_658:FATj#CREATURE:FORGOTTEN_BEAST_658:TALLOWj CREATURE:FORGOTTEN_BEAST_659:FATj#CREATURE:FORGOTTEN_BEAST_659:TALLOWj CREATURE:FORGOTTEN_BEAST_661:FATj#CREATURE:FORGOTTEN_BEAST_661:TALLOWj CREATURE:FORGOTTEN_BEAST_663:FATj#CREATURE:FORGOTTEN_BEAST_663:TALLOWj CREATURE:FORGOTTEN_BEAST_664:FATj#CREATURE:FORGOTTEN_BEAST_664:TALLOWj CREATURE:FORGOTTEN_BEAST_666:FATj#CREATURE:FORGOTTEN_BEAST_666:TALLOWj CREATURE:FORGOTTEN_BEAST_667:FATj#CREATURE:FORGOTTEN_BEAST_667:TALLOWj CREATURE:FORGOTTEN_BEAST_669:FATj#CREATURE:FORGOTTEN_BEAST_669:TALLOWj CREATURE:FORGOTTEN_BEAST_670:FATj#CREATURE:FORGOTTEN_BEAST_670:TALLOWj CREATURE:FORGOTTEN_BEAST_671:FATj#CREATURE:FORGOTTEN_BEAST_671:TALLOWj CREATURE:FORGOTTEN_BEAST_674:FATj#CREATURE:FORGOTTEN_BEAST_674:TALLOWj CREATURE:FORGOTTEN_BEAST_675:FATj#CREATURE:FORGOTTEN_BEAST_675:TALLOWj CREATURE:FORGOTTEN_BEAST_678:FATj#CREATURE:FORGOTTEN_BEAST_678:TALLOWj CREATURE:FORGOTTEN_BEAST_680:FATj#CREATURE:FORGOTTEN_BEAST_680:TALLOWj CREATURE:FORGOTTEN_BEAST_681:FATj#CREATURE:FORGOTTEN_BEAST_681:TALLOWj CREATURE:FORGOTTEN_BEAST_682:FATj#CREATURE:FORGOTTEN_BEAST_682:TALLOWj CREATURE:FORGOTTEN_BEAST_684:FATj#CREATURE:FORGOTTEN_BEAST_684:TALLOWj CREATURE:FORGOTTEN_BEAST_685:FATj#CREATURE:FORGOTTEN_BEAST_685:TALLOWj CREATURE:FORGOTTEN_BEAST_686:FATj#CREATURE:FORGOTTEN_BEAST_686:TALLOWj CREATURE:FORGOTTEN_BEAST_687:FATj#CREATURE:FORGOTTEN_BEAST_687:TALLOWj CREATURE:FORGOTTEN_BEAST_688:FATj#CREATURE:FORGOTTEN_BEAST_688:TALLOWj CREATURE:FORGOTTEN_BEAST_689:FATj#CREATURE:FORGOTTEN_BEAST_689:TALLOWj CREATURE:FORGOTTEN_BEAST_691:FATj#CREATURE:FORGOTTEN_BEAST_691:TALLOWj CREATURE:FORGOTTEN_BEAST_692:FATj#CREATURE:FORGOTTEN_BEAST_692:TALLOWj CREATURE:FORGOTTEN_BEAST_695:FATj#CREATURE:FORGOTTEN_BEAST_695:TALLOWj CREATURE:FORGOTTEN_BEAST_696:FATj#CREATURE:FORGOTTEN_BEAST_696:TALLOWj CREATURE:FORGOTTEN_BEAST_697:FATj#CREATURE:FORGOTTEN_BEAST_697:TALLOWj CREATURE:FORGOTTEN_BEAST_698:FATj#CREATURE:FORGOTTEN_BEAST_698:TALLOWj CREATURE:FORGOTTEN_BEAST_699:FATj#CREATURE:FORGOTTEN_BEAST_699:TALLOWj CREATURE:FORGOTTEN_BEAST_700:FATj#CREATURE:FORGOTTEN_BEAST_700:TALLOWj CREATURE:FORGOTTEN_BEAST_701:FATj#CREATURE:FORGOTTEN_BEAST_701:TALLOWj CREATURE:FORGOTTEN_BEAST_702:FATj#CREATURE:FORGOTTEN_BEAST_702:TALLOWj CREATURE:FORGOTTEN_BEAST_704:FATj#CREATURE:FORGOTTEN_BEAST_704:TALLOWj CREATURE:FORGOTTEN_BEAST_706:FATj#CREATURE:FORGOTTEN_BEAST_706:TALLOWj CREATURE:FORGOTTEN_BEAST_708:FATj#CREATURE:FORGOTTEN_BEAST_708:TALLOWj CREATURE:FORGOTTEN_BEAST_709:FATj#CREATURE:FORGOTTEN_BEAST_709:TALLOWj CREATURE:FORGOTTEN_BEAST_711:FATj#CREATURE:FORGOTTEN_BEAST_711:TALLOWj CREATURE:FORGOTTEN_BEAST_712:FATj#CREATURE:FORGOTTEN_BEAST_712:TALLOWj CREATURE:FORGOTTEN_BEAST_713:FATj#CREATURE:FORGOTTEN_BEAST_713:TALLOWj CREATURE:FORGOTTEN_BEAST_714:FATj#CREATURE:FORGOTTEN_BEAST_714:TALLOWj CREATURE:FORGOTTEN_BEAST_715:FATj#CREATURE:FORGOTTEN_BEAST_715:TALLOWj CREATURE:FORGOTTEN_BEAST_717:FATj#CREATURE:FORGOTTEN_BEAST_717:TALLOWj CREATURE:FORGOTTEN_BEAST_718:FATj#CREATURE:FORGOTTEN_BEAST_718:TALLOWj CREATURE:FORGOTTEN_BEAST_719:FATj#CREATURE:FORGOTTEN_BEAST_719:TALLOWj CREATURE:FORGOTTEN_BEAST_720:FATj#CREATURE:FORGOTTEN_BEAST_720:TALLOWj CREATURE:FORGOTTEN_BEAST_721:FATj#CREATURE:FORGOTTEN_BEAST_721:TALLOWj CREATURE:FORGOTTEN_BEAST_722:FATj#CREATURE:FORGOTTEN_BEAST_722:TALLOWj CREATURE:FORGOTTEN_BEAST_723:FATj#CREATURE:FORGOTTEN_BEAST_723:TALLOWj CREATURE:FORGOTTEN_BEAST_724:FATj#CREATURE:FORGOTTEN_BEAST_724:TALLOWj CREATURE:FORGOTTEN_BEAST_726:FATj#CREATURE:FORGOTTEN_BEAST_726:TALLOWj CREATURE:FORGOTTEN_BEAST_730:FATj#CREATURE:FORGOTTEN_BEAST_730:TALLOWj CREATURE:FORGOTTEN_BEAST_731:FATj#CREATURE:FORGOTTEN_BEAST_731:TALLOWj CREATURE:FORGOTTEN_BEAST_734:FATj#CREATURE:FORGOTTEN_BEAST_734:TALLOWj CREATURE:FORGOTTEN_BEAST_735:FATj#CREATURE:FORGOTTEN_BEAST_735:TALLOWj CREATURE:FORGOTTEN_BEAST_737:FATj#CREATURE:FORGOTTEN_BEAST_737:TALLOWj CREATURE:FORGOTTEN_BEAST_738:FATj#CREATURE:FORGOTTEN_BEAST_738:TALLOWj CREATURE:FORGOTTEN_BEAST_739:FATj#CREATURE:FORGOTTEN_BEAST_739:TALLOWj CREATURE:FORGOTTEN_BEAST_740:FATj#CREATURE:FORGOTTEN_BEAST_740:TALLOWj CREATURE:FORGOTTEN_BEAST_741:FATj#CREATURE:FORGOTTEN_BEAST_741:TALLOWj CREATURE:FORGOTTEN_BEAST_742:FATj#CREATURE:FORGOTTEN_BEAST_742:TALLOWj CREATURE:FORGOTTEN_BEAST_743:FATj#CREATURE:FORGOTTEN_BEAST_743:TALLOWj CREATURE:FORGOTTEN_BEAST_744:FATj#CREATURE:FORGOTTEN_BEAST_744:TALLOWj CREATURE:FORGOTTEN_BEAST_746:FATj#CREATURE:FORGOTTEN_BEAST_746:TALLOWj CREATURE:FORGOTTEN_BEAST_747:FATj#CREATURE:FORGOTTEN_BEAST_747:TALLOWj CREATURE:FORGOTTEN_BEAST_749:FATj#CREATURE:FORGOTTEN_BEAST_749:TALLOWj CREATURE:FORGOTTEN_BEAST_750:FATj#CREATURE:FORGOTTEN_BEAST_750:TALLOWj CREATURE:FORGOTTEN_BEAST_751:FATj#CREATURE:FORGOTTEN_BEAST_751:TALLOWj CREATURE:FORGOTTEN_BEAST_752:FATj#CREATURE:FORGOTTEN_BEAST_752:TALLOWj CREATURE:FORGOTTEN_BEAST_753:FATj#CREATURE:FORGOTTEN_BEAST_753:TALLOWj CREATURE:FORGOTTEN_BEAST_754:FATj#CREATURE:FORGOTTEN_BEAST_754:TALLOWj CREATURE:FORGOTTEN_BEAST_755:FATj#CREATURE:FORGOTTEN_BEAST_755:TALLOWj CREATURE:FORGOTTEN_BEAST_756:FATj#CREATURE:FORGOTTEN_BEAST_756:TALLOWj CREATURE:FORGOTTEN_BEAST_757:FATj#CREATURE:FORGOTTEN_BEAST_757:TALLOWj CREATURE:FORGOTTEN_BEAST_758:FATj#CREATURE:FORGOTTEN_BEAST_758:TALLOWj CREATURE:FORGOTTEN_BEAST_759:FATj#CREATURE:FORGOTTEN_BEAST_759:TALLOWj CREATURE:FORGOTTEN_BEAST_760:FATj#CREATURE:FORGOTTEN_BEAST_760:TALLOWj CREATURE:FORGOTTEN_BEAST_761:FATj#CREATURE:FORGOTTEN_BEAST_761:TALLOWj CREATURE:FORGOTTEN_BEAST_762:FATj#CREATURE:FORGOTTEN_BEAST_762:TALLOWj CREATURE:FORGOTTEN_BEAST_764:FATj#CREATURE:FORGOTTEN_BEAST_764:TALLOWj CREATURE:FORGOTTEN_BEAST_767:FATj#CREATURE:FORGOTTEN_BEAST_767:TALLOWj CREATURE:FORGOTTEN_BEAST_768:FATj#CREATURE:FORGOTTEN_BEAST_768:TALLOWj CREATURE:FORGOTTEN_BEAST_769:FATj#CREATURE:FORGOTTEN_BEAST_769:TALLOWj CREATURE:FORGOTTEN_BEAST_770:FATj#CREATURE:FORGOTTEN_BEAST_770:TALLOWj CREATURE:FORGOTTEN_BEAST_773:FATj#CREATURE:FORGOTTEN_BEAST_773:TALLOWj CREATURE:FORGOTTEN_BEAST_774:FATj#CREATURE:FORGOTTEN_BEAST_774:TALLOWj CREATURE:FORGOTTEN_BEAST_776:FATj#CREATURE:FORGOTTEN_BEAST_776:TALLOWj CREATURE:FORGOTTEN_BEAST_777:FATj#CREATURE:FORGOTTEN_BEAST_777:TALLOWj CREATURE:FORGOTTEN_BEAST_778:FATj#CREATURE:FORGOTTEN_BEAST_778:TALLOWj CREATURE:FORGOTTEN_BEAST_779:FATj#CREATURE:FORGOTTEN_BEAST_779:TALLOWj CREATURE:FORGOTTEN_BEAST_780:FATj#CREATURE:FORGOTTEN_BEAST_780:TALLOWj CREATURE:FORGOTTEN_BEAST_781:FATj#CREATURE:FORGOTTEN_BEAST_781:TALLOWj CREATURE:FORGOTTEN_BEAST_782:FATj#CREATURE:FORGOTTEN_BEAST_782:TALLOWj CREATURE:FORGOTTEN_BEAST_783:FATj#CREATURE:FORGOTTEN_BEAST_783:TALLOWj CREATURE:FORGOTTEN_BEAST_784:FATj#CREATURE:FORGOTTEN_BEAST_784:TALLOWj CREATURE:FORGOTTEN_BEAST_785:FATj#CREATURE:FORGOTTEN_BEAST_785:TALLOWj CREATURE:FORGOTTEN_BEAST_786:FATj#CREATURE:FORGOTTEN_BEAST_786:TALLOWj CREATURE:FORGOTTEN_BEAST_787:FATj#CREATURE:FORGOTTEN_BEAST_787:TALLOWj CREATURE:FORGOTTEN_BEAST_789:FATj#CREATURE:FORGOTTEN_BEAST_789:TALLOWj CREATURE:FORGOTTEN_BEAST_792:FATj#CREATURE:FORGOTTEN_BEAST_792:TALLOWj CREATURE:FORGOTTEN_BEAST_793:FATj#CREATURE:FORGOTTEN_BEAST_793:TALLOWj CREATURE:FORGOTTEN_BEAST_794:FATj#CREATURE:FORGOTTEN_BEAST_794:TALLOWj CREATURE:FORGOTTEN_BEAST_795:FATj#CREATURE:FORGOTTEN_BEAST_795:TALLOWj CREATURE:FORGOTTEN_BEAST_796:FATj#CREATURE:FORGOTTEN_BEAST_796:TALLOWj CREATURE:FORGOTTEN_BEAST_799:FATj#CREATURE:FORGOTTEN_BEAST_799:TALLOWj CREATURE:FORGOTTEN_BEAST_800:FATj#CREATURE:FORGOTTEN_BEAST_800:TALLOWj CREATURE:FORGOTTEN_BEAST_801:FATj#CREATURE:FORGOTTEN_BEAST_801:TALLOWj CREATURE:FORGOTTEN_BEAST_802:FATj#CREATURE:FORGOTTEN_BEAST_802:TALLOWj CREATURE:FORGOTTEN_BEAST_803:FATj#CREATURE:FORGOTTEN_BEAST_803:TALLOWj CREATURE:FORGOTTEN_BEAST_804:FATj#CREATURE:FORGOTTEN_BEAST_804:TALLOWj CREATURE:FORGOTTEN_BEAST_806:FATj#CREATURE:FORGOTTEN_BEAST_806:TALLOWj CREATURE:FORGOTTEN_BEAST_807:FATj#CREATURE:FORGOTTEN_BEAST_807:TALLOWj CREATURE:FORGOTTEN_BEAST_809:FATj#CREATURE:FORGOTTEN_BEAST_809:TALLOWj CREATURE:FORGOTTEN_BEAST_810:FATj#CREATURE:FORGOTTEN_BEAST_810:TALLOWj CREATURE:FORGOTTEN_BEAST_811:FATj#CREATURE:FORGOTTEN_BEAST_811:TALLOWj CREATURE:FORGOTTEN_BEAST_812:FATj#CREATURE:FORGOTTEN_BEAST_812:TALLOWj CREATURE:FORGOTTEN_BEAST_815:FATj#CREATURE:FORGOTTEN_BEAST_815:TALLOWj CREATURE:FORGOTTEN_BEAST_817:FATj#CREATURE:FORGOTTEN_BEAST_817:TALLOWj CREATURE:FORGOTTEN_BEAST_818:FATj#CREATURE:FORGOTTEN_BEAST_818:TALLOWj CREATURE:FORGOTTEN_BEAST_819:FATj#CREATURE:FORGOTTEN_BEAST_819:TALLOWj CREATURE:FORGOTTEN_BEAST_820:FATj#CREATURE:FORGOTTEN_BEAST_820:TALLOWj CREATURE:FORGOTTEN_BEAST_821:FATj#CREATURE:FORGOTTEN_BEAST_821:TALLOWj CREATURE:FORGOTTEN_BEAST_822:FATj#CREATURE:FORGOTTEN_BEAST_822:TALLOWj CREATURE:FORGOTTEN_BEAST_824:FATj#CREATURE:FORGOTTEN_BEAST_824:TALLOWj CREATURE:FORGOTTEN_BEAST_825:FATj#CREATURE:FORGOTTEN_BEAST_825:TALLOWj CREATURE:FORGOTTEN_BEAST_826:FATj#CREATURE:FORGOTTEN_BEAST_826:TALLOWj CREATURE:FORGOTTEN_BEAST_827:FATj#CREATURE:FORGOTTEN_BEAST_827:TALLOWj CREATURE:FORGOTTEN_BEAST_828:FATj#CREATURE:FORGOTTEN_BEAST_828:TALLOWj CREATURE:FORGOTTEN_BEAST_831:FATj#CREATURE:FORGOTTEN_BEAST_831:TALLOWj CREATURE:FORGOTTEN_BEAST_833:FATj#CREATURE:FORGOTTEN_BEAST_833:TALLOWj CREATURE:FORGOTTEN_BEAST_835:FATj#CREATURE:FORGOTTEN_BEAST_835:TALLOWj CREATURE:FORGOTTEN_BEAST_837:FATj#CREATURE:FORGOTTEN_BEAST_837:TALLOWj CREATURE:FORGOTTEN_BEAST_838:FATj#CREATURE:FORGOTTEN_BEAST_838:TALLOWj CREATURE:FORGOTTEN_BEAST_842:FATj#CREATURE:FORGOTTEN_BEAST_842:TALLOWj CREATURE:FORGOTTEN_BEAST_843:FATj#CREATURE:FORGOTTEN_BEAST_843:TALLOWj CREATURE:FORGOTTEN_BEAST_844:FATj#CREATURE:FORGOTTEN_BEAST_844:TALLOWj CREATURE:FORGOTTEN_BEAST_845:FATj#CREATURE:FORGOTTEN_BEAST_845:TALLOWj CREATURE:FORGOTTEN_BEAST_846:FATj#CREATURE:FORGOTTEN_BEAST_846:TALLOWj CREATURE:FORGOTTEN_BEAST_847:FATj#CREATURE:FORGOTTEN_BEAST_847:TALLOWj CREATURE:FORGOTTEN_BEAST_848:FATj#CREATURE:FORGOTTEN_BEAST_848:TALLOWj CREATURE:FORGOTTEN_BEAST_849:FATj#CREATURE:FORGOTTEN_BEAST_849:TALLOWj CREATURE:FORGOTTEN_BEAST_851:FATj#CREATURE:FORGOTTEN_BEAST_851:TALLOWj CREATURE:FORGOTTEN_BEAST_853:FATj#CREATURE:FORGOTTEN_BEAST_853:TALLOWj CREATURE:FORGOTTEN_BEAST_854:FATj#CREATURE:FORGOTTEN_BEAST_854:TALLOWj CREATURE:FORGOTTEN_BEAST_855:FATj#CREATURE:FORGOTTEN_BEAST_855:TALLOWj CREATURE:FORGOTTEN_BEAST_857:FATj#CREATURE:FORGOTTEN_BEAST_857:TALLOWj CREATURE:FORGOTTEN_BEAST_858:FATj#CREATURE:FORGOTTEN_BEAST_858:TALLOWj CREATURE:FORGOTTEN_BEAST_859:FATj#CREATURE:FORGOTTEN_BEAST_859:TALLOWj CREATURE:FORGOTTEN_BEAST_860:FATj#CREATURE:FORGOTTEN_BEAST_860:TALLOWj CREATURE:FORGOTTEN_BEAST_861:FATj#CREATURE:FORGOTTEN_BEAST_861:TALLOWj CREATURE:FORGOTTEN_BEAST_862:FATj#CREATURE:FORGOTTEN_BEAST_862:TALLOWj CREATURE:FORGOTTEN_BEAST_865:FATj#CREATURE:FORGOTTEN_BEAST_865:TALLOWj CREATURE:FORGOTTEN_BEAST_866:FATj#CREATURE:FORGOTTEN_BEAST_866:TALLOWj CREATURE:FORGOTTEN_BEAST_867:FATj#CREATURE:FORGOTTEN_BEAST_867:TALLOWjCREATURE:TITAN_1:FATjCREATURE:TITAN_1:TALLOWjCREATURE:TITAN_3:FATjCREATURE:TITAN_3:TALLOWjCREATURE:TITAN_4:FATjCREATURE:TITAN_4:TALLOWjCREATURE:TITAN_6:FATjCREATURE:TITAN_6:TALLOWjCREATURE:TITAN_7:FATjCREATURE:TITAN_7:TALLOWjCREATURE:TITAN_8:FATjCREATURE:TITAN_8:TALLOWjCREATURE:TITAN_9:FATjCREATURE:TITAN_9:TALLOWjCREATURE:TITAN_10:FATjCREATURE:TITAN_10:TALLOWjCREATURE:TITAN_11:FATjCREATURE:TITAN_11:TALLOWjCREATURE:TITAN_12:FATjCREATURE:TITAN_12:TALLOWjCREATURE:TITAN_13:FATjCREATURE:TITAN_13:TALLOWjCREATURE:TITAN_14:FATjCREATURE:TITAN_14:TALLOWjCREATURE:TITAN_15:FATjCREATURE:TITAN_15:TALLOWjCREATURE:TITAN_18:FATjCREATURE:TITAN_18:TALLOWjCREATURE:TITAN_19:FATjCREATURE:TITAN_19:TALLOWjCREATURE:TITAN_21:FATjCREATURE:TITAN_21:TALLOWjCREATURE:TITAN_23:FATjCREATURE:TITAN_23:TALLOWjCREATURE:TITAN_24:FATjCREATURE:TITAN_24:TALLOWjCREATURE:TITAN_25:FATjCREATURE:TITAN_25:TALLOWjCREATURE:TITAN_26:FATjCREATURE:TITAN_26:TALLOWjCREATURE:TITAN_27:FATjCREATURE:TITAN_27:TALLOWjCREATURE:TITAN_28:FATjCREATURE:TITAN_28:TALLOWjCREATURE:TITAN_29:FATjCREATURE:TITAN_29:TALLOWjCREATURE:TITAN_30:FATjCREATURE:TITAN_30:TALLOWjCREATURE:TITAN_32:FATjCREATURE:TITAN_32:TALLOWjCREATURE:TITAN_33:FATjCREATURE:TITAN_33:TALLOWjCREATURE:DEMON_7:FATjCREATURE:DEMON_7:TALLOWjCREATURE:DEMON_8:FATjCREATURE:DEMON_8:TALLOWjCREATURE:DEMON_9:FATjCREATURE:DEMON_9:TALLOWjCREATURE:DEMON_10:FATjCREATURE:DEMON_10:TALLOWjCREATURE:DEMON_11:FATjCREATURE:DEMON_11:TALLOWjCREATURE:DEMON_12:FATjCREATURE:DEMON_12:TALLOWjCREATURE:DEMON_13:FATjCREATURE:DEMON_13:TALLOWjCREATURE:DEMON_14:FATjCREATURE:DEMON_14:TALLOWjCREATURE:DEMON_15:FATjCREATURE:DEMON_15:TALLOWjCREATURE:DEMON_16:FATjCREATURE:DEMON_16:TALLOWjCREATURE:DEMON_17:FATjCREATURE:DEMON_17:TALLOWjCREATURE:DEMON_18:FATjCREATURE:DEMON_18:TALLOWjCREATURE:DEMON_19:FATjCREATURE:DEMON_19:TALLOWjCREATURE:DEMON_20:FATjCREATURE:DEMON_20:TALLOWjCREATURE:DEMON_21:FATjCREATURE:DEMON_21:TALLOWjCREATURE:DEMON_22:FATjCREATURE:DEMON_22:TALLOWjCREATURE:DEMON_23:FATjCREATURE:DEMON_23:TALLOWjCREATURE:DEMON_24:FATjCREATURE:DEMON_24:TALLOWjCREATURE:DEMON_25:FATjCREATURE:DEMON_25:TALLOWjCREATURE:DEMON_26:FATjCREATURE:DEMON_26:TALLOWjCREATURE:DEMON_27:FATjCREATURE:DEMON_27:TALLOWjCREATURE:DEMON_28:FATjCREATURE:DEMON_28:TALLOWjCREATURE:DEMON_29:FATjCREATURE:DEMON_29:TALLOWjCREATURE:DEMON_31:FATjCREATURE:DEMON_31:TALLOWjCREATURE:DEMON_32:FATjCREATURE:DEMON_32:TALLOWjCREATURE:DEMON_38:FATjCREATURE:DEMON_38:TALLOWjCREATURE:DEMON_39:FATjCREATURE:DEMON_39:TALLOWjCREATURE:DEMON_40:FATjCREATURE:DEMON_40:TALLOWjCREATURE:DEMON_41:FATjCREATURE:DEMON_41:TALLOWjCREATURE:DEMON_42:FATjCREATURE:DEMON_42:TALLOWjCREATURE:DEMON_43:FATjCREATURE:DEMON_43:TALLOWjCREATURE:DEMON_44:FATjCREATURE:DEMON_44:TALLOWjCREATURE:DEMON_45:FATjCREATURE:DEMON_45:TALLOWjCREATURE:DEMON_47:FATjCREATURE:DEMON_47:TALLOWjCREATURE:DEMON_48:FATjCREATURE:DEMON_48:TALLOWjCREATURE:DEMON_49:FATjCREATURE:DEMON_49:TALLOWjCREATURE:DEMON_52:FATjCREATURE:DEMON_52:TALLOWjCREATURE:NIGHT_CREATURE_1:FATj CREATURE:NIGHT_CREATURE_1:TALLOWjCREATURE:NIGHT_CREATURE_2:FATj CREATURE:NIGHT_CREATURE_2:TALLOWjCREATURE:NIGHT_CREATURE_3:FATj CREATURE:NIGHT_CREATURE_3:TALLOWjCREATURE:NIGHT_CREATURE_4:FATj CREATURE:NIGHT_CREATURE_4:TALLOWjCREATURE:NIGHT_CREATURE_5:FATj CREATURE:NIGHT_CREATURE_5:TALLOWjCREATURE:NIGHT_CREATURE_6:FATj CREATURE:NIGHT_CREATURE_6:TALLOWjCREATURE:NIGHT_CREATURE_7:FATj CREATURE:NIGHT_CREATURE_7:TALLOWjCREATURE:NIGHT_CREATURE_8:FATj CREATURE:NIGHT_CREATURE_8:TALLOWjCREATURE:NIGHT_CREATURE_9:FATj CREATURE:NIGHT_CREATURE_9:TALLOWjCREATURE:NIGHT_CREATURE_10:FATj!CREATURE:NIGHT_CREATURE_10:TALLOWjCREATURE:NIGHT_CREATURE_11:FATj!CREATURE:NIGHT_CREATURE_11:TALLOWjCREATURE:NIGHT_CREATURE_12:FATj!CREATURE:NIGHT_CREATURE_12:TALLOWjCREATURE:NIGHT_CREATURE_13:FATj!CREATURE:NIGHT_CREATURE_13:TALLOWjCREATURE:NIGHT_CREATURE_14:FATj!CREATURE:NIGHT_CREATURE_14:TALLOWjCREATURE:NIGHT_CREATURE_15:FATj!CREATURE:NIGHT_CREATURE_15:TALLOWjCREATURE:NIGHT_CREATURE_16:FATj!CREATURE:NIGHT_CREATURE_16:TALLOWjCREATURE:NIGHT_CREATURE_17:FATj!CREATURE:NIGHT_CREATURE_17:TALLOWjCREATURE:NIGHT_CREATURE_18:FATj!CREATURE:NIGHT_CREATURE_18:TALLOWjCREATURE:NIGHT_CREATURE_19:FATj!CREATURE:NIGHT_CREATURE_19:TALLOWjCREATURE:NIGHT_CREATURE_20:FATj!CREATURE:NIGHT_CREATURE_20:TALLOWjCREATURE:NIGHT_CREATURE_21:FATj!CREATURE:NIGHT_CREATURE_21:TALLOWjCREATURE:NIGHT_CREATURE_22:FATj!CREATURE:NIGHT_CREATURE_22:TALLOWjCREATURE:NIGHT_CREATURE_23:FATj!CREATURE:NIGHT_CREATURE_23:TALLOWjCREATURE:NIGHT_CREATURE_24:FATj!CREATURE:NIGHT_CREATURE_24:TALLOWjCREATURE:NIGHT_CREATURE_25:FATj!CREATURE:NIGHT_CREATURE_25:TALLOWjCREATURE:NIGHT_CREATURE_26:FATj!CREATURE:NIGHT_CREATURE_26:TALLOWjCREATURE:NIGHT_CREATURE_27:FATj!CREATURE:NIGHT_CREATURE_27:TALLOWjCREATURE:NIGHT_CREATURE_28:FATj!CREATURE:NIGHT_CREATURE_28:TALLOWjCREATURE:NIGHT_CREATURE_29:FATj!CREATURE:NIGHT_CREATURE_29:TALLOWjCREATURE:NIGHT_CREATURE_30:FATj!CREATURE:NIGHT_CREATURE_30:TALLOWjCREATURE:NIGHT_CREATURE_31:FATj!CREATURE:NIGHT_CREATURE_31:TALLOWjCREATURE:NIGHT_CREATURE_32:FATj!CREATURE:NIGHT_CREATURE_32:TALLOWjCREATURE:NIGHT_CREATURE_33:FATj!CREATURE:NIGHT_CREATURE_33:TALLOWjCREATURE:NIGHT_CREATURE_34:FATj!CREATURE:NIGHT_CREATURE_34:TALLOWjCREATURE:NIGHT_CREATURE_35:FATj!CREATURE:NIGHT_CREATURE_35:TALLOWjCREATURE:NIGHT_CREATURE_36:FATj!CREATURE:NIGHT_CREATURE_36:TALLOWjCREATURE:NIGHT_CREATURE_37:FATj!CREATURE:NIGHT_CREATURE_37:TALLOWjCREATURE:NIGHT_CREATURE_38:FATj!CREATURE:NIGHT_CREATURE_38:TALLOWjCREATURE:NIGHT_CREATURE_39:FATj!CREATURE:NIGHT_CREATURE_39:TALLOWjCREATURE:NIGHT_CREATURE_40:FATj!CREATURE:NIGHT_CREATURE_40:TALLOWjCREATURE:NIGHT_CREATURE_41:FATj!CREATURE:NIGHT_CREATURE_41:TALLOWjCREATURE:NIGHT_CREATURE_42:FATj!CREATURE:NIGHT_CREATURE_42:TALLOWjCREATURE:NIGHT_CREATURE_43:FATj!CREATURE:NIGHT_CREATURE_43:TALLOWjCREATURE:NIGHT_CREATURE_44:FATj!CREATURE:NIGHT_CREATURE_44:TALLOWjCREATURE:NIGHT_CREATURE_45:FATj!CREATURE:NIGHT_CREATURE_45:TALLOWjCREATURE:NIGHT_CREATURE_46:FATj!CREATURE:NIGHT_CREATURE_46:TALLOWjCREATURE:NIGHT_CREATURE_47:FATj!CREATURE:NIGHT_CREATURE_47:TALLOWjCREATURE:NIGHT_CREATURE_48:FATj!CREATURE:NIGHT_CREATURE_48:TALLOWjCREATURE:NIGHT_CREATURE_49:FATj!CREATURE:NIGHT_CREATURE_49:TALLOWjCREATURE:NIGHT_CREATURE_50:FATj!CREATURE:NIGHT_CREATURE_50:TALLOWjCREATURE:NIGHT_CREATURE_51:FATj!CREATURE:NIGHT_CREATURE_51:TALLOWjCREATURE:NIGHT_CREATURE_52:FATj!CREATURE:NIGHT_CREATURE_52:TALLOWjCREATURE:NIGHT_CREATURE_53:FATj!CREATURE:NIGHT_CREATURE_53:TALLOWjCREATURE:NIGHT_CREATURE_54:FATj!CREATURE:NIGHT_CREATURE_54:TALLOWjCREATURE:NIGHT_CREATURE_55:FATj!CREATURE:NIGHT_CREATURE_55:TALLOWjCREATURE:NIGHT_CREATURE_56:FATj!CREATURE:NIGHT_CREATURE_56:TALLOWjCREATURE:NIGHT_CREATURE_57:FATj!CREATURE:NIGHT_CREATURE_57:TALLOWjCREATURE:NIGHT_CREATURE_58:FATj!CREATURE:NIGHT_CREATURE_58:TALLOWjCREATURE:NIGHT_CREATURE_59:FATj!CREATURE:NIGHT_CREATURE_59:TALLOWjCREATURE:NIGHT_CREATURE_60:FATj!CREATURE:NIGHT_CREATURE_60:TALLOWjCREATURE:NIGHT_CREATURE_61:FATj!CREATURE:NIGHT_CREATURE_61:TALLOWjCREATURE:NIGHT_CREATURE_62:FATj!CREATURE:NIGHT_CREATURE_62:TALLOWjCREATURE:NIGHT_CREATURE_63:FATj!CREATURE:NIGHT_CREATURE_63:TALLOWjCREATURE:NIGHT_CREATURE_64:FATj!CREATURE:NIGHT_CREATURE_64:TALLOWjCREATURE:NIGHT_CREATURE_65:FATj!CREATURE:NIGHT_CREATURE_65:TALLOWjCREATURE:NIGHT_CREATURE_66:FATj!CREATURE:NIGHT_CREATURE_66:TALLOWjCREATURE:NIGHT_CREATURE_67:FATj!CREATURE:NIGHT_CREATURE_67:TALLOWjCREATURE:NIGHT_CREATURE_68:FATj!CREATURE:NIGHT_CREATURE_68:TALLOWjCREATURE:NIGHT_CREATURE_69:FATj!CREATURE:NIGHT_CREATURE_69:TALLOWjCREATURE:NIGHT_CREATURE_70:FATj!CREATURE:NIGHT_CREATURE_70:TALLOWjCREATURE:NIGHT_CREATURE_71:FATj!CREATURE:NIGHT_CREATURE_71:TALLOWjCREATURE:NIGHT_CREATURE_72:FATj!CREATURE:NIGHT_CREATURE_72:TALLOWjCREATURE:NIGHT_CREATURE_73:FATj!CREATURE:NIGHT_CREATURE_73:TALLOWjCREATURE:NIGHT_CREATURE_74:FATj!CREATURE:NIGHT_CREATURE_74:TALLOWjCREATURE:NIGHT_CREATURE_75:FATj!CREATURE:NIGHT_CREATURE_75:TALLOWjCREATURE:NIGHT_CREATURE_76:FATj!CREATURE:NIGHT_CREATURE_76:TALLOWjCREATURE:NIGHT_CREATURE_77:FATj!CREATURE:NIGHT_CREATURE_77:TALLOWjCREATURE:NIGHT_CREATURE_78:FATj!CREATURE:NIGHT_CREATURE_78:TALLOWjCREATURE:NIGHT_CREATURE_79:FATj!CREATURE:NIGHT_CREATURE_79:TALLOWjCREATURE:NIGHT_CREATURE_80:FATj!CREATURE:NIGHT_CREATURE_80:TALLOWjCREATURE:NIGHT_CREATURE_81:FATj!CREATURE:NIGHT_CREATURE_81:TALLOWjCREATURE:NIGHT_CREATURE_82:FATj!CREATURE:NIGHT_CREATURE_82:TALLOWjCREATURE:NIGHT_CREATURE_83:FATj!CREATURE:NIGHT_CREATURE_83:TALLOWjCREATURE:NIGHT_CREATURE_84:FATj!CREATURE:NIGHT_CREATURE_84:TALLOWjCREATURE:NIGHT_CREATURE_85:FATj!CREATURE:NIGHT_CREATURE_85:TALLOWjCREATURE:NIGHT_CREATURE_86:FATj!CREATURE:NIGHT_CREATURE_86:TALLOWjCREATURE:NIGHT_CREATURE_87:FATj!CREATURE:NIGHT_CREATURE_87:TALLOWjCREATURE:NIGHT_CREATURE_88:FATj!CREATURE:NIGHT_CREATURE_88:TALLOWjCREATURE:NIGHT_CREATURE_89:FATj!CREATURE:NIGHT_CREATURE_89:TALLOWjCREATURE:NIGHT_CREATURE_90:FATj!CREATURE:NIGHT_CREATURE_90:TALLOWjCREATURE:NIGHT_CREATURE_91:FATj!CREATURE:NIGHT_CREATURE_91:TALLOWjCREATURE:NIGHT_CREATURE_92:FATj!CREATURE:NIGHT_CREATURE_92:TALLOWjCREATURE:NIGHT_CREATURE_93:FATj!CREATURE:NIGHT_CREATURE_93:TALLOWjCREATURE:NIGHT_CREATURE_94:FATj!CREATURE:NIGHT_CREATURE_94:TALLOWjCREATURE:NIGHT_CREATURE_95:FATj!CREATURE:NIGHT_CREATURE_95:TALLOWjCREATURE:NIGHT_CREATURE_96:FATj!CREATURE:NIGHT_CREATURE_96:TALLOWjCREATURE:NIGHT_CREATURE_97:FATj!CREATURE:NIGHT_CREATURE_97:TALLOWjCREATURE:NIGHT_CREATURE_98:FATj!CREATURE:NIGHT_CREATURE_98:TALLOWjCREATURE:NIGHT_CREATURE_99:FATj!CREATURE:NIGHT_CREATURE_99:TALLOWjCREATURE:NIGHT_CREATURE_100:FATj"CREATURE:NIGHT_CREATURE_100:TALLOWjCREATURE:NIGHT_CREATURE_101:FATj"CREATURE:NIGHT_CREATURE_101:TALLOWjCREATURE:NIGHT_CREATURE_102:FATj"CREATURE:NIGHT_CREATURE_102:TALLOWjCREATURE:NIGHT_CREATURE_103:FATj"CREATURE:NIGHT_CREATURE_103:TALLOWjCREATURE:NIGHT_CREATURE_104:FATj"CREATURE:NIGHT_CREATURE_104:TALLOWjCREATURE:HF1248 DIVINE_1:FATjCREATURE:HF1248 DIVINE_1:TALLOWjCREATURE:HF1248 DIVINE_2:FATjCREATURE:HF1248 DIVINE_2:TALLOWjCREATURE:HF1248 DIVINE_3:FATjCREATURE:HF1248 DIVINE_3:TALLOWjCREATURE:HF1108 DIVINE_2:FATjCREATURE:HF1108 DIVINE_2:TALLOWjCREATURE:HF1249 DIVINE_1:FATjCREATURE:HF1249 DIVINE_1:TALLOWjCREATURE:HF1249 DIVINE_3:FATjCREATURE:HF1249 DIVINE_3:TALLOWjCREATURE:HF1345 DIVINE_3:FATjCREATURE:HF1345 DIVINE_3:TALLOWrPLANT:FLAX:SEEDrPLANT:FLAX:THREADrPLANT:JUTE:THREADrPLANT:HEMP:SEEDrPLANT:HEMP:THREADrPLANT:COTTON:SEEDrPLANT:COTTON:THREADrPLANT:RAMIE:THREADrPLANT:KENAF:SEEDrPLANT:KENAF:THREADrPLANT:GRASS_TAIL_PIG:THREADrPLANT:BUSH_QUARRY:SEEDrPLANT:REED_ROPE:THREADzPLANT:FLAX:SEEDzPLANT:HEMP:SEEDzPLANT:COTTON:SEEDzPLANT:KENAF:SEEDzPLANT:OLIVE:FRUITzPLANT:BUSH_QUARRY:SEEDzCREATURE:HONEY_BEE:WAX‚PLANT:FLAX:OIL‚PLANT:HEMP:OIL‚PLANT:COTTON:OIL‚PLANT:KENAF:OIL‚PLANT:OLIVE:OIL‚PLANT:POD_SWEET:EXTRACT‚PLANT:BUSH_QUARRY:OIL‚PLANT:BULB_KOBOLD:EXTRACT‚PLANT:HERB_VALLEY:EXTRACTŠCREATURE:BARK_SCORPION:VENOMŠ CREATURE:BARK_SCORPION_MAN:VENOMŠ"CREATURE:GIANT_BARK_SCORPION:VENOMŠ#CREATURE:SPIDER_BROWN_RECLUSE:VENOMŠ'CREATURE:BROWN_RECLUSE_SPIDER_MAN:VENOMŠ)CREATURE:GIANT_BROWN_RECLUSE_SPIDER:VENOMŠCREATURE:GILA_MONSTER:VENOMŠCREATURE:GILA_MONSTER_MAN:VENOMŠ!CREATURE:GIANT_GILA_MONSTER:VENOMŠCREATURE:DONKEY:MILKŠCREATURE:HORSE:MILKŠCREATURE:COW:MILKŠCREATURE:SHEEP:MILKŠCREATURE:PIG:MILKŠCREATURE:GOAT:MILKŠCREATURE:WATER_BUFFALO:MILKŠCREATURE:REINDEER:MILKŠCREATURE:YAK:MILKŠCREATURE:LLAMA:MILKŠCREATURE:ALPACA:MILKŠCREATURE:HONEY_BEE:ROYAL_JELLYŠCREATURE:HONEY_BEE:HONEYŠCREATURE:HONEY_BEE:VENOMŠCREATURE:BUMBLEBEE:ROYAL_JELLYŠCREATURE:BUMBLEBEE:HONEYŠCREATURE:BUMBLEBEE:VENOMŠCREATURE:PLATYPUS:VENOMŠCREATURE:PLATYPUS MAN:VENOMŠCREATURE:PLATYPUS, GIANT:VENOMŠCREATURE:CAMEL_1_HUMP:MILKŠCREATURE:CAMEL_1_HUMP_MAN:MILKŠ CREATURE:GIANT_CAMEL_1_HUMP:MILKŠCREATURE:CAMEL_2_HUMP:MILKŠCREATURE:CAMEL_2_HUMP_MAN:MILKŠ CREATURE:GIANT_CAMEL_2_HUMP:MILKŠCREATURE:HELMET_SNAKE:VENOMŠCREATURE:CAVE_FLOATER:POD_JUICEŠCREATURE:CAVE_BLOB:FLUIDŠCREATURE:OCTOPUS:INKŠCREATURE:OCTOPUS_MAN:INKŠCREATURE:GIANT_OCTOPUS:INKŠCREATURE:CUTTLEFISH:INKŠCREATURE:CUTTLEFISH_MAN:INKŠCREATURE:GIANT_CUTTLEFISH:INKŠCREATURE:MOGHOPPER:MOG_JUICEŠCREATURE:SPIDER_PHANTOM:VENOMŠCREATURE:SQUID:INKŠCREATURE:SQUID MAN:INKŠCREATURE:GIGANTIC SQUID:INKŠ!CREATURE:SPIDER_CAVE_GIANT:POISONŠCREATURE:SPIDER_CAVE:VENOMŠCREATURE:MAGGOT_PURRING:MILKŠCREATURE:ELEMENTMAN_IRON:GASŠCREATURE:SERPENT_MAN:VENOMŠCREATURE:KANGAROO:MILKŠCREATURE:KANGAROO_MAN:MILKŠCREATURE:GIANT_KANGAROO:MILKŠCREATURE:ADDER:VENOMŠCREATURE:ADDER_MAN:VENOMŠCREATURE:GIANT_ADDER:VENOMŠCREATURE:RATTLESNAKE:VENOMŠCREATURE:RATTLESNAKE_MAN:VENOMŠ CREATURE:GIANT_RATTLESNAKE:VENOMŠCREATURE:COPPERHEAD_SNAKE:VENOMŠ#CREATURE:COPPERHEAD_SNAKE_MAN:VENOMŠ%CREATURE:GIANT_COPPERHEAD_SNAKE:VENOMŠCREATURE:KING_COBRA:VENOMŠCREATURE:KING_COBRA_MAN:VENOMŠCREATURE:GIANT_KING_COBRA:VENOMŠCREATURE:BLACK_MAMBA:VENOMŠCREATURE:BLACK_MAMBA_MAN:VENOMŠ CREATURE:GIANT_BLACK_MAMBA:VENOMŠCREATURE:BUSHMASTER:VENOMŠCREATURE:BUSHMASTER_MAN:VENOMŠCREATURE:GIANT_BUSHMASTER:VENOMŠCREATURE:TAPIR:MILKŠCREATURE:TAPIR_MAN:MILKŠCREATURE:GIANT_TAPIR:MILKŠ!CREATURE:FORGOTTEN_BEAST_2:POISONŠ!CREATURE:FORGOTTEN_BEAST_4:POISONŠ!CREATURE:FORGOTTEN_BEAST_5:POISONŠ!CREATURE:FORGOTTEN_BEAST_7:POISONŠ!CREATURE:FORGOTTEN_BEAST_8:POISONŠ!CREATURE:FORGOTTEN_BEAST_9:POISONŠ"CREATURE:FORGOTTEN_BEAST_11:POISONŠ"CREATURE:FORGOTTEN_BEAST_13:POISONŠ"CREATURE:FORGOTTEN_BEAST_15:POISONŠ"CREATURE:FORGOTTEN_BEAST_16:POISONŠ"CREATURE:FORGOTTEN_BEAST_18:POISONŠ"CREATURE:FORGOTTEN_BEAST_19:POISONŠ"CREATURE:FORGOTTEN_BEAST_20:POISONŠ"CREATURE:FORGOTTEN_BEAST_21:POISONŠ"CREATURE:FORGOTTEN_BEAST_22:POISONŠ"CREATURE:FORGOTTEN_BEAST_24:POISONŠ"CREATURE:FORGOTTEN_BEAST_25:POISONŠ"CREATURE:FORGOTTEN_BEAST_27:POISONŠ"CREATURE:FORGOTTEN_BEAST_28:POISONŠ"CREATURE:FORGOTTEN_BEAST_33:POISONŠ"CREATURE:FORGOTTEN_BEAST_36:POISONŠ"CREATURE:FORGOTTEN_BEAST_37:POISONŠ"CREATURE:FORGOTTEN_BEAST_39:POISONŠ"CREATURE:FORGOTTEN_BEAST_40:POISONŠ"CREATURE:FORGOTTEN_BEAST_41:POISONŠ"CREATURE:FORGOTTEN_BEAST_43:POISONŠ"CREATURE:FORGOTTEN_BEAST_44:POISONŠ"CREATURE:FORGOTTEN_BEAST_45:POISONŠ"CREATURE:FORGOTTEN_BEAST_46:POISONŠ"CREATURE:FORGOTTEN_BEAST_48:POISONŠ"CREATURE:FORGOTTEN_BEAST_49:POISONŠ"CREATURE:FORGOTTEN_BEAST_50:POISONŠ"CREATURE:FORGOTTEN_BEAST_51:POISONŠ"CREATURE:FORGOTTEN_BEAST_56:POISONŠ"CREATURE:FORGOTTEN_BEAST_59:POISONŠ"CREATURE:FORGOTTEN_BEAST_61:POISONŠ"CREATURE:FORGOTTEN_BEAST_62:POISONŠ"CREATURE:FORGOTTEN_BEAST_64:POISONŠ"CREATURE:FORGOTTEN_BEAST_66:POISONŠ"CREATURE:FORGOTTEN_BEAST_67:POISONŠ"CREATURE:FORGOTTEN_BEAST_69:POISONŠ"CREATURE:FORGOTTEN_BEAST_70:POISONŠ"CREATURE:FORGOTTEN_BEAST_72:POISONŠ"CREATURE:FORGOTTEN_BEAST_73:POISONŠ"CREATURE:FORGOTTEN_BEAST_75:POISONŠ"CREATURE:FORGOTTEN_BEAST_77:POISONŠ"CREATURE:FORGOTTEN_BEAST_78:POISONŠ"CREATURE:FORGOTTEN_BEAST_80:POISONŠ"CREATURE:FORGOTTEN_BEAST_82:POISONŠ"CREATURE:FORGOTTEN_BEAST_84:POISONŠ"CREATURE:FORGOTTEN_BEAST_88:POISONŠ"CREATURE:FORGOTTEN_BEAST_89:POISONŠ"CREATURE:FORGOTTEN_BEAST_90:POISONŠ"CREATURE:FORGOTTEN_BEAST_92:POISONŠ"CREATURE:FORGOTTEN_BEAST_93:POISONŠ"CREATURE:FORGOTTEN_BEAST_94:POISONŠ"CREATURE:FORGOTTEN_BEAST_95:POISONŠ"CREATURE:FORGOTTEN_BEAST_97:POISONŠ"CREATURE:FORGOTTEN_BEAST_98:POISONŠ#CREATURE:FORGOTTEN_BEAST_100:POISONŠ#CREATURE:FORGOTTEN_BEAST_104:POISONŠ#CREATURE:FORGOTTEN_BEAST_105:POISONŠ#CREATURE:FORGOTTEN_BEAST_106:POISONŠ#CREATURE:FORGOTTEN_BEAST_107:POISONŠ#CREATURE:FORGOTTEN_BEAST_108:POISONŠ#CREATURE:FORGOTTEN_BEAST_110:POISONŠ#CREATURE:FORGOTTEN_BEAST_114:POISONŠ#CREATURE:FORGOTTEN_BEAST_115:POISONŠ#CREATURE:FORGOTTEN_BEAST_116:POISONŠ#CREATURE:FORGOTTEN_BEAST_117:POISONŠ#CREATURE:FORGOTTEN_BEAST_118:POISONŠ#CREATURE:FORGOTTEN_BEAST_120:POISONŠ#CREATURE:FORGOTTEN_BEAST_122:POISONŠ#CREATURE:FORGOTTEN_BEAST_123:POISONŠ#CREATURE:FORGOTTEN_BEAST_124:POISONŠ#CREATURE:FORGOTTEN_BEAST_126:POISONŠ#CREATURE:FORGOTTEN_BEAST_127:POISONŠ#CREATURE:FORGOTTEN_BEAST_130:POISONŠ#CREATURE:FORGOTTEN_BEAST_133:POISONŠ#CREATURE:FORGOTTEN_BEAST_134:POISONŠ#CREATURE:FORGOTTEN_BEAST_135:POISONŠ#CREATURE:FORGOTTEN_BEAST_136:POISONŠ#CREATURE:FORGOTTEN_BEAST_138:POISONŠ#CREATURE:FORGOTTEN_BEAST_139:POISONŠ#CREATURE:FORGOTTEN_BEAST_141:POISONŠ#CREATURE:FORGOTTEN_BEAST_143:POISONŠ#CREATURE:FORGOTTEN_BEAST_145:POISONŠ#CREATURE:FORGOTTEN_BEAST_147:POISONŠ#CREATURE:FORGOTTEN_BEAST_148:POISONŠ#CREATURE:FORGOTTEN_BEAST_151:POISONŠ#CREATURE:FORGOTTEN_BEAST_154:POISONŠ#CREATURE:FORGOTTEN_BEAST_155:POISONŠ#CREATURE:FORGOTTEN_BEAST_156:POISONŠ#CREATURE:FORGOTTEN_BEAST_157:POISONŠ#CREATURE:FORGOTTEN_BEAST_158:POISONŠ#CREATURE:FORGOTTEN_BEAST_160:POISONŠ#CREATURE:FORGOTTEN_BEAST_163:POISONŠ#CREATURE:FORGOTTEN_BEAST_165:POISONŠ#CREATURE:FORGOTTEN_BEAST_167:POISONŠ#CREATURE:FORGOTTEN_BEAST_170:POISONŠ#CREATURE:FORGOTTEN_BEAST_171:POISONŠ#CREATURE:FORGOTTEN_BEAST_172:POISONŠ#CREATURE:FORGOTTEN_BEAST_175:POISONŠ#CREATURE:FORGOTTEN_BEAST_176:POISONŠ#CREATURE:FORGOTTEN_BEAST_178:POISONŠ#CREATURE:FORGOTTEN_BEAST_179:POISONŠ#CREATURE:FORGOTTEN_BEAST_182:POISONŠ#CREATURE:FORGOTTEN_BEAST_183:POISONŠ#CREATURE:FORGOTTEN_BEAST_184:POISONŠ#CREATURE:FORGOTTEN_BEAST_185:POISONŠ#CREATURE:FORGOTTEN_BEAST_187:POISONŠ#CREATURE:FORGOTTEN_BEAST_188:POISONŠ#CREATURE:FORGOTTEN_BEAST_189:POISONŠ#CREATURE:FORGOTTEN_BEAST_190:POISONŠ#CREATURE:FORGOTTEN_BEAST_191:POISONŠ#CREATURE:FORGOTTEN_BEAST_192:POISONŠ#CREATURE:FORGOTTEN_BEAST_193:POISONŠ#CREATURE:FORGOTTEN_BEAST_194:POISONŠ#CREATURE:FORGOTTEN_BEAST_196:POISONŠ#CREATURE:FORGOTTEN_BEAST_197:POISONŠ#CREATURE:FORGOTTEN_BEAST_198:POISONŠ#CREATURE:FORGOTTEN_BEAST_199:POISONŠ#CREATURE:FORGOTTEN_BEAST_201:POISONŠ#CREATURE:FORGOTTEN_BEAST_203:POISONŠ#CREATURE:FORGOTTEN_BEAST_206:POISONŠ#CREATURE:FORGOTTEN_BEAST_207:POISONŠ#CREATURE:FORGOTTEN_BEAST_208:POISONŠ#CREATURE:FORGOTTEN_BEAST_210:POISONŠ#CREATURE:FORGOTTEN_BEAST_212:POISONŠ#CREATURE:FORGOTTEN_BEAST_213:POISONŠ#CREATURE:FORGOTTEN_BEAST_215:POISONŠ#CREATURE:FORGOTTEN_BEAST_216:POISONŠ#CREATURE:FORGOTTEN_BEAST_217:POISONŠ#CREATURE:FORGOTTEN_BEAST_218:POISONŠ#CREATURE:FORGOTTEN_BEAST_219:POISONŠ#CREATURE:FORGOTTEN_BEAST_220:POISONŠ#CREATURE:FORGOTTEN_BEAST_221:POISONŠ#CREATURE:FORGOTTEN_BEAST_223:POISONŠ#CREATURE:FORGOTTEN_BEAST_225:POISONŠ#CREATURE:FORGOTTEN_BEAST_227:POISONŠ#CREATURE:FORGOTTEN_BEAST_228:POISONŠ#CREATURE:FORGOTTEN_BEAST_230:POISONŠ#CREATURE:FORGOTTEN_BEAST_232:POISONŠ#CREATURE:FORGOTTEN_BEAST_233:POISONŠ#CREATURE:FORGOTTEN_BEAST_234:POISONŠ#CREATURE:FORGOTTEN_BEAST_236:POISONŠ#CREATURE:FORGOTTEN_BEAST_237:POISONŠ#CREATURE:FORGOTTEN_BEAST_240:POISONŠ#CREATURE:FORGOTTEN_BEAST_243:POISONŠ#CREATURE:FORGOTTEN_BEAST_244:POISONŠ#CREATURE:FORGOTTEN_BEAST_245:POISONŠ#CREATURE:FORGOTTEN_BEAST_247:POISONŠ#CREATURE:FORGOTTEN_BEAST_249:POISONŠ#CREATURE:FORGOTTEN_BEAST_252:POISONŠ#CREATURE:FORGOTTEN_BEAST_253:POISONŠ#CREATURE:FORGOTTEN_BEAST_254:POISONŠ#CREATURE:FORGOTTEN_BEAST_255:POISONŠ#CREATURE:FORGOTTEN_BEAST_256:POISONŠ#CREATURE:FORGOTTEN_BEAST_257:POISONŠ#CREATURE:FORGOTTEN_BEAST_258:POISONŠ#CREATURE:FORGOTTEN_BEAST_259:POISONŠ#CREATURE:FORGOTTEN_BEAST_260:POISONŠ#CREATURE:FORGOTTEN_BEAST_263:POISONŠ#CREATURE:FORGOTTEN_BEAST_264:POISONŠ#CREATURE:FORGOTTEN_BEAST_265:POISONŠ#CREATURE:FORGOTTEN_BEAST_266:POISONŠ#CREATURE:FORGOTTEN_BEAST_268:POISONŠ#CREATURE:FORGOTTEN_BEAST_269:POISONŠ#CREATURE:FORGOTTEN_BEAST_270:POISONŠ#CREATURE:FORGOTTEN_BEAST_271:POISONŠ#CREATURE:FORGOTTEN_BEAST_272:POISONŠ#CREATURE:FORGOTTEN_BEAST_273:POISONŠ#CREATURE:FORGOTTEN_BEAST_274:POISONŠ#CREATURE:FORGOTTEN_BEAST_275:POISONŠ#CREATURE:FORGOTTEN_BEAST_276:POISONŠ#CREATURE:FORGOTTEN_BEAST_278:POISONŠ#CREATURE:FORGOTTEN_BEAST_279:POISONŠ#CREATURE:FORGOTTEN_BEAST_283:POISONŠ#CREATURE:FORGOTTEN_BEAST_286:POISONŠ#CREATURE:FORGOTTEN_BEAST_288:POISONŠ#CREATURE:FORGOTTEN_BEAST_291:POISONŠ#CREATURE:FORGOTTEN_BEAST_295:POISONŠ#CREATURE:FORGOTTEN_BEAST_296:POISONŠ#CREATURE:FORGOTTEN_BEAST_297:POISONŠ#CREATURE:FORGOTTEN_BEAST_299:POISONŠ#CREATURE:FORGOTTEN_BEAST_300:POISONŠ#CREATURE:FORGOTTEN_BEAST_301:POISONŠ#CREATURE:FORGOTTEN_BEAST_302:POISONŠ#CREATURE:FORGOTTEN_BEAST_303:POISONŠ#CREATURE:FORGOTTEN_BEAST_305:POISONŠ#CREATURE:FORGOTTEN_BEAST_306:POISONŠ#CREATURE:FORGOTTEN_BEAST_307:POISONŠ#CREATURE:FORGOTTEN_BEAST_310:POISONŠ#CREATURE:FORGOTTEN_BEAST_312:POISONŠ#CREATURE:FORGOTTEN_BEAST_314:POISONŠ#CREATURE:FORGOTTEN_BEAST_315:POISONŠ#CREATURE:FORGOTTEN_BEAST_316:POISONŠ#CREATURE:FORGOTTEN_BEAST_319:POISONŠ#CREATURE:FORGOTTEN_BEAST_321:POISONŠ#CREATURE:FORGOTTEN_BEAST_322:POISONŠ#CREATURE:FORGOTTEN_BEAST_323:POISONŠ#CREATURE:FORGOTTEN_BEAST_324:POISONŠ#CREATURE:FORGOTTEN_BEAST_325:POISONŠ#CREATURE:FORGOTTEN_BEAST_327:POISONŠ#CREATURE:FORGOTTEN_BEAST_328:POISONŠ#CREATURE:FORGOTTEN_BEAST_329:POISONŠ#CREATURE:FORGOTTEN_BEAST_332:POISONŠ#CREATURE:FORGOTTEN_BEAST_334:POISONŠ#CREATURE:FORGOTTEN_BEAST_335:POISONŠ#CREATURE:FORGOTTEN_BEAST_336:POISONŠ#CREATURE:FORGOTTEN_BEAST_337:POISONŠ#CREATURE:FORGOTTEN_BEAST_338:POISONŠ#CREATURE:FORGOTTEN_BEAST_339:POISONŠ#CREATURE:FORGOTTEN_BEAST_341:POISONŠ#CREATURE:FORGOTTEN_BEAST_342:POISONŠ#CREATURE:FORGOTTEN_BEAST_343:POISONŠ#CREATURE:FORGOTTEN_BEAST_344:POISONŠ#CREATURE:FORGOTTEN_BEAST_348:POISONŠ#CREATURE:FORGOTTEN_BEAST_349:POISONŠ#CREATURE:FORGOTTEN_BEAST_351:POISONŠ#CREATURE:FORGOTTEN_BEAST_352:POISONŠ#CREATURE:FORGOTTEN_BEAST_353:POISONŠ#CREATURE:FORGOTTEN_BEAST_354:POISONŠ#CREATURE:FORGOTTEN_BEAST_355:POISONŠ#CREATURE:FORGOTTEN_BEAST_356:POISONŠ#CREATURE:FORGOTTEN_BEAST_357:POISONŠ#CREATURE:FORGOTTEN_BEAST_358:POISONŠ#CREATURE:FORGOTTEN_BEAST_359:POISONŠ#CREATURE:FORGOTTEN_BEAST_361:POISONŠ#CREATURE:FORGOTTEN_BEAST_363:POISONŠ#CREATURE:FORGOTTEN_BEAST_364:POISONŠ#CREATURE:FORGOTTEN_BEAST_365:POISONŠ#CREATURE:FORGOTTEN_BEAST_366:POISONŠ#CREATURE:FORGOTTEN_BEAST_367:POISONŠ#CREATURE:FORGOTTEN_BEAST_368:POISONŠ#CREATURE:FORGOTTEN_BEAST_369:POISONŠ#CREATURE:FORGOTTEN_BEAST_370:POISONŠ#CREATURE:FORGOTTEN_BEAST_375:POISONŠ#CREATURE:FORGOTTEN_BEAST_377:POISONŠ#CREATURE:FORGOTTEN_BEAST_378:POISONŠ#CREATURE:FORGOTTEN_BEAST_382:POISONŠ#CREATURE:FORGOTTEN_BEAST_385:POISONŠ#CREATURE:FORGOTTEN_BEAST_386:POISONŠ#CREATURE:FORGOTTEN_BEAST_387:POISONŠ#CREATURE:FORGOTTEN_BEAST_388:POISONŠ#CREATURE:FORGOTTEN_BEAST_389:POISONŠ#CREATURE:FORGOTTEN_BEAST_390:POISONŠ#CREATURE:FORGOTTEN_BEAST_391:POISONŠ#CREATURE:FORGOTTEN_BEAST_392:POISONŠ#CREATURE:FORGOTTEN_BEAST_394:POISONŠ#CREATURE:FORGOTTEN_BEAST_395:POISONŠ#CREATURE:FORGOTTEN_BEAST_398:POISONŠ#CREATURE:FORGOTTEN_BEAST_399:POISONŠ#CREATURE:FORGOTTEN_BEAST_400:POISONŠ#CREATURE:FORGOTTEN_BEAST_402:POISONŠ#CREATURE:FORGOTTEN_BEAST_405:POISONŠ#CREATURE:FORGOTTEN_BEAST_408:POISONŠ#CREATURE:FORGOTTEN_BEAST_409:POISONŠ#CREATURE:FORGOTTEN_BEAST_410:POISONŠ#CREATURE:FORGOTTEN_BEAST_412:POISONŠ#CREATURE:FORGOTTEN_BEAST_413:POISONŠ#CREATURE:FORGOTTEN_BEAST_414:POISONŠ#CREATURE:FORGOTTEN_BEAST_415:POISONŠ#CREATURE:FORGOTTEN_BEAST_416:POISONŠ#CREATURE:FORGOTTEN_BEAST_417:POISONŠ#CREATURE:FORGOTTEN_BEAST_418:POISONŠ#CREATURE:FORGOTTEN_BEAST_419:POISONŠ#CREATURE:FORGOTTEN_BEAST_420:POISONŠ#CREATURE:FORGOTTEN_BEAST_421:POISONŠ#CREATURE:FORGOTTEN_BEAST_422:POISONŠ#CREATURE:FORGOTTEN_BEAST_423:POISONŠ#CREATURE:FORGOTTEN_BEAST_425:POISONŠ#CREATURE:FORGOTTEN_BEAST_431:POISONŠ#CREATURE:FORGOTTEN_BEAST_433:POISONŠ#CREATURE:FORGOTTEN_BEAST_434:POISONŠ#CREATURE:FORGOTTEN_BEAST_436:POISONŠ#CREATURE:FORGOTTEN_BEAST_437:POISONŠ#CREATURE:FORGOTTEN_BEAST_439:POISONŠ#CREATURE:FORGOTTEN_BEAST_441:POISONŠ#CREATURE:FORGOTTEN_BEAST_443:POISONŠ#CREATURE:FORGOTTEN_BEAST_444:POISONŠ#CREATURE:FORGOTTEN_BEAST_445:POISONŠ#CREATURE:FORGOTTEN_BEAST_447:POISONŠ#CREATURE:FORGOTTEN_BEAST_449:POISONŠ#CREATURE:FORGOTTEN_BEAST_450:POISONŠ#CREATURE:FORGOTTEN_BEAST_451:POISONŠ#CREATURE:FORGOTTEN_BEAST_452:POISONŠ#CREATURE:FORGOTTEN_BEAST_453:POISONŠ#CREATURE:FORGOTTEN_BEAST_454:POISONŠ#CREATURE:FORGOTTEN_BEAST_455:POISONŠ#CREATURE:FORGOTTEN_BEAST_459:POISONŠ#CREATURE:FORGOTTEN_BEAST_461:POISONŠ#CREATURE:FORGOTTEN_BEAST_462:POISONŠ#CREATURE:FORGOTTEN_BEAST_463:POISONŠ#CREATURE:FORGOTTEN_BEAST_464:POISONŠ#CREATURE:FORGOTTEN_BEAST_469:POISONŠ#CREATURE:FORGOTTEN_BEAST_470:POISONŠ#CREATURE:FORGOTTEN_BEAST_474:POISONŠ#CREATURE:FORGOTTEN_BEAST_475:POISONŠ#CREATURE:FORGOTTEN_BEAST_476:POISONŠ#CREATURE:FORGOTTEN_BEAST_477:POISONŠ#CREATURE:FORGOTTEN_BEAST_478:POISONŠ#CREATURE:FORGOTTEN_BEAST_480:POISONŠ#CREATURE:FORGOTTEN_BEAST_481:POISONŠ#CREATURE:FORGOTTEN_BEAST_482:POISONŠ#CREATURE:FORGOTTEN_BEAST_483:POISONŠ#CREATURE:FORGOTTEN_BEAST_484:POISONŠ#CREATURE:FORGOTTEN_BEAST_485:POISONŠ#CREATURE:FORGOTTEN_BEAST_487:POISONŠ#CREATURE:FORGOTTEN_BEAST_489:POISONŠ#CREATURE:FORGOTTEN_BEAST_492:POISONŠ#CREATURE:FORGOTTEN_BEAST_494:POISONŠ#CREATURE:FORGOTTEN_BEAST_495:POISONŠ#CREATURE:FORGOTTEN_BEAST_497:POISONŠ#CREATURE:FORGOTTEN_BEAST_498:POISONŠ#CREATURE:FORGOTTEN_BEAST_499:POISONŠ#CREATURE:FORGOTTEN_BEAST_500:POISONŠ#CREATURE:FORGOTTEN_BEAST_501:POISONŠ#CREATURE:FORGOTTEN_BEAST_502:POISONŠ#CREATURE:FORGOTTEN_BEAST_503:POISONŠ#CREATURE:FORGOTTEN_BEAST_505:POISONŠ#CREATURE:FORGOTTEN_BEAST_506:POISONŠ#CREATURE:FORGOTTEN_BEAST_507:POISONŠ#CREATURE:FORGOTTEN_BEAST_509:POISONŠ#CREATURE:FORGOTTEN_BEAST_512:POISONŠ#CREATURE:FORGOTTEN_BEAST_513:POISONŠ#CREATURE:FORGOTTEN_BEAST_514:POISONŠ#CREATURE:FORGOTTEN_BEAST_515:POISONŠ#CREATURE:FORGOTTEN_BEAST_516:POISONŠ#CREATURE:FORGOTTEN_BEAST_518:POISONŠ#CREATURE:FORGOTTEN_BEAST_519:POISONŠ#CREATURE:FORGOTTEN_BEAST_522:POISONŠ#CREATURE:FORGOTTEN_BEAST_524:POISONŠ#CREATURE:FORGOTTEN_BEAST_525:POISONŠ#CREATURE:FORGOTTEN_BEAST_526:POISONŠ#CREATURE:FORGOTTEN_BEAST_527:POISONŠ#CREATURE:FORGOTTEN_BEAST_528:POISONŠ#CREATURE:FORGOTTEN_BEAST_529:POISONŠ#CREATURE:FORGOTTEN_BEAST_532:POISONŠ#CREATURE:FORGOTTEN_BEAST_533:POISONŠ#CREATURE:FORGOTTEN_BEAST_534:POISONŠ#CREATURE:FORGOTTEN_BEAST_535:POISONŠ#CREATURE:FORGOTTEN_BEAST_536:POISONŠ#CREATURE:FORGOTTEN_BEAST_537:POISONŠ#CREATURE:FORGOTTEN_BEAST_539:POISONŠ#CREATURE:FORGOTTEN_BEAST_540:POISONŠ#CREATURE:FORGOTTEN_BEAST_543:POISONŠ#CREATURE:FORGOTTEN_BEAST_544:POISONŠ#CREATURE:FORGOTTEN_BEAST_545:POISONŠ#CREATURE:FORGOTTEN_BEAST_546:POISONŠ#CREATURE:FORGOTTEN_BEAST_547:POISONŠ#CREATURE:FORGOTTEN_BEAST_548:POISONŠ#CREATURE:FORGOTTEN_BEAST_550:POISONŠ#CREATURE:FORGOTTEN_BEAST_551:POISONŠ#CREATURE:FORGOTTEN_BEAST_554:POISONŠ#CREATURE:FORGOTTEN_BEAST_555:POISONŠ#CREATURE:FORGOTTEN_BEAST_557:POISONŠ#CREATURE:FORGOTTEN_BEAST_558:POISONŠ#CREATURE:FORGOTTEN_BEAST_559:POISONŠ#CREATURE:FORGOTTEN_BEAST_565:POISONŠ#CREATURE:FORGOTTEN_BEAST_569:POISONŠ#CREATURE:FORGOTTEN_BEAST_570:POISONŠ#CREATURE:FORGOTTEN_BEAST_571:POISONŠ#CREATURE:FORGOTTEN_BEAST_572:POISONŠ#CREATURE:FORGOTTEN_BEAST_574:POISONŠ#CREATURE:FORGOTTEN_BEAST_577:POISONŠ#CREATURE:FORGOTTEN_BEAST_578:POISONŠ#CREATURE:FORGOTTEN_BEAST_579:POISONŠ#CREATURE:FORGOTTEN_BEAST_581:POISONŠ#CREATURE:FORGOTTEN_BEAST_583:POISONŠ#CREATURE:FORGOTTEN_BEAST_584:POISONŠ#CREATURE:FORGOTTEN_BEAST_585:POISONŠ#CREATURE:FORGOTTEN_BEAST_586:POISONŠ#CREATURE:FORGOTTEN_BEAST_587:POISONŠ#CREATURE:FORGOTTEN_BEAST_589:POISONŠ#CREATURE:FORGOTTEN_BEAST_590:POISONŠ#CREATURE:FORGOTTEN_BEAST_591:POISONŠ#CREATURE:FORGOTTEN_BEAST_592:POISONŠ#CREATURE:FORGOTTEN_BEAST_593:POISONŠ#CREATURE:FORGOTTEN_BEAST_594:POISONŠ#CREATURE:FORGOTTEN_BEAST_595:POISONŠ#CREATURE:FORGOTTEN_BEAST_597:POISONŠ#CREATURE:FORGOTTEN_BEAST_598:POISONŠ#CREATURE:FORGOTTEN_BEAST_599:POISONŠ#CREATURE:FORGOTTEN_BEAST_601:POISONŠ#CREATURE:FORGOTTEN_BEAST_602:POISONŠ#CREATURE:FORGOTTEN_BEAST_604:POISONŠ#CREATURE:FORGOTTEN_BEAST_607:POISONŠ#CREATURE:FORGOTTEN_BEAST_608:POISONŠ#CREATURE:FORGOTTEN_BEAST_609:POISONŠ#CREATURE:FORGOTTEN_BEAST_610:POISONŠ#CREATURE:FORGOTTEN_BEAST_618:POISONŠ#CREATURE:FORGOTTEN_BEAST_620:POISONŠ#CREATURE:FORGOTTEN_BEAST_621:POISONŠ#CREATURE:FORGOTTEN_BEAST_622:POISONŠ#CREATURE:FORGOTTEN_BEAST_624:POISONŠ#CREATURE:FORGOTTEN_BEAST_626:POISONŠ#CREATURE:FORGOTTEN_BEAST_627:POISONŠ#CREATURE:FORGOTTEN_BEAST_629:POISONŠ#CREATURE:FORGOTTEN_BEAST_632:POISONŠ#CREATURE:FORGOTTEN_BEAST_633:POISONŠ#CREATURE:FORGOTTEN_BEAST_634:POISONŠ#CREATURE:FORGOTTEN_BEAST_636:POISONŠ#CREATURE:FORGOTTEN_BEAST_638:POISONŠ#CREATURE:FORGOTTEN_BEAST_640:POISONŠ#CREATURE:FORGOTTEN_BEAST_641:POISONŠ#CREATURE:FORGOTTEN_BEAST_644:POISONŠ#CREATURE:FORGOTTEN_BEAST_645:POISONŠ#CREATURE:FORGOTTEN_BEAST_646:POISONŠ#CREATURE:FORGOTTEN_BEAST_647:POISONŠ#CREATURE:FORGOTTEN_BEAST_648:POISONŠ#CREATURE:FORGOTTEN_BEAST_649:POISONŠ#CREATURE:FORGOTTEN_BEAST_652:POISONŠ#CREATURE:FORGOTTEN_BEAST_656:POISONŠ#CREATURE:FORGOTTEN_BEAST_658:POISONŠ#CREATURE:FORGOTTEN_BEAST_659:POISONŠ#CREATURE:FORGOTTEN_BEAST_660:POISONŠ#CREATURE:FORGOTTEN_BEAST_663:POISONŠ#CREATURE:FORGOTTEN_BEAST_664:POISONŠ#CREATURE:FORGOTTEN_BEAST_666:POISONŠ#CREATURE:FORGOTTEN_BEAST_667:POISONŠ#CREATURE:FORGOTTEN_BEAST_668:POISONŠ#CREATURE:FORGOTTEN_BEAST_669:POISONŠ#CREATURE:FORGOTTEN_BEAST_670:POISONŠ#CREATURE:FORGOTTEN_BEAST_671:POISONŠ#CREATURE:FORGOTTEN_BEAST_674:POISONŠ#CREATURE:FORGOTTEN_BEAST_675:POISONŠ#CREATURE:FORGOTTEN_BEAST_678:POISONŠ#CREATURE:FORGOTTEN_BEAST_679:POISONŠ#CREATURE:FORGOTTEN_BEAST_681:POISONŠ#CREATURE:FORGOTTEN_BEAST_682:POISONŠ#CREATURE:FORGOTTEN_BEAST_686:POISONŠ#CREATURE:FORGOTTEN_BEAST_688:POISONŠ#CREATURE:FORGOTTEN_BEAST_689:POISONŠ#CREATURE:FORGOTTEN_BEAST_691:POISONŠ#CREATURE:FORGOTTEN_BEAST_692:POISONŠ#CREATURE:FORGOTTEN_BEAST_696:POISONŠ#CREATURE:FORGOTTEN_BEAST_698:POISONŠ#CREATURE:FORGOTTEN_BEAST_699:POISONŠ#CREATURE:FORGOTTEN_BEAST_702:POISONŠ#CREATURE:FORGOTTEN_BEAST_703:POISONŠ#CREATURE:FORGOTTEN_BEAST_704:POISONŠ#CREATURE:FORGOTTEN_BEAST_705:POISONŠ#CREATURE:FORGOTTEN_BEAST_707:POISONŠ#CREATURE:FORGOTTEN_BEAST_708:POISONŠ#CREATURE:FORGOTTEN_BEAST_709:POISONŠ#CREATURE:FORGOTTEN_BEAST_711:POISONŠ#CREATURE:FORGOTTEN_BEAST_712:POISONŠ#CREATURE:FORGOTTEN_BEAST_713:POISONŠ#CREATURE:FORGOTTEN_BEAST_714:POISONŠ#CREATURE:FORGOTTEN_BEAST_715:POISONŠ#CREATURE:FORGOTTEN_BEAST_718:POISONŠ#CREATURE:FORGOTTEN_BEAST_719:POISONŠ#CREATURE:FORGOTTEN_BEAST_721:POISONŠ#CREATURE:FORGOTTEN_BEAST_722:POISONŠ#CREATURE:FORGOTTEN_BEAST_724:POISONŠ#CREATURE:FORGOTTEN_BEAST_725:POISONŠ#CREATURE:FORGOTTEN_BEAST_726:POISONŠ#CREATURE:FORGOTTEN_BEAST_727:POISONŠ#CREATURE:FORGOTTEN_BEAST_731:POISONŠ#CREATURE:FORGOTTEN_BEAST_732:POISONŠ#CREATURE:FORGOTTEN_BEAST_733:POISONŠ#CREATURE:FORGOTTEN_BEAST_735:POISONŠ#CREATURE:FORGOTTEN_BEAST_737:POISONŠ#CREATURE:FORGOTTEN_BEAST_738:POISONŠ#CREATURE:FORGOTTEN_BEAST_739:POISONŠ#CREATURE:FORGOTTEN_BEAST_740:POISONŠ#CREATURE:FORGOTTEN_BEAST_741:POISONŠ#CREATURE:FORGOTTEN_BEAST_742:POISONŠ#CREATURE:FORGOTTEN_BEAST_744:POISONŠ#CREATURE:FORGOTTEN_BEAST_746:POISONŠ#CREATURE:FORGOTTEN_BEAST_748:POISONŠ#CREATURE:FORGOTTEN_BEAST_749:POISONŠ#CREATURE:FORGOTTEN_BEAST_750:POISONŠ#CREATURE:FORGOTTEN_BEAST_751:POISONŠ#CREATURE:FORGOTTEN_BEAST_752:POISONŠ#CREATURE:FORGOTTEN_BEAST_753:POISONŠ#CREATURE:FORGOTTEN_BEAST_756:POISONŠ#CREATURE:FORGOTTEN_BEAST_758:POISONŠ#CREATURE:FORGOTTEN_BEAST_760:POISONŠ#CREATURE:FORGOTTEN_BEAST_761:POISONŠ#CREATURE:FORGOTTEN_BEAST_762:POISONŠ#CREATURE:FORGOTTEN_BEAST_764:POISONŠ#CREATURE:FORGOTTEN_BEAST_766:POISONŠ#CREATURE:FORGOTTEN_BEAST_767:POISONŠ#CREATURE:FORGOTTEN_BEAST_769:POISONŠ#CREATURE:FORGOTTEN_BEAST_770:POISONŠ#CREATURE:FORGOTTEN_BEAST_771:POISONŠ#CREATURE:FORGOTTEN_BEAST_772:POISONŠ#CREATURE:FORGOTTEN_BEAST_773:POISONŠ#CREATURE:FORGOTTEN_BEAST_777:POISONŠ#CREATURE:FORGOTTEN_BEAST_778:POISONŠ#CREATURE:FORGOTTEN_BEAST_779:POISONŠ#CREATURE:FORGOTTEN_BEAST_780:POISONŠ#CREATURE:FORGOTTEN_BEAST_781:POISONŠ#CREATURE:FORGOTTEN_BEAST_783:POISONŠ#CREATURE:FORGOTTEN_BEAST_785:POISONŠ#CREATURE:FORGOTTEN_BEAST_787:POISONŠ#CREATURE:FORGOTTEN_BEAST_788:POISONŠ#CREATURE:FORGOTTEN_BEAST_790:POISONŠ#CREATURE:FORGOTTEN_BEAST_792:POISONŠ#CREATURE:FORGOTTEN_BEAST_793:POISONŠ#CREATURE:FORGOTTEN_BEAST_794:POISONŠ#CREATURE:FORGOTTEN_BEAST_795:POISONŠ#CREATURE:FORGOTTEN_BEAST_796:POISONŠ#CREATURE:FORGOTTEN_BEAST_798:POISONŠ#CREATURE:FORGOTTEN_BEAST_799:POISONŠ#CREATURE:FORGOTTEN_BEAST_800:POISONŠ#CREATURE:FORGOTTEN_BEAST_801:POISONŠ#CREATURE:FORGOTTEN_BEAST_802:POISONŠ#CREATURE:FORGOTTEN_BEAST_803:POISONŠ#CREATURE:FORGOTTEN_BEAST_806:POISONŠ#CREATURE:FORGOTTEN_BEAST_807:POISONŠ#CREATURE:FORGOTTEN_BEAST_810:POISONŠ#CREATURE:FORGOTTEN_BEAST_811:POISONŠ#CREATURE:FORGOTTEN_BEAST_813:POISONŠ#CREATURE:FORGOTTEN_BEAST_815:POISONŠ#CREATURE:FORGOTTEN_BEAST_818:POISONŠ#CREATURE:FORGOTTEN_BEAST_819:POISONŠ#CREATURE:FORGOTTEN_BEAST_820:POISONŠ#CREATURE:FORGOTTEN_BEAST_822:POISONŠ#CREATURE:FORGOTTEN_BEAST_823:POISONŠ#CREATURE:FORGOTTEN_BEAST_825:POISONŠ#CREATURE:FORGOTTEN_BEAST_826:POISONŠ#CREATURE:FORGOTTEN_BEAST_828:POISONŠ#CREATURE:FORGOTTEN_BEAST_830:POISONŠ#CREATURE:FORGOTTEN_BEAST_831:POISONŠ#CREATURE:FORGOTTEN_BEAST_832:POISONŠ#CREATURE:FORGOTTEN_BEAST_835:POISONŠ#CREATURE:FORGOTTEN_BEAST_836:POISONŠ#CREATURE:FORGOTTEN_BEAST_837:POISONŠ#CREATURE:FORGOTTEN_BEAST_839:POISONŠ#CREATURE:FORGOTTEN_BEAST_840:POISONŠ#CREATURE:FORGOTTEN_BEAST_841:POISONŠ#CREATURE:FORGOTTEN_BEAST_844:POISONŠ#CREATURE:FORGOTTEN_BEAST_845:POISONŠ#CREATURE:FORGOTTEN_BEAST_846:POISONŠ#CREATURE:FORGOTTEN_BEAST_847:POISONŠ#CREATURE:FORGOTTEN_BEAST_848:POISONŠ#CREATURE:FORGOTTEN_BEAST_849:POISONŠ#CREATURE:FORGOTTEN_BEAST_850:POISONŠ#CREATURE:FORGOTTEN_BEAST_851:POISONŠ#CREATURE:FORGOTTEN_BEAST_852:POISONŠ#CREATURE:FORGOTTEN_BEAST_853:POISONŠ#CREATURE:FORGOTTEN_BEAST_854:POISONŠ#CREATURE:FORGOTTEN_BEAST_856:POISONŠ#CREATURE:FORGOTTEN_BEAST_857:POISONŠ#CREATURE:FORGOTTEN_BEAST_859:POISONŠ#CREATURE:FORGOTTEN_BEAST_861:POISONŠ#CREATURE:FORGOTTEN_BEAST_862:POISONŠ#CREATURE:FORGOTTEN_BEAST_865:POISONŠCREATURE:TITAN_1:POISONŠCREATURE:TITAN_2:POISONŠCREATURE:TITAN_3:POISONŠCREATURE:TITAN_5:POISONŠCREATURE:TITAN_9:POISONŠCREATURE:TITAN_10:POISONŠCREATURE:TITAN_11:POISONŠCREATURE:TITAN_12:POISONŠCREATURE:TITAN_13:POISONŠCREATURE:TITAN_14:POISONŠCREATURE:TITAN_17:POISONŠCREATURE:TITAN_18:POISONŠCREATURE:TITAN_19:POISONŠCREATURE:TITAN_20:POISONŠCREATURE:TITAN_24:POISONŠCREATURE:TITAN_25:POISONŠCREATURE:TITAN_27:POISONŠCREATURE:TITAN_29:POISONŠCREATURE:TITAN_30:POISONŠCREATURE:TITAN_31:POISONŠCREATURE:DEMON_2:POISONŠCREATURE:DEMON_4:POISONŠCREATURE:DEMON_6:POISONŠCREATURE:DEMON_7:POISONŠCREATURE:DEMON_8:POISONŠCREATURE:DEMON_9:POISONŠCREATURE:DEMON_10:POISONŠCREATURE:DEMON_11:POISONŠCREATURE:DEMON_12:POISONŠCREATURE:DEMON_14:POISONŠCREATURE:DEMON_15:POISONŠCREATURE:DEMON_16:POISONŠCREATURE:DEMON_17:POISONŠCREATURE:DEMON_18:POISONŠCREATURE:DEMON_20:POISONŠCREATURE:DEMON_21:POISONŠCREATURE:DEMON_22:POISONŠCREATURE:DEMON_24:POISONŠCREATURE:DEMON_25:POISONŠCREATURE:DEMON_26:POISONŠCREATURE:DEMON_28:POISONŠCREATURE:DEMON_30:POISONŠCREATURE:DEMON_31:POISONŠCREATURE:DEMON_32:POISONŠCREATURE:DEMON_40:POISONŠCREATURE:DEMON_41:POISONŠCREATURE:DEMON_43:POISONŠCREATURE:DEMON_44:POISONŠCREATURE:DEMON_45:POISONŠCREATURE:DEMON_47:POISONŠCREATURE:DEMON_49:POISONŠ!CREATURE:NIGHT_CREATURE_64:POISONŠ!CREATURE:NIGHT_CREATURE_66:POISONŠ!CREATURE:NIGHT_CREATURE_75:POISONŠ!CREATURE:NIGHT_CREATURE_83:POISONŠ!CREATURE:NIGHT_CREATURE_85:POISONŠCREATURE:HF1108 DIVINE_3:POISONŠCREATURE:HF1249 DIVINE_3:POISONŠCREATURE:HF1345 DIVINE_1:POISON’LYE’INORGANIC:MILK_OF_LIME˜¢CUTTLEFISH:FEMALE¢CUTTLEFISH:MALE¢NAUTILUS:FEMALE¢ NAUTILUS:MALE¢MOGHOPPER:FEMALE¢MOGHOPPER:MALE¢POND_TURTLE:FEMALE¢POND_TURTLE:MALE¢MUSSEL:DEFAULT¢OYSTER:DEFAULT¢FISH_SALMON:FEMALE¢FISH_SALMON:MALE¢FISH_CLOWNFISH:FEMALE¢FISH_CLOWNFISH:MALE¢FISH_HAGFISH:FEMALE¢FISH_HAGFISH:MALE¢FISH_LAMPREY_BROOK:FEMALE¢FISH_LAMPREY_BROOK:MALE¢FISH_RAY_BAT:FEMALE¢FISH_RAY_BAT:MALE¢FISH_RAY_THORNBACK:FEMALE¢FISH_RAY_THORNBACK:MALE¢FISH_RATFISH_SPOTTED:FEMALE¢FISH_RATFISH_SPOTTED:MALE¢FISH_HERRING:FEMALE¢FISH_HERRING:MALE¢FISH_SHAD:FEMALE¢FISH_SHAD:MALE¢FISH_ANCHOVY:FEMALE¢FISH_ANCHOVY:MALE¢FISH_TROUT_STEELHEAD:FEMALE¢FISH_TROUT_STEELHEAD:MALE¢FISH_HAKE:FEMALE¢FISH_HAKE:MALE¢FISH_SEAHORSE:FEMALE¢FISH_SEAHORSE:MALE¢FISH_GLASSEYE:FEMALE¢FISH_GLASSEYE:MALE¢ FISH_PUFFER_WHITE_SPOTTED:FEMALE¢FISH_PUFFER_WHITE_SPOTTED:MALE¢FISH_SOLE:FEMALE¢FISH_SOLE:MALE¢FISH_FLOUNDER:FEMALE¢FISH_FLOUNDER:MALE¢FISH_MACKEREL:FEMALE¢FISH_MACKEREL:MALE¢JELLYFISH_SEA_NETTLE:DEFAULT¢ SQUID:FEMALE¢ -SQUID:MALE¢FISH_LUNGFISH:FEMALE¢FISH_LUNGFISH:MALE¢FISH_LOACH_CLOWN:FEMALE¢FISH_LOACH_CLOWN:MALE¢FISH_BULLHEAD_BROWN:FEMALE¢FISH_BULLHEAD_BROWN:MALE¢FISH_BULLHEAD_YELLOW:FEMALE¢FISH_BULLHEAD_YELLOW:MALE¢FISH_BULLHEAD_BLACK:FEMALE¢FISH_BULLHEAD_BLACK:MALE¢FISH_KNIFEFISH_BANDED:FEMALE¢FISH_KNIFEFISH_BANDED:MALE¢FISH_CHAR:FEMALE¢FISH_CHAR:MALE¢FISH_TROUT_RAINBOW:FEMALE¢FISH_TROUT_RAINBOW:MALE¢FISH_MOLLY_SAILFIN:FEMALE¢FISH_MOLLY_SAILFIN:MALE¢FISH_GUPPY:FEMALE¢FISH_GUPPY:MALE¢FISH_PERCH:FEMALE¢FISH_PERCH:MALE¢FISH_CAVE:FEMALE¢FISH_CAVE:MALE¢LOBSTER_CAVE:FEMALE¢LOBSTER_CAVE:MALE˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/furnitureprefix.dfstock b/data/stockpiles/furnitureprefix.dfstock deleted file mode 100644 index 6c52781fb1..0000000000 Binary files a/data/stockpiles/furnitureprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/gemsprefix.dfstock b/data/stockpiles/gemsprefix.dfstock deleted file mode 100644 index 8d7b229a11..0000000000 Binary files a/data/stockpiles/gemsprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/goblets.dfstock b/data/stockpiles/goblets.dfstock index 6bf3c6ccb7..bff4f8a6d3 100644 Binary files a/data/stockpiles/goblets.dfstock and b/data/stockpiles/goblets.dfstock differ diff --git a/data/stockpiles/hair.dfstock b/data/stockpiles/hair.dfstock deleted file mode 100644 index 1aad78df13..0000000000 --- a/data/stockpiles/hair.dfstock +++ /dev/null @@ -1,157 +0,0 @@ -*ÆW -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCH:TOAD:TOAD_MAN: -GIANT_TOAD:WORM:WORM_MAN: BIRD_BLUEJAY: BLUEJAY_MAN: GIANT_BLUEJAY: BIRD_CARDINAL: CARDINAL_MAN:GIANT_CARDINAL: BIRD_GRACKLE: GRACKLE_MAN: GIANT_GRACKLE: BIRD_ORIOLE: -ORIOLE_MAN: GIANT_ORIOLE:BIRD_RW_BLACKBIRD:RW_BLACKBIRD_MAN:GIANT_RW_BLACKBIRD: BIRD_PENGUIN:BIRD_PENGUIN_LITTLE:BIRD_PENGUIN_EMPEROR: PENGUIN MAN:BIRD_PENGUIN_GIANT:BIRD_FALCON_PEREGRINE:PEREGRINE FALCON MAN:GIANT PEREGRINE FALCON: BIRD_KIWI:KIWI MAN:BIRD_KIWI_GIANT: BIRD_OSTRICH: OSTRICH MAN:BIRD_OSTRICH_GIANT: BIRD_CROW:CROW_MAN: -GIANT_CROW: -BIRD_RAVEN: RAVEN_MAN: GIANT_RAVEN:BIRD_CASSOWARY: CASSOWARY_MAN:GIANT_CASSOWARY:BIRD_KEA:KEA_MAN: GIANT_KEA:BIRD_OWL_SNOWY: SNOWY_OWL_MAN:GIANT_SNOWY_OWL:SPARROW: SPARROW_MAN: GIANT_SPARROW:BIRD_STORK_WHITE:WHITE_STORK_MAN:GIANT_WHITE_STORK: BIRD_LOON:LOON_MAN: -GIANT_LOON: BIRD_OWL_BARN: BARN_OWL_MAN:GIANT_BARN_OWL: BIRD_PARAKEET: PARAKEET_MAN:GIANT_PARAKEET: BIRD_KAKAPO: -KAKAPO_MAN: GIANT_KAKAPO:BIRD_PARROT_GREY:GREY_PARROT_MAN:GIANT_GREY_PARROT: BIRD_PUFFIN: -PUFFIN_MAN: GIANT_PUFFIN: BIRD_SWAN:SWAN_MAN: -GIANT_SWAN: BIRD_LORIKEET: LORIKEET_MAN:GIANT_LORIKEET: BIRD_WREN:WREN_MAN: -GIANT_WREN: BIRD_OSPREY: -OSPREY_MAN: GIANT_OSPREY:BIRD_EMU:EMU_MAN: GIANT_EMU:BIRD_COCKATIEL: COCKATIEL_MAN:GIANT_COCKATIEL:BIRD_LOVEBIRD_PEACH-FACED:PEACH-FACED_LOVEBIRD_MAN:GIANT_PEACH-FACED_LOVEBIRD: BIRD_MAGPIE: -MAGPIE_MAN: GIANT_MAGPIE: BIRD_KESTREL: KESTREL_MAN: GIANT_KESTREL:BIRD_ALBATROSS: ALBATROSS_MAN:GIANT_ALBATROSS:BIRD_OWL_GREAT_HORNED:GREAT_HORNED_OWL_MAN:GIANT_GREAT_HORNED_OWL: -BIRD_EAGLE: EAGLE_MAN: GIANT_EAGLE: BIRD_HORNBILL: HORNBILL_MAN:GIANT_HORNBILL:BIRD_LOVEBIRD_MASKED:MASKED_LOVEBIRD_MAN:GIANT_MASKED_LOVEBIRD: BIRD_BUSHTIT: BUSHTIT_MAN: GIANT_BUSHTIT: DAMSELFLY: DAMSELFLY_MAN:GIANT_DAMSELFLY:MOTH:MOTH_MAN: -GIANT_MOTH: GRASSHOPPER:GRASSHOPPER_MAN:GIANT_GRASSHOPPER: BARK_SCORPION:BARK_SCORPION_MAN:GIANT_BARK_SCORPION:MANTIS: -MANTIS_MAN: GIANT_MANTIS:TICK:TICK_MAN: -GIANT_TICK:LOUSE: LOUSE_MAN: GIANT_LOUSE:THRIPS: -THRIPS_MAN: GIANT_THRIPS:SLUG:SLUG_MAN: -GIANT_SLUG:MOSQUITO: MOSQUITO_MAN:GIANT_MOSQUITO:SPIDER_JUMPING:JUMPING_SPIDER_MAN:GIANT_JUMPING_SPIDER:TERMITE: -MOON_SNAIL:MOON_SNAIL_MAN:GIANT_MOON_SNAIL:SPIDER_BROWN_RECLUSE:BROWN_RECLUSE_SPIDER_MAN:GIANT_BROWN_RECLUSE_SPIDER:SNAIL: SNAIL_MAN: GIANT_SNAIL: GECKO_LEOPARD:LEOPARD_GECKO_MAN:GIANT_LEOPARD_GECKO:DESERT TORTOISE:DESERT_TORTOISE_MAN:GIANT_DESERT_TORTOISE: GILA_MONSTER:GILA_MONSTER_MAN:GIANT_GILA_MONSTER:DOG:CAT:MULE:DONKEY:HORSE:COW:SHEEP:PIG:GOAT: BIRD_CHICKEN:CAVY: BIRD_DUCK: WATER_BUFFALO:REINDEER: -BIRD_GOOSE:YAK:LLAMA:ALPACA:BIRD_GUINEAFOWL:BIRD_PEAFOWL_BLUE: BIRD_TURKEY:RABBIT:CHIMERA:CENTAUR:GRIFFON:FLY:FLY_MAN: GIANT_FLY: ROACH_LARGE: ROACH_MAN: GIANT_ROACH:BEETLE: -BEETLE_MAN: GIANT_BEETLE:ANT:BUTTERFLY_MONARCH:BUTTERFLY_MONARCH_MAN:GIANT_BUTTERFLY_MONARCH:FIREFLY: FIREFLY_MAN: GIANT_FIREFLY: DRAGONFLY: DRAGONFLY_MAN:GIANT_DRAGONFLY: HONEY_BEE: BUMBLEBEE: GOAT_MOUNTAIN:GOAT_MOUNTAIN_MAN:GIANT_GOAT_MOUNTAIN: MARMOT_HOARY:MARMOT_HOARY_MAN:GIANT_MARMOT_HOARY:GNOME_MOUNTAIN: -GNOME_DARK:WALRUS: -WALRUS_MAN: GIANT_WALRUS:FISH_LAMPREY_SEA:SHARK_GREAT_WHITE: SHARK_FRILL:SHARK_SPINY_DOGFISH:SHARK_WOBBEGONG_SPOTTED: SHARK_WHALE: SHARK_BASKING: SHARK_NURSE:SHARK_MAKO_SHORTFIN:SHARK_MAKO_LONGFIN: SHARK_TIGER: -SHARK_BULL:SHARK_REEF_BLACKTIP:SHARK_REEF_WHITETIP: -SHARK_BLUE:SHARK_HAMMERHEAD: SHARK_ANGEL:FISH_SKATE_COMMON:FISH_RAY_MANTA: FISH_STINGRAY:FISH_COELACANTH: FISH_STURGEON:FISH_CONGER_EEL: FISH_MILKFISH:FISH_COD: FISH_OPAH:FISH_GROUPER_GIANT: FISH_BLUEFISH:FISH_SUNFISH_OCEAN:FISH_SWORDFISH: FISH_MARLIN: FISH_HALIBUT:FISH_BARRACUDA_GREAT:FISH_TUNA_BLUEFIN:NARWHAL: NARWHAL MAN:NARWHAL, GIANT:HIPPO: HIPPO_MAN: GIANT_HIPPO:FISH_GAR_LONGNOSE: FISH_CARP:FISH_TIGERFISH: FISH_PIKE:PLATYPUS: PLATYPUS MAN:PLATYPUS, GIANT: BEAR_GRIZZLY:BEAR_GRIZZLY_MAN:GIANT_BEAR_GRIZZLY: -BEAR_BLACK:BEAR_BLACK_MAN:GIANT_BEAR_BLACK:DEER:DEER_MAN: -GIANT_DEER:FOX:FOX_MAN: GIANT_FOX:RACCOON: RACCOON_MAN: GIANT_RACCOON:MACAQUE_RHESUS:MACAQUE_RHESUS_MAN:GIANT_MACAQUE_RHESUS:COUGAR: -COUGAR_MAN: GIANT_COUGAR:WOLF:WOLF_MAN: -GIANT_WOLF: GROUNDHOG: GROUNDHOG_MAN:GIANT_GROUNDHOG: ALLIGATOR: ALLIGATOR_MAN:GIANT_ALLIGATOR: BIRD_BUZZARD: BUZZARD_MAN: GIANT_BUZZARD:PANDA:PANDA, GIGANTIC: PANDA MAN:CAPYBARA:CAPYBARA, GIANT: CAPYBARA MAN:BADGER: -BADGER MAN: BADGER, GIANT:MOOSE: MOOSE MAN: MOOSE, GIANT: RED PANDA: RED PANDA MAN:RED PANDA, GIANT:ELEPHANT: ELEPHANT_MAN:GIANT_ELEPHANT:WARTHOG: WARTHOG_MAN: GIANT_WARTHOG:LION:LION_MAN: -GIANT_LION:LEOPARD: LEOPARD_MAN: GIANT_LEOPARD:JAGUAR: -JAGUAR_MAN: GIANT_JAGUAR:TIGER: TIGER_MAN: GIANT_TIGER:CHEETAH: CHEETAH_MAN: GIANT_CHEETAH:GAZELLE: GAZELLE_MAN: GIANT_GAZELLE:MANDRILL: MANDRILL_MAN:GIANT_MANDRILL: -CHIMPANZEE:BONOBO:GORILLA: ORANGUTAN:GIBBON_SIAMANG:GIBBON_WHITE_HANDED:GIBBON_BLACK_HANDED: GIBBON_GRAY:GIBBON_SILVERY:GIBBON_PILEATED: GIBBON_BILOU:GIBBON_WHITE_BROWED:GIBBON_BLACK_CRESTED: CAMEL_1_HUMP:CAMEL_1_HUMP_MAN:GIANT_CAMEL_1_HUMP: CAMEL_2_HUMP:CAMEL_2_HUMP_MAN:GIANT_CAMEL_2_HUMP:CROCODILE_SALTWATER:CROCODILE_SALTWATER_MAN:GIANT_CROCODILE_SALTWATER: BIRD_VULTURE: VULTURE_MAN: GIANT_VULTURE: -RHINOCEROS:RHINOCEROS_MAN:GIANT_RHINOCEROS:GIRAFFE: GIRAFFE_MAN: GIANT_GIRAFFE: HONEY BADGER:HONEY BADGER MAN:HONEY BADGER, GIANT:GIANT TORTOISE:GIANT TORTOISE MAN:GIGANTIC TORTOISE: ARMADILLO: ARMADILLO MAN:ARMADILLO, GIANT:MUSKOX: -MUSKOX_MAN: GIANT_MUSKOX:ELK:ELK_MAN: GIANT_ELK: -BEAR_POLAR:BEAR_POLAR_MAN:GIANT_BEAR_POLAR: WOLVERINE: WOLVERINE_MAN:GIANT_WOLVERINE: -CHINCHILLA:CHINCHILLA_MAN:GIANT_CHINCHILLA: FLOATING_GUTS:DRUNIAN: CREEPING_EYE:VORACIOUS_CAVE_CRAWLER:BLIND_CAVE_OGRE: -CAP_HOPPER: -MAGMA_CRAB:CRUNDLE: HUNGRY_HEAD: -FLESH_BALL:ELK_BIRD: HELMET_SNAKE:GREEN_DEVOURER:RUTHERER:CREEPY_CRAWLER:DRALTHA:GIANT_EARTHWORM: BLOOD_MAN:BUGBAT:MANERA: -MOLEMARIAN:JABBERER: POND_GRABBER:BLIND_CAVE_BEAR: CAVE_DRAGON:REACHER:ELEMENTMAN_GABBRO:GORLAK: CAVE_FLOATER:PLUMP_HELMET_MAN: CAVE_BLOB:ELEMENTMAN_AMETHYST:OCTOPUS: OCTOPUS_MAN: GIANT_OCTOPUS:CRAB:CRAB_MAN: -GIANT_CRAB: LEOPARD_SEAL:LEOPARD_SEAL_MAN:GIANT_LEOPARD_SEAL: -CUTTLEFISH:CUTTLEFISH_MAN:GIANT_CUTTLEFISH:ORCA:ORCA_MAN: -GIANT_ORCA:SPONGE: -SPONGE_MAN: GIANT_SPONGE:HORSESHOE_CRAB:HORSESHOE_CRAB_MAN:GIANT_HORSESHOE_CRAB: SPERM_WHALE:SPERM_WHALE_MAN:GIANT_SPERM_WHALE: ELEPHANT_SEAL:ELEPHANT_SEAL_MAN:GIANT_ELEPHANT_SEAL: HARP_SEAL: HARP_SEAL_MAN:GIANT_HARP_SEAL:NAUTILUS: NAUTILUS_MAN:GIANT_NAUTILUS: FOXSQUIRREL: MOGHOPPER: RAT_DEMON:WAMBLER_FLUFFY:LIZARD_RHINO_TWO_LEGGED: WORM_KNUCKLE:SPIDER_PHANTOM: FLY_ACORN: -GNAT_BLOOD:LIZARD: -LIZARD_MAN: GIANT_LIZARD:SKINK: SKINK_MAN: GIANT_SKINK: CHAMELEON: CHAMELEON_MAN:GIANT_CHAMELEON:ANOLE: ANOLE_MAN: GIANT_ANOLE:IGUANA: -IGUANA_MAN: GIANT_IGUANA: RIVER OTTER: SEA OTTER: OTTER_MAN: GIANT_OTTER:SNAPPING TURTLE:ALLIGATOR SNAPPING TURTLE:SNAPPING_TURTLE_MAN:GIANT_SNAPPING_TURTLE:BEAVER: -BEAVER_MAN: GIANT_BEAVER:LEECH: LEECH_MAN: GIANT_LEECH:AXOLOTL: AXOLOTL_MAN: GIANT_AXOLOTL:MINK:MINK_MAN: -GIANT_MINK: POND_TURTLE:POND_TURTLE_MAN:GIANT_POND_TURTLE:RAT:RAT_MAN: SQUIRREL_GRAY:SQUIRREL_GRAY_MAN:GIANT_SQUIRREL_GRAY: SQUIRREL_RED:SQUIRREL_RED_MAN:GIANT_SQUIRREL_RED:CHIPMUNK: CHIPMUNK_MAN:GIANT_CHIPMUNK:HAMSTER: HAMSTER_MAN: GIANT_HAMSTER:HEDGEHOG: HEDGEHOG_MAN:GIANT_HEDGEHOG:SQUIRREL_FLYING:FLYING_SQUIRREL_MAN:GIANT_FLYING_SQUIRREL:MUSSEL:OYSTER: FISH_SALMON:FISH_CLOWNFISH: FISH_HAGFISH:FISH_LAMPREY_BROOK: FISH_RAY_BAT:FISH_RAY_THORNBACK:FISH_RATFISH_SPOTTED: FISH_HERRING: FISH_SHAD: FISH_ANCHOVY:FISH_TROUT_STEELHEAD: FISH_HAKE: FISH_SEAHORSE: FISH_GLASSEYE:FISH_PUFFER_WHITE_SPOTTED: FISH_SOLE: FISH_FLOUNDER: FISH_MACKEREL:JELLYFISH_SEA_NETTLE:SQUID: SQUID MAN:GIGANTIC SQUID: FISH_LUNGFISH:FISH_LOACH_CLOWN:FISH_BULLHEAD_BROWN:FISH_BULLHEAD_YELLOW:FISH_BULLHEAD_BLACK:FISH_KNIFEFISH_BANDED: FISH_CHAR:FISH_TROUT_RAINBOW:FISH_MOLLY_SAILFIN: -FISH_GUPPY: -FISH_PERCH:DWARF:HUMAN:ELF:GOBLIN:KOBOLD:GREMLIN:TROLL:OGRE:UNICORN:DRAGON:SATYR:COLOSSUS_BRONZE:GIANT:CYCLOPS:ETTIN:MINOTAUR:YETI: SASQUATCH: BLIZZARD_MAN:WOLF_ICE:FAIRY:PIXIE:BEAK_DOG: GRIMELING: BLENDEC_FOUL: STRANGLER: NIGHTWING:HARPY:HYDRA: MERPERSON: SEA_SERPENT: SEA_MONSTER:BIRD_ROC:CROCODILE_CAVE:TOAD_GIANT_CAVE: OLM_GIANT: BAT_GIANT: RAT_GIANT: RAT_LARGE:MOLE_DOG_NAKED: -TROGLODYTE: -MOLE_GIANT:IMP_FIRE:SPIDER_CAVE_GIANT: SPIDER_CAVE: FISH_CAVE: CAVE_FISH_MAN: LOBSTER_CAVE: -SNAKE_FIRE:OLM:OLM_MAN:BAT:BAT_MAN:MAGGOT_PURRING:ELEMENTMAN_FIRE:ELEMENTMAN_MAGMA:ELEMENTMAN_IRON:ELEMENTMAN_MUD:BIRD_SWALLOW_CAVE:CAVE_SWALLOW_MAN:BIRD_SWALLOW_CAVE_GIANT: AMPHIBIAN_MAN: REPTILE_MAN: SERPENT_MAN:ANT_MAN: -RODENT MAN: WILD_BOAR: WILD_BOAR_MAN:GIANT_WILD_BOAR:COYOTE: -COYOTE_MAN: GIANT_COYOTE:KANGAROO: KANGAROO_MAN:GIANT_KANGAROO:KOALA: KOALA_MAN: GIANT_KOALA:ADDER: ADDER_MAN: GIANT_ADDER:ECHIDNA: ECHIDNA_MAN: GIANT_ECHIDNA: PORCUPINE: PORCUPINE_MAN:GIANT_PORCUPINE: KINGSNAKE: KINGSNAKE_MAN:GIANT_KINGSNAKE: GRAY_LANGUR:GRAY_LANGUR_MAN:GIANT_GRAY_LANGUR:BOBCAT: -BOBCAT_MAN: GIANT_BOBCAT:SKUNK: SKUNK_MAN: GIANT_SKUNK:GREEN_TREE_FROG:GREEN_TREE_FROG_MAN:GIANT_GREEN_TREE_FROG:HARE:HARE_MAN: -GIANT_HARE: RATTLESNAKE:RATTLESNAKE_MAN:GIANT_RATTLESNAKE:WEASEL: -WEASEL_MAN: GIANT_WEASEL:COPPERHEAD_SNAKE:COPPERHEAD_SNAKE_MAN:GIANT_COPPERHEAD_SNAKE:IBEX:IBEX_MAN: -GIANT_IBEX:WOMBAT: -WOMBAT_MAN: GIANT_WOMBAT:DINGO: DINGO_MAN: GIANT_DINGO:COATI: COATI_MAN: GIANT_COATI:OPOSSUM: OPOSSUM_MAN: GIANT_OPOSSUM:MONGOOSE: MONGOOSE_MAN:GIANT_MONGOOSE:HYENA: HYENA_MAN: GIANT_HYENA:ANACONDA: ANACONDA_MAN:GIANT_ANACONDA:MONITOR_LIZARD:MONITOR_LIZARD_MAN:GIANT_MONITOR_LIZARD: -KING_COBRA:KING_COBRA_MAN:GIANT_KING_COBRA:OCELOT: -OCELOT_MAN: GIANT_OCELOT:JACKAL: -JACKAL_MAN: GIANT_JACKAL:CAPUCHIN: CAPUCHIN_MAN:GIANT_CAPUCHIN:SLOTH: SLOTH_MAN: GIANT_SLOTH: SPIDER_MONKEY:SPIDER_MONKEY_MAN:GIANT_SPIDER_MONKEY:PANGOLIN: PANGOLIN_MAN:GIANT_PANGOLIN: BLACK_MAMBA:BLACK_MAMBA_MAN:GIANT_BLACK_MAMBA: -BEAR_SLOTH:SLOTH_BEAR_MAN:GIANT_SLOTH_BEAR:AYE-AYE: AYE-AYE_MAN: GIANT_AYE-AYE: -BUSHMASTER:BUSHMASTER_MAN:GIANT_BUSHMASTER:PYTHON: -PYTHON_MAN: GIANT_PYTHON:TAPIR: TAPIR_MAN: GIANT_TAPIR:IMPALA: -IMPALA_MAN: GIANT_IMPALA:AARDVARK: AARDVARK_MAN:GIANT_AARDVARK: LION_TAMARIN:LION_TAMARIN_MAN:GIANT_LION_TAMARIN:STOAT: STOAT_MAN: GIANT_STOAT:LYNX:LYNX_MAN: -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/horns.dfstock b/data/stockpiles/horns.dfstock deleted file mode 100644 index 44726daa04..0000000000 Binary files a/data/stockpiles/horns.dfstock and /dev/null differ diff --git a/data/stockpiles/ironarmor.dfstock b/data/stockpiles/ironarmor.dfstock index a1cdc6fd11..9474bd69f3 100644 Binary files a/data/stockpiles/ironarmor.dfstock and b/data/stockpiles/ironarmor.dfstock differ diff --git a/data/stockpiles/ironbars.dfstock b/data/stockpiles/ironbars.dfstock index 6f7df7f2a5..2cb77c0e35 100644 Binary files a/data/stockpiles/ironbars.dfstock and b/data/stockpiles/ironbars.dfstock differ diff --git a/data/stockpiles/iron.dfstock b/data/stockpiles/ironore.dfstock similarity index 51% rename from data/stockpiles/iron.dfstock rename to data/stockpiles/ironore.dfstock index 90182276c7..2108b60ac3 100644 Binary files a/data/stockpiles/iron.dfstock and b/data/stockpiles/ironore.dfstock differ diff --git a/data/stockpiles/ironweapons.dfstock b/data/stockpiles/ironweapons.dfstock index 2128596fe9..8c0afecd16 100644 Binary files a/data/stockpiles/ironweapons.dfstock and b/data/stockpiles/ironweapons.dfstock differ diff --git a/data/stockpiles/leatherprefix.dfstock b/data/stockpiles/leatherprefix.dfstock deleted file mode 100644 index d8979ca402..0000000000 --- a/data/stockpiles/leatherprefix.dfstock +++ /dev/null @@ -1,1363 +0,0 @@ -jâê -CREATURE:TOAD:LEATHER -CREATURE:TOAD_MAN:LEATHER -CREATURE:GIANT_TOAD:LEATHER -CREATURE:WORM:LEATHER -CREATURE:WORM_MAN:LEATHER -CREATURE:BIRD_BLUEJAY:LEATHER -CREATURE:BLUEJAY_MAN:LEATHER -CREATURE:GIANT_BLUEJAY:LEATHER -CREATURE:BIRD_CARDINAL:LEATHER -CREATURE:CARDINAL_MAN:LEATHER -CREATURE:GIANT_CARDINAL:LEATHER -CREATURE:BIRD_GRACKLE:LEATHER -CREATURE:GRACKLE_MAN:LEATHER -CREATURE:GIANT_GRACKLE:LEATHER -CREATURE:BIRD_ORIOLE:LEATHER -CREATURE:ORIOLE_MAN:LEATHER -CREATURE:GIANT_ORIOLE:LEATHER -"CREATURE:BIRD_RW_BLACKBIRD:LEATHER -!CREATURE:RW_BLACKBIRD_MAN:LEATHER -#CREATURE:GIANT_RW_BLACKBIRD:LEATHER -CREATURE:BIRD_PENGUIN:LEATHER -$CREATURE:BIRD_PENGUIN_LITTLE:LEATHER -%CREATURE:BIRD_PENGUIN_EMPEROR:LEATHER -CREATURE:PENGUIN MAN:LEATHER -#CREATURE:BIRD_PENGUIN_GIANT:LEATHER -&CREATURE:BIRD_FALCON_PEREGRINE:LEATHER -%CREATURE:PEREGRINE FALCON MAN:LEATHER -'CREATURE:GIANT PEREGRINE FALCON:LEATHER -CREATURE:BIRD_KIWI:LEATHER -CREATURE:KIWI MAN:LEATHER - CREATURE:BIRD_KIWI_GIANT:LEATHER -CREATURE:BIRD_OSTRICH:LEATHER -CREATURE:OSTRICH MAN:LEATHER -#CREATURE:BIRD_OSTRICH_GIANT:LEATHER -CREATURE:BIRD_CROW:LEATHER -CREATURE:CROW_MAN:LEATHER -CREATURE:GIANT_CROW:LEATHER -CREATURE:BIRD_RAVEN:LEATHER -CREATURE:RAVEN_MAN:LEATHER -CREATURE:GIANT_RAVEN:LEATHER -CREATURE:BIRD_CASSOWARY:LEATHER -CREATURE:CASSOWARY_MAN:LEATHER - CREATURE:GIANT_CASSOWARY:LEATHER -CREATURE:BIRD_KEA:LEATHER -CREATURE:KEA_MAN:LEATHER -CREATURE:GIANT_KEA:LEATHER -CREATURE:BIRD_OWL_SNOWY:LEATHER -CREATURE:SNOWY_OWL_MAN:LEATHER - CREATURE:GIANT_SNOWY_OWL:LEATHER -CREATURE:SPARROW:LEATHER -CREATURE:SPARROW_MAN:LEATHER -CREATURE:GIANT_SPARROW:LEATHER -!CREATURE:BIRD_STORK_WHITE:LEATHER - CREATURE:WHITE_STORK_MAN:LEATHER -"CREATURE:GIANT_WHITE_STORK:LEATHER -CREATURE:BIRD_LOON:LEATHER -CREATURE:LOON_MAN:LEATHER -CREATURE:GIANT_LOON:LEATHER -CREATURE:BIRD_OWL_BARN:LEATHER -CREATURE:BARN_OWL_MAN:LEATHER -CREATURE:GIANT_BARN_OWL:LEATHER -CREATURE:BIRD_PARAKEET:LEATHER -CREATURE:PARAKEET_MAN:LEATHER -CREATURE:GIANT_PARAKEET:LEATHER -CREATURE:BIRD_KAKAPO:LEATHER -CREATURE:KAKAPO_MAN:LEATHER -CREATURE:GIANT_KAKAPO:LEATHER -!CREATURE:BIRD_PARROT_GREY:LEATHER - CREATURE:GREY_PARROT_MAN:LEATHER -"CREATURE:GIANT_GREY_PARROT:LEATHER -CREATURE:BIRD_PUFFIN:LEATHER -CREATURE:PUFFIN_MAN:LEATHER -CREATURE:GIANT_PUFFIN:LEATHER -CREATURE:BIRD_SWAN:LEATHER -CREATURE:SWAN_MAN:LEATHER -CREATURE:GIANT_SWAN:LEATHER -CREATURE:BIRD_LORIKEET:LEATHER -CREATURE:LORIKEET_MAN:LEATHER -CREATURE:GIANT_LORIKEET:LEATHER -CREATURE:BIRD_WREN:LEATHER -CREATURE:WREN_MAN:LEATHER -CREATURE:GIANT_WREN:LEATHER -CREATURE:BIRD_OSPREY:LEATHER -CREATURE:OSPREY_MAN:LEATHER -CREATURE:GIANT_OSPREY:LEATHER -CREATURE:BIRD_EMU:LEATHER -CREATURE:EMU_MAN:LEATHER -CREATURE:GIANT_EMU:LEATHER -CREATURE:BIRD_COCKATIEL:LEATHER -CREATURE:COCKATIEL_MAN:LEATHER - CREATURE:GIANT_COCKATIEL:LEATHER -*CREATURE:BIRD_LOVEBIRD_PEACH-FACED:LEATHER -)CREATURE:PEACH-FACED_LOVEBIRD_MAN:LEATHER -+CREATURE:GIANT_PEACH-FACED_LOVEBIRD:LEATHER -CREATURE:BIRD_MAGPIE:LEATHER -CREATURE:MAGPIE_MAN:LEATHER -CREATURE:GIANT_MAGPIE:LEATHER -CREATURE:BIRD_KESTREL:LEATHER -CREATURE:KESTREL_MAN:LEATHER -CREATURE:GIANT_KESTREL:LEATHER -CREATURE:BIRD_ALBATROSS:LEATHER -CREATURE:ALBATROSS_MAN:LEATHER - CREATURE:GIANT_ALBATROSS:LEATHER -&CREATURE:BIRD_OWL_GREAT_HORNED:LEATHER -%CREATURE:GREAT_HORNED_OWL_MAN:LEATHER -'CREATURE:GIANT_GREAT_HORNED_OWL:LEATHER -CREATURE:BIRD_EAGLE:LEATHER -CREATURE:EAGLE_MAN:LEATHER -CREATURE:GIANT_EAGLE:LEATHER -CREATURE:BIRD_HORNBILL:LEATHER -CREATURE:HORNBILL_MAN:LEATHER -CREATURE:GIANT_HORNBILL:LEATHER -%CREATURE:BIRD_LOVEBIRD_MASKED:LEATHER -$CREATURE:MASKED_LOVEBIRD_MAN:LEATHER -&CREATURE:GIANT_MASKED_LOVEBIRD:LEATHER -CREATURE:BIRD_BUSHTIT:LEATHER -CREATURE:BUSHTIT_MAN:LEATHER -CREATURE:GIANT_BUSHTIT:LEATHER -CREATURE:SLUG:LEATHER -CREATURE:SLUG_MAN:LEATHER -CREATURE:GIANT_SLUG:LEATHER -CREATURE:MOON_SNAIL:LEATHER -CREATURE:MOON_SNAIL_MAN:LEATHER -!CREATURE:GIANT_MOON_SNAIL:LEATHER -CREATURE:SNAIL:LEATHER -CREATURE:SNAIL_MAN:LEATHER -CREATURE:GIANT_SNAIL:LEATHER -CREATURE:DOG:LEATHER -CREATURE:CAT:LEATHER -CREATURE:MULE:LEATHER -CREATURE:DONKEY:LEATHER -CREATURE:HORSE:LEATHER -CREATURE:COW:LEATHER -CREATURE:SHEEP:LEATHER -CREATURE:PIG:LEATHER -CREATURE:GOAT:LEATHER -CREATURE:BIRD_CHICKEN:LEATHER -CREATURE:CAVY:LEATHER -CREATURE:BIRD_DUCK:LEATHER -CREATURE:WATER_BUFFALO:LEATHER -CREATURE:REINDEER:LEATHER -CREATURE:BIRD_GOOSE:LEATHER -CREATURE:YAK:LEATHER -CREATURE:LLAMA:LEATHER -CREATURE:ALPACA:LEATHER - CREATURE:BIRD_GUINEAFOWL:LEATHER -"CREATURE:BIRD_PEAFOWL_BLUE:LEATHER -CREATURE:BIRD_TURKEY:LEATHER -CREATURE:RABBIT:LEATHER -CREATURE:GOAT_MOUNTAIN:LEATHER -"CREATURE:GOAT_MOUNTAIN_MAN:LEATHER -$CREATURE:GIANT_GOAT_MOUNTAIN:LEATHER -CREATURE:MARMOT_HOARY:LEATHER -!CREATURE:MARMOT_HOARY_MAN:LEATHER -#CREATURE:GIANT_MARMOT_HOARY:LEATHER -CREATURE:GNOME_MOUNTAIN:LEATHER -CREATURE:GNOME_DARK:LEATHER -CREATURE:WALRUS:LEATHER -CREATURE:WALRUS_MAN:LEATHER -CREATURE:GIANT_WALRUS:LEATHER -!CREATURE:FISH_LAMPREY_SEA:LEATHER -"CREATURE:SHARK_GREAT_WHITE:LEATHER -CREATURE:SHARK_FRILL:LEATHER -$CREATURE:SHARK_SPINY_DOGFISH:LEATHER -(CREATURE:SHARK_WOBBEGONG_SPOTTED:LEATHER -CREATURE:SHARK_WHALE:LEATHER -CREATURE:SHARK_BASKING:LEATHER -CREATURE:SHARK_NURSE:LEATHER -$CREATURE:SHARK_MAKO_SHORTFIN:LEATHER -#CREATURE:SHARK_MAKO_LONGFIN:LEATHER -CREATURE:SHARK_TIGER:LEATHER -CREATURE:SHARK_BULL:LEATHER -$CREATURE:SHARK_REEF_BLACKTIP:LEATHER -$CREATURE:SHARK_REEF_WHITETIP:LEATHER -CREATURE:SHARK_BLUE:LEATHER -!CREATURE:SHARK_HAMMERHEAD:LEATHER -CREATURE:SHARK_ANGEL:LEATHER -"CREATURE:FISH_SKATE_COMMON:LEATHER -CREATURE:FISH_RAY_MANTA:LEATHER -CREATURE:FISH_STINGRAY:LEATHER - CREATURE:FISH_CONGER_EEL:LEATHER -CREATURE:NARWHAL:LEATHER -CREATURE:NARWHAL MAN:LEATHER -CREATURE:NARWHAL, GIANT:LEATHER -CREATURE:HIPPO:LEATHER -CREATURE:HIPPO_MAN:LEATHER -CREATURE:GIANT_HIPPO:LEATHER -CREATURE:PLATYPUS:LEATHER -CREATURE:PLATYPUS MAN:LEATHER - CREATURE:PLATYPUS, GIANT:LEATHER -CREATURE:BEAR_GRIZZLY:LEATHER -!CREATURE:BEAR_GRIZZLY_MAN:LEATHER -#CREATURE:GIANT_BEAR_GRIZZLY:LEATHER -CREATURE:BEAR_BLACK:LEATHER -CREATURE:BEAR_BLACK_MAN:LEATHER -!CREATURE:GIANT_BEAR_BLACK:LEATHER -CREATURE:DEER:LEATHER -CREATURE:DEER_MAN:LEATHER -CREATURE:GIANT_DEER:LEATHER -CREATURE:FOX:LEATHER -CREATURE:FOX_MAN:LEATHER -CREATURE:GIANT_FOX:LEATHER -CREATURE:RACCOON:LEATHER -CREATURE:RACCOON_MAN:LEATHER -CREATURE:GIANT_RACCOON:LEATHER -CREATURE:MACAQUE_RHESUS:LEATHER -#CREATURE:MACAQUE_RHESUS_MAN:LEATHER -%CREATURE:GIANT_MACAQUE_RHESUS:LEATHER -CREATURE:COUGAR:LEATHER -CREATURE:COUGAR_MAN:LEATHER -CREATURE:GIANT_COUGAR:LEATHER -CREATURE:WOLF:LEATHER -CREATURE:WOLF_MAN:LEATHER -CREATURE:GIANT_WOLF:LEATHER -CREATURE:GROUNDHOG:LEATHER -CREATURE:GROUNDHOG_MAN:LEATHER - CREATURE:GIANT_GROUNDHOG:LEATHER -CREATURE:BIRD_BUZZARD:LEATHER -CREATURE:BUZZARD_MAN:LEATHER -CREATURE:GIANT_BUZZARD:LEATHER -CREATURE:PANDA:LEATHER - CREATURE:PANDA, GIGANTIC:LEATHER -CREATURE:PANDA MAN:LEATHER -CREATURE:CAPYBARA:LEATHER - CREATURE:CAPYBARA, GIANT:LEATHER -CREATURE:CAPYBARA MAN:LEATHER -CREATURE:BADGER:LEATHER -CREATURE:BADGER MAN:LEATHER -CREATURE:BADGER, GIANT:LEATHER -CREATURE:MOOSE:LEATHER -CREATURE:MOOSE MAN:LEATHER -CREATURE:MOOSE, GIANT:LEATHER -CREATURE:RED PANDA:LEATHER -CREATURE:RED PANDA MAN:LEATHER -!CREATURE:RED PANDA, GIANT:LEATHER -CREATURE:ELEPHANT:LEATHER -CREATURE:ELEPHANT_MAN:LEATHER -CREATURE:GIANT_ELEPHANT:LEATHER -CREATURE:WARTHOG:LEATHER -CREATURE:WARTHOG_MAN:LEATHER -CREATURE:GIANT_WARTHOG:LEATHER -CREATURE:LION:LEATHER -CREATURE:LION_MAN:LEATHER -CREATURE:GIANT_LION:LEATHER -CREATURE:LEOPARD:LEATHER -CREATURE:LEOPARD_MAN:LEATHER -CREATURE:GIANT_LEOPARD:LEATHER -CREATURE:JAGUAR:LEATHER -CREATURE:JAGUAR_MAN:LEATHER -CREATURE:GIANT_JAGUAR:LEATHER -CREATURE:TIGER:LEATHER -CREATURE:TIGER_MAN:LEATHER -CREATURE:GIANT_TIGER:LEATHER -CREATURE:CHEETAH:LEATHER -CREATURE:CHEETAH_MAN:LEATHER -CREATURE:GIANT_CHEETAH:LEATHER -CREATURE:GAZELLE:LEATHER -CREATURE:GAZELLE_MAN:LEATHER -CREATURE:GIANT_GAZELLE:LEATHER -CREATURE:MANDRILL:LEATHER -CREATURE:MANDRILL_MAN:LEATHER -CREATURE:GIANT_MANDRILL:LEATHER -CREATURE:CHIMPANZEE:LEATHER -CREATURE:BONOBO:LEATHER -CREATURE:GORILLA:LEATHER -CREATURE:ORANGUTAN:LEATHER -CREATURE:GIBBON_SIAMANG:LEATHER -$CREATURE:GIBBON_WHITE_HANDED:LEATHER -$CREATURE:GIBBON_BLACK_HANDED:LEATHER -CREATURE:GIBBON_GRAY:LEATHER -CREATURE:GIBBON_SILVERY:LEATHER - CREATURE:GIBBON_PILEATED:LEATHER -CREATURE:GIBBON_BILOU:LEATHER -$CREATURE:GIBBON_WHITE_BROWED:LEATHER -%CREATURE:GIBBON_BLACK_CRESTED:LEATHER -CREATURE:CAMEL_1_HUMP:LEATHER -!CREATURE:CAMEL_1_HUMP_MAN:LEATHER -#CREATURE:GIANT_CAMEL_1_HUMP:LEATHER -CREATURE:CAMEL_2_HUMP:LEATHER -!CREATURE:CAMEL_2_HUMP_MAN:LEATHER -#CREATURE:GIANT_CAMEL_2_HUMP:LEATHER -CREATURE:BIRD_VULTURE:LEATHER -CREATURE:VULTURE_MAN:LEATHER -CREATURE:GIANT_VULTURE:LEATHER -CREATURE:RHINOCEROS:LEATHER -CREATURE:RHINOCEROS_MAN:LEATHER -!CREATURE:GIANT_RHINOCEROS:LEATHER -CREATURE:GIRAFFE:LEATHER -CREATURE:GIRAFFE_MAN:LEATHER -CREATURE:GIANT_GIRAFFE:LEATHER -CREATURE:HONEY BADGER:LEATHER -!CREATURE:HONEY BADGER MAN:LEATHER -$CREATURE:HONEY BADGER, GIANT:LEATHER -CREATURE:ARMADILLO:LEATHER -CREATURE:ARMADILLO MAN:LEATHER -!CREATURE:ARMADILLO, GIANT:LEATHER -CREATURE:MUSKOX:LEATHER -CREATURE:MUSKOX_MAN:LEATHER -CREATURE:GIANT_MUSKOX:LEATHER -CREATURE:ELK:LEATHER -CREATURE:ELK_MAN:LEATHER -CREATURE:GIANT_ELK:LEATHER -CREATURE:BEAR_POLAR:LEATHER -CREATURE:BEAR_POLAR_MAN:LEATHER -!CREATURE:GIANT_BEAR_POLAR:LEATHER -CREATURE:WOLVERINE:LEATHER -CREATURE:WOLVERINE_MAN:LEATHER - CREATURE:GIANT_WOLVERINE:LEATHER -CREATURE:CHINCHILLA:LEATHER -CREATURE:CHINCHILLA_MAN:LEATHER -!CREATURE:GIANT_CHINCHILLA:LEATHER -CREATURE:FLOATING_GUTS:LEATHER -CREATURE:DRUNIAN:LEATHER -CREATURE:CREEPING_EYE:LEATHER -'CREATURE:VORACIOUS_CAVE_CRAWLER:LEATHER - CREATURE:BLIND_CAVE_OGRE:LEATHER -CREATURE:CAP_HOPPER:LEATHER -CREATURE:HUNGRY_HEAD:LEATHER -CREATURE:ELK_BIRD:LEATHER -CREATURE:GREEN_DEVOURER:LEATHER -CREATURE:RUTHERER:LEATHER -CREATURE:CREEPY_CRAWLER:LEATHER -CREATURE:DRALTHA:LEATHER - CREATURE:GIANT_EARTHWORM:LEATHER -CREATURE:BUGBAT:LEATHER -CREATURE:MANERA:LEATHER -CREATURE:MOLEMARIAN:LEATHER -CREATURE:JABBERER:LEATHER -CREATURE:POND_GRABBER:LEATHER - CREATURE:BLIND_CAVE_BEAR:LEATHER -CREATURE:REACHER:LEATHER -CREATURE:GORLAK:LEATHER -CREATURE:CAVE_FLOATER:LEATHER -CREATURE:CAVE_BLOB:LEATHER -CREATURE:OCTOPUS:LEATHER -CREATURE:OCTOPUS_MAN:LEATHER -CREATURE:GIANT_OCTOPUS:LEATHER -CREATURE:LEOPARD_SEAL:LEATHER -!CREATURE:LEOPARD_SEAL_MAN:LEATHER -#CREATURE:GIANT_LEOPARD_SEAL:LEATHER -CREATURE:CUTTLEFISH:LEATHER -CREATURE:CUTTLEFISH_MAN:LEATHER -!CREATURE:GIANT_CUTTLEFISH:LEATHER -CREATURE:ORCA:LEATHER -CREATURE:ORCA_MAN:LEATHER -CREATURE:GIANT_ORCA:LEATHER -CREATURE:SPERM_WHALE:LEATHER - CREATURE:SPERM_WHALE_MAN:LEATHER -"CREATURE:GIANT_SPERM_WHALE:LEATHER -CREATURE:ELEPHANT_SEAL:LEATHER -"CREATURE:ELEPHANT_SEAL_MAN:LEATHER -$CREATURE:GIANT_ELEPHANT_SEAL:LEATHER -CREATURE:HARP_SEAL:LEATHER -CREATURE:HARP_SEAL_MAN:LEATHER - CREATURE:GIANT_HARP_SEAL:LEATHER -CREATURE:NAUTILUS:LEATHER -CREATURE:NAUTILUS_MAN:LEATHER -CREATURE:GIANT_NAUTILUS:LEATHER -CREATURE:FOXSQUIRREL:LEATHER -CREATURE:MOGHOPPER:LEATHER -CREATURE:RAT_DEMON:LEATHER -CREATURE:WAMBLER_FLUFFY:LEATHER -CREATURE:WORM_KNUCKLE:LEATHER -CREATURE:RIVER OTTER:LEATHER -CREATURE:SEA OTTER:LEATHER -CREATURE:OTTER_MAN:LEATHER -CREATURE:GIANT_OTTER:LEATHER -CREATURE:BEAVER:LEATHER -CREATURE:BEAVER_MAN:LEATHER -CREATURE:GIANT_BEAVER:LEATHER -CREATURE:LEECH:LEATHER -CREATURE:LEECH_MAN:LEATHER -CREATURE:GIANT_LEECH:LEATHER -CREATURE:AXOLOTL:LEATHER -CREATURE:AXOLOTL_MAN:LEATHER -CREATURE:GIANT_AXOLOTL:LEATHER -CREATURE:MINK:LEATHER -CREATURE:MINK_MAN:LEATHER -CREATURE:GIANT_MINK:LEATHER -CREATURE:RAT:LEATHER -CREATURE:RAT_MAN:LEATHER -CREATURE:SQUIRREL_GRAY:LEATHER -"CREATURE:SQUIRREL_GRAY_MAN:LEATHER -$CREATURE:GIANT_SQUIRREL_GRAY:LEATHER -CREATURE:SQUIRREL_RED:LEATHER -!CREATURE:SQUIRREL_RED_MAN:LEATHER -#CREATURE:GIANT_SQUIRREL_RED:LEATHER -CREATURE:CHIPMUNK:LEATHER -CREATURE:CHIPMUNK_MAN:LEATHER -CREATURE:GIANT_CHIPMUNK:LEATHER -CREATURE:HAMSTER:LEATHER -CREATURE:HAMSTER_MAN:LEATHER -CREATURE:GIANT_HAMSTER:LEATHER -CREATURE:HEDGEHOG:LEATHER -CREATURE:HEDGEHOG_MAN:LEATHER -CREATURE:GIANT_HEDGEHOG:LEATHER - CREATURE:SQUIRREL_FLYING:LEATHER -$CREATURE:FLYING_SQUIRREL_MAN:LEATHER -&CREATURE:GIANT_FLYING_SQUIRREL:LEATHER -CREATURE:MUSSEL:LEATHER -CREATURE:OYSTER:LEATHER -CREATURE:FISH_HAGFISH:LEATHER -#CREATURE:FISH_LAMPREY_BROOK:LEATHER -CREATURE:FISH_RAY_BAT:LEATHER -#CREATURE:FISH_RAY_THORNBACK:LEATHER -CREATURE:FISH_SEAHORSE:LEATHER -*CREATURE:FISH_PUFFER_WHITE_SPOTTED:LEATHER -%CREATURE:JELLYFISH_SEA_NETTLE:LEATHER -CREATURE:SQUID:LEATHER -CREATURE:SQUID MAN:LEATHER -CREATURE:GIGANTIC SQUID:LEATHER -CREATURE:DWARF:LEATHER -CREATURE:HUMAN:LEATHER -CREATURE:ELF:LEATHER -CREATURE:GOBLIN:LEATHER -CREATURE:KOBOLD:LEATHER -CREATURE:GREMLIN:LEATHER -CREATURE:TROLL:LEATHER -CREATURE:OGRE:LEATHER -CREATURE:UNICORN:LEATHER -CREATURE:SATYR:LEATHER -CREATURE:GIANT:LEATHER -CREATURE:CYCLOPS:LEATHER -CREATURE:ETTIN:LEATHER -CREATURE:MINOTAUR:LEATHER -CREATURE:YETI:LEATHER -CREATURE:SASQUATCH:LEATHER -CREATURE:BLIZZARD_MAN:LEATHER -CREATURE:WOLF_ICE:LEATHER -CREATURE:FAIRY:LEATHER -CREATURE:PIXIE:LEATHER -CREATURE:BEAK_DOG:LEATHER -CREATURE:GRIMELING:LEATHER -CREATURE:BLENDEC_FOUL:LEATHER -CREATURE:STRANGLER:LEATHER -CREATURE:NIGHTWING:LEATHER -CREATURE:HARPY:LEATHER -CREATURE:MERPERSON:LEATHER -CREATURE:BIRD_ROC:LEATHER - CREATURE:TOAD_GIANT_CAVE:LEATHER -CREATURE:OLM_GIANT:LEATHER -CREATURE:BAT_GIANT:LEATHER -CREATURE:RAT_GIANT:LEATHER -CREATURE:RAT_LARGE:LEATHER -CREATURE:MOLE_DOG_NAKED:LEATHER -CREATURE:TROGLODYTE:LEATHER -CREATURE:MOLE_GIANT:LEATHER -CREATURE:IMP_FIRE:LEATHER -CREATURE:FISH_CAVE:LEATHER -CREATURE:CAVE_FISH_MAN:LEATHER -CREATURE:OLM:LEATHER -CREATURE:OLM_MAN:LEATHER -CREATURE:BAT:LEATHER -CREATURE:BAT_MAN:LEATHER -CREATURE:MAGGOT_PURRING:LEATHER -"CREATURE:BIRD_SWALLOW_CAVE:LEATHER -!CREATURE:CAVE_SWALLOW_MAN:LEATHER -(CREATURE:BIRD_SWALLOW_CAVE_GIANT:LEATHER -CREATURE:AMPHIBIAN_MAN:LEATHER -CREATURE:RODENT MAN:LEATHER -CREATURE:WILD_BOAR:LEATHER -CREATURE:WILD_BOAR_MAN:LEATHER - CREATURE:GIANT_WILD_BOAR:LEATHER -CREATURE:COYOTE:LEATHER -CREATURE:COYOTE_MAN:LEATHER -CREATURE:GIANT_COYOTE:LEATHER -CREATURE:KANGAROO:LEATHER -CREATURE:KANGAROO_MAN:LEATHER -CREATURE:GIANT_KANGAROO:LEATHER -CREATURE:KOALA:LEATHER -CREATURE:KOALA_MAN:LEATHER -CREATURE:GIANT_KOALA:LEATHER -CREATURE:ECHIDNA:LEATHER -CREATURE:ECHIDNA_MAN:LEATHER -CREATURE:GIANT_ECHIDNA:LEATHER -CREATURE:PORCUPINE:LEATHER -CREATURE:PORCUPINE_MAN:LEATHER - CREATURE:GIANT_PORCUPINE:LEATHER -CREATURE:GRAY_LANGUR:LEATHER - CREATURE:GRAY_LANGUR_MAN:LEATHER -"CREATURE:GIANT_GRAY_LANGUR:LEATHER -CREATURE:BOBCAT:LEATHER -CREATURE:BOBCAT_MAN:LEATHER -CREATURE:GIANT_BOBCAT:LEATHER -CREATURE:SKUNK:LEATHER -CREATURE:SKUNK_MAN:LEATHER -CREATURE:GIANT_SKUNK:LEATHER - CREATURE:GREEN_TREE_FROG:LEATHER -$CREATURE:GREEN_TREE_FROG_MAN:LEATHER -&CREATURE:GIANT_GREEN_TREE_FROG:LEATHER -CREATURE:HARE:LEATHER -CREATURE:HARE_MAN:LEATHER -CREATURE:GIANT_HARE:LEATHER -CREATURE:WEASEL:LEATHER -CREATURE:WEASEL_MAN:LEATHER -CREATURE:GIANT_WEASEL:LEATHER -CREATURE:IBEX:LEATHER -CREATURE:IBEX_MAN:LEATHER -CREATURE:GIANT_IBEX:LEATHER -CREATURE:WOMBAT:LEATHER -CREATURE:WOMBAT_MAN:LEATHER -CREATURE:GIANT_WOMBAT:LEATHER -CREATURE:DINGO:LEATHER -CREATURE:DINGO_MAN:LEATHER -CREATURE:GIANT_DINGO:LEATHER -CREATURE:COATI:LEATHER -CREATURE:COATI_MAN:LEATHER -CREATURE:GIANT_COATI:LEATHER -CREATURE:OPOSSUM:LEATHER -CREATURE:OPOSSUM_MAN:LEATHER -CREATURE:GIANT_OPOSSUM:LEATHER -CREATURE:MONGOOSE:LEATHER -CREATURE:MONGOOSE_MAN:LEATHER -CREATURE:GIANT_MONGOOSE:LEATHER -CREATURE:HYENA:LEATHER -CREATURE:HYENA_MAN:LEATHER -CREATURE:GIANT_HYENA:LEATHER -CREATURE:OCELOT:LEATHER -CREATURE:OCELOT_MAN:LEATHER -CREATURE:GIANT_OCELOT:LEATHER -CREATURE:JACKAL:LEATHER -CREATURE:JACKAL_MAN:LEATHER -CREATURE:GIANT_JACKAL:LEATHER -CREATURE:CAPUCHIN:LEATHER -CREATURE:CAPUCHIN_MAN:LEATHER -CREATURE:GIANT_CAPUCHIN:LEATHER -CREATURE:SLOTH:LEATHER -CREATURE:SLOTH_MAN:LEATHER -CREATURE:GIANT_SLOTH:LEATHER -CREATURE:SPIDER_MONKEY:LEATHER -"CREATURE:SPIDER_MONKEY_MAN:LEATHER -$CREATURE:GIANT_SPIDER_MONKEY:LEATHER -CREATURE:BEAR_SLOTH:LEATHER -CREATURE:SLOTH_BEAR_MAN:LEATHER -!CREATURE:GIANT_SLOTH_BEAR:LEATHER -CREATURE:AYE-AYE:LEATHER -CREATURE:AYE-AYE_MAN:LEATHER -CREATURE:GIANT_AYE-AYE:LEATHER -CREATURE:TAPIR:LEATHER -CREATURE:TAPIR_MAN:LEATHER -CREATURE:GIANT_TAPIR:LEATHER -CREATURE:IMPALA:LEATHER -CREATURE:IMPALA_MAN:LEATHER -CREATURE:GIANT_IMPALA:LEATHER -CREATURE:AARDVARK:LEATHER -CREATURE:AARDVARK_MAN:LEATHER -CREATURE:GIANT_AARDVARK:LEATHER -CREATURE:LION_TAMARIN:LEATHER -!CREATURE:LION_TAMARIN_MAN:LEATHER -#CREATURE:GIANT_LION_TAMARIN:LEATHER -CREATURE:STOAT:LEATHER -CREATURE:STOAT_MAN:LEATHER -CREATURE:GIANT_STOAT:LEATHER -CREATURE:LYNX:LEATHER -CREATURE:LYNX_MAN:LEATHER -CREATURE:GIANT_LYNX:LEATHER -CREATURE:GNOLL:LEATHER -"CREATURE:FORGOTTEN_BEAST_2:LEATHER -"CREATURE:FORGOTTEN_BEAST_4:LEATHER -"CREATURE:FORGOTTEN_BEAST_5:LEATHER -"CREATURE:FORGOTTEN_BEAST_6:LEATHER -"CREATURE:FORGOTTEN_BEAST_7:LEATHER -#CREATURE:FORGOTTEN_BEAST_10:LEATHER -#CREATURE:FORGOTTEN_BEAST_12:LEATHER -#CREATURE:FORGOTTEN_BEAST_13:LEATHER -#CREATURE:FORGOTTEN_BEAST_16:LEATHER -#CREATURE:FORGOTTEN_BEAST_17:LEATHER -#CREATURE:FORGOTTEN_BEAST_18:LEATHER -#CREATURE:FORGOTTEN_BEAST_19:LEATHER -#CREATURE:FORGOTTEN_BEAST_20:LEATHER -#CREATURE:FORGOTTEN_BEAST_22:LEATHER -#CREATURE:FORGOTTEN_BEAST_23:LEATHER -#CREATURE:FORGOTTEN_BEAST_24:LEATHER -#CREATURE:FORGOTTEN_BEAST_25:LEATHER -#CREATURE:FORGOTTEN_BEAST_26:LEATHER -#CREATURE:FORGOTTEN_BEAST_27:LEATHER -#CREATURE:FORGOTTEN_BEAST_28:LEATHER -#CREATURE:FORGOTTEN_BEAST_29:LEATHER -#CREATURE:FORGOTTEN_BEAST_32:LEATHER -#CREATURE:FORGOTTEN_BEAST_33:LEATHER -#CREATURE:FORGOTTEN_BEAST_34:LEATHER -#CREATURE:FORGOTTEN_BEAST_35:LEATHER -#CREATURE:FORGOTTEN_BEAST_36:LEATHER -#CREATURE:FORGOTTEN_BEAST_39:LEATHER -#CREATURE:FORGOTTEN_BEAST_41:LEATHER -#CREATURE:FORGOTTEN_BEAST_42:LEATHER -#CREATURE:FORGOTTEN_BEAST_43:LEATHER -#CREATURE:FORGOTTEN_BEAST_44:LEATHER -#CREATURE:FORGOTTEN_BEAST_45:LEATHER -#CREATURE:FORGOTTEN_BEAST_47:LEATHER -#CREATURE:FORGOTTEN_BEAST_50:LEATHER -#CREATURE:FORGOTTEN_BEAST_52:LEATHER -#CREATURE:FORGOTTEN_BEAST_53:LEATHER -#CREATURE:FORGOTTEN_BEAST_55:LEATHER -#CREATURE:FORGOTTEN_BEAST_56:LEATHER -#CREATURE:FORGOTTEN_BEAST_58:LEATHER -#CREATURE:FORGOTTEN_BEAST_59:LEATHER -#CREATURE:FORGOTTEN_BEAST_60:LEATHER -#CREATURE:FORGOTTEN_BEAST_61:LEATHER -#CREATURE:FORGOTTEN_BEAST_64:LEATHER -#CREATURE:FORGOTTEN_BEAST_66:LEATHER -#CREATURE:FORGOTTEN_BEAST_67:LEATHER -#CREATURE:FORGOTTEN_BEAST_69:LEATHER -#CREATURE:FORGOTTEN_BEAST_71:LEATHER -#CREATURE:FORGOTTEN_BEAST_72:LEATHER -#CREATURE:FORGOTTEN_BEAST_73:LEATHER -#CREATURE:FORGOTTEN_BEAST_74:LEATHER -#CREATURE:FORGOTTEN_BEAST_75:LEATHER -#CREATURE:FORGOTTEN_BEAST_78:LEATHER -#CREATURE:FORGOTTEN_BEAST_80:LEATHER -#CREATURE:FORGOTTEN_BEAST_81:LEATHER -#CREATURE:FORGOTTEN_BEAST_82:LEATHER -#CREATURE:FORGOTTEN_BEAST_83:LEATHER -#CREATURE:FORGOTTEN_BEAST_84:LEATHER -#CREATURE:FORGOTTEN_BEAST_86:LEATHER -#CREATURE:FORGOTTEN_BEAST_87:LEATHER -#CREATURE:FORGOTTEN_BEAST_89:LEATHER -#CREATURE:FORGOTTEN_BEAST_90:LEATHER -#CREATURE:FORGOTTEN_BEAST_92:LEATHER -#CREATURE:FORGOTTEN_BEAST_94:LEATHER -#CREATURE:FORGOTTEN_BEAST_95:LEATHER -#CREATURE:FORGOTTEN_BEAST_96:LEATHER -#CREATURE:FORGOTTEN_BEAST_97:LEATHER -#CREATURE:FORGOTTEN_BEAST_98:LEATHER -$CREATURE:FORGOTTEN_BEAST_100:LEATHER -$CREATURE:FORGOTTEN_BEAST_105:LEATHER -$CREATURE:FORGOTTEN_BEAST_106:LEATHER -$CREATURE:FORGOTTEN_BEAST_107:LEATHER -$CREATURE:FORGOTTEN_BEAST_108:LEATHER -$CREATURE:FORGOTTEN_BEAST_109:LEATHER -$CREATURE:FORGOTTEN_BEAST_111:LEATHER -$CREATURE:FORGOTTEN_BEAST_112:LEATHER -$CREATURE:FORGOTTEN_BEAST_113:LEATHER -$CREATURE:FORGOTTEN_BEAST_114:LEATHER -$CREATURE:FORGOTTEN_BEAST_115:LEATHER -$CREATURE:FORGOTTEN_BEAST_116:LEATHER -$CREATURE:FORGOTTEN_BEAST_117:LEATHER -$CREATURE:FORGOTTEN_BEAST_118:LEATHER -$CREATURE:FORGOTTEN_BEAST_119:LEATHER -$CREATURE:FORGOTTEN_BEAST_120:LEATHER -$CREATURE:FORGOTTEN_BEAST_122:LEATHER -$CREATURE:FORGOTTEN_BEAST_123:LEATHER -$CREATURE:FORGOTTEN_BEAST_124:LEATHER -$CREATURE:FORGOTTEN_BEAST_125:LEATHER -$CREATURE:FORGOTTEN_BEAST_127:LEATHER -$CREATURE:FORGOTTEN_BEAST_128:LEATHER -$CREATURE:FORGOTTEN_BEAST_130:LEATHER -$CREATURE:FORGOTTEN_BEAST_131:LEATHER -$CREATURE:FORGOTTEN_BEAST_132:LEATHER -$CREATURE:FORGOTTEN_BEAST_133:LEATHER -$CREATURE:FORGOTTEN_BEAST_134:LEATHER -$CREATURE:FORGOTTEN_BEAST_135:LEATHER -$CREATURE:FORGOTTEN_BEAST_137:LEATHER -$CREATURE:FORGOTTEN_BEAST_138:LEATHER -$CREATURE:FORGOTTEN_BEAST_139:LEATHER -$CREATURE:FORGOTTEN_BEAST_141:LEATHER -$CREATURE:FORGOTTEN_BEAST_142:LEATHER -$CREATURE:FORGOTTEN_BEAST_144:LEATHER -$CREATURE:FORGOTTEN_BEAST_146:LEATHER -$CREATURE:FORGOTTEN_BEAST_148:LEATHER -$CREATURE:FORGOTTEN_BEAST_149:LEATHER -$CREATURE:FORGOTTEN_BEAST_150:LEATHER -$CREATURE:FORGOTTEN_BEAST_152:LEATHER -$CREATURE:FORGOTTEN_BEAST_154:LEATHER -$CREATURE:FORGOTTEN_BEAST_156:LEATHER -$CREATURE:FORGOTTEN_BEAST_157:LEATHER -$CREATURE:FORGOTTEN_BEAST_158:LEATHER -$CREATURE:FORGOTTEN_BEAST_159:LEATHER -$CREATURE:FORGOTTEN_BEAST_161:LEATHER -$CREATURE:FORGOTTEN_BEAST_162:LEATHER -$CREATURE:FORGOTTEN_BEAST_163:LEATHER -$CREATURE:FORGOTTEN_BEAST_165:LEATHER -$CREATURE:FORGOTTEN_BEAST_167:LEATHER -$CREATURE:FORGOTTEN_BEAST_168:LEATHER -$CREATURE:FORGOTTEN_BEAST_169:LEATHER -$CREATURE:FORGOTTEN_BEAST_170:LEATHER -$CREATURE:FORGOTTEN_BEAST_171:LEATHER -$CREATURE:FORGOTTEN_BEAST_172:LEATHER -$CREATURE:FORGOTTEN_BEAST_173:LEATHER -$CREATURE:FORGOTTEN_BEAST_176:LEATHER -$CREATURE:FORGOTTEN_BEAST_177:LEATHER -$CREATURE:FORGOTTEN_BEAST_178:LEATHER -$CREATURE:FORGOTTEN_BEAST_179:LEATHER -$CREATURE:FORGOTTEN_BEAST_180:LEATHER -$CREATURE:FORGOTTEN_BEAST_181:LEATHER -$CREATURE:FORGOTTEN_BEAST_182:LEATHER -$CREATURE:FORGOTTEN_BEAST_183:LEATHER -$CREATURE:FORGOTTEN_BEAST_184:LEATHER -$CREATURE:FORGOTTEN_BEAST_185:LEATHER -$CREATURE:FORGOTTEN_BEAST_186:LEATHER -$CREATURE:FORGOTTEN_BEAST_188:LEATHER -$CREATURE:FORGOTTEN_BEAST_189:LEATHER -$CREATURE:FORGOTTEN_BEAST_190:LEATHER -$CREATURE:FORGOTTEN_BEAST_191:LEATHER -$CREATURE:FORGOTTEN_BEAST_193:LEATHER -$CREATURE:FORGOTTEN_BEAST_194:LEATHER -$CREATURE:FORGOTTEN_BEAST_195:LEATHER -$CREATURE:FORGOTTEN_BEAST_196:LEATHER -$CREATURE:FORGOTTEN_BEAST_197:LEATHER -$CREATURE:FORGOTTEN_BEAST_199:LEATHER -$CREATURE:FORGOTTEN_BEAST_200:LEATHER -$CREATURE:FORGOTTEN_BEAST_201:LEATHER -$CREATURE:FORGOTTEN_BEAST_204:LEATHER -$CREATURE:FORGOTTEN_BEAST_205:LEATHER -$CREATURE:FORGOTTEN_BEAST_206:LEATHER -$CREATURE:FORGOTTEN_BEAST_207:LEATHER -$CREATURE:FORGOTTEN_BEAST_208:LEATHER -$CREATURE:FORGOTTEN_BEAST_209:LEATHER -$CREATURE:FORGOTTEN_BEAST_210:LEATHER -$CREATURE:FORGOTTEN_BEAST_211:LEATHER -$CREATURE:FORGOTTEN_BEAST_212:LEATHER -$CREATURE:FORGOTTEN_BEAST_213:LEATHER -$CREATURE:FORGOTTEN_BEAST_214:LEATHER -$CREATURE:FORGOTTEN_BEAST_215:LEATHER -$CREATURE:FORGOTTEN_BEAST_216:LEATHER -$CREATURE:FORGOTTEN_BEAST_217:LEATHER -$CREATURE:FORGOTTEN_BEAST_218:LEATHER -$CREATURE:FORGOTTEN_BEAST_220:LEATHER -$CREATURE:FORGOTTEN_BEAST_221:LEATHER -$CREATURE:FORGOTTEN_BEAST_224:LEATHER -$CREATURE:FORGOTTEN_BEAST_225:LEATHER -$CREATURE:FORGOTTEN_BEAST_228:LEATHER -$CREATURE:FORGOTTEN_BEAST_231:LEATHER -$CREATURE:FORGOTTEN_BEAST_232:LEATHER -$CREATURE:FORGOTTEN_BEAST_235:LEATHER -$CREATURE:FORGOTTEN_BEAST_236:LEATHER -$CREATURE:FORGOTTEN_BEAST_237:LEATHER -$CREATURE:FORGOTTEN_BEAST_239:LEATHER -$CREATURE:FORGOTTEN_BEAST_240:LEATHER -$CREATURE:FORGOTTEN_BEAST_242:LEATHER -$CREATURE:FORGOTTEN_BEAST_243:LEATHER -$CREATURE:FORGOTTEN_BEAST_244:LEATHER -$CREATURE:FORGOTTEN_BEAST_245:LEATHER -$CREATURE:FORGOTTEN_BEAST_246:LEATHER -$CREATURE:FORGOTTEN_BEAST_247:LEATHER -$CREATURE:FORGOTTEN_BEAST_248:LEATHER -$CREATURE:FORGOTTEN_BEAST_249:LEATHER -$CREATURE:FORGOTTEN_BEAST_253:LEATHER -$CREATURE:FORGOTTEN_BEAST_255:LEATHER -$CREATURE:FORGOTTEN_BEAST_256:LEATHER -$CREATURE:FORGOTTEN_BEAST_259:LEATHER -$CREATURE:FORGOTTEN_BEAST_260:LEATHER -$CREATURE:FORGOTTEN_BEAST_263:LEATHER -$CREATURE:FORGOTTEN_BEAST_264:LEATHER -$CREATURE:FORGOTTEN_BEAST_265:LEATHER -$CREATURE:FORGOTTEN_BEAST_266:LEATHER -$CREATURE:FORGOTTEN_BEAST_268:LEATHER -$CREATURE:FORGOTTEN_BEAST_269:LEATHER -$CREATURE:FORGOTTEN_BEAST_270:LEATHER -$CREATURE:FORGOTTEN_BEAST_271:LEATHER -$CREATURE:FORGOTTEN_BEAST_272:LEATHER -$CREATURE:FORGOTTEN_BEAST_273:LEATHER -$CREATURE:FORGOTTEN_BEAST_274:LEATHER -$CREATURE:FORGOTTEN_BEAST_275:LEATHER -$CREATURE:FORGOTTEN_BEAST_276:LEATHER -$CREATURE:FORGOTTEN_BEAST_277:LEATHER -$CREATURE:FORGOTTEN_BEAST_279:LEATHER -$CREATURE:FORGOTTEN_BEAST_280:LEATHER -$CREATURE:FORGOTTEN_BEAST_281:LEATHER -$CREATURE:FORGOTTEN_BEAST_282:LEATHER -$CREATURE:FORGOTTEN_BEAST_283:LEATHER -$CREATURE:FORGOTTEN_BEAST_285:LEATHER -$CREATURE:FORGOTTEN_BEAST_286:LEATHER -$CREATURE:FORGOTTEN_BEAST_287:LEATHER -$CREATURE:FORGOTTEN_BEAST_288:LEATHER -$CREATURE:FORGOTTEN_BEAST_289:LEATHER -$CREATURE:FORGOTTEN_BEAST_290:LEATHER -$CREATURE:FORGOTTEN_BEAST_293:LEATHER -$CREATURE:FORGOTTEN_BEAST_295:LEATHER -$CREATURE:FORGOTTEN_BEAST_297:LEATHER -$CREATURE:FORGOTTEN_BEAST_300:LEATHER -$CREATURE:FORGOTTEN_BEAST_302:LEATHER -$CREATURE:FORGOTTEN_BEAST_306:LEATHER -$CREATURE:FORGOTTEN_BEAST_307:LEATHER -$CREATURE:FORGOTTEN_BEAST_310:LEATHER -$CREATURE:FORGOTTEN_BEAST_311:LEATHER -$CREATURE:FORGOTTEN_BEAST_312:LEATHER -$CREATURE:FORGOTTEN_BEAST_314:LEATHER -$CREATURE:FORGOTTEN_BEAST_316:LEATHER -$CREATURE:FORGOTTEN_BEAST_317:LEATHER -$CREATURE:FORGOTTEN_BEAST_318:LEATHER -$CREATURE:FORGOTTEN_BEAST_320:LEATHER -$CREATURE:FORGOTTEN_BEAST_321:LEATHER -$CREATURE:FORGOTTEN_BEAST_322:LEATHER -$CREATURE:FORGOTTEN_BEAST_323:LEATHER -$CREATURE:FORGOTTEN_BEAST_324:LEATHER -$CREATURE:FORGOTTEN_BEAST_325:LEATHER -$CREATURE:FORGOTTEN_BEAST_326:LEATHER -$CREATURE:FORGOTTEN_BEAST_327:LEATHER -$CREATURE:FORGOTTEN_BEAST_328:LEATHER -$CREATURE:FORGOTTEN_BEAST_329:LEATHER -$CREATURE:FORGOTTEN_BEAST_330:LEATHER -$CREATURE:FORGOTTEN_BEAST_332:LEATHER -$CREATURE:FORGOTTEN_BEAST_333:LEATHER -$CREATURE:FORGOTTEN_BEAST_335:LEATHER -$CREATURE:FORGOTTEN_BEAST_336:LEATHER -$CREATURE:FORGOTTEN_BEAST_337:LEATHER -$CREATURE:FORGOTTEN_BEAST_338:LEATHER -$CREATURE:FORGOTTEN_BEAST_339:LEATHER -$CREATURE:FORGOTTEN_BEAST_341:LEATHER -$CREATURE:FORGOTTEN_BEAST_342:LEATHER -$CREATURE:FORGOTTEN_BEAST_343:LEATHER -$CREATURE:FORGOTTEN_BEAST_344:LEATHER -$CREATURE:FORGOTTEN_BEAST_347:LEATHER -$CREATURE:FORGOTTEN_BEAST_348:LEATHER -$CREATURE:FORGOTTEN_BEAST_349:LEATHER -$CREATURE:FORGOTTEN_BEAST_351:LEATHER -$CREATURE:FORGOTTEN_BEAST_352:LEATHER -$CREATURE:FORGOTTEN_BEAST_353:LEATHER -$CREATURE:FORGOTTEN_BEAST_354:LEATHER -$CREATURE:FORGOTTEN_BEAST_355:LEATHER -$CREATURE:FORGOTTEN_BEAST_356:LEATHER -$CREATURE:FORGOTTEN_BEAST_357:LEATHER -$CREATURE:FORGOTTEN_BEAST_358:LEATHER -$CREATURE:FORGOTTEN_BEAST_359:LEATHER -$CREATURE:FORGOTTEN_BEAST_361:LEATHER -$CREATURE:FORGOTTEN_BEAST_363:LEATHER -$CREATURE:FORGOTTEN_BEAST_364:LEATHER -$CREATURE:FORGOTTEN_BEAST_365:LEATHER -$CREATURE:FORGOTTEN_BEAST_366:LEATHER -$CREATURE:FORGOTTEN_BEAST_367:LEATHER -$CREATURE:FORGOTTEN_BEAST_368:LEATHER -$CREATURE:FORGOTTEN_BEAST_370:LEATHER -$CREATURE:FORGOTTEN_BEAST_372:LEATHER -$CREATURE:FORGOTTEN_BEAST_374:LEATHER -$CREATURE:FORGOTTEN_BEAST_375:LEATHER -$CREATURE:FORGOTTEN_BEAST_377:LEATHER -$CREATURE:FORGOTTEN_BEAST_378:LEATHER -$CREATURE:FORGOTTEN_BEAST_379:LEATHER -$CREATURE:FORGOTTEN_BEAST_380:LEATHER -$CREATURE:FORGOTTEN_BEAST_381:LEATHER -$CREATURE:FORGOTTEN_BEAST_382:LEATHER -$CREATURE:FORGOTTEN_BEAST_383:LEATHER -$CREATURE:FORGOTTEN_BEAST_384:LEATHER -$CREATURE:FORGOTTEN_BEAST_385:LEATHER -$CREATURE:FORGOTTEN_BEAST_386:LEATHER -$CREATURE:FORGOTTEN_BEAST_387:LEATHER -$CREATURE:FORGOTTEN_BEAST_388:LEATHER -$CREATURE:FORGOTTEN_BEAST_389:LEATHER -$CREATURE:FORGOTTEN_BEAST_390:LEATHER -$CREATURE:FORGOTTEN_BEAST_391:LEATHER -$CREATURE:FORGOTTEN_BEAST_392:LEATHER -$CREATURE:FORGOTTEN_BEAST_393:LEATHER -$CREATURE:FORGOTTEN_BEAST_396:LEATHER -$CREATURE:FORGOTTEN_BEAST_397:LEATHER -$CREATURE:FORGOTTEN_BEAST_398:LEATHER -$CREATURE:FORGOTTEN_BEAST_400:LEATHER -$CREATURE:FORGOTTEN_BEAST_403:LEATHER -$CREATURE:FORGOTTEN_BEAST_404:LEATHER -$CREATURE:FORGOTTEN_BEAST_405:LEATHER -$CREATURE:FORGOTTEN_BEAST_406:LEATHER -$CREATURE:FORGOTTEN_BEAST_407:LEATHER -$CREATURE:FORGOTTEN_BEAST_408:LEATHER -$CREATURE:FORGOTTEN_BEAST_409:LEATHER -$CREATURE:FORGOTTEN_BEAST_410:LEATHER -$CREATURE:FORGOTTEN_BEAST_411:LEATHER -$CREATURE:FORGOTTEN_BEAST_412:LEATHER -$CREATURE:FORGOTTEN_BEAST_413:LEATHER -$CREATURE:FORGOTTEN_BEAST_414:LEATHER -$CREATURE:FORGOTTEN_BEAST_416:LEATHER -$CREATURE:FORGOTTEN_BEAST_417:LEATHER -$CREATURE:FORGOTTEN_BEAST_418:LEATHER -$CREATURE:FORGOTTEN_BEAST_420:LEATHER -$CREATURE:FORGOTTEN_BEAST_421:LEATHER -$CREATURE:FORGOTTEN_BEAST_422:LEATHER -$CREATURE:FORGOTTEN_BEAST_423:LEATHER -$CREATURE:FORGOTTEN_BEAST_424:LEATHER -$CREATURE:FORGOTTEN_BEAST_427:LEATHER -$CREATURE:FORGOTTEN_BEAST_429:LEATHER -$CREATURE:FORGOTTEN_BEAST_430:LEATHER -$CREATURE:FORGOTTEN_BEAST_432:LEATHER -$CREATURE:FORGOTTEN_BEAST_433:LEATHER -$CREATURE:FORGOTTEN_BEAST_434:LEATHER -$CREATURE:FORGOTTEN_BEAST_435:LEATHER -$CREATURE:FORGOTTEN_BEAST_436:LEATHER -$CREATURE:FORGOTTEN_BEAST_437:LEATHER -$CREATURE:FORGOTTEN_BEAST_438:LEATHER -$CREATURE:FORGOTTEN_BEAST_440:LEATHER -$CREATURE:FORGOTTEN_BEAST_441:LEATHER -$CREATURE:FORGOTTEN_BEAST_442:LEATHER -$CREATURE:FORGOTTEN_BEAST_444:LEATHER -$CREATURE:FORGOTTEN_BEAST_446:LEATHER -$CREATURE:FORGOTTEN_BEAST_447:LEATHER -$CREATURE:FORGOTTEN_BEAST_448:LEATHER -$CREATURE:FORGOTTEN_BEAST_449:LEATHER -$CREATURE:FORGOTTEN_BEAST_450:LEATHER -$CREATURE:FORGOTTEN_BEAST_451:LEATHER -$CREATURE:FORGOTTEN_BEAST_453:LEATHER -$CREATURE:FORGOTTEN_BEAST_454:LEATHER -$CREATURE:FORGOTTEN_BEAST_455:LEATHER -$CREATURE:FORGOTTEN_BEAST_457:LEATHER -$CREATURE:FORGOTTEN_BEAST_459:LEATHER -$CREATURE:FORGOTTEN_BEAST_461:LEATHER -$CREATURE:FORGOTTEN_BEAST_462:LEATHER -$CREATURE:FORGOTTEN_BEAST_463:LEATHER -$CREATURE:FORGOTTEN_BEAST_465:LEATHER -$CREATURE:FORGOTTEN_BEAST_466:LEATHER -$CREATURE:FORGOTTEN_BEAST_468:LEATHER -$CREATURE:FORGOTTEN_BEAST_469:LEATHER -$CREATURE:FORGOTTEN_BEAST_470:LEATHER -$CREATURE:FORGOTTEN_BEAST_471:LEATHER -$CREATURE:FORGOTTEN_BEAST_472:LEATHER -$CREATURE:FORGOTTEN_BEAST_474:LEATHER -$CREATURE:FORGOTTEN_BEAST_475:LEATHER -$CREATURE:FORGOTTEN_BEAST_476:LEATHER -$CREATURE:FORGOTTEN_BEAST_478:LEATHER -$CREATURE:FORGOTTEN_BEAST_479:LEATHER -$CREATURE:FORGOTTEN_BEAST_480:LEATHER -$CREATURE:FORGOTTEN_BEAST_481:LEATHER -$CREATURE:FORGOTTEN_BEAST_483:LEATHER -$CREATURE:FORGOTTEN_BEAST_486:LEATHER -$CREATURE:FORGOTTEN_BEAST_487:LEATHER -$CREATURE:FORGOTTEN_BEAST_489:LEATHER -$CREATURE:FORGOTTEN_BEAST_492:LEATHER -$CREATURE:FORGOTTEN_BEAST_494:LEATHER -$CREATURE:FORGOTTEN_BEAST_495:LEATHER -$CREATURE:FORGOTTEN_BEAST_496:LEATHER -$CREATURE:FORGOTTEN_BEAST_497:LEATHER -$CREATURE:FORGOTTEN_BEAST_498:LEATHER -$CREATURE:FORGOTTEN_BEAST_499:LEATHER -$CREATURE:FORGOTTEN_BEAST_501:LEATHER -$CREATURE:FORGOTTEN_BEAST_503:LEATHER -$CREATURE:FORGOTTEN_BEAST_504:LEATHER -$CREATURE:FORGOTTEN_BEAST_505:LEATHER -$CREATURE:FORGOTTEN_BEAST_507:LEATHER -$CREATURE:FORGOTTEN_BEAST_508:LEATHER -$CREATURE:FORGOTTEN_BEAST_510:LEATHER -$CREATURE:FORGOTTEN_BEAST_512:LEATHER -$CREATURE:FORGOTTEN_BEAST_513:LEATHER -$CREATURE:FORGOTTEN_BEAST_514:LEATHER -$CREATURE:FORGOTTEN_BEAST_515:LEATHER -$CREATURE:FORGOTTEN_BEAST_516:LEATHER -$CREATURE:FORGOTTEN_BEAST_517:LEATHER -$CREATURE:FORGOTTEN_BEAST_518:LEATHER -$CREATURE:FORGOTTEN_BEAST_519:LEATHER -$CREATURE:FORGOTTEN_BEAST_520:LEATHER -$CREATURE:FORGOTTEN_BEAST_521:LEATHER -$CREATURE:FORGOTTEN_BEAST_522:LEATHER -$CREATURE:FORGOTTEN_BEAST_523:LEATHER -$CREATURE:FORGOTTEN_BEAST_525:LEATHER -$CREATURE:FORGOTTEN_BEAST_526:LEATHER -$CREATURE:FORGOTTEN_BEAST_527:LEATHER -$CREATURE:FORGOTTEN_BEAST_528:LEATHER -$CREATURE:FORGOTTEN_BEAST_529:LEATHER -$CREATURE:FORGOTTEN_BEAST_530:LEATHER -$CREATURE:FORGOTTEN_BEAST_531:LEATHER -$CREATURE:FORGOTTEN_BEAST_532:LEATHER -$CREATURE:FORGOTTEN_BEAST_533:LEATHER -$CREATURE:FORGOTTEN_BEAST_534:LEATHER -$CREATURE:FORGOTTEN_BEAST_535:LEATHER -$CREATURE:FORGOTTEN_BEAST_536:LEATHER -$CREATURE:FORGOTTEN_BEAST_539:LEATHER -$CREATURE:FORGOTTEN_BEAST_540:LEATHER -$CREATURE:FORGOTTEN_BEAST_541:LEATHER -$CREATURE:FORGOTTEN_BEAST_543:LEATHER -$CREATURE:FORGOTTEN_BEAST_545:LEATHER -$CREATURE:FORGOTTEN_BEAST_546:LEATHER -$CREATURE:FORGOTTEN_BEAST_547:LEATHER -$CREATURE:FORGOTTEN_BEAST_548:LEATHER -$CREATURE:FORGOTTEN_BEAST_549:LEATHER -$CREATURE:FORGOTTEN_BEAST_550:LEATHER -$CREATURE:FORGOTTEN_BEAST_551:LEATHER -$CREATURE:FORGOTTEN_BEAST_554:LEATHER -$CREATURE:FORGOTTEN_BEAST_555:LEATHER -$CREATURE:FORGOTTEN_BEAST_556:LEATHER -$CREATURE:FORGOTTEN_BEAST_557:LEATHER -$CREATURE:FORGOTTEN_BEAST_561:LEATHER -$CREATURE:FORGOTTEN_BEAST_562:LEATHER -$CREATURE:FORGOTTEN_BEAST_564:LEATHER -$CREATURE:FORGOTTEN_BEAST_569:LEATHER -$CREATURE:FORGOTTEN_BEAST_570:LEATHER -$CREATURE:FORGOTTEN_BEAST_571:LEATHER -$CREATURE:FORGOTTEN_BEAST_572:LEATHER -$CREATURE:FORGOTTEN_BEAST_574:LEATHER -$CREATURE:FORGOTTEN_BEAST_576:LEATHER -$CREATURE:FORGOTTEN_BEAST_578:LEATHER -$CREATURE:FORGOTTEN_BEAST_579:LEATHER -$CREATURE:FORGOTTEN_BEAST_580:LEATHER -$CREATURE:FORGOTTEN_BEAST_581:LEATHER -$CREATURE:FORGOTTEN_BEAST_583:LEATHER -$CREATURE:FORGOTTEN_BEAST_584:LEATHER -$CREATURE:FORGOTTEN_BEAST_586:LEATHER -$CREATURE:FORGOTTEN_BEAST_588:LEATHER -$CREATURE:FORGOTTEN_BEAST_589:LEATHER -$CREATURE:FORGOTTEN_BEAST_590:LEATHER -$CREATURE:FORGOTTEN_BEAST_592:LEATHER -$CREATURE:FORGOTTEN_BEAST_593:LEATHER -$CREATURE:FORGOTTEN_BEAST_594:LEATHER -$CREATURE:FORGOTTEN_BEAST_595:LEATHER -$CREATURE:FORGOTTEN_BEAST_596:LEATHER -$CREATURE:FORGOTTEN_BEAST_597:LEATHER -$CREATURE:FORGOTTEN_BEAST_599:LEATHER -$CREATURE:FORGOTTEN_BEAST_600:LEATHER -$CREATURE:FORGOTTEN_BEAST_601:LEATHER -$CREATURE:FORGOTTEN_BEAST_603:LEATHER -$CREATURE:FORGOTTEN_BEAST_605:LEATHER -$CREATURE:FORGOTTEN_BEAST_607:LEATHER -$CREATURE:FORGOTTEN_BEAST_608:LEATHER -$CREATURE:FORGOTTEN_BEAST_609:LEATHER -$CREATURE:FORGOTTEN_BEAST_610:LEATHER -$CREATURE:FORGOTTEN_BEAST_611:LEATHER -$CREATURE:FORGOTTEN_BEAST_612:LEATHER -$CREATURE:FORGOTTEN_BEAST_613:LEATHER -$CREATURE:FORGOTTEN_BEAST_614:LEATHER -$CREATURE:FORGOTTEN_BEAST_616:LEATHER -$CREATURE:FORGOTTEN_BEAST_619:LEATHER -$CREATURE:FORGOTTEN_BEAST_620:LEATHER -$CREATURE:FORGOTTEN_BEAST_621:LEATHER -$CREATURE:FORGOTTEN_BEAST_623:LEATHER -$CREATURE:FORGOTTEN_BEAST_624:LEATHER -$CREATURE:FORGOTTEN_BEAST_625:LEATHER -$CREATURE:FORGOTTEN_BEAST_626:LEATHER -$CREATURE:FORGOTTEN_BEAST_627:LEATHER -$CREATURE:FORGOTTEN_BEAST_628:LEATHER -$CREATURE:FORGOTTEN_BEAST_629:LEATHER -$CREATURE:FORGOTTEN_BEAST_630:LEATHER -$CREATURE:FORGOTTEN_BEAST_631:LEATHER -$CREATURE:FORGOTTEN_BEAST_632:LEATHER -$CREATURE:FORGOTTEN_BEAST_633:LEATHER -$CREATURE:FORGOTTEN_BEAST_634:LEATHER -$CREATURE:FORGOTTEN_BEAST_635:LEATHER -$CREATURE:FORGOTTEN_BEAST_636:LEATHER -$CREATURE:FORGOTTEN_BEAST_637:LEATHER -$CREATURE:FORGOTTEN_BEAST_639:LEATHER -$CREATURE:FORGOTTEN_BEAST_640:LEATHER -$CREATURE:FORGOTTEN_BEAST_643:LEATHER -$CREATURE:FORGOTTEN_BEAST_644:LEATHER -$CREATURE:FORGOTTEN_BEAST_645:LEATHER -$CREATURE:FORGOTTEN_BEAST_646:LEATHER -$CREATURE:FORGOTTEN_BEAST_647:LEATHER -$CREATURE:FORGOTTEN_BEAST_649:LEATHER -$CREATURE:FORGOTTEN_BEAST_650:LEATHER -$CREATURE:FORGOTTEN_BEAST_651:LEATHER -$CREATURE:FORGOTTEN_BEAST_652:LEATHER -$CREATURE:FORGOTTEN_BEAST_656:LEATHER -$CREATURE:FORGOTTEN_BEAST_658:LEATHER -$CREATURE:FORGOTTEN_BEAST_659:LEATHER -$CREATURE:FORGOTTEN_BEAST_661:LEATHER -$CREATURE:FORGOTTEN_BEAST_663:LEATHER -$CREATURE:FORGOTTEN_BEAST_664:LEATHER -$CREATURE:FORGOTTEN_BEAST_666:LEATHER -$CREATURE:FORGOTTEN_BEAST_667:LEATHER -$CREATURE:FORGOTTEN_BEAST_669:LEATHER -$CREATURE:FORGOTTEN_BEAST_670:LEATHER -$CREATURE:FORGOTTEN_BEAST_671:LEATHER -$CREATURE:FORGOTTEN_BEAST_674:LEATHER -$CREATURE:FORGOTTEN_BEAST_675:LEATHER -$CREATURE:FORGOTTEN_BEAST_678:LEATHER -$CREATURE:FORGOTTEN_BEAST_680:LEATHER -$CREATURE:FORGOTTEN_BEAST_681:LEATHER -$CREATURE:FORGOTTEN_BEAST_682:LEATHER -$CREATURE:FORGOTTEN_BEAST_684:LEATHER -$CREATURE:FORGOTTEN_BEAST_685:LEATHER -$CREATURE:FORGOTTEN_BEAST_686:LEATHER -$CREATURE:FORGOTTEN_BEAST_687:LEATHER -$CREATURE:FORGOTTEN_BEAST_688:LEATHER -$CREATURE:FORGOTTEN_BEAST_689:LEATHER -$CREATURE:FORGOTTEN_BEAST_691:LEATHER -$CREATURE:FORGOTTEN_BEAST_692:LEATHER -$CREATURE:FORGOTTEN_BEAST_695:LEATHER -$CREATURE:FORGOTTEN_BEAST_696:LEATHER -$CREATURE:FORGOTTEN_BEAST_697:LEATHER -$CREATURE:FORGOTTEN_BEAST_698:LEATHER -$CREATURE:FORGOTTEN_BEAST_699:LEATHER -$CREATURE:FORGOTTEN_BEAST_700:LEATHER -$CREATURE:FORGOTTEN_BEAST_701:LEATHER -$CREATURE:FORGOTTEN_BEAST_702:LEATHER -$CREATURE:FORGOTTEN_BEAST_704:LEATHER -$CREATURE:FORGOTTEN_BEAST_706:LEATHER -$CREATURE:FORGOTTEN_BEAST_708:LEATHER -$CREATURE:FORGOTTEN_BEAST_709:LEATHER -$CREATURE:FORGOTTEN_BEAST_711:LEATHER -$CREATURE:FORGOTTEN_BEAST_712:LEATHER -$CREATURE:FORGOTTEN_BEAST_713:LEATHER -$CREATURE:FORGOTTEN_BEAST_714:LEATHER -$CREATURE:FORGOTTEN_BEAST_715:LEATHER -$CREATURE:FORGOTTEN_BEAST_717:LEATHER -$CREATURE:FORGOTTEN_BEAST_718:LEATHER -$CREATURE:FORGOTTEN_BEAST_719:LEATHER -$CREATURE:FORGOTTEN_BEAST_720:LEATHER -$CREATURE:FORGOTTEN_BEAST_721:LEATHER -$CREATURE:FORGOTTEN_BEAST_722:LEATHER -$CREATURE:FORGOTTEN_BEAST_723:LEATHER -$CREATURE:FORGOTTEN_BEAST_724:LEATHER -$CREATURE:FORGOTTEN_BEAST_726:LEATHER -$CREATURE:FORGOTTEN_BEAST_730:LEATHER -$CREATURE:FORGOTTEN_BEAST_731:LEATHER -$CREATURE:FORGOTTEN_BEAST_734:LEATHER -$CREATURE:FORGOTTEN_BEAST_735:LEATHER -$CREATURE:FORGOTTEN_BEAST_737:LEATHER -$CREATURE:FORGOTTEN_BEAST_738:LEATHER -$CREATURE:FORGOTTEN_BEAST_739:LEATHER -$CREATURE:FORGOTTEN_BEAST_740:LEATHER -$CREATURE:FORGOTTEN_BEAST_741:LEATHER -$CREATURE:FORGOTTEN_BEAST_742:LEATHER -$CREATURE:FORGOTTEN_BEAST_743:LEATHER -$CREATURE:FORGOTTEN_BEAST_744:LEATHER -$CREATURE:FORGOTTEN_BEAST_746:LEATHER -$CREATURE:FORGOTTEN_BEAST_747:LEATHER -$CREATURE:FORGOTTEN_BEAST_749:LEATHER -$CREATURE:FORGOTTEN_BEAST_750:LEATHER -$CREATURE:FORGOTTEN_BEAST_751:LEATHER -$CREATURE:FORGOTTEN_BEAST_752:LEATHER -$CREATURE:FORGOTTEN_BEAST_753:LEATHER -$CREATURE:FORGOTTEN_BEAST_754:LEATHER -$CREATURE:FORGOTTEN_BEAST_755:LEATHER -$CREATURE:FORGOTTEN_BEAST_756:LEATHER -$CREATURE:FORGOTTEN_BEAST_757:LEATHER -$CREATURE:FORGOTTEN_BEAST_758:LEATHER -$CREATURE:FORGOTTEN_BEAST_759:LEATHER -$CREATURE:FORGOTTEN_BEAST_760:LEATHER -$CREATURE:FORGOTTEN_BEAST_761:LEATHER -$CREATURE:FORGOTTEN_BEAST_762:LEATHER -$CREATURE:FORGOTTEN_BEAST_764:LEATHER -$CREATURE:FORGOTTEN_BEAST_767:LEATHER -$CREATURE:FORGOTTEN_BEAST_768:LEATHER -$CREATURE:FORGOTTEN_BEAST_769:LEATHER -$CREATURE:FORGOTTEN_BEAST_770:LEATHER -$CREATURE:FORGOTTEN_BEAST_773:LEATHER -$CREATURE:FORGOTTEN_BEAST_774:LEATHER -$CREATURE:FORGOTTEN_BEAST_776:LEATHER -$CREATURE:FORGOTTEN_BEAST_777:LEATHER -$CREATURE:FORGOTTEN_BEAST_778:LEATHER -$CREATURE:FORGOTTEN_BEAST_779:LEATHER -$CREATURE:FORGOTTEN_BEAST_780:LEATHER -$CREATURE:FORGOTTEN_BEAST_781:LEATHER -$CREATURE:FORGOTTEN_BEAST_782:LEATHER -$CREATURE:FORGOTTEN_BEAST_783:LEATHER -$CREATURE:FORGOTTEN_BEAST_784:LEATHER -$CREATURE:FORGOTTEN_BEAST_785:LEATHER -$CREATURE:FORGOTTEN_BEAST_786:LEATHER -$CREATURE:FORGOTTEN_BEAST_787:LEATHER -$CREATURE:FORGOTTEN_BEAST_789:LEATHER -$CREATURE:FORGOTTEN_BEAST_792:LEATHER -$CREATURE:FORGOTTEN_BEAST_793:LEATHER -$CREATURE:FORGOTTEN_BEAST_794:LEATHER -$CREATURE:FORGOTTEN_BEAST_795:LEATHER -$CREATURE:FORGOTTEN_BEAST_796:LEATHER -$CREATURE:FORGOTTEN_BEAST_799:LEATHER -$CREATURE:FORGOTTEN_BEAST_800:LEATHER -$CREATURE:FORGOTTEN_BEAST_801:LEATHER -$CREATURE:FORGOTTEN_BEAST_802:LEATHER -$CREATURE:FORGOTTEN_BEAST_803:LEATHER -$CREATURE:FORGOTTEN_BEAST_804:LEATHER -$CREATURE:FORGOTTEN_BEAST_806:LEATHER -$CREATURE:FORGOTTEN_BEAST_807:LEATHER -$CREATURE:FORGOTTEN_BEAST_809:LEATHER -$CREATURE:FORGOTTEN_BEAST_810:LEATHER -$CREATURE:FORGOTTEN_BEAST_811:LEATHER -$CREATURE:FORGOTTEN_BEAST_812:LEATHER -$CREATURE:FORGOTTEN_BEAST_815:LEATHER -$CREATURE:FORGOTTEN_BEAST_817:LEATHER -$CREATURE:FORGOTTEN_BEAST_818:LEATHER -$CREATURE:FORGOTTEN_BEAST_819:LEATHER -$CREATURE:FORGOTTEN_BEAST_820:LEATHER -$CREATURE:FORGOTTEN_BEAST_821:LEATHER -$CREATURE:FORGOTTEN_BEAST_822:LEATHER -$CREATURE:FORGOTTEN_BEAST_824:LEATHER -$CREATURE:FORGOTTEN_BEAST_825:LEATHER -$CREATURE:FORGOTTEN_BEAST_826:LEATHER -$CREATURE:FORGOTTEN_BEAST_827:LEATHER -$CREATURE:FORGOTTEN_BEAST_828:LEATHER -$CREATURE:FORGOTTEN_BEAST_831:LEATHER -$CREATURE:FORGOTTEN_BEAST_833:LEATHER -$CREATURE:FORGOTTEN_BEAST_835:LEATHER -$CREATURE:FORGOTTEN_BEAST_837:LEATHER -$CREATURE:FORGOTTEN_BEAST_838:LEATHER -$CREATURE:FORGOTTEN_BEAST_842:LEATHER -$CREATURE:FORGOTTEN_BEAST_843:LEATHER -$CREATURE:FORGOTTEN_BEAST_844:LEATHER -$CREATURE:FORGOTTEN_BEAST_845:LEATHER -$CREATURE:FORGOTTEN_BEAST_846:LEATHER -$CREATURE:FORGOTTEN_BEAST_847:LEATHER -$CREATURE:FORGOTTEN_BEAST_848:LEATHER -$CREATURE:FORGOTTEN_BEAST_849:LEATHER -$CREATURE:FORGOTTEN_BEAST_851:LEATHER -$CREATURE:FORGOTTEN_BEAST_853:LEATHER -$CREATURE:FORGOTTEN_BEAST_854:LEATHER -$CREATURE:FORGOTTEN_BEAST_855:LEATHER -$CREATURE:FORGOTTEN_BEAST_857:LEATHER -$CREATURE:FORGOTTEN_BEAST_858:LEATHER -$CREATURE:FORGOTTEN_BEAST_859:LEATHER -$CREATURE:FORGOTTEN_BEAST_860:LEATHER -$CREATURE:FORGOTTEN_BEAST_861:LEATHER -$CREATURE:FORGOTTEN_BEAST_862:LEATHER -$CREATURE:FORGOTTEN_BEAST_865:LEATHER -$CREATURE:FORGOTTEN_BEAST_866:LEATHER -$CREATURE:FORGOTTEN_BEAST_867:LEATHER -CREATURE:TITAN_1:LEATHER -CREATURE:TITAN_3:LEATHER -CREATURE:TITAN_4:LEATHER -CREATURE:TITAN_6:LEATHER -CREATURE:TITAN_7:LEATHER -CREATURE:TITAN_8:LEATHER -CREATURE:TITAN_9:LEATHER -CREATURE:TITAN_10:LEATHER -CREATURE:TITAN_11:LEATHER -CREATURE:TITAN_12:LEATHER -CREATURE:TITAN_13:LEATHER -CREATURE:TITAN_14:LEATHER -CREATURE:TITAN_15:LEATHER -CREATURE:TITAN_18:LEATHER -CREATURE:TITAN_19:LEATHER -CREATURE:TITAN_21:LEATHER -CREATURE:TITAN_23:LEATHER -CREATURE:TITAN_24:LEATHER -CREATURE:TITAN_25:LEATHER -CREATURE:TITAN_26:LEATHER -CREATURE:TITAN_27:LEATHER -CREATURE:TITAN_28:LEATHER -CREATURE:TITAN_29:LEATHER -CREATURE:TITAN_30:LEATHER -CREATURE:TITAN_32:LEATHER -CREATURE:TITAN_33:LEATHER -CREATURE:DEMON_7:LEATHER -CREATURE:DEMON_8:LEATHER -CREATURE:DEMON_9:LEATHER -CREATURE:DEMON_10:LEATHER -CREATURE:DEMON_11:LEATHER -CREATURE:DEMON_12:LEATHER -CREATURE:DEMON_13:LEATHER -CREATURE:DEMON_14:LEATHER -CREATURE:DEMON_15:LEATHER -CREATURE:DEMON_16:LEATHER -CREATURE:DEMON_17:LEATHER -CREATURE:DEMON_18:LEATHER -CREATURE:DEMON_19:LEATHER -CREATURE:DEMON_20:LEATHER -CREATURE:DEMON_21:LEATHER -CREATURE:DEMON_22:LEATHER -CREATURE:DEMON_23:LEATHER -CREATURE:DEMON_24:LEATHER -CREATURE:DEMON_25:LEATHER -CREATURE:DEMON_26:LEATHER -CREATURE:DEMON_27:LEATHER -CREATURE:DEMON_28:LEATHER -CREATURE:DEMON_29:LEATHER -CREATURE:DEMON_31:LEATHER -CREATURE:DEMON_32:LEATHER -CREATURE:DEMON_38:LEATHER -CREATURE:DEMON_39:LEATHER -CREATURE:DEMON_40:LEATHER -CREATURE:DEMON_41:LEATHER -CREATURE:DEMON_42:LEATHER -CREATURE:DEMON_43:LEATHER -CREATURE:DEMON_44:LEATHER -CREATURE:DEMON_45:LEATHER -CREATURE:DEMON_47:LEATHER -CREATURE:DEMON_48:LEATHER -CREATURE:DEMON_49:LEATHER -CREATURE:DEMON_52:LEATHER -!CREATURE:NIGHT_CREATURE_1:LEATHER -!CREATURE:NIGHT_CREATURE_2:LEATHER -!CREATURE:NIGHT_CREATURE_3:LEATHER -!CREATURE:NIGHT_CREATURE_4:LEATHER -!CREATURE:NIGHT_CREATURE_5:LEATHER -!CREATURE:NIGHT_CREATURE_6:LEATHER -!CREATURE:NIGHT_CREATURE_7:LEATHER -!CREATURE:NIGHT_CREATURE_8:LEATHER -!CREATURE:NIGHT_CREATURE_9:LEATHER -"CREATURE:NIGHT_CREATURE_10:LEATHER -"CREATURE:NIGHT_CREATURE_11:LEATHER -"CREATURE:NIGHT_CREATURE_12:LEATHER -"CREATURE:NIGHT_CREATURE_13:LEATHER -"CREATURE:NIGHT_CREATURE_14:LEATHER -"CREATURE:NIGHT_CREATURE_15:LEATHER -"CREATURE:NIGHT_CREATURE_16:LEATHER -"CREATURE:NIGHT_CREATURE_17:LEATHER -"CREATURE:NIGHT_CREATURE_18:LEATHER -"CREATURE:NIGHT_CREATURE_19:LEATHER -"CREATURE:NIGHT_CREATURE_20:LEATHER -"CREATURE:NIGHT_CREATURE_21:LEATHER -"CREATURE:NIGHT_CREATURE_22:LEATHER -"CREATURE:NIGHT_CREATURE_23:LEATHER -"CREATURE:NIGHT_CREATURE_24:LEATHER -"CREATURE:NIGHT_CREATURE_25:LEATHER -"CREATURE:NIGHT_CREATURE_26:LEATHER -"CREATURE:NIGHT_CREATURE_27:LEATHER -"CREATURE:NIGHT_CREATURE_28:LEATHER -"CREATURE:NIGHT_CREATURE_29:LEATHER -"CREATURE:NIGHT_CREATURE_30:LEATHER -"CREATURE:NIGHT_CREATURE_31:LEATHER -"CREATURE:NIGHT_CREATURE_32:LEATHER -"CREATURE:NIGHT_CREATURE_33:LEATHER -"CREATURE:NIGHT_CREATURE_34:LEATHER -"CREATURE:NIGHT_CREATURE_35:LEATHER -"CREATURE:NIGHT_CREATURE_36:LEATHER -"CREATURE:NIGHT_CREATURE_37:LEATHER -"CREATURE:NIGHT_CREATURE_38:LEATHER -"CREATURE:NIGHT_CREATURE_39:LEATHER -"CREATURE:NIGHT_CREATURE_40:LEATHER -"CREATURE:NIGHT_CREATURE_41:LEATHER -"CREATURE:NIGHT_CREATURE_42:LEATHER -"CREATURE:NIGHT_CREATURE_43:LEATHER -"CREATURE:NIGHT_CREATURE_44:LEATHER -"CREATURE:NIGHT_CREATURE_45:LEATHER -"CREATURE:NIGHT_CREATURE_46:LEATHER -"CREATURE:NIGHT_CREATURE_47:LEATHER -"CREATURE:NIGHT_CREATURE_48:LEATHER -"CREATURE:NIGHT_CREATURE_49:LEATHER -"CREATURE:NIGHT_CREATURE_50:LEATHER -"CREATURE:NIGHT_CREATURE_51:LEATHER -"CREATURE:NIGHT_CREATURE_52:LEATHER -"CREATURE:NIGHT_CREATURE_53:LEATHER -"CREATURE:NIGHT_CREATURE_54:LEATHER -"CREATURE:NIGHT_CREATURE_55:LEATHER -"CREATURE:NIGHT_CREATURE_56:LEATHER -"CREATURE:NIGHT_CREATURE_57:LEATHER -"CREATURE:NIGHT_CREATURE_58:LEATHER -"CREATURE:NIGHT_CREATURE_59:LEATHER -"CREATURE:NIGHT_CREATURE_60:LEATHER -"CREATURE:NIGHT_CREATURE_61:LEATHER -"CREATURE:NIGHT_CREATURE_62:LEATHER -"CREATURE:NIGHT_CREATURE_63:LEATHER -"CREATURE:NIGHT_CREATURE_64:LEATHER -"CREATURE:NIGHT_CREATURE_65:LEATHER -"CREATURE:NIGHT_CREATURE_66:LEATHER -"CREATURE:NIGHT_CREATURE_67:LEATHER -"CREATURE:NIGHT_CREATURE_68:LEATHER -"CREATURE:NIGHT_CREATURE_69:LEATHER -"CREATURE:NIGHT_CREATURE_70:LEATHER -"CREATURE:NIGHT_CREATURE_71:LEATHER -"CREATURE:NIGHT_CREATURE_72:LEATHER -"CREATURE:NIGHT_CREATURE_73:LEATHER -"CREATURE:NIGHT_CREATURE_74:LEATHER -"CREATURE:NIGHT_CREATURE_75:LEATHER -"CREATURE:NIGHT_CREATURE_76:LEATHER -"CREATURE:NIGHT_CREATURE_77:LEATHER -"CREATURE:NIGHT_CREATURE_78:LEATHER -"CREATURE:NIGHT_CREATURE_79:LEATHER -"CREATURE:NIGHT_CREATURE_80:LEATHER -"CREATURE:NIGHT_CREATURE_81:LEATHER -"CREATURE:NIGHT_CREATURE_82:LEATHER -"CREATURE:NIGHT_CREATURE_83:LEATHER -"CREATURE:NIGHT_CREATURE_84:LEATHER -"CREATURE:NIGHT_CREATURE_85:LEATHER -"CREATURE:NIGHT_CREATURE_86:LEATHER -"CREATURE:NIGHT_CREATURE_87:LEATHER -"CREATURE:NIGHT_CREATURE_88:LEATHER -"CREATURE:NIGHT_CREATURE_89:LEATHER -"CREATURE:NIGHT_CREATURE_90:LEATHER -"CREATURE:NIGHT_CREATURE_91:LEATHER -"CREATURE:NIGHT_CREATURE_92:LEATHER -"CREATURE:NIGHT_CREATURE_93:LEATHER -"CREATURE:NIGHT_CREATURE_94:LEATHER -"CREATURE:NIGHT_CREATURE_95:LEATHER -"CREATURE:NIGHT_CREATURE_96:LEATHER -"CREATURE:NIGHT_CREATURE_97:LEATHER -"CREATURE:NIGHT_CREATURE_98:LEATHER -"CREATURE:NIGHT_CREATURE_99:LEATHER -#CREATURE:NIGHT_CREATURE_100:LEATHER -#CREATURE:NIGHT_CREATURE_101:LEATHER -#CREATURE:NIGHT_CREATURE_102:LEATHER -#CREATURE:NIGHT_CREATURE_103:LEATHER -#CREATURE:NIGHT_CREATURE_104:LEATHER - CREATURE:HF1248 DIVINE_1:LEATHER - CREATURE:HF1248 DIVINE_2:LEATHER - CREATURE:HF1248 DIVINE_3:LEATHER - CREATURE:HF1108 DIVINE_2:LEATHER - CREATURE:HF1249 DIVINE_1:LEATHER - CREATURE:HF1249 DIVINE_3:LEATHER - CREATURE:HF1345 DIVINE_3:LEATHER˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/masterworkammo.dfstock b/data/stockpiles/masterworkammo.dfstock deleted file mode 100644 index 19d7aebeaa..0000000000 Binary files a/data/stockpiles/masterworkammo.dfstock and /dev/null differ diff --git a/data/stockpiles/masterworkarmor.dfstock b/data/stockpiles/masterworkarmor.dfstock deleted file mode 100644 index e3d457dc88..0000000000 Binary files a/data/stockpiles/masterworkarmor.dfstock and /dev/null differ diff --git a/data/stockpiles/masterworkfinishedgoods.dfstock b/data/stockpiles/masterworkfinishedgoods.dfstock deleted file mode 100644 index 22d15f2b0c..0000000000 Binary files a/data/stockpiles/masterworkfinishedgoods.dfstock and /dev/null differ diff --git a/data/stockpiles/masterworkfurniture.dfstock b/data/stockpiles/masterworkfurniture.dfstock deleted file mode 100644 index 7827449d35..0000000000 Binary files a/data/stockpiles/masterworkfurniture.dfstock and /dev/null differ diff --git a/data/stockpiles/masterworks.dfstock b/data/stockpiles/masterworks.dfstock new file mode 100644 index 0000000000..fa94c86a93 Binary files /dev/null and b/data/stockpiles/masterworks.dfstock differ diff --git a/data/stockpiles/masterworkweapons.dfstock b/data/stockpiles/masterworkweapons.dfstock deleted file mode 100644 index 29d2ec1b84..0000000000 Binary files a/data/stockpiles/masterworkweapons.dfstock and /dev/null differ diff --git a/data/stockpiles/metalammo.dfstock b/data/stockpiles/metalammo.dfstock index ed20da3f7c..f1d9cdee9c 100644 Binary files a/data/stockpiles/metalammo.dfstock and b/data/stockpiles/metalammo.dfstock differ diff --git a/data/stockpiles/metalarmor.dfstock b/data/stockpiles/metalarmor.dfstock index 7d78174900..f3a00646aa 100644 Binary files a/data/stockpiles/metalarmor.dfstock and b/data/stockpiles/metalarmor.dfstock differ diff --git a/data/stockpiles/metalbars.dfstock b/data/stockpiles/metalbars.dfstock index 630f2975e2..103619c508 100644 Binary files a/data/stockpiles/metalbars.dfstock and b/data/stockpiles/metalbars.dfstock differ diff --git a/data/stockpiles/metal.dfstock b/data/stockpiles/metalore.dfstock similarity index 87% rename from data/stockpiles/metal.dfstock rename to data/stockpiles/metalore.dfstock index a8b58b0adb..8cbb60959e 100644 Binary files a/data/stockpiles/metal.dfstock and b/data/stockpiles/metalore.dfstock differ diff --git a/data/stockpiles/metalweapons.dfstock b/data/stockpiles/metalweapons.dfstock index d89f668e1e..b9cd665117 100644 Binary files a/data/stockpiles/metalweapons.dfstock and b/data/stockpiles/metalweapons.dfstock differ diff --git a/data/stockpiles/miscliquid.dfstock b/data/stockpiles/miscliquid.dfstock index 56ef41c076..dbf75a072e 100644 Binary files a/data/stockpiles/miscliquid.dfstock and b/data/stockpiles/miscliquid.dfstock differ diff --git a/data/stockpiles/organic.dfstock b/data/stockpiles/organic.dfstock new file mode 100644 index 0000000000..70f0496ca3 Binary files /dev/null and b/data/stockpiles/organic.dfstock differ diff --git a/data/stockpiles/otherarmor.dfstock b/data/stockpiles/otherarmor.dfstock index b053744be1..ec857e0cc3 100644 Binary files a/data/stockpiles/otherarmor.dfstock and b/data/stockpiles/otherarmor.dfstock differ diff --git a/data/stockpiles/otherbars.dfstock b/data/stockpiles/otherbars.dfstock index 8eb0d432c9..4cbcc1c8f9 100644 Binary files a/data/stockpiles/otherbars.dfstock and b/data/stockpiles/otherbars.dfstock differ diff --git a/data/stockpiles/otherstone.dfstock b/data/stockpiles/otherstone.dfstock index 79c865f4e5..1f9f867edf 100644 Binary files a/data/stockpiles/otherstone.dfstock and b/data/stockpiles/otherstone.dfstock differ diff --git a/data/stockpiles/otherweapons.dfstock b/data/stockpiles/otherweapons.dfstock index 3c59675f00..f1127a7841 100644 Binary files a/data/stockpiles/otherweapons.dfstock and b/data/stockpiles/otherweapons.dfstock differ diff --git a/data/stockpiles/pearlash.dfstock b/data/stockpiles/pearlash.dfstock index 1f7d6a945f..3cea5164da 100644 Binary files a/data/stockpiles/pearlash.dfstock and b/data/stockpiles/pearlash.dfstock differ diff --git a/data/stockpiles/pigironbars.dfstock b/data/stockpiles/pigironbars.dfstock index c3f974b6f7..f07b1def24 100644 Binary files a/data/stockpiles/pigironbars.dfstock and b/data/stockpiles/pigironbars.dfstock differ diff --git a/data/stockpiles/plants.dfstock b/data/stockpiles/plants.dfstock index ac8573dd1d..ca55f19f98 100644 Binary files a/data/stockpiles/plants.dfstock and b/data/stockpiles/plants.dfstock differ diff --git a/data/stockpiles/plaster.dfstock b/data/stockpiles/plasterproducing.dfstock similarity index 60% rename from data/stockpiles/plaster.dfstock rename to data/stockpiles/plasterproducing.dfstock index 6ac4d4607b..2764150a3f 100644 Binary files a/data/stockpiles/plaster.dfstock and b/data/stockpiles/plasterproducing.dfstock differ diff --git a/data/stockpiles/platinumweapons.dfstock b/data/stockpiles/platinumweapons.dfstock new file mode 100644 index 0000000000..162865512b Binary files /dev/null and b/data/stockpiles/platinumweapons.dfstock differ diff --git a/data/stockpiles/potash.dfstock b/data/stockpiles/potash.dfstock index 0db45dd7f0..8a09e446fe 100644 Binary files a/data/stockpiles/potash.dfstock and b/data/stockpiles/potash.dfstock differ diff --git a/data/stockpiles/pots.dfstock b/data/stockpiles/pots.dfstock index a8a3466a8f..2c1fe0e5ca 100644 Binary files a/data/stockpiles/pots.dfstock and b/data/stockpiles/pots.dfstock differ diff --git a/data/stockpiles/preparedmeals.dfstock b/data/stockpiles/preparedmeals.dfstock index 1df044d485..657c93f389 100644 Binary files a/data/stockpiles/preparedmeals.dfstock and b/data/stockpiles/preparedmeals.dfstock differ diff --git a/data/stockpiles/rawhides.dfstock b/data/stockpiles/rawhides.dfstock index b58c77edec..eedc71760d 100644 Binary files a/data/stockpiles/rawhides.dfstock and b/data/stockpiles/rawhides.dfstock differ diff --git a/data/stockpiles/refuse.dfstock b/data/stockpiles/refuse.dfstock deleted file mode 100644 index 4de87f5455..0000000000 --- a/data/stockpiles/refuse.dfstock +++ /dev/null @@ -1,583 +0,0 @@ -*ÞÐ -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCHTOADTOAD_MAN -GIANT_TOADWORMWORM_MAN BIRD_BLUEJAY BLUEJAY_MAN GIANT_BLUEJAY BIRD_CARDINAL CARDINAL_MANGIANT_CARDINAL BIRD_GRACKLE GRACKLE_MAN GIANT_GRACKLE BIRD_ORIOLE -ORIOLE_MAN GIANT_ORIOLEBIRD_RW_BLACKBIRDRW_BLACKBIRD_MANGIANT_RW_BLACKBIRD BIRD_PENGUINBIRD_PENGUIN_LITTLEBIRD_PENGUIN_EMPEROR PENGUIN MANBIRD_PENGUIN_GIANTBIRD_FALCON_PEREGRINEPEREGRINE FALCON MANGIANT PEREGRINE FALCON BIRD_KIWIKIWI MANBIRD_KIWI_GIANT BIRD_OSTRICH OSTRICH MANBIRD_OSTRICH_GIANT BIRD_CROWCROW_MAN -GIANT_CROW -BIRD_RAVEN RAVEN_MAN GIANT_RAVENBIRD_CASSOWARY CASSOWARY_MANGIANT_CASSOWARYBIRD_KEAKEA_MAN GIANT_KEABIRD_OWL_SNOWY SNOWY_OWL_MANGIANT_SNOWY_OWLSPARROW SPARROW_MAN GIANT_SPARROWBIRD_STORK_WHITEWHITE_STORK_MANGIANT_WHITE_STORK BIRD_LOONLOON_MAN -GIANT_LOON BIRD_OWL_BARN BARN_OWL_MANGIANT_BARN_OWL BIRD_PARAKEET PARAKEET_MANGIANT_PARAKEET BIRD_KAKAPO -KAKAPO_MAN GIANT_KAKAPOBIRD_PARROT_GREYGREY_PARROT_MANGIANT_GREY_PARROT BIRD_PUFFIN -PUFFIN_MAN GIANT_PUFFIN BIRD_SWANSWAN_MAN -GIANT_SWAN BIRD_LORIKEET LORIKEET_MANGIANT_LORIKEET BIRD_WRENWREN_MAN -GIANT_WREN BIRD_OSPREY -OSPREY_MAN GIANT_OSPREYBIRD_EMUEMU_MAN GIANT_EMUBIRD_COCKATIEL COCKATIEL_MANGIANT_COCKATIELBIRD_LOVEBIRD_PEACH-FACEDPEACH-FACED_LOVEBIRD_MANGIANT_PEACH-FACED_LOVEBIRD BIRD_MAGPIE -MAGPIE_MAN GIANT_MAGPIE BIRD_KESTREL KESTREL_MAN GIANT_KESTRELBIRD_ALBATROSS ALBATROSS_MANGIANT_ALBATROSSBIRD_OWL_GREAT_HORNEDGREAT_HORNED_OWL_MANGIANT_GREAT_HORNED_OWL -BIRD_EAGLE EAGLE_MAN GIANT_EAGLE BIRD_HORNBILL HORNBILL_MANGIANT_HORNBILLBIRD_LOVEBIRD_MASKEDTOADTOAD_MAN -GIANT_TOADWORMWORM_MAN BIRD_BLUEJAY BLUEJAY_MAN GIANT_BLUEJAY BIRD_CARDINAL CARDINAL_MANGIANT_CARDINAL BIRD_GRACKLE GRACKLE_MAN GIANT_GRACKLE BIRD_ORIOLE -ORIOLE_MAN GIANT_ORIOLEBIRD_RW_BLACKBIRDRW_BLACKBIRD_MANGIANT_RW_BLACKBIRD BIRD_PENGUINBIRD_PENGUIN_LITTLEBIRD_PENGUIN_EMPEROR PENGUIN MANBIRD_PENGUIN_GIANTBIRD_FALCON_PEREGRINEPEREGRINE FALCON MANGIANT PEREGRINE FALCON BIRD_KIWIKIWI MANBIRD_KIWI_GIANT BIRD_OSTRICH OSTRICH MANBIRD_OSTRICH_GIANT BIRD_CROWCROW_MAN -GIANT_CROW -BIRD_RAVEN RAVEN_MAN GIANT_RAVENBIRD_CASSOWARY CASSOWARY_MANGIANT_CASSOWARYBIRD_KEAKEA_MAN GIANT_KEABIRD_OWL_SNOWY SNOWY_OWL_MANGIANT_SNOWY_OWLSPARROW SPARROW_MAN GIANT_SPARROWBIRD_STORK_WHITEWHITE_STORK_MANGIANT_WHITE_STORK BIRD_LOONLOON_MAN -GIANT_LOON BIRD_OWL_BARN BARN_OWL_MANGIANT_BARN_OWL BIRD_PARAKEET PARAKEET_MANGIANT_PARAKEET BIRD_KAKAPO -KAKAPO_MAN GIANT_KAKAPOBIRD_PARROT_GREYGREY_PARROT_MANGIANT_GREY_PARROT BIRD_PUFFIN -PUFFIN_MAN GIANT_PUFFIN BIRD_SWANSWAN_MAN -GIANT_SWAN BIRD_LORIKEET LORIKEET_MANGIANT_LORIKEET BIRD_WRENWREN_MAN -GIANT_WREN BIRD_OSPREY -OSPREY_MAN GIANT_OSPREYBIRD_EMUEMU_MAN GIANT_EMUBIRD_COCKATIEL COCKATIEL_MANGIANT_COCKATIELBIRD_LOVEBIRD_PEACH-FACEDPEACH-FACED_LOVEBIRD_MANGIANT_PEACH-FACED_LOVEBIRD BIRD_MAGPIE -MAGPIE_MAN GIANT_MAGPIE BIRD_KESTREL KESTREL_MAN GIANT_KESTRELBIRD_ALBATROSS ALBATROSS_MANGIANT_ALBATROSSBIRD_OWL_GREAT_HORNEDGREAT_HORNED_OWL_MANGIANT_GREAT_HORNED_OWL -BIRD_EAGLE EAGLE_MAN GIANT_EAGLE BIRD_HORNBILL HORNBILL_MANGIANT_HORNBILLBIRD_LOVEBIRD_MASKEDMASKED_LOVEBIRD_MANGIANT_MASKED_LOVEBIRD BIRD_BUSHTIT BUSHTIT_MAN GIANT_BUSHTIT DAMSELFLY DAMSELFLY_MANGIANT_DAMSELFLYMOTHMOTH_MAN -GIANT_MOTH GRASSHOPPERGRASSHOPPER_MANGIANT_GRASSHOPPER BARK_SCORPIONBARK_SCORPION_MANGIANT_BARK_SCORPIONMANTIS -MANTIS_MAN GIANT_MANTISTICKTICK_MAN -GIANT_TICKLOUSE LOUSE_MAN GIANT_LOUSETHRIPS -THRIPS_MAN GIANT_THRIPSSLUGSLUG_MAN -GIANT_SLUGMOSQUITO MOSQUITO_MANGIANT_MOSQUITOSPIDER_JUMPINGJUMPING_SPIDER_MANGIANT_JUMPING_SPIDERTERMITE -MOON_SNAILMOON_SNAIL_MANGIANT_MOON_SNAILSPIDER_BROWN_RECLUSEBROWN_RECLUSE_SPIDER_MANGIANT_BROWN_RECLUSE_SPIDERSNAIL SNAIL_MAN GIANT_SNAIL GECKO_LEOPARDLEOPARD_GECKO_MANGIANT_LEOPARD_GECKODESERT TORTOISEDESERT_TORTOISE_MANGIANT_DESERT_TORTOISE GILA_MONSTERGILA_MONSTER_MANGIANT_GILA_MONSTERDOGCATMULEDONKEYHORSECOWSHEEPPIGGOAT BIRD_CHICKENCAVY BIRD_DUCK WATER_BUFFALOREINDEER -BIRD_GOOSEYAKLLAMAALPACABIRD_GUINEAFOWLBIRD_PEAFOWL_BLUE BIRD_TURKEYRABBITCHIMERACENTAURGRIFFONFLYFLY_MAN GIANT_FLY ROACH_LARGE ROACH_MAN GIANT_ROACHBEETLE -BEETLE_MAN GIANT_BEETLEANTBUTTERFLY_MONARCHBUTTERFLY_MONARCH_MANGIANT_BUTTERFLY_MONARCHFIREFLY FIREFLY_MAN GIANT_FIREFLY DRAGONFLY DRAGONFLY_MANGIANT_DRAGONFLY HONEY_BEE BUMBLEBEE GOAT_MOUNTAINGOAT_MOUNTAIN_MANGIANT_GOAT_MOUNTAIN MARMOT_HOARYMARMOT_HOARY_MANGIANT_MARMOT_HOARYGNOME_MOUNTAIN -GNOME_DARKWALRUS -WALRUS_MAN GIANT_WALRUSFISH_LAMPREY_SEASHARK_GREAT_WHITE SHARK_FRILLSHARK_SPINY_DOGFISHSHARK_WOBBEGONG_SPOTTED SHARK_WHALE SHARK_BASKING SHARK_NURSESHARK_MAKO_SHORTFINSHARK_MAKO_LONGFIN SHARK_TIGER -SHARK_BULLSHARK_REEF_BLACKTIPSHARK_REEF_WHITETIP -SHARK_BLUESHARK_HAMMERHEAD SHARK_ANGELFISH_SKATE_COMMONFISH_RAY_MANTA FISH_STINGRAYFISH_COELACANTH FISH_STURGEONFISH_CONGER_EEL FISH_MILKFISHFISH_COD FISH_OPAHFISH_GROUPER_GIANT FISH_BLUEFISHFISH_SUNFISH_OCEANFISH_SWORDFISH FISH_MARLIN FISH_HALIBUTFISH_BARRACUDA_GREATFISH_TUNA_BLUEFINNARWHAL NARWHAL MANNARWHAL, GIANTHIPPO HIPPO_MAN GIANT_HIPPOFISH_GAR_LONGNOSE FISH_CARPFISH_TIGERFISH FISH_PIKEPLATYPUS PLATYPUS MANPLATYPUS, GIANT BEAR_GRIZZLYBEAR_GRIZZLY_MANGIANT_BEAR_GRIZZLY -BEAR_BLACKBEAR_BLACK_MANGIANT_BEAR_BLACKDEERDEER_MAN -GIANT_DEERFOXFOX_MAN GIANT_FOXRACCOON RACCOON_MAN GIANT_RACCOONMACAQUE_RHESUSMACAQUE_RHESUS_MANGIANT_MACAQUE_RHESUSCOUGAR -COUGAR_MAN GIANT_COUGARWOLFWOLF_MAN -GIANT_WOLF GROUNDHOG GROUNDHOG_MANGIANT_GROUNDHOG ALLIGATOR ALLIGATOR_MANGIANT_ALLIGATOR BIRD_BUZZARD BUZZARD_MAN GIANT_BUZZARDPANDAPANDA, GIGANTIC PANDA MANCAPYBARACAPYBARA, GIANT CAPYBARA MANBADGER -BADGER MAN BADGER, GIANTMOOSE MOOSE MAN MOOSE, GIANT RED PANDA RED PANDA MANRED PANDA, GIANTELEPHANT ELEPHANT_MANGIANT_ELEPHANTWARTHOG WARTHOG_MAN GIANT_WARTHOGLIONLION_MAN -GIANT_LIONLEOPARD LEOPARD_MAN GIANT_LEOPARDJAGUAR -JAGUAR_MAN GIANT_JAGUARTIGER TIGER_MAN GIANT_TIGERCHEETAH CHEETAH_MAN GIANT_CHEETAHGAZELLE GAZELLE_MAN GIANT_GAZELLEMANDRILL MANDRILL_MANGIANT_MANDRILL -CHIMPANZEEBONOBOGORILLA ORANGUTANGIBBON_SIAMANGGIBBON_WHITE_HANDEDGIBBON_BLACK_HANDED GIBBON_GRAYGIBBON_SILVERYGIBBON_PILEATED GIBBON_BILOUGIBBON_WHITE_BROWEDGIBBON_BLACK_CRESTED CAMEL_1_HUMPCAMEL_1_HUMP_MANGIANT_CAMEL_1_HUMP CAMEL_2_HUMPCAMEL_2_HUMP_MANGIANT_CAMEL_2_HUMPCROCODILE_SALTWATERCROCODILE_SALTWATER_MANGIANT_CROCODILE_SALTWATER BIRD_VULTURE VULTURE_MAN GIANT_VULTURE -RHINOCEROSRHINOCEROS_MANGIANT_RHINOCEROSGIRAFFE GIRAFFE_MAN GIANT_GIRAFFE HONEY BADGERHONEY BADGER MANHONEY BADGER, GIANTGIANT TORTOISEGIANT TORTOISE MANGIGANTIC TORTOISE ARMADILLO ARMADILLO MANARMADILLO, GIANTMUSKOX -MUSKOX_MAN GIANT_MUSKOXELKELK_MAN GIANT_ELK -BEAR_POLARBEAR_POLAR_MANGIANT_BEAR_POLAR WOLVERINE WOLVERINE_MANGIANT_WOLVERINE -CHINCHILLACHINCHILLA_MANGIANT_CHINCHILLA FLOATING_GUTSDRUNIAN CREEPING_EYEVORACIOUS_CAVE_CRAWLERBLIND_CAVE_OGRE -CAP_HOPPER -MAGMA_CRABCRUNDLE HUNGRY_HEAD -FLESH_BALLELK_BIRD HELMET_SNAKEGREEN_DEVOURERRUTHERERCREEPY_CRAWLERDRALTHAGIANT_EARTHWORM BLOOD_MANBUGBATMANERA -MOLEMARIANJABBERER POND_GRABBERBLIND_CAVE_BEAR CAVE_DRAGONREACHERELEMENTMAN_GABBROGORLAK CAVE_FLOATERPLUMP_HELMET_MAN CAVE_BLOBELEMENTMAN_AMETHYSTOCTOPUS OCTOPUS_MAN GIANT_OCTOPUSCRABCRAB_MAN -GIANT_CRAB LEOPARD_SEALLEOPARD_SEAL_MANGIANT_LEOPARD_SEAL -CUTTLEFISHCUTTLEFISH_MANGIANT_CUTTLEFISHORCAORCA_MAN -GIANT_ORCASPONGE -SPONGE_MAN GIANT_SPONGEHORSESHOE_CRABHORSESHOE_CRAB_MANGIANT_HORSESHOE_CRAB SPERM_WHALESPERM_WHALE_MANGIANT_SPERM_WHALE ELEPHANT_SEALELEPHANT_SEAL_MANGIANT_ELEPHANT_SEAL HARP_SEAL HARP_SEAL_MANGIANT_HARP_SEALNAUTILUS NAUTILUS_MANGIANT_NAUTILUS FOXSQUIRREL MOGHOPPER RAT_DEMONWAMBLER_FLUFFYLIZARD_RHINO_TWO_LEGGED WORM_KNUCKLESPIDER_PHANTOM FLY_ACORN -GNAT_BLOODLIZARD -LIZARD_MAN GIANT_LIZARDSKINK SKINK_MAN GIANT_SKINK CHAMELEON CHAMELEON_MANGIANT_CHAMELEONANOLE ANOLE_MAN GIANT_ANOLEIGUANA -IGUANA_MAN GIANT_IGUANA RIVER OTTER SEA OTTER OTTER_MAN GIANT_OTTERSNAPPING TURTLEALLIGATOR SNAPPING TURTLESNAPPING_TURTLE_MANGIANT_SNAPPING_TURTLEBEAVER -BEAVER_MAN GIANT_BEAVERLEECH LEECH_MAN GIANT_LEECHAXOLOTL AXOLOTL_MAN GIANT_AXOLOTLMINKMINK_MAN -GIANT_MINK POND_TURTLEPOND_TURTLE_MANGIANT_POND_TURTLERATRAT_MAN SQUIRREL_GRAYSQUIRREL_GRAY_MANGIANT_SQUIRREL_GRAY SQUIRREL_REDSQUIRREL_RED_MANGIANT_SQUIRREL_REDCHIPMUNK CHIPMUNK_MANGIANT_CHIPMUNKHAMSTER HAMSTER_MAN GIANT_HAMSTERHEDGEHOG HEDGEHOG_MANGIANT_HEDGEHOGSQUIRREL_FLYINGFLYING_SQUIRREL_MANGIANT_FLYING_SQUIRRELMUSSELOYSTER FISH_SALMONFISH_CLOWNFISH FISH_HAGFISHFISH_LAMPREY_BROOK FISH_RAY_BATFISH_RAY_THORNBACKFISH_RATFISH_SPOTTED FISH_HERRING FISH_SHAD FISH_ANCHOVYFISH_TROUT_STEELHEAD FISH_HAKE FISH_SEAHORSE FISH_GLASSEYEFISH_PUFFER_WHITE_SPOTTED FISH_SOLE FISH_FLOUNDER FISH_MACKERELJELLYFISH_SEA_NETTLESQUID SQUID MANGIGANTIC SQUID FISH_LUNGFISHFISH_LOACH_CLOWNFISH_BULLHEAD_BROWNFISH_BULLHEAD_YELLOWFISH_BULLHEAD_BLACKFISH_KNIFEFISH_BANDED FISH_CHARFISH_TROUT_RAINBOWFISH_MOLLY_SAILFIN -FISH_GUPPY -FISH_PERCHDWARFHUMANELFGOBLINKOBOLDGREMLINTROLLOGREUNICORNDRAGONSATYRCOLOSSUS_BRONZEGIANTCYCLOPSETTINMINOTAURYETI SASQUATCH BLIZZARD_MANWOLF_ICEFAIRYPIXIEBEAK_DOG GRIMELING BLENDEC_FOUL STRANGLER NIGHTWINGHARPYHYDRA MERPERSON SEA_SERPENT SEA_MONSTERBIRD_ROCCROCODILE_CAVETOAD_GIANT_CAVE OLM_GIANT BAT_GIANT RAT_GIANT RAT_LARGEMOLE_DOG_NAKED -TROGLODYTE -MOLE_GIANTIMP_FIRESPIDER_CAVE_GIANT SPIDER_CAVE FISH_CAVE CAVE_FISH_MAN LOBSTER_CAVE -SNAKE_FIREOLMOLM_MANBATBAT_MANMAGGOT_PURRINGELEMENTMAN_FIREELEMENTMAN_MAGMAELEMENTMAN_IRONELEMENTMAN_MUDBIRD_SWALLOW_CAVECAVE_SWALLOW_MANBIRD_SWALLOW_CAVE_GIANT AMPHIBIAN_MAN REPTILE_MAN SERPENT_MANANT_MAN -RODENT MAN WILD_BOAR WILD_BOAR_MANGIANT_WILD_BOARCOYOTE -COYOTE_MAN GIANT_COYOTEKANGAROO KANGAROO_MANGIANT_KANGAROOKOALA KOALA_MAN GIANT_KOALAADDER ADDER_MAN GIANT_ADDERECHIDNA ECHIDNA_MAN GIANT_ECHIDNA PORCUPINE PORCUPINE_MANGIANT_PORCUPINE KINGSNAKE KINGSNAKE_MANGIANT_KINGSNAKE GRAY_LANGURGRAY_LANGUR_MANGIANT_GRAY_LANGURBOBCAT -BOBCAT_MAN GIANT_BOBCATSKUNK SKUNK_MAN GIANT_SKUNKGREEN_TREE_FROGGREEN_TREE_FROG_MANGIANT_GREEN_TREE_FROGHAREHARE_MAN -GIANT_HARE RATTLESNAKERATTLESNAKE_MANGIANT_RATTLESNAKEWEASEL -WEASEL_MAN GIANT_WEASELCOPPERHEAD_SNAKECOPPERHEAD_SNAKE_MANGIANT_COPPERHEAD_SNAKEIBEXIBEX_MAN -GIANT_IBEXWOMBAT -WOMBAT_MAN GIANT_WOMBATDINGO DINGO_MAN GIANT_DINGOCOATI COATI_MAN GIANT_COATIOPOSSUM OPOSSUM_MAN GIANT_OPOSSUMMONGOOSE MONGOOSE_MANGIANT_MONGOOSEHYENA HYENA_MAN GIANT_HYENAANACONDA ANACONDA_MANGIANT_ANACONDAMONITOR_LIZARDMONITOR_LIZARD_MANGIANT_MONITOR_LIZARD -KING_COBRAKING_COBRA_MANGIANT_KING_COBRAOCELOT -OCELOT_MAN GIANT_OCELOTJACKAL -JACKAL_MAN GIANT_JACKALCAPUCHIN CAPUCHIN_MANGIANT_CAPUCHINSLOTH SLOTH_MAN GIANT_SLOTH SPIDER_MONKEYSPIDER_MONKEY_MANGIANT_SPIDER_MONKEYPANGOLIN PANGOLIN_MANGIANT_PANGOLIN BLACK_MAMBABLACK_MAMBA_MANGIANT_BLACK_MAMBA -BEAR_SLOTHSLOTH_BEAR_MANGIANT_SLOTH_BEARAYE-AYE AYE-AYE_MAN GIANT_AYE-AYE -BUSHMASTERBUSHMASTER_MANGIANT_BUSHMASTERPYTHON -PYTHON_MAN GIANT_PYTHONTAPIR TAPIR_MAN GIANT_TAPIRIMPALA -IMPALA_MAN GIANT_IMPALAAARDVARK AARDVARK_MANGIANT_AARDVARK LION_TAMARINLION_TAMARIN_MANGIANT_LION_TAMARINSTOAT STOAT_MAN GIANT_STOATLYNXLYNX_MAN -GIANT_LYNX"TOAD"TOAD_MAN" -GIANT_TOAD"WORM"WORM_MAN" BIRD_BLUEJAY" BLUEJAY_MAN" GIANT_BLUEJAY" BIRD_CARDINAL" CARDINAL_MAN"GIANT_CARDINAL" BIRD_GRACKLE" GRACKLE_MAN" GIANT_GRACKLE" BIRD_ORIOLE" -ORIOLE_MAN" GIANT_ORIOLE"BIRD_RW_BLACKBIRD"RW_BLACKBIRD_MAN"GIANT_RW_BLACKBIRD" BIRD_PENGUIN"BIRD_PENGUIN_LITTLE"BIRD_PENGUIN_EMPEROR" PENGUIN MAN"BIRD_PENGUIN_GIANT"BIRD_FALCON_PEREGRINE"PEREGRINE FALCON MAN"GIANT PEREGRINE FALCON" BIRD_KIWI"KIWI MAN"BIRD_KIWI_GIANT" BIRD_OSTRICH" OSTRICH MAN"BIRD_OSTRICH_GIANT" BIRD_CROW"CROW_MAN" -GIANT_CROW" -BIRD_RAVEN" RAVEN_MAN" GIANT_RAVEN"BIRD_CASSOWARY" CASSOWARY_MAN"GIANT_CASSOWARY"BIRD_KEA"KEA_MAN" GIANT_KEA"BIRD_OWL_SNOWY" SNOWY_OWL_MAN"GIANT_SNOWY_OWL"SPARROW" SPARROW_MAN" GIANT_SPARROW"BIRD_STORK_WHITE"WHITE_STORK_MAN"GIANT_WHITE_STORK" BIRD_LOON"LOON_MAN" -GIANT_LOON" BIRD_OWL_BARN" BARN_OWL_MAN"GIANT_BARN_OWL" BIRD_PARAKEET" PARAKEET_MAN"GIANT_PARAKEET" BIRD_KAKAPO" -KAKAPO_MAN" GIANT_KAKAPO"BIRD_PARROT_GREY"GREY_PARROT_MAN"GIANT_GREY_PARROT" BIRD_PUFFIN" -PUFFIN_MAN" GIANT_PUFFIN" BIRD_SWAN"SWAN_MAN" -GIANT_SWAN" BIRD_LORIKEET" LORIKEET_MAN"GIANT_LORIKEET" BIRD_WREN"WREN_MAN" -GIANT_WREN" BIRD_OSPREY" -OSPREY_MAN" GIANT_OSPREY"BIRD_EMU"EMU_MAN" GIANT_EMU"BIRD_COCKATIEL" COCKATIEL_MAN"GIANT_COCKATIEL"BIRD_LOVEBIRD_PEACH-FACED"PEACH-FACED_LOVEBIRD_MAN"GIANT_PEACH-FACED_LOVEBIRD" BIRD_MAGPIE" -MAGPIE_MAN" GIANT_MAGPIE" BIRD_KESTREL" KESTREL_MAN" GIANT_KESTREL"BIRD_ALBATROSS" ALBATROSS_MAN"GIANT_ALBATROSS"BIRD_OWL_GREAT_HORNED"GREAT_HORNED_OWL_MAN"GIANT_GREAT_HORNED_OWL" -BIRD_EAGLE" EAGLE_MAN" GIANT_EAGLE" BIRD_HORNBILL" HORNBILL_MAN"GIANT_HORNBILL"BIRD_LOVEBIRD_MASKED"MASKED_LOVEBIRD_MAN"GIANT_MASKED_LOVEBIRD" BIRD_BUSHTIT" BUSHTIT_MAN" GIANT_BUSHTIT" DAMSELFLY" DAMSELFLY_MAN"GIANT_DAMSELFLY"MOTH"MOTH_MAN" -GIANT_MOTH" GRASSHOPPER"GRASSHOPPER_MAN"GIANT_GRASSHOPPER" BARK_SCORPION"BARK_SCORPION_MAN"GIANT_BARK_SCORPION"MANTIS" -MANTIS_MAN" GIANT_MANTIS"TICK"TICK_MAN" -GIANT_TICK"LOUSE" LOUSE_MAN" GIANT_LOUSE"THRIPS" -THRIPS_MAN" GIANT_THRIPS"SLUG"SLUG_MAN" -GIANT_SLUG"MOSQUITO" MOSQUITO_MAN"GIANT_MOSQUITO"SPIDER_JUMPING"JUMPING_SPIDER_MAN"GIANT_JUMPING_SPIDER"TERMITE" -MOON_SNAIL"MOON_SNAIL_MAN"GIANT_MOON_SNAIL"SPIDER_BROWN_RECLUSE"BROWN_RECLUSE_SPIDER_MAN"GIANT_BROWN_RECLUSE_SPIDER"SNAIL" SNAIL_MAN" GIANT_SNAIL" GECKO_LEOPARD"LEOPARD_GECKO_MAN"GIANT_LEOPARD_GECKO"DESERT TORTOISE"DESERT_TORTOISE_MAN"GIANT_DESERT_TORTOISE" GILA_MONSTER"GILA_MONSTER_MAN"GIANT_GILA_MONSTER"DOG"CAT"MULE"DONKEY"HORSE"COW"SHEEP"PIG"GOAT" BIRD_CHICKEN"CAVY" BIRD_DUCK" WATER_BUFFALO"REINDEER" -BIRD_GOOSE"YAK"LLAMA"ALPACA"BIRD_GUINEAFOWL"BIRD_PEAFOWL_BLUE" BIRD_TURKEY"RABBIT"CHIMERA"CENTAUR"GRIFFON"FLY"FLY_MAN" GIANT_FLY" ROACH_LARGE" ROACH_MAN" GIANT_ROACH"BEETLE" -BEETLE_MAN" GIANT_BEETLE"ANT"BUTTERFLY_MONARCH"BUTTERFLY_MONARCH_MAN"GIANT_BUTTERFLY_MONARCH"FIREFLY" FIREFLY_MAN" GIANT_FIREFLY" DRAGONFLY" DRAGONFLY_MAN"GIANT_DRAGONFLY" HONEY_BEE" BUMBLEBEE" GOAT_MOUNTAIN"GOAT_MOUNTAIN_MAN"GIANT_GOAT_MOUNTAIN" MARMOT_HOARY"MARMOT_HOARY_MAN"GIANT_MARMOT_HOARY"GNOME_MOUNTAIN" -GNOME_DARK"WALRUS" -WALRUS_MAN" GIANT_WALRUS"FISH_LAMPREY_SEA"SHARK_GREAT_WHITE" SHARK_FRILL"SHARK_SPINY_DOGFISH"SHARK_WOBBEGONG_SPOTTED" SHARK_WHALE" SHARK_BASKING" SHARK_NURSE"SHARK_MAKO_SHORTFIN"SHARK_MAKO_LONGFIN" SHARK_TIGER" -SHARK_BULL"SHARK_REEF_BLACKTIP"SHARK_REEF_WHITETIP" -SHARK_BLUE"SHARK_HAMMERHEAD" SHARK_ANGEL"FISH_SKATE_COMMON"FISH_RAY_MANTA" FISH_STINGRAY"FISH_COELACANTH" FISH_STURGEON"FISH_CONGER_EEL" FISH_MILKFISH"FISH_COD" FISH_OPAH"FISH_GROUPER_GIANT" FISH_BLUEFISH"FISH_SUNFISH_OCEAN"FISH_SWORDFISH" FISH_MARLIN" FISH_HALIBUT"FISH_BARRACUDA_GREAT"FISH_TUNA_BLUEFIN"NARWHAL" NARWHAL MAN"NARWHAL, GIANT"HIPPO" HIPPO_MAN" GIANT_HIPPO"FISH_GAR_LONGNOSE" FISH_CARP"FISH_TIGERFISH" FISH_PIKE"PLATYPUS" PLATYPUS MAN"PLATYPUS, GIANT" BEAR_GRIZZLY"BEAR_GRIZZLY_MAN"GIANT_BEAR_GRIZZLY" -BEAR_BLACK"BEAR_BLACK_MAN"GIANT_BEAR_BLACK"DEER"DEER_MAN" -GIANT_DEER"FOX"FOX_MAN" GIANT_FOX"RACCOON" RACCOON_MAN" GIANT_RACCOON"MACAQUE_RHESUS"MACAQUE_RHESUS_MAN"GIANT_MACAQUE_RHESUS"COUGAR" -COUGAR_MAN" GIANT_COUGAR"WOLF"WOLF_MAN" -GIANT_WOLF" GROUNDHOG" GROUNDHOG_MAN"GIANT_GROUNDHOG" ALLIGATOR" ALLIGATOR_MAN"GIANT_ALLIGATOR" BIRD_BUZZARD" BUZZARD_MAN" GIANT_BUZZARD"PANDA"PANDA, GIGANTIC" PANDA MAN"CAPYBARA"CAPYBARA, GIANT" CAPYBARA MAN"BADGER" -BADGER MAN" BADGER, GIANT"MOOSE" MOOSE MAN" MOOSE, GIANT" RED PANDA" RED PANDA MAN"RED PANDA, GIANT"ELEPHANT" ELEPHANT_MAN"GIANT_ELEPHANT"WARTHOG" WARTHOG_MAN" GIANT_WARTHOG"LION"LION_MAN" -GIANT_LION"LEOPARD" LEOPARD_MAN" GIANT_LEOPARD"JAGUAR" -JAGUAR_MAN" GIANT_JAGUAR"TIGER" TIGER_MAN" GIANT_TIGER"CHEETAH" CHEETAH_MAN" GIANT_CHEETAH"GAZELLE" GAZELLE_MAN" GIANT_GAZELLE"MANDRILL" MANDRILL_MAN"GIANT_MANDRILL" -CHIMPANZEE"BONOBO"GORILLA" ORANGUTAN"GIBBON_SIAMANG"GIBBON_WHITE_HANDED"GIBBON_BLACK_HANDED" GIBBON_GRAY"GIBBON_SILVERY"GIBBON_PILEATED" GIBBON_BILOU"GIBBON_WHITE_BROWED"GIBBON_BLACK_CRESTED" CAMEL_1_HUMP"CAMEL_1_HUMP_MAN"GIANT_CAMEL_1_HUMP" CAMEL_2_HUMP"CAMEL_2_HUMP_MAN"GIANT_CAMEL_2_HUMP"CROCODILE_SALTWATER"CROCODILE_SALTWATER_MAN"GIANT_CROCODILE_SALTWATER" BIRD_VULTURE" VULTURE_MAN" GIANT_VULTURE" -RHINOCEROS"RHINOCEROS_MAN"GIANT_RHINOCEROS"GIRAFFE" GIRAFFE_MAN" GIANT_GIRAFFE" HONEY BADGER"HONEY BADGER MAN"HONEY BADGER, GIANT"GIANT TORTOISE"GIANT TORTOISE MAN"GIGANTIC TORTOISE" ARMADILLO" ARMADILLO MAN"ARMADILLO, GIANT"MUSKOX" -MUSKOX_MAN" GIANT_MUSKOX"ELK"ELK_MAN" GIANT_ELK" -BEAR_POLAR"BEAR_POLAR_MAN"GIANT_BEAR_POLAR" WOLVERINE" WOLVERINE_MAN"GIANT_WOLVERINE" -CHINCHILLA"CHINCHILLA_MAN"GIANT_CHINCHILLA" FLOATING_GUTS"DRUNIAN" CREEPING_EYE"VORACIOUS_CAVE_CRAWLER"BLIND_CAVE_OGRE" -CAP_HOPPER" -MAGMA_CRAB"CRUNDLE" HUNGRY_HEAD" -FLESH_BALL"ELK_BIRD" HELMET_SNAKE"GREEN_DEVOURER"RUTHERER"CREEPY_CRAWLER"DRALTHA"GIANT_EARTHWORM" BLOOD_MAN"BUGBAT"MANERA" -MOLEMARIAN"JABBERER" POND_GRABBER"BLIND_CAVE_BEAR" CAVE_DRAGON"REACHER"ELEMENTMAN_GABBRO"GORLAK" CAVE_FLOATER"PLUMP_HELMET_MAN" CAVE_BLOB"ELEMENTMAN_AMETHYST"OCTOPUS" OCTOPUS_MAN" GIANT_OCTOPUS"CRAB"CRAB_MAN" -GIANT_CRAB" LEOPARD_SEAL"LEOPARD_SEAL_MAN"GIANT_LEOPARD_SEAL" -CUTTLEFISH"CUTTLEFISH_MAN"GIANT_CUTTLEFISH"ORCA"ORCA_MAN" -GIANT_ORCA"SPONGE" -SPONGE_MAN" GIANT_SPONGE"HORSESHOE_CRAB"HORSESHOE_CRAB_MAN"GIANT_HORSESHOE_CRAB" SPERM_WHALE"SPERM_WHALE_MAN"GIANT_SPERM_WHALE" ELEPHANT_SEAL"ELEPHANT_SEAL_MAN"GIANT_ELEPHANT_SEAL" HARP_SEAL" HARP_SEAL_MAN"GIANT_HARP_SEAL"NAUTILUS" NAUTILUS_MAN"GIANT_NAUTILUS" FOXSQUIRREL" MOGHOPPER" RAT_DEMON"WAMBLER_FLUFFY"LIZARD_RHINO_TWO_LEGGED" WORM_KNUCKLE"SPIDER_PHANTOM" FLY_ACORN" -GNAT_BLOOD"LIZARD" -LIZARD_MAN" GIANT_LIZARD"SKINK" SKINK_MAN" GIANT_SKINK" CHAMELEON" CHAMELEON_MAN"GIANT_CHAMELEON"ANOLE" ANOLE_MAN" GIANT_ANOLE"IGUANA" -IGUANA_MAN" GIANT_IGUANA" RIVER OTTER" SEA OTTER" OTTER_MAN" GIANT_OTTER"SNAPPING TURTLE"ALLIGATOR SNAPPING TURTLE"SNAPPING_TURTLE_MAN"GIANT_SNAPPING_TURTLE"BEAVER" -BEAVER_MAN" GIANT_BEAVER"LEECH" LEECH_MAN" GIANT_LEECH"AXOLOTL" AXOLOTL_MAN" GIANT_AXOLOTL"MINK"MINK_MAN" -GIANT_MINK" POND_TURTLE"POND_TURTLE_MAN"GIANT_POND_TURTLE"RAT"RAT_MAN" SQUIRREL_GRAY"SQUIRREL_GRAY_MAN"GIANT_SQUIRREL_GRAY" SQUIRREL_RED"SQUIRREL_RED_MAN"GIANT_SQUIRREL_RED"CHIPMUNK" CHIPMUNK_MAN"GIANT_CHIPMUNK"HAMSTER" HAMSTER_MAN" GIANT_HAMSTER"HEDGEHOG" HEDGEHOG_MAN"GIANT_HEDGEHOG"SQUIRREL_FLYING"FLYING_SQUIRREL_MAN"GIANT_FLYING_SQUIRREL"MUSSEL"OYSTER" FISH_SALMON"FISH_CLOWNFISH" FISH_HAGFISH"FISH_LAMPREY_BROOK" FISH_RAY_BAT"FISH_RAY_THORNBACK"FISH_RATFISH_SPOTTED" FISH_HERRING" FISH_SHAD" FISH_ANCHOVY"FISH_TROUT_STEELHEAD" FISH_HAKE" FISH_SEAHORSE" FISH_GLASSEYE"FISH_PUFFER_WHITE_SPOTTED" FISH_SOLE" FISH_FLOUNDER" FISH_MACKEREL"JELLYFISH_SEA_NETTLE"SQUID" SQUID MAN"GIGANTIC SQUID" FISH_LUNGFISH"FISH_LOACH_CLOWN"FISH_BULLHEAD_BROWN"FISH_BULLHEAD_YELLOW"FISH_BULLHEAD_BLACK"FISH_KNIFEFISH_BANDED" FISH_CHAR"FISH_TROUT_RAINBOW"FISH_MOLLY_SAILFIN" -FISH_GUPPY" -FISH_PERCH"DWARF"HUMAN"ELF"GOBLIN"KOBOLD"GREMLIN"TROLL"OGRE"UNICORN"DRAGON"SATYR"COLOSSUS_BRONZE"GIANT"CYCLOPS"ETTIN"MINOTAUR"YETI" SASQUATCH" BLIZZARD_MAN"WOLF_ICE"FAIRY"PIXIE"BEAK_DOG" GRIMELING" BLENDEC_FOUL" STRANGLER" NIGHTWING"HARPY"HYDRA" MERPERSON" SEA_SERPENT" SEA_MONSTER"BIRD_ROC"CROCODILE_CAVE"TOAD_GIANT_CAVE" OLM_GIANT" BAT_GIANT" RAT_GIANT" RAT_LARGE"MOLE_DOG_NAKED" -TROGLODYTE" -MOLE_GIANT"IMP_FIRE"SPIDER_CAVE_GIANT" SPIDER_CAVE" FISH_CAVE" CAVE_FISH_MAN" LOBSTER_CAVE" -SNAKE_FIRE"OLM"OLM_MAN"BAT"BAT_MAN"MAGGOT_PURRING"ELEMENTMAN_FIRE"ELEMENTMAN_MAGMA"ELEMENTMAN_IRON"ELEMENTMAN_MUD"BIRD_SWALLOW_CAVE"CAVE_SWALLOW_MAN"BIRD_SWALLOW_CAVE_GIANT" AMPHIBIAN_MAN" REPTILE_MAN" SERPENT_MAN"ANT_MAN" -RODENT MAN" WILD_BOAR" WILD_BOAR_MAN"GIANT_WILD_BOAR"COYOTE" -COYOTE_MAN" GIANT_COYOTE"KANGAROO" KANGAROO_MAN"GIANT_KANGAROO"KOALA" KOALA_MAN" GIANT_KOALA"ADDER" ADDER_MAN" GIANT_ADDER"ECHIDNA" ECHIDNA_MAN" GIANT_ECHIDNA" PORCUPINE" PORCUPINE_MAN"GIANT_PORCUPINE" KINGSNAKE" KINGSNAKE_MAN"GIANT_KINGSNAKE" GRAY_LANGUR"GRAY_LANGUR_MAN"GIANT_GRAY_LANGUR"BOBCAT" -BOBCAT_MAN" GIANT_BOBCAT"SKUNK" SKUNK_MAN" GIANT_SKUNK"GREEN_TREE_FROG"GREEN_TREE_FROG_MAN"GIANT_GREEN_TREE_FROG"HARE"HARE_MAN" -GIANT_HARE" RATTLESNAKE"RATTLESNAKE_MAN"GIANT_RATTLESNAKE"WEASEL" -WEASEL_MAN" GIANT_WEASEL"COPPERHEAD_SNAKE"COPPERHEAD_SNAKE_MAN"GIANT_COPPERHEAD_SNAKE"IBEX"IBEX_MAN" -GIANT_IBEX"WOMBAT" -WOMBAT_MAN" GIANT_WOMBAT"DINGO" DINGO_MAN" GIANT_DINGO"COATI" COATI_MAN" GIANT_COATI"OPOSSUM" OPOSSUM_MAN" GIANT_OPOSSUM"MONGOOSE" MONGOOSE_MAN"GIANT_MONGOOSE"HYENA" HYENA_MAN" GIANT_HYENA"ANACONDA" ANACONDA_MAN"GIANT_ANACONDA"MONITOR_LIZARD"MONITOR_LIZARD_MAN"GIANT_MONITOR_LIZARD" -KING_COBRA"KING_COBRA_MAN"GIANT_KING_COBRA"OCELOT" -OCELOT_MAN" GIANT_OCELOT"JACKAL" -JACKAL_MAN" GIANT_JACKAL"CAPUCHIN" CAPUCHIN_MAN"GIANT_CAPUCHIN"SLOTH" SLOTH_MAN" GIANT_SLOTH" SPIDER_MONKEY"SPIDER_MONKEY_MAN"GIANT_SPIDER_MONKEY"PANGOLIN" PANGOLIN_MAN"GIANT_PANGOLIN" BLACK_MAMBA"BLACK_MAMBA_MAN"GIANT_BLACK_MAMBA" -BEAR_SLOTH"SLOTH_BEAR_MAN"GIANT_SLOTH_BEAR"AYE-AYE" AYE-AYE_MAN" GIANT_AYE-AYE" -BUSHMASTER"BUSHMASTER_MAN"GIANT_BUSHMASTER"PYTHON" -PYTHON_MAN" GIANT_PYTHON"TAPIR" TAPIR_MAN" GIANT_TAPIR"IMPALA" -IMPALA_MAN" GIANT_IMPALA"AARDVARK" AARDVARK_MAN"GIANT_AARDVARK" LION_TAMARIN"LION_TAMARIN_MAN"GIANT_LION_TAMARIN"STOAT" STOAT_MAN" GIANT_STOAT"LYNX"LYNX_MAN" -GIANT_LYNX*TOAD*TOAD_MAN* -GIANT_TOAD*WORM*WORM_MAN* BIRD_BLUEJAY* BLUEJAY_MAN* GIANT_BLUEJAY* BIRD_CARDINAL* CARDINAL_MAN*GIANT_CARDINAL* BIRD_GRACKLE* GRACKLE_MAN* GIANT_GRACKLE* BIRD_ORIOLE* -ORIOLE_MAN* GIANT_ORIOLE*BIRD_RW_BLACKBIRD*RW_BLACKBIRD_MAN*GIANT_RW_BLACKBIRD* BIRD_PENGUIN*BIRD_PENGUIN_LITTLE*BIRD_PENGUIN_EMPEROR* PENGUIN MAN*BIRD_PENGUIN_GIANT*BIRD_FALCON_PEREGRINE*PEREGRINE FALCON MAN*GIANT PEREGRINE FALCON* BIRD_KIWI*KIWI MAN*BIRD_KIWI_GIANT* BIRD_OSTRICH* OSTRICH MAN*BIRD_OSTRICH_GIANT* BIRD_CROW*CROW_MAN* -GIANT_CROW* -BIRD_RAVEN* RAVEN_MAN* GIANT_RAVEN*BIRD_CASSOWARY* CASSOWARY_MAN*GIANT_CASSOWARY*BIRD_KEA*KEA_MAN* GIANT_KEA*BIRD_OWL_SNOWY* SNOWY_OWL_MAN*GIANT_SNOWY_OWL*SPARROW* SPARROW_MAN* GIANT_SPARROW*BIRD_STORK_WHITE*WHITE_STORK_MAN*GIANT_WHITE_STORK* BIRD_LOON*LOON_MAN* -GIANT_LOON* BIRD_OWL_BARN* BARN_OWL_MAN*GIANT_BARN_OWL* BIRD_PARAKEET* PARAKEET_MAN*GIANT_PARAKEET* BIRD_KAKAPO* -KAKAPO_MAN* GIANT_KAKAPO*BIRD_PARROT_GREY*GREY_PARROT_MAN*GIANT_GREY_PARROT* BIRD_PUFFIN* -PUFFIN_MAN* GIANT_PUFFIN* BIRD_SWAN*SWAN_MAN* -GIANT_SWAN* BIRD_LORIKEET* LORIKEET_MAN*GIANT_LORIKEET* BIRD_WREN*WREN_MAN* -GIANT_WREN* BIRD_OSPREY* -OSPREY_MAN* GIANT_OSPREY*BIRD_EMU*EMU_MAN* GIANT_EMU*BIRD_COCKATIEL* COCKATIEL_MAN*GIANT_COCKATIEL*BIRD_LOVEBIRD_PEACH-FACED*PEACH-FACED_LOVEBIRD_MAN*GIANT_PEACH-FACED_LOVEBIRD* BIRD_MAGPIE* -MAGPIE_MAN* GIANT_MAGPIE* BIRD_KESTREL* KESTREL_MAN* GIANT_KESTREL*BIRD_ALBATROSS* ALBATROSS_MAN*GIANT_ALBATROSS*BIRD_OWL_GREAT_HORNED*GREAT_HORNED_OWL_MAN*GIANT_GREAT_HORNED_OWL* -BIRD_EAGLE* EAGLE_MAN* GIANT_EAGLE* BIRD_HORNBILL* HORNBILL_MAN*GIANT_HORNBILL*BIRD_LOVEBIRD_MASKED*MASKED_LOVEBIRD_MAN*GIANT_MASKED_LOVEBIRD* BIRD_BUSHTIT* BUSHTIT_MAN* GIANT_BUSHTIT* DAMSELFLY* DAMSELFLY_MAN*GIANT_DAMSELFLY*MOTH*MOTH_MAN* -GIANT_MOTH* GRASSHOPPER*GRASSHOPPER_MAN*GIANT_GRASSHOPPER* BARK_SCORPION*BARK_SCORPION_MAN*GIANT_BARK_SCORPION*MANTIS* -MANTIS_MAN* GIANT_MANTIS*TICK*TICK_MAN* -GIANT_TICK*LOUSE* LOUSE_MAN* GIANT_LOUSE*THRIPS* -THRIPS_MAN* GIANT_THRIPS*SLUG*SLUG_MAN* -GIANT_SLUG*MOSQUITO* MOSQUITO_MAN*GIANT_MOSQUITO*SPIDER_JUMPING*JUMPING_SPIDER_MAN*GIANT_JUMPING_SPIDER*TERMITE* -MOON_SNAIL*MOON_SNAIL_MAN*GIANT_MOON_SNAIL*SPIDER_BROWN_RECLUSE*BROWN_RECLUSE_SPIDER_MAN*GIANT_BROWN_RECLUSE_SPIDER*SNAIL* SNAIL_MAN* GIANT_SNAIL* GECKO_LEOPARD*LEOPARD_GECKO_MAN*GIANT_LEOPARD_GECKO*DESERT TORTOISE*DESERT_TORTOISE_MAN*GIANT_DESERT_TORTOISE* GILA_MONSTER*GILA_MONSTER_MAN*GIANT_GILA_MONSTER*DOG*CAT*MULE*DONKEY*HORSE*COW*SHEEP*PIG*GOAT* BIRD_CHICKEN*CAVY* BIRD_DUCK* WATER_BUFFALO*REINDEER* -BIRD_GOOSE*YAK*LLAMA*ALPACA*BIRD_GUINEAFOWL*BIRD_PEAFOWL_BLUE* BIRD_TURKEY*RABBIT*CHIMERA*CENTAUR*GRIFFON*FLY*FLY_MAN* GIANT_FLY* ROACH_LARGE* ROACH_MAN* GIANT_ROACH*BEETLE* -BEETLE_MAN* GIANT_BEETLE*ANT*BUTTERFLY_MONARCH*BUTTERFLY_MONARCH_MAN*GIANT_BUTTERFLY_MONARCH*FIREFLY* FIREFLY_MAN* GIANT_FIREFLY* DRAGONFLY* DRAGONFLY_MAN*GIANT_DRAGONFLY* HONEY_BEE* BUMBLEBEE* GOAT_MOUNTAIN*GOAT_MOUNTAIN_MAN*GIANT_GOAT_MOUNTAIN* MARMOT_HOARY*MARMOT_HOARY_MAN*GIANT_MARMOT_HOARY*GNOME_MOUNTAIN* -GNOME_DARK*WALRUS* -WALRUS_MAN* GIANT_WALRUS*FISH_LAMPREY_SEA*SHARK_GREAT_WHITE* SHARK_FRILL*SHARK_SPINY_DOGFISH*SHARK_WOBBEGONG_SPOTTED* SHARK_WHALE* SHARK_BASKING* SHARK_NURSE*SHARK_MAKO_SHORTFIN*SHARK_MAKO_LONGFIN* SHARK_TIGER* -SHARK_BULL*SHARK_REEF_BLACKTIP*SHARK_REEF_WHITETIP* -SHARK_BLUE*SHARK_HAMMERHEAD* SHARK_ANGEL*FISH_SKATE_COMMON*FISH_RAY_MANTA* FISH_STINGRAY*FISH_COELACANTH* FISH_STURGEON*FISH_CONGER_EEL* FISH_MILKFISH*FISH_COD* FISH_OPAH*FISH_GROUPER_GIANT* FISH_BLUEFISH*FISH_SUNFISH_OCEAN*FISH_SWORDFISH* FISH_MARLIN* FISH_HALIBUT*FISH_BARRACUDA_GREAT*FISH_TUNA_BLUEFIN*NARWHAL* NARWHAL MAN*NARWHAL, GIANT*HIPPO* HIPPO_MAN* GIANT_HIPPO*FISH_GAR_LONGNOSE* FISH_CARP*FISH_TIGERFISH* FISH_PIKE*PLATYPUS* PLATYPUS MAN*PLATYPUS, GIANT* BEAR_GRIZZLY*BEAR_GRIZZLY_MAN*GIANT_BEAR_GRIZZLY* -BEAR_BLACK*BEAR_BLACK_MAN*GIANT_BEAR_BLACK*DEER*DEER_MAN* -GIANT_DEER*FOX*FOX_MAN* GIANT_FOX*RACCOON* RACCOON_MAN* GIANT_RACCOON*MACAQUE_RHESUS*MACAQUE_RHESUS_MAN*GIANT_MACAQUE_RHESUS*COUGAR* -COUGAR_MAN* GIANT_COUGAR*WOLF*WOLF_MAN* -GIANT_WOLF* GROUNDHOG* GROUNDHOG_MAN*GIANT_GROUNDHOG* ALLIGATOR* ALLIGATOR_MAN*GIANT_ALLIGATOR* BIRD_BUZZARD* BUZZARD_MAN* GIANT_BUZZARD*PANDA*PANDA, GIGANTIC* PANDA MAN*CAPYBARA*CAPYBARA, GIANT* CAPYBARA MAN*BADGER* -BADGER MAN* BADGER, GIANT*MOOSE* MOOSE MAN* MOOSE, GIANT* RED PANDA* RED PANDA MAN*RED PANDA, GIANT*ELEPHANT* ELEPHANT_MAN*GIANT_ELEPHANT*WARTHOG* WARTHOG_MAN* GIANT_WARTHOG*LION*LION_MAN* -GIANT_LION*LEOPARD* LEOPARD_MAN* GIANT_LEOPARD*JAGUAR* -JAGUAR_MAN* GIANT_JAGUAR*TIGER* TIGER_MAN* GIANT_TIGER*CHEETAH* CHEETAH_MAN* GIANT_CHEETAH*GAZELLE* GAZELLE_MAN* GIANT_GAZELLE*MANDRILL* MANDRILL_MAN*GIANT_MANDRILL* -CHIMPANZEE*BONOBO*GORILLA* ORANGUTAN*GIBBON_SIAMANG*GIBBON_WHITE_HANDED*GIBBON_BLACK_HANDED* GIBBON_GRAY*GIBBON_SILVERY*GIBBON_PILEATED* GIBBON_BILOU*GIBBON_WHITE_BROWED*GIBBON_BLACK_CRESTED* CAMEL_1_HUMP*CAMEL_1_HUMP_MAN*GIANT_CAMEL_1_HUMP* CAMEL_2_HUMP*CAMEL_2_HUMP_MAN*GIANT_CAMEL_2_HUMP*CROCODILE_SALTWATER*CROCODILE_SALTWATER_MAN*GIANT_CROCODILE_SALTWATER* BIRD_VULTURE* VULTURE_MAN* GIANT_VULTURE* -RHINOCEROS*RHINOCEROS_MAN*GIANT_RHINOCEROS*GIRAFFE* GIRAFFE_MAN* GIANT_GIRAFFE* HONEY BADGER*HONEY BADGER MAN*HONEY BADGER, GIANT*GIANT TORTOISE*GIANT TORTOISE MAN*GIGANTIC TORTOISE* ARMADILLO* ARMADILLO MAN*ARMADILLO, GIANT*MUSKOX* -MUSKOX_MAN* GIANT_MUSKOX*ELK*ELK_MAN* GIANT_ELK* -BEAR_POLAR*BEAR_POLAR_MAN*GIANT_BEAR_POLAR* WOLVERINE* WOLVERINE_MAN*GIANT_WOLVERINE* -CHINCHILLA*CHINCHILLA_MAN*GIANT_CHINCHILLA* FLOATING_GUTS*DRUNIAN* CREEPING_EYE*VORACIOUS_CAVE_CRAWLER*BLIND_CAVE_OGRE* -CAP_HOPPER* -MAGMA_CRAB*CRUNDLE* HUNGRY_HEAD* -FLESH_BALL*ELK_BIRD* HELMET_SNAKE*GREEN_DEVOURER*RUTHERER*CREEPY_CRAWLER*DRALTHA*GIANT_EARTHWORM* BLOOD_MAN*BUGBAT*MANERA* -MOLEMARIAN*JABBERER* POND_GRABBER*BLIND_CAVE_BEAR* CAVE_DRAGON*REACHER*ELEMENTMAN_GABBRO*GORLAK* CAVE_FLOATER*PLUMP_HELMET_MAN* CAVE_BLOB*ELEMENTMAN_AMETHYST*OCTOPUS* OCTOPUS_MAN* GIANT_OCTOPUS*CRAB*CRAB_MAN* -GIANT_CRAB* LEOPARD_SEAL*LEOPARD_SEAL_MAN*GIANT_LEOPARD_SEAL* -CUTTLEFISH*CUTTLEFISH_MAN*GIANT_CUTTLEFISH*ORCA*ORCA_MAN* -GIANT_ORCA*SPONGE* -SPONGE_MAN* GIANT_SPONGE*HORSESHOE_CRAB*HORSESHOE_CRAB_MAN*GIANT_HORSESHOE_CRAB* SPERM_WHALE*SPERM_WHALE_MAN*GIANT_SPERM_WHALE* ELEPHANT_SEAL*ELEPHANT_SEAL_MAN*GIANT_ELEPHANT_SEAL* HARP_SEAL* HARP_SEAL_MAN*GIANT_HARP_SEAL*NAUTILUS* NAUTILUS_MAN*GIANT_NAUTILUS* FOXSQUIRREL* MOGHOPPER* RAT_DEMON*WAMBLER_FLUFFY*LIZARD_RHINO_TWO_LEGGED* WORM_KNUCKLE*SPIDER_PHANTOM* FLY_ACORN* -GNAT_BLOOD*LIZARD* -LIZARD_MAN* GIANT_LIZARD*SKINK* SKINK_MAN* GIANT_SKINK* CHAMELEON* CHAMELEON_MAN*GIANT_CHAMELEON*ANOLE* ANOLE_MAN* GIANT_ANOLE*IGUANA* -IGUANA_MAN* GIANT_IGUANA* RIVER OTTER* SEA OTTER* OTTER_MAN* GIANT_OTTER*SNAPPING TURTLE*ALLIGATOR SNAPPING TURTLE*SNAPPING_TURTLE_MAN*GIANT_SNAPPING_TURTLE*BEAVER* -BEAVER_MAN* GIANT_BEAVER*LEECH* LEECH_MAN* GIANT_LEECH*AXOLOTL* AXOLOTL_MAN* GIANT_AXOLOTL*MINK*MINK_MAN* -GIANT_MINK* POND_TURTLE*POND_TURTLE_MAN*GIANT_POND_TURTLE*RAT*RAT_MAN* SQUIRREL_GRAY*SQUIRREL_GRAY_MAN*GIANT_SQUIRREL_GRAY* SQUIRREL_RED*SQUIRREL_RED_MAN*GIANT_SQUIRREL_RED*CHIPMUNK* CHIPMUNK_MAN*GIANT_CHIPMUNK*HAMSTER* HAMSTER_MAN* GIANT_HAMSTER*HEDGEHOG* HEDGEHOG_MAN*GIANT_HEDGEHOG*SQUIRREL_FLYING*FLYING_SQUIRREL_MAN*GIANT_FLYING_SQUIRREL*MUSSEL*OYSTER* FISH_SALMON*FISH_CLOWNFISH* FISH_HAGFISH*FISH_LAMPREY_BROOK* FISH_RAY_BAT*FISH_RAY_THORNBACK*FISH_RATFISH_SPOTTED* FISH_HERRING* FISH_SHAD* FISH_ANCHOVY*FISH_TROUT_STEELHEAD* FISH_HAKE* FISH_SEAHORSE* FISH_GLASSEYE*FISH_PUFFER_WHITE_SPOTTED* FISH_SOLE* FISH_FLOUNDER* FISH_MACKEREL*JELLYFISH_SEA_NETTLE*SQUID* SQUID MAN*GIGANTIC SQUID* FISH_LUNGFISH*FISH_LOACH_CLOWN*FISH_BULLHEAD_BROWN*FISH_BULLHEAD_YELLOW*FISH_BULLHEAD_BLACK*FISH_KNIFEFISH_BANDED* FISH_CHAR*FISH_TROUT_RAINBOW*FISH_MOLLY_SAILFIN* -FISH_GUPPY* -FISH_PERCH*DWARF*HUMAN*ELF*GOBLIN*KOBOLD*GREMLIN*TROLL*OGRE*UNICORN*DRAGON*SATYR*COLOSSUS_BRONZE*GIANT*CYCLOPS*ETTIN*MINOTAUR*YETI* SASQUATCH* BLIZZARD_MAN*WOLF_ICE*FAIRY*PIXIE*BEAK_DOG* GRIMELING* BLENDEC_FOUL* STRANGLER* NIGHTWING*HARPY*HYDRA* MERPERSON* SEA_SERPENT* SEA_MONSTER*BIRD_ROC*CROCODILE_CAVE*TOAD_GIANT_CAVE* OLM_GIANT* BAT_GIANT* RAT_GIANT* RAT_LARGE*MOLE_DOG_NAKED* -TROGLODYTE* -MOLE_GIANT*IMP_FIRE*SPIDER_CAVE_GIANT* SPIDER_CAVE* FISH_CAVE* CAVE_FISH_MAN* LOBSTER_CAVE* -SNAKE_FIRE*OLM*OLM_MAN*BAT*BAT_MAN*MAGGOT_PURRING*ELEMENTMAN_FIRE*ELEMENTMAN_MAGMA*ELEMENTMAN_IRON*ELEMENTMAN_MUD*BIRD_SWALLOW_CAVE*CAVE_SWALLOW_MAN*BIRD_SWALLOW_CAVE_GIANT* AMPHIBIAN_MAN* REPTILE_MAN* SERPENT_MAN*ANT_MAN* -RODENT MAN* WILD_BOAR* WILD_BOAR_MAN*GIANT_WILD_BOAR*COYOTE* -COYOTE_MAN* GIANT_COYOTE*KANGAROO* KANGAROO_MAN*GIANT_KANGAROO*KOALA* KOALA_MAN* GIANT_KOALA*ADDER* ADDER_MAN* GIANT_ADDER*ECHIDNA* ECHIDNA_MAN* GIANT_ECHIDNA* PORCUPINE* PORCUPINE_MAN*GIANT_PORCUPINE* KINGSNAKE* KINGSNAKE_MAN*GIANT_KINGSNAKE* GRAY_LANGUR*GRAY_LANGUR_MAN*GIANT_GRAY_LANGUR*BOBCAT* -BOBCAT_MAN* GIANT_BOBCAT*SKUNK* SKUNK_MAN* GIANT_SKUNK*GREEN_TREE_FROG*GREEN_TREE_FROG_MAN*GIANT_GREEN_TREE_FROG*HARE*HARE_MAN* -GIANT_HARE* RATTLESNAKE*RATTLESNAKE_MAN*GIANT_RATTLESNAKE*WEASEL* -WEASEL_MAN* GIANT_WEASEL*COPPERHEAD_SNAKE*COPPERHEAD_SNAKE_MAN*GIANT_COPPERHEAD_SNAKE*IBEX*IBEX_MAN* -GIANT_IBEX*WOMBAT* -WOMBAT_MAN* GIANT_WOMBAT*DINGO* DINGO_MAN* GIANT_DINGO*COATI* COATI_MAN* GIANT_COATI*OPOSSUM* OPOSSUM_MAN* GIANT_OPOSSUM*MONGOOSE* MONGOOSE_MAN*GIANT_MONGOOSE*HYENA* HYENA_MAN* GIANT_HYENA*ANACONDA* ANACONDA_MAN*GIANT_ANACONDA*MONITOR_LIZARD*MONITOR_LIZARD_MAN*GIANT_MONITOR_LIZARD* -KING_COBRA*KING_COBRA_MAN*GIANT_KING_COBRA*OCELOT* -OCELOT_MAN* GIANT_OCELOT*JACKAL* -JACKAL_MAN* GIANT_JACKAL*CAPUCHIN* CAPUCHIN_MAN*GIANT_CAPUCHIN*SLOTH* SLOTH_MAN* GIANT_SLOTH* SPIDER_MONKEY*SPIDER_MONKEY_MAN*GIANT_SPIDER_MONKEY*PANGOLIN* PANGOLIN_MAN*GIANT_PANGOLIN* BLACK_MAMBA*BLACK_MAMBA_MAN*GIANT_BLACK_MAMBA* -BEAR_SLOTH*SLOTH_BEAR_MAN*GIANT_SLOTH_BEAR*AYE-AYE* AYE-AYE_MAN* GIANT_AYE-AYE* -BUSHMASTER*BUSHMASTER_MAN*GIANT_BUSHMASTER*PYTHON* -PYTHON_MAN* GIANT_PYTHON*TAPIR* TAPIR_MAN* GIANT_TAPIR*IMPALA* -IMPALA_MAN* GIANT_IMPALA*AARDVARK* AARDVARK_MAN*GIANT_AARDVARK* LION_TAMARIN*LION_TAMARIN_MAN*GIANT_LION_TAMARIN*STOAT* STOAT_MAN* GIANT_STOAT*LYNX*LYNX_MAN* -GIANT_LYNX2TOAD2TOAD_MAN2 -GIANT_TOAD2WORM2WORM_MAN2 BIRD_BLUEJAY2 BLUEJAY_MAN2 GIANT_BLUEJAY2 BIRD_CARDINAL2 CARDINAL_MAN2GIANT_CARDINAL2 BIRD_GRACKLE2 GRACKLE_MAN2 GIANT_GRACKLE2 BIRD_ORIOLE2 -ORIOLE_MAN2 GIANT_ORIOLE2BIRD_RW_BLACKBIRD2RW_BLACKBIRD_MAN2GIANT_RW_BLACKBIRD2 BIRD_PENGUIN2BIRD_PENGUIN_LITTLE2BIRD_PENGUIN_EMPEROR2 PENGUIN MAN2BIRD_PENGUIN_GIANT2BIRD_FALCON_PEREGRINE2PEREGRINE FALCON MAN2GIANT PEREGRINE FALCON2 BIRD_KIWI2KIWI MAN2BIRD_KIWI_GIANT2 BIRD_OSTRICH2 OSTRICH MAN2BIRD_OSTRICH_GIANT2 BIRD_CROW2CROW_MAN2 -GIANT_CROW2 -BIRD_RAVEN2 RAVEN_MAN2 GIANT_RAVEN2BIRD_CASSOWARY2 CASSOWARY_MAN2GIANT_CASSOWARY2BIRD_KEA2KEA_MAN2 GIANT_KEA2BIRD_OWL_SNOWY2 SNOWY_OWL_MAN2GIANT_SNOWY_OWL2SPARROW2 SPARROW_MAN2 GIANT_SPARROW2BIRD_STORK_WHITE2WHITE_STORK_MAN2GIANT_WHITE_STORK2 BIRD_LOON2LOON_MAN2 -GIANT_LOON2 BIRD_OWL_BARN2 BARN_OWL_MAN2GIANT_BARN_OWL2 BIRD_PARAKEET2 PARAKEET_MAN2GIANT_PARAKEET2 BIRD_KAKAPO2 -KAKAPO_MAN2 GIANT_KAKAPO2BIRD_PARROT_GREY2GREY_PARROT_MAN2GIANT_GREY_PARROT2 BIRD_PUFFIN2 -PUFFIN_MAN2 GIANT_PUFFIN2 BIRD_SWAN2SWAN_MAN2 -GIANT_SWAN2 BIRD_LORIKEET2 LORIKEET_MAN2GIANT_LORIKEET2 BIRD_WREN2WREN_MAN2 -GIANT_WREN2 BIRD_OSPREY2 -OSPREY_MAN2 GIANT_OSPREY2BIRD_EMU2EMU_MAN2 GIANT_EMU2BIRD_COCKATIEL2 COCKATIEL_MAN2GIANT_COCKATIEL2BIRD_LOVEBIRD_PEACH-FACED2PEACH-FACED_LOVEBIRD_MAN2GIANT_PEACH-FACED_LOVEBIRD2 BIRD_MAGPIE2 -MAGPIE_MAN2 GIANT_MAGPIE2 BIRD_KESTREL2 KESTREL_MAN2 GIANT_KESTREL2BIRD_ALBATROSS2 ALBATROSS_MAN2GIANT_ALBATROSS2BIRD_OWL_GREAT_HORNED2GREAT_HORNED_OWL_MAN2GIANT_GREAT_HORNED_OWL2 -BIRD_EAGLE2 EAGLE_MAN2 GIANT_EAGLE2 BIRD_HORNBILL2 HORNBILL_MAN2GIANT_HORNBILL2BIRD_LOVEBIRD_MASKED2MASKED_LOVEBIRD_MAN2GIANT_MASKED_LOVEBIRD2 BIRD_BUSHTIT2 BUSHTIT_MAN2 GIANT_BUSHTIT2 DAMSELFLY2 DAMSELFLY_MAN2GIANT_DAMSELFLY2MOTH2MOTH_MAN2 -GIANT_MOTH2 GRASSHOPPER2GRASSHOPPER_MAN2GIANT_GRASSHOPPER2 BARK_SCORPION2BARK_SCORPION_MAN2GIANT_BARK_SCORPION2MANTIS2 -MANTIS_MAN2 GIANT_MANTIS2TICK2TICK_MAN2 -GIANT_TICK2LOUSE2 LOUSE_MAN2 GIANT_LOUSE2THRIPS2 -THRIPS_MAN2 GIANT_THRIPS2SLUG2SLUG_MAN2 -GIANT_SLUG2MOSQUITO2 MOSQUITO_MAN2GIANT_MOSQUITO2SPIDER_JUMPING2JUMPING_SPIDER_MAN2GIANT_JUMPING_SPIDER2TERMITE2 -MOON_SNAIL2MOON_SNAIL_MAN2GIANT_MOON_SNAIL2SPIDER_BROWN_RECLUSE2BROWN_RECLUSE_SPIDER_MAN2GIANT_BROWN_RECLUSE_SPIDER2SNAIL2 SNAIL_MAN2 GIANT_SNAIL2 GECKO_LEOPARD2LEOPARD_GECKO_MAN2GIANT_LEOPARD_GECKO2DESERT TORTOISE2DESERT_TORTOISE_MAN2GIANT_DESERT_TORTOISE2 GILA_MONSTER2GILA_MONSTER_MAN2GIANT_GILA_MONSTER2DOG2CAT2MULE2DONKEY2HORSE2COW2SHEEP2PIG2GOAT2 BIRD_CHICKEN2CAVY2 BIRD_DUCK2 WATER_BUFFALO2REINDEER2 -BIRD_GOOSE2YAK2LLAMA2ALPACA2BIRD_GUINEAFOWL2BIRD_PEAFOWL_BLUE2 BIRD_TURKEY2RABBIT2CHIMERA2CENTAUR2GRIFFON2FLY2FLY_MAN2 GIANT_FLY2 ROACH_LARGE2 ROACH_MAN2 GIANT_ROACH2BEETLE2 -BEETLE_MAN2 GIANT_BEETLE2ANT2BUTTERFLY_MONARCH2BUTTERFLY_MONARCH_MAN2GIANT_BUTTERFLY_MONARCH2FIREFLY2 FIREFLY_MAN2 GIANT_FIREFLY2 DRAGONFLY2 DRAGONFLY_MAN2GIANT_DRAGONFLY2 HONEY_BEE2 BUMBLEBEE2 GOAT_MOUNTAIN2GOAT_MOUNTAIN_MAN2GIANT_GOAT_MOUNTAIN2 MARMOT_HOARY2MARMOT_HOARY_MAN2GIANT_MARMOT_HOARY2GNOME_MOUNTAIN2 -GNOME_DARK2WALRUS2 -WALRUS_MAN2 GIANT_WALRUS2FISH_LAMPREY_SEA2SHARK_GREAT_WHITE2 SHARK_FRILL2SHARK_SPINY_DOGFISH2SHARK_WOBBEGONG_SPOTTED2 SHARK_WHALE2 SHARK_BASKING2 SHARK_NURSE2SHARK_MAKO_SHORTFIN2SHARK_MAKO_LONGFIN2 SHARK_TIGER2 -SHARK_BULL2SHARK_REEF_BLACKTIP2SHARK_REEF_WHITETIP2 -SHARK_BLUE2SHARK_HAMMERHEAD2 SHARK_ANGEL2FISH_SKATE_COMMON2FISH_RAY_MANTA2 FISH_STINGRAY2FISH_COELACANTH2 FISH_STURGEON2FISH_CONGER_EEL2 FISH_MILKFISH2FISH_COD2 FISH_OPAH2FISH_GROUPER_GIANT2 FISH_BLUEFISH2FISH_SUNFISH_OCEAN2FISH_SWORDFISH2 FISH_MARLIN2 FISH_HALIBUT2FISH_BARRACUDA_GREAT2FISH_TUNA_BLUEFIN2NARWHAL2 NARWHAL MAN2NARWHAL, GIANT2HIPPO2 HIPPO_MAN2 GIANT_HIPPO2FISH_GAR_LONGNOSE2 FISH_CARP2FISH_TIGERFISH2 FISH_PIKE2PLATYPUS2 PLATYPUS MAN2PLATYPUS, GIANT2 BEAR_GRIZZLY2BEAR_GRIZZLY_MAN2GIANT_BEAR_GRIZZLY2 -BEAR_BLACK2BEAR_BLACK_MAN2GIANT_BEAR_BLACK2DEER2DEER_MAN2 -GIANT_DEER2FOX2FOX_MAN2 GIANT_FOX2RACCOON2 RACCOON_MAN2 GIANT_RACCOON2MACAQUE_RHESUS2MACAQUE_RHESUS_MAN2GIANT_MACAQUE_RHESUS2COUGAR2 -COUGAR_MAN2 GIANT_COUGAR2WOLF2WOLF_MAN2 -GIANT_WOLF2 GROUNDHOG2 GROUNDHOG_MAN2GIANT_GROUNDHOG2 ALLIGATOR2 ALLIGATOR_MAN2GIANT_ALLIGATOR2 BIRD_BUZZARD2 BUZZARD_MAN2 GIANT_BUZZARD2PANDA2PANDA, GIGANTIC2 PANDA MAN2CAPYBARA2CAPYBARA, GIANT2 CAPYBARA MAN2BADGER2 -BADGER MAN2 BADGER, GIANT2MOOSE2 MOOSE MAN2 MOOSE, GIANT2 RED PANDA2 RED PANDA MAN2RED PANDA, GIANT2ELEPHANT2 ELEPHANT_MAN2GIANT_ELEPHANT2WARTHOG2 WARTHOG_MAN2 GIANT_WARTHOG2LION2LION_MAN2 -GIANT_LION2LEOPARD2 LEOPARD_MAN2 GIANT_LEOPARD2JAGUAR2 -JAGUAR_MAN2 GIANT_JAGUAR2TIGER2 TIGER_MAN2 GIANT_TIGER2CHEETAH2 CHEETAH_MAN2 GIANT_CHEETAH2GAZELLE2 GAZELLE_MAN2 GIANT_GAZELLE2MANDRILL2 MANDRILL_MAN2GIANT_MANDRILL2 -CHIMPANZEE2BONOBO2GORILLA2 ORANGUTAN2GIBBON_SIAMANG2GIBBON_WHITE_HANDED2GIBBON_BLACK_HANDED2 GIBBON_GRAY2GIBBON_SILVERY2GIBBON_PILEATED2 GIBBON_BILOU2GIBBON_WHITE_BROWED2GIBBON_BLACK_CRESTED2 CAMEL_1_HUMP2CAMEL_1_HUMP_MAN2GIANT_CAMEL_1_HUMP2 CAMEL_2_HUMP2CAMEL_2_HUMP_MAN2GIANT_CAMEL_2_HUMP2CROCODILE_SALTWATER2CROCODILE_SALTWATER_MAN2GIANT_CROCODILE_SALTWATER2 BIRD_VULTURE2 VULTURE_MAN2 GIANT_VULTURE2 -RHINOCEROS2RHINOCEROS_MAN2GIANT_RHINOCEROS2GIRAFFE2 GIRAFFE_MAN2 GIANT_GIRAFFE2 HONEY BADGER2HONEY BADGER MAN2HONEY BADGER, GIANT2GIANT TORTOISE2GIANT TORTOISE MAN2GIGANTIC TORTOISE2 ARMADILLO2 ARMADILLO MAN2ARMADILLO, GIANT2MUSKOX2 -MUSKOX_MAN2 GIANT_MUSKOX2ELK2ELK_MAN2 GIANT_ELK2 -BEAR_POLAR2BEAR_POLAR_MAN2GIANT_BEAR_POLAR2 WOLVERINE2 WOLVERINE_MAN2GIANT_WOLVERINE2 -CHINCHILLA2CHINCHILLA_MAN2GIANT_CHINCHILLA2 FLOATING_GUTS2DRUNIAN2 CREEPING_EYE2VORACIOUS_CAVE_CRAWLER2BLIND_CAVE_OGRE2 -CAP_HOPPER2 -MAGMA_CRAB2CRUNDLE2 HUNGRY_HEAD2 -FLESH_BALL2ELK_BIRD2 HELMET_SNAKE2GREEN_DEVOURER2RUTHERER2CREEPY_CRAWLER2DRALTHA2GIANT_EARTHWORM2 BLOOD_MAN2BUGBAT2MANERA2 -MOLEMARIAN2JABBERER2 POND_GRABBER2BLIND_CAVE_BEAR2 CAVE_DRAGON2REACHER2ELEMENTMAN_GABBRO2GORLAK2 CAVE_FLOATER2PLUMP_HELMET_MAN2 CAVE_BLOB2ELEMENTMAN_AMETHYST2OCTOPUS2 OCTOPUS_MAN2 GIANT_OCTOPUS2CRAB2CRAB_MAN2 -GIANT_CRAB2 LEOPARD_SEAL2LEOPARD_SEAL_MAN2GIANT_LEOPARD_SEAL2 -CUTTLEFISH2CUTTLEFISH_MAN2GIANT_CUTTLEFISH2ORCA2ORCA_MAN2 -GIANT_ORCA2SPONGE2 -SPONGE_MAN2 GIANT_SPONGE2HORSESHOE_CRAB2HORSESHOE_CRAB_MAN2GIANT_HORSESHOE_CRAB2 SPERM_WHALE2SPERM_WHALE_MAN2GIANT_SPERM_WHALE2 ELEPHANT_SEAL2ELEPHANT_SEAL_MAN2GIANT_ELEPHANT_SEAL2 HARP_SEAL2 HARP_SEAL_MAN2GIANT_HARP_SEAL2NAUTILUS2 NAUTILUS_MAN2GIANT_NAUTILUS2 FOXSQUIRREL2 MOGHOPPER2 RAT_DEMON2WAMBLER_FLUFFY2LIZARD_RHINO_TWO_LEGGED2 WORM_KNUCKLE2SPIDER_PHANTOM2 FLY_ACORN2 -GNAT_BLOOD2LIZARD2 -LIZARD_MAN2 GIANT_LIZARD2SKINK2 SKINK_MAN2 GIANT_SKINK2 CHAMELEON2 CHAMELEON_MAN2GIANT_CHAMELEON2ANOLE2 ANOLE_MAN2 GIANT_ANOLE2IGUANA2 -IGUANA_MAN2 GIANT_IGUANA2 RIVER OTTER2 SEA OTTER2 OTTER_MAN2 GIANT_OTTER2SNAPPING TURTLE2ALLIGATOR SNAPPING TURTLE2SNAPPING_TURTLE_MAN2GIANT_SNAPPING_TURTLE2BEAVER2 -BEAVER_MAN2 GIANT_BEAVER2LEECH2 LEECH_MAN2 GIANT_LEECH2AXOLOTL2 AXOLOTL_MAN2 GIANT_AXOLOTL2MINK2MINK_MAN2 -GIANT_MINK2 POND_TURTLE2POND_TURTLE_MAN2GIANT_POND_TURTLE2RAT2RAT_MAN2 SQUIRREL_GRAY2SQUIRREL_GRAY_MAN2GIANT_SQUIRREL_GRAY2 SQUIRREL_RED2SQUIRREL_RED_MAN2GIANT_SQUIRREL_RED2CHIPMUNK2 CHIPMUNK_MAN2GIANT_CHIPMUNK2HAMSTER2 HAMSTER_MAN2 GIANT_HAMSTER2HEDGEHOG2 HEDGEHOG_MAN2GIANT_HEDGEHOG2SQUIRREL_FLYING2FLYING_SQUIRREL_MAN2GIANT_FLYING_SQUIRREL2MUSSEL2OYSTER2 FISH_SALMON2FISH_CLOWNFISH2 FISH_HAGFISH2FISH_LAMPREY_BROOK2 FISH_RAY_BAT2FISH_RAY_THORNBACK2FISH_RATFISH_SPOTTED2 FISH_HERRING2 FISH_SHAD2 FISH_ANCHOVY2FISH_TROUT_STEELHEAD2 FISH_HAKE2 FISH_SEAHORSE2 FISH_GLASSEYE2FISH_PUFFER_WHITE_SPOTTED2 FISH_SOLE2 FISH_FLOUNDER2 FISH_MACKEREL2JELLYFISH_SEA_NETTLE2SQUID2 SQUID MAN2GIGANTIC SQUID2 FISH_LUNGFISH2FISH_LOACH_CLOWN2FISH_BULLHEAD_BROWN2FISH_BULLHEAD_YELLOW2FISH_BULLHEAD_BLACK2FISH_KNIFEFISH_BANDED2 FISH_CHAR2FISH_TROUT_RAINBOW2FISH_MOLLY_SAILFIN2 -FISH_GUPPY2 -FISH_PERCH2DWARF2HUMAN2ELF2GOBLIN2KOBOLD2GREMLIN2TROLL2OGRE2UNICORN2DRAGON2SATYR2COLOSSUS_BRONZE2GIANT2CYCLOPS2ETTIN2MINOTAUR2YETI2 SASQUATCH2 BLIZZARD_MAN2WOLF_ICE2FAIRY2PIXIE2BEAK_DOG2 GRIMELING2 BLENDEC_FOUL2 STRANGLER2 NIGHTWING2HARPY2HYDRA2 MERPERSON2 SEA_SERPENT2 SEA_MONSTER2BIRD_ROC2CROCODILE_CAVE2TOAD_GIANT_CAVE2 OLM_GIANT2 BAT_GIANT2 RAT_GIANT2 RAT_LARGE2MOLE_DOG_NAKED2 -TROGLODYTE2 -MOLE_GIANT2IMP_FIRE2SPIDER_CAVE_GIANT2 SPIDER_CAVE2 FISH_CAVE2 CAVE_FISH_MAN2 LOBSTER_CAVE2 -SNAKE_FIRE2OLM2OLM_MAN2BAT2BAT_MAN2MAGGOT_PURRING2ELEMENTMAN_FIRE2ELEMENTMAN_MAGMA2ELEMENTMAN_IRON2ELEMENTMAN_MUD2BIRD_SWALLOW_CAVE2CAVE_SWALLOW_MAN2BIRD_SWALLOW_CAVE_GIANT2 AMPHIBIAN_MAN2 REPTILE_MAN2 SERPENT_MAN2ANT_MAN2 -RODENT MAN2 WILD_BOAR2 WILD_BOAR_MAN2GIANT_WILD_BOAR2COYOTE2 -COYOTE_MAN2 GIANT_COYOTE2KANGAROO2 KANGAROO_MAN2GIANT_KANGAROO2KOALA2 KOALA_MAN2 GIANT_KOALA2ADDER2 ADDER_MAN2 GIANT_ADDER2ECHIDNA2 ECHIDNA_MAN2 GIANT_ECHIDNA2 PORCUPINE2 PORCUPINE_MAN2GIANT_PORCUPINE2 KINGSNAKE2 KINGSNAKE_MAN2GIANT_KINGSNAKE2 GRAY_LANGUR2GRAY_LANGUR_MAN2GIANT_GRAY_LANGUR2BOBCAT2 -BOBCAT_MAN2 GIANT_BOBCAT2SKUNK2 SKUNK_MAN2 GIANT_SKUNK2GREEN_TREE_FROG2GREEN_TREE_FROG_MAN2GIANT_GREEN_TREE_FROG2HARE2HARE_MAN2 -GIANT_HARE2 RATTLESNAKE2RATTLESNAKE_MAN2GIANT_RATTLESNAKE2WEASEL2 -WEASEL_MAN2 GIANT_WEASEL2COPPERHEAD_SNAKE2COPPERHEAD_SNAKE_MAN2GIANT_COPPERHEAD_SNAKE2IBEX2IBEX_MAN2 -GIANT_IBEX2WOMBAT2 -WOMBAT_MAN2 GIANT_WOMBAT2DINGO2 DINGO_MAN2 GIANT_DINGO2COATI2 COATI_MAN2 GIANT_COATI2OPOSSUM2 OPOSSUM_MAN2 GIANT_OPOSSUM2MONGOOSE2 MONGOOSE_MAN2GIANT_MONGOOSE2HYENA2 HYENA_MAN2 GIANT_HYENA2ANACONDA2 ANACONDA_MAN2GIANT_ANACONDA2MONITOR_LIZARD2MONITOR_LIZARD_MAN2GIANT_MONITOR_LIZARD2 -KING_COBRA2KING_COBRA_MAN2GIANT_KING_COBRA2OCELOT2 -OCELOT_MAN2 GIANT_OCELOT2JACKAL2 -JACKAL_MAN2 GIANT_JACKAL2CAPUCHIN2 CAPUCHIN_MAN2GIANT_CAPUCHIN2SLOTH2 SLOTH_MAN2 GIANT_SLOTH2 SPIDER_MONKEY2SPIDER_MONKEY_MAN2GIANT_SPIDER_MONKEY2PANGOLIN2 PANGOLIN_MAN2GIANT_PANGOLIN2 BLACK_MAMBA2BLACK_MAMBA_MAN2GIANT_BLACK_MAMBA2 -BEAR_SLOTH2SLOTH_BEAR_MAN2GIANT_SLOTH_BEAR2AYE-AYE2 AYE-AYE_MAN2 GIANT_AYE-AYE2 -BUSHMASTER2BUSHMASTER_MAN2GIANT_BUSHMASTER2PYTHON2 -PYTHON_MAN2 GIANT_PYTHON2TAPIR2 TAPIR_MAN2 GIANT_TAPIR2IMPALA2 -IMPALA_MAN2 GIANT_IMPALA2AARDVARK2 AARDVARK_MAN2GIANT_AARDVARK2 LION_TAMARIN2LION_TAMARIN_MAN2GIANT_LION_TAMARIN2STOAT2 STOAT_MAN2 GIANT_STOAT2LYNX2LYNX_MAN2 -GIANT_LYNX:TOAD:TOAD_MAN: -GIANT_TOAD:WORM:WORM_MAN: BIRD_BLUEJAY: BLUEJAY_MAN: GIANT_BLUEJAY: BIRD_CARDINAL: CARDINAL_MAN:GIANT_CARDINAL: BIRD_GRACKLE: GRACKLE_MAN: GIANT_GRACKLE: BIRD_ORIOLE: -ORIOLE_MAN: GIANT_ORIOLE:BIRD_RW_BLACKBIRD:RW_BLACKBIRD_MAN:GIANT_RW_BLACKBIRD: BIRD_PENGUIN:BIRD_PENGUIN_LITTLE:BIRD_PENGUIN_EMPEROR: PENGUIN MAN:BIRD_PENGUIN_GIANT:BIRD_FALCON_PEREGRINE:PEREGRINE FALCON MAN:GIANT PEREGRINE FALCON: BIRD_KIWI:KIWI MAN:BIRD_KIWI_GIANT: BIRD_OSTRICH: OSTRICH MAN:BIRD_OSTRICH_GIANT: BIRD_CROW:CROW_MAN: -GIANT_CROW: -BIRD_RAVEN: RAVEN_MAN: GIANT_RAVEN:BIRD_CASSOWARY: CASSOWARY_MAN:GIANT_CASSOWARY:BIRD_KEA:KEA_MAN: GIANT_KEA:BIRD_OWL_SNOWY: SNOWY_OWL_MAN:GIANT_SNOWY_OWL:SPARROW: SPARROW_MAN: GIANT_SPARROW:BIRD_STORK_WHITE:WHITE_STORK_MAN:GIANT_WHITE_STORK: BIRD_LOON:LOON_MAN: -GIANT_LOON: BIRD_OWL_BARN: BARN_OWL_MAN:GIANT_BARN_OWL: BIRD_PARAKEET: PARAKEET_MAN:GIANT_PARAKEET: BIRD_KAKAPO: -KAKAPO_MAN: GIANT_KAKAPO:BIRD_PARROT_GREY:GREY_PARROT_MAN:GIANT_GREY_PARROT: BIRD_PUFFIN: -PUFFIN_MAN: GIANT_PUFFIN: BIRD_SWAN:SWAN_MAN: -GIANT_SWAN: BIRD_LORIKEET: LORIKEET_MAN:GIANT_LORIKEET: BIRD_WREN:WREN_MAN: -GIANT_WREN: BIRD_OSPREY: -OSPREY_MAN: GIANT_OSPREY:BIRD_EMU:EMU_MAN: GIANT_EMU:BIRD_COCKATIEL: COCKATIEL_MAN:GIANT_COCKATIEL:BIRD_LOVEBIRD_PEACH-FACED:PEACH-FACED_LOVEBIRD_MAN:GIANT_PEACH-FACED_LOVEBIRD: BIRD_MAGPIE: -MAGPIE_MAN: GIANT_MAGPIE: BIRD_KESTREL: KESTREL_MAN: GIANT_KESTREL:BIRD_ALBATROSS: ALBATROSS_MAN:GIANT_ALBATROSS:BIRD_OWL_GREAT_HORNED:GREAT_HORNED_OWL_MAN:GIANT_GREAT_HORNED_OWL: -BIRD_EAGLE: EAGLE_MAN: GIANT_EAGLE: BIRD_HORNBILL: HORNBILL_MAN:GIANT_HORNBILL:BIRD_LOVEBIRD_MASKED:MASKED_LOVEBIRD_MAN:GIANT_MASKED_LOVEBIRD: BIRD_BUSHTIT: BUSHTIT_MAN: GIANT_BUSHTIT: DAMSELFLY: DAMSELFLY_MAN:GIANT_DAMSELFLY:MOTH:MOTH_MAN: -GIANT_MOTH: GRASSHOPPER:GRASSHOPPER_MAN:GIANT_GRASSHOPPER: BARK_SCORPION:BARK_SCORPION_MAN:GIANT_BARK_SCORPION:MANTIS: -MANTIS_MAN: GIANT_MANTIS:TICK:TICK_MAN: -GIANT_TICK:LOUSE: LOUSE_MAN: GIANT_LOUSE:THRIPS: -THRIPS_MAN: GIANT_THRIPS:SLUG:SLUG_MAN: -GIANT_SLUG:MOSQUITO: MOSQUITO_MAN:GIANT_MOSQUITO:SPIDER_JUMPING:JUMPING_SPIDER_MAN:GIANT_JUMPING_SPIDER:TERMITE: -MOON_SNAIL:MOON_SNAIL_MAN:GIANT_MOON_SNAIL:SPIDER_BROWN_RECLUSE:BROWN_RECLUSE_SPIDER_MAN:GIANT_BROWN_RECLUSE_SPIDER:SNAIL: SNAIL_MAN: GIANT_SNAIL: GECKO_LEOPARD:LEOPARD_GECKO_MAN:GIANT_LEOPARD_GECKO:DESERT TORTOISE:DESERT_TORTOISE_MAN:GIANT_DESERT_TORTOISE: GILA_MONSTER:GILA_MONSTER_MAN:GIANT_GILA_MONSTER:DOG:CAT:MULE:DONKEY:HORSE:COW:SHEEP:PIG:GOAT: BIRD_CHICKEN:CAVY: BIRD_DUCK: WATER_BUFFALO:REINDEER: -BIRD_GOOSE:YAK:LLAMA:ALPACA:BIRD_GUINEAFOWL:BIRD_PEAFOWL_BLUE: BIRD_TURKEY:RABBIT:CHIMERA:CENTAUR:GRIFFON:FLY:FLY_MAN: GIANT_FLY: ROACH_LARGE: ROACH_MAN: GIANT_ROACH:BEETLE: -BEETLE_MAN: GIANT_BEETLE:ANT:BUTTERFLY_MONARCH:BUTTERFLY_MONARCH_MAN:GIANT_BUTTERFLY_MONARCH:FIREFLY: FIREFLY_MAN: GIANT_FIREFLY: DRAGONFLY: DRAGONFLY_MAN:GIANT_DRAGONFLY: HONEY_BEE: BUMBLEBEE: GOAT_MOUNTAIN:GOAT_MOUNTAIN_MAN:GIANT_GOAT_MOUNTAIN: MARMOT_HOARY:MARMOT_HOARY_MAN:GIANT_MARMOT_HOARY:GNOME_MOUNTAIN: -GNOME_DARK:WALRUS: -WALRUS_MAN: GIANT_WALRUS:FISH_LAMPREY_SEA:SHARK_GREAT_WHITE: SHARK_FRILL:SHARK_SPINY_DOGFISH:SHARK_WOBBEGONG_SPOTTED: SHARK_WHALE: SHARK_BASKING: SHARK_NURSE:SHARK_MAKO_SHORTFIN:SHARK_MAKO_LONGFIN: SHARK_TIGER: -SHARK_BULL:SHARK_REEF_BLACKTIP:SHARK_REEF_WHITETIP: -SHARK_BLUE:SHARK_HAMMERHEAD: SHARK_ANGEL:FISH_SKATE_COMMON:FISH_RAY_MANTA: FISH_STINGRAY:FISH_COELACANTH: FISH_STURGEON:FISH_CONGER_EEL: FISH_MILKFISH:FISH_COD: FISH_OPAH:FISH_GROUPER_GIANT: FISH_BLUEFISH:FISH_SUNFISH_OCEAN:FISH_SWORDFISH: FISH_MARLIN: FISH_HALIBUT:FISH_BARRACUDA_GREAT:FISH_TUNA_BLUEFIN:NARWHAL: NARWHAL MAN:NARWHAL, GIANT:HIPPO: HIPPO_MAN: GIANT_HIPPO:FISH_GAR_LONGNOSE: FISH_CARP:FISH_TIGERFISH: FISH_PIKE:PLATYPUS: PLATYPUS MAN:PLATYPUS, GIANT: BEAR_GRIZZLY:BEAR_GRIZZLY_MAN:GIANT_BEAR_GRIZZLY: -BEAR_BLACK:BEAR_BLACK_MAN:GIANT_BEAR_BLACK:DEER:DEER_MAN: -GIANT_DEER:FOX:FOX_MAN: GIANT_FOX:RACCOON: RACCOON_MAN: GIANT_RACCOON:MACAQUE_RHESUS:MACAQUE_RHESUS_MAN:GIANT_MACAQUE_RHESUS:COUGAR: -COUGAR_MAN: GIANT_COUGAR:WOLF:WOLF_MAN: -GIANT_WOLF: GROUNDHOG: GROUNDHOG_MAN:GIANT_GROUNDHOG: ALLIGATOR: ALLIGATOR_MAN:GIANT_ALLIGATOR: BIRD_BUZZARD: BUZZARD_MAN: GIANT_BUZZARD:PANDA:PANDA, GIGANTIC: PANDA MAN:CAPYBARA:CAPYBARA, GIANT: CAPYBARA MAN:BADGER: -BADGER MAN: BADGER, GIANT:MOOSE: MOOSE MAN: MOOSE, GIANT: RED PANDA: RED PANDA MAN:RED PANDA, GIANT:ELEPHANT: ELEPHANT_MAN:GIANT_ELEPHANT:WARTHOG: WARTHOG_MAN: GIANT_WARTHOG:LION:LION_MAN: -GIANT_LION:LEOPARD: LEOPARD_MAN: GIANT_LEOPARD:JAGUAR: -JAGUAR_MAN: GIANT_JAGUAR:TIGER: TIGER_MAN: GIANT_TIGER:CHEETAH: CHEETAH_MAN: GIANT_CHEETAH:GAZELLE: GAZELLE_MAN: GIANT_GAZELLE:MANDRILL: MANDRILL_MAN:GIANT_MANDRILL: -CHIMPANZEE:BONOBO:GORILLA: ORANGUTAN:GIBBON_SIAMANG:GIBBON_WHITE_HANDED:GIBBON_BLACK_HANDED: GIBBON_GRAY:GIBBON_SILVERY:GIBBON_PILEATED: GIBBON_BILOU:GIBBON_WHITE_BROWED:GIBBON_BLACK_CRESTED: CAMEL_1_HUMP:CAMEL_1_HUMP_MAN:GIANT_CAMEL_1_HUMP: CAMEL_2_HUMP:CAMEL_2_HUMP_MAN:GIANT_CAMEL_2_HUMP:CROCODILE_SALTWATER:CROCODILE_SALTWATER_MAN:GIANT_CROCODILE_SALTWATER: BIRD_VULTURE: VULTURE_MAN: GIANT_VULTURE: -RHINOCEROS:RHINOCEROS_MAN:GIANT_RHINOCEROS:GIRAFFE: GIRAFFE_MAN: GIANT_GIRAFFE: HONEY BADGER:HONEY BADGER MAN:HONEY BADGER, GIANT:GIANT TORTOISE:GIANT TORTOISE MAN:GIGANTIC TORTOISE: ARMADILLO: ARMADILLO MAN:ARMADILLO, GIANT:MUSKOX: -MUSKOX_MAN: GIANT_MUSKOX:ELK:ELK_MAN: GIANT_ELK: -BEAR_POLAR:BEAR_POLAR_MAN:GIANT_BEAR_POLAR: WOLVERINE: WOLVERINE_MAN:GIANT_WOLVERINE: -CHINCHILLA:CHINCHILLA_MAN:GIANT_CHINCHILLA: FLOATING_GUTS:DRUNIAN: CREEPING_EYE:VORACIOUS_CAVE_CRAWLER:BLIND_CAVE_OGRE: -CAP_HOPPER: -MAGMA_CRAB:CRUNDLE: HUNGRY_HEAD: -FLESH_BALL:ELK_BIRD: HELMET_SNAKE:GREEN_DEVOURER:RUTHERER:CREEPY_CRAWLER:DRALTHA:GIANT_EARTHWORM: BLOOD_MAN:BUGBAT:MANERA: -MOLEMARIAN:JABBERER: POND_GRABBER:BLIND_CAVE_BEAR: CAVE_DRAGON:REACHER:ELEMENTMAN_GABBRO:GORLAK: CAVE_FLOATER:PLUMP_HELMET_MAN: CAVE_BLOB:ELEMENTMAN_AMETHYST:OCTOPUS: OCTOPUS_MAN: GIANT_OCTOPUS:CRAB:CRAB_MAN: -GIANT_CRAB: LEOPARD_SEAL:LEOPARD_SEAL_MAN:GIANT_LEOPARD_SEAL: -CUTTLEFISH:CUTTLEFISH_MAN:GIANT_CUTTLEFISH:ORCA:ORCA_MAN: -GIANT_ORCA:SPONGE: -SPONGE_MAN: GIANT_SPONGE:HORSESHOE_CRAB:HORSESHOE_CRAB_MAN:GIANT_HORSESHOE_CRAB: SPERM_WHALE:SPERM_WHALE_MAN:GIANT_SPERM_WHALE: ELEPHANT_SEAL:ELEPHANT_SEAL_MAN:GIANT_ELEPHANT_SEAL: HARP_SEAL: HARP_SEAL_MAN:GIANT_HARP_SEAL:NAUTILUS: NAUTILUS_MAN:GIANT_NAUTILUS: FOXSQUIRREL: MOGHOPPER: RAT_DEMON:WAMBLER_FLUFFY:LIZARD_RHINO_TWO_LEGGED: WORM_KNUCKLE:SPIDER_PHANTOM: FLY_ACORN: -GNAT_BLOOD:LIZARD: -LIZARD_MAN: GIANT_LIZARD:SKINK: SKINK_MAN: GIANT_SKINK: CHAMELEON: CHAMELEON_MAN:GIANT_CHAMELEON:ANOLE: ANOLE_MAN: GIANT_ANOLE:IGUANA: -IGUANA_MAN: GIANT_IGUANA: RIVER OTTER: SEA OTTER: OTTER_MAN: GIANT_OTTER:SNAPPING TURTLE:ALLIGATOR SNAPPING TURTLE:SNAPPING_TURTLE_MAN:GIANT_SNAPPING_TURTLE:BEAVER: -BEAVER_MAN: GIANT_BEAVER:LEECH: LEECH_MAN: GIANT_LEECH:AXOLOTL: AXOLOTL_MAN: GIANT_AXOLOTL:MINK:MINK_MAN: -GIANT_MINK: POND_TURTLE:POND_TURTLE_MAN:GIANT_POND_TURTLE:RAT:RAT_MAN: SQUIRREL_GRAY:SQUIRREL_GRAY_MAN:GIANT_SQUIRREL_GRAY: SQUIRREL_RED:SQUIRREL_RED_MAN:GIANT_SQUIRREL_RED:CHIPMUNK: CHIPMUNK_MAN:GIANT_CHIPMUNK:HAMSTER: HAMSTER_MAN: GIANT_HAMSTER:HEDGEHOG: HEDGEHOG_MAN:GIANT_HEDGEHOG:SQUIRREL_FLYING:FLYING_SQUIRREL_MAN:GIANT_FLYING_SQUIRREL:MUSSEL:OYSTER: FISH_SALMON:FISH_CLOWNFISH: FISH_HAGFISH:FISH_LAMPREY_BROOK: FISH_RAY_BAT:FISH_RAY_THORNBACK:FISH_RATFISH_SPOTTED: FISH_HERRING: FISH_SHAD: FISH_ANCHOVY:FISH_TROUT_STEELHEAD: FISH_HAKE: FISH_SEAHORSE: FISH_GLASSEYE:FISH_PUFFER_WHITE_SPOTTED: FISH_SOLE: FISH_FLOUNDER: FISH_MACKEREL:JELLYFISH_SEA_NETTLE:SQUID: SQUID MAN:GIGANTIC SQUID: FISH_LUNGFISH:FISH_LOACH_CLOWN:FISH_BULLHEAD_BROWN:FISH_BULLHEAD_YELLOW:FISH_BULLHEAD_BLACK:FISH_KNIFEFISH_BANDED: FISH_CHAR:FISH_TROUT_RAINBOW:FISH_MOLLY_SAILFIN: -FISH_GUPPY: -FISH_PERCH:DWARF:HUMAN:ELF:GOBLIN:KOBOLD:GREMLIN:TROLL:OGRE:UNICORN:DRAGON:SATYR:COLOSSUS_BRONZE:GIANT:CYCLOPS:ETTIN:MINOTAUR:YETI: SASQUATCH: BLIZZARD_MAN:WOLF_ICE:FAIRY:PIXIE:BEAK_DOG: GRIMELING: BLENDEC_FOUL: STRANGLER: NIGHTWING:HARPY:HYDRA: MERPERSON: SEA_SERPENT: SEA_MONSTER:BIRD_ROC:CROCODILE_CAVE:TOAD_GIANT_CAVE: OLM_GIANT: BAT_GIANT: RAT_GIANT: RAT_LARGE:MOLE_DOG_NAKED: -TROGLODYTE: -MOLE_GIANT:IMP_FIRE:SPIDER_CAVE_GIANT: SPIDER_CAVE: FISH_CAVE: CAVE_FISH_MAN: LOBSTER_CAVE: -SNAKE_FIRE:OLM:OLM_MAN:BAT:BAT_MAN:MAGGOT_PURRING:ELEMENTMAN_FIRE:ELEMENTMAN_MAGMA:ELEMENTMAN_IRON:ELEMENTMAN_MUD:BIRD_SWALLOW_CAVE:CAVE_SWALLOW_MAN:BIRD_SWALLOW_CAVE_GIANT: AMPHIBIAN_MAN: REPTILE_MAN: SERPENT_MAN:ANT_MAN: -RODENT MAN: WILD_BOAR: WILD_BOAR_MAN:GIANT_WILD_BOAR:COYOTE: -COYOTE_MAN: GIANT_COYOTE:KANGAROO: KANGAROO_MAN:GIANT_KANGAROO:KOALA: KOALA_MAN: GIANT_KOALA:ADDER: ADDER_MAN: GIANT_ADDER:ECHIDNA: ECHIDNA_MAN: GIANT_ECHIDNA: PORCUPINE: PORCUPINE_MAN:GIANT_PORCUPINE: KINGSNAKE: KINGSNAKE_MAN:GIANT_KINGSNAKE: GRAY_LANGUR:GRAY_LANGUR_MAN:GIANT_GRAY_LANGUR:BOBCAT: -BOBCAT_MAN: GIANT_BOBCAT:SKUNK: SKUNK_MAN: GIANT_SKUNK:GREEN_TREE_FROG:GREEN_TREE_FROG_MAN:GIANT_GREEN_TREE_FROG:HARE:HARE_MAN: -GIANT_HARE: RATTLESNAKE:RATTLESNAKE_MAN:GIANT_RATTLESNAKE:WEASEL: -WEASEL_MAN: GIANT_WEASEL:COPPERHEAD_SNAKE:COPPERHEAD_SNAKE_MAN:GIANT_COPPERHEAD_SNAKE:IBEX:IBEX_MAN: -GIANT_IBEX:WOMBAT: -WOMBAT_MAN: GIANT_WOMBAT:DINGO: DINGO_MAN: GIANT_DINGO:COATI: COATI_MAN: GIANT_COATI:OPOSSUM: OPOSSUM_MAN: GIANT_OPOSSUM:MONGOOSE: MONGOOSE_MAN:GIANT_MONGOOSE:HYENA: HYENA_MAN: GIANT_HYENA:ANACONDA: ANACONDA_MAN:GIANT_ANACONDA:MONITOR_LIZARD:MONITOR_LIZARD_MAN:GIANT_MONITOR_LIZARD: -KING_COBRA:KING_COBRA_MAN:GIANT_KING_COBRA:OCELOT: -OCELOT_MAN: GIANT_OCELOT:JACKAL: -JACKAL_MAN: GIANT_JACKAL:CAPUCHIN: CAPUCHIN_MAN:GIANT_CAPUCHIN:SLOTH: SLOTH_MAN: GIANT_SLOTH: SPIDER_MONKEY:SPIDER_MONKEY_MAN:GIANT_SPIDER_MONKEY:PANGOLIN: PANGOLIN_MAN:GIANT_PANGOLIN: BLACK_MAMBA:BLACK_MAMBA_MAN:GIANT_BLACK_MAMBA: -BEAR_SLOTH:SLOTH_BEAR_MAN:GIANT_SLOTH_BEAR:AYE-AYE: AYE-AYE_MAN: GIANT_AYE-AYE: -BUSHMASTER:BUSHMASTER_MAN:GIANT_BUSHMASTER:PYTHON: -PYTHON_MAN: GIANT_PYTHON:TAPIR: TAPIR_MAN: GIANT_TAPIR:IMPALA: -IMPALA_MAN: GIANT_IMPALA:AARDVARK: AARDVARK_MAN:GIANT_AARDVARK: LION_TAMARIN:LION_TAMARIN_MAN:GIANT_LION_TAMARIN:STOAT: STOAT_MAN: GIANT_STOAT:LYNX:LYNX_MAN: -GIANT_LYNXBTOADBTOAD_MANB -GIANT_TOADBWORMBWORM_MANB BIRD_BLUEJAYB BLUEJAY_MANB GIANT_BLUEJAYB BIRD_CARDINALB CARDINAL_MANBGIANT_CARDINALB BIRD_GRACKLEB GRACKLE_MANB GIANT_GRACKLEB BIRD_ORIOLEB -ORIOLE_MANB GIANT_ORIOLEBBIRD_RW_BLACKBIRDBRW_BLACKBIRD_MANBGIANT_RW_BLACKBIRDB BIRD_PENGUINBBIRD_PENGUIN_LITTLEBBIRD_PENGUIN_EMPERORB PENGUIN MANBBIRD_PENGUIN_GIANTBBIRD_FALCON_PEREGRINEBPEREGRINE FALCON MANBGIANT PEREGRINE FALCONB BIRD_KIWIBKIWI MANBBIRD_KIWI_GIANTB BIRD_OSTRICHB OSTRICH MANBBIRD_OSTRICH_GIANTB BIRD_CROWBCROW_MANB -GIANT_CROWB -BIRD_RAVENB RAVEN_MANB GIANT_RAVENBBIRD_CASSOWARYB CASSOWARY_MANBGIANT_CASSOWARYBBIRD_KEABKEA_MANB GIANT_KEABBIRD_OWL_SNOWYB SNOWY_OWL_MANBGIANT_SNOWY_OWLBSPARROWB SPARROW_MANB GIANT_SPARROWBBIRD_STORK_WHITEBWHITE_STORK_MANBGIANT_WHITE_STORKB BIRD_LOONBLOON_MANB -GIANT_LOONB BIRD_OWL_BARNB BARN_OWL_MANBGIANT_BARN_OWLB BIRD_PARAKEETB PARAKEET_MANBGIANT_PARAKEETB BIRD_KAKAPOB -KAKAPO_MANB GIANT_KAKAPOBBIRD_PARROT_GREYBGREY_PARROT_MANBGIANT_GREY_PARROTB BIRD_PUFFINB -PUFFIN_MANB GIANT_PUFFINB BIRD_SWANBSWAN_MANB -GIANT_SWANB BIRD_LORIKEETB LORIKEET_MANBGIANT_LORIKEETB BIRD_WRENBWREN_MANB -GIANT_WRENB BIRD_OSPREYB -OSPREY_MANB GIANT_OSPREYBBIRD_EMUBEMU_MANB GIANT_EMUBBIRD_COCKATIELB COCKATIEL_MANBGIANT_COCKATIELBBIRD_LOVEBIRD_PEACH-FACEDBPEACH-FACED_LOVEBIRD_MANBGIANT_PEACH-FACED_LOVEBIRDB BIRD_MAGPIEB -MAGPIE_MANB GIANT_MAGPIEB BIRD_KESTRELB KESTREL_MANB GIANT_KESTRELBBIRD_ALBATROSSB ALBATROSS_MANBGIANT_ALBATROSSBBIRD_OWL_GREAT_HORNEDBGREAT_HORNED_OWL_MANBGIANT_GREAT_HORNED_OWLB -BIRD_EAGLEB EAGLE_MANB GIANT_EAGLEB BIRD_HORNBILLB HORNBILL_MANBGIANT_HORNBILLBBIRD_LOVEBIRD_MASKEDBMASKED_LOVEBIRD_MANBGIANT_MASKED_LOVEBIRDB BIRD_BUSHTITB BUSHTIT_MANB GIANT_BUSHTITB DAMSELFLYB DAMSELFLY_MANBGIANT_DAMSELFLYBMOTHBMOTH_MANB -GIANT_MOTHB GRASSHOPPERBGRASSHOPPER_MANBGIANT_GRASSHOPPERB BARK_SCORPIONBBARK_SCORPION_MANBGIANT_BARK_SCORPIONBMANTISB -MANTIS_MANB GIANT_MANTISBTICKBTICK_MANB -GIANT_TICKBLOUSEB LOUSE_MANB GIANT_LOUSEBTHRIPSB -THRIPS_MANB GIANT_THRIPSBSLUGBSLUG_MANB -GIANT_SLUGBMOSQUITOB MOSQUITO_MANBGIANT_MOSQUITOBSPIDER_JUMPINGBJUMPING_SPIDER_MANBGIANT_JUMPING_SPIDERBTERMITEB -MOON_SNAILBMOON_SNAIL_MANBGIANT_MOON_SNAILBSPIDER_BROWN_RECLUSEBBROWN_RECLUSE_SPIDER_MANBGIANT_BROWN_RECLUSE_SPIDERBSNAILB SNAIL_MANB GIANT_SNAILB GECKO_LEOPARDBLEOPARD_GECKO_MANBGIANT_LEOPARD_GECKOBDESERT TORTOISEBDESERT_TORTOISE_MANBGIANT_DESERT_TORTOISEB GILA_MONSTERBGILA_MONSTER_MANBGIANT_GILA_MONSTERBDOGBCATBMULEBDONKEYBHORSEBCOWBSHEEPBPIGBGOATB BIRD_CHICKENBCAVYB BIRD_DUCKB WATER_BUFFALOBREINDEERB -BIRD_GOOSEBYAKBLLAMABALPACABBIRD_GUINEAFOWLBBIRD_PEAFOWL_BLUEB BIRD_TURKEYBRABBITBCHIMERABCENTAURBGRIFFONBFLYBFLY_MANB GIANT_FLYB ROACH_LARGEB ROACH_MANB GIANT_ROACHBBEETLEB -BEETLE_MANB GIANT_BEETLEBANTBBUTTERFLY_MONARCHBBUTTERFLY_MONARCH_MANBGIANT_BUTTERFLY_MONARCHBFIREFLYB FIREFLY_MANB GIANT_FIREFLYB DRAGONFLYB DRAGONFLY_MANBGIANT_DRAGONFLYB HONEY_BEEB BUMBLEBEEB GOAT_MOUNTAINBGOAT_MOUNTAIN_MANBGIANT_GOAT_MOUNTAINB MARMOT_HOARYBMARMOT_HOARY_MANBGIANT_MARMOT_HOARYBGNOME_MOUNTAINB -GNOME_DARKBWALRUSB -WALRUS_MANB GIANT_WALRUSBFISH_LAMPREY_SEABSHARK_GREAT_WHITEB SHARK_FRILLBSHARK_SPINY_DOGFISHBSHARK_WOBBEGONG_SPOTTEDB SHARK_WHALEB SHARK_BASKINGB SHARK_NURSEBSHARK_MAKO_SHORTFINBSHARK_MAKO_LONGFINB SHARK_TIGERB -SHARK_BULLBSHARK_REEF_BLACKTIPBSHARK_REEF_WHITETIPB -SHARK_BLUEBSHARK_HAMMERHEADB SHARK_ANGELBFISH_SKATE_COMMONBFISH_RAY_MANTAB FISH_STINGRAYBFISH_COELACANTHB FISH_STURGEONBFISH_CONGER_EELB FISH_MILKFISHBFISH_CODB FISH_OPAHBFISH_GROUPER_GIANTB FISH_BLUEFISHBFISH_SUNFISH_OCEANBFISH_SWORDFISHB FISH_MARLINB FISH_HALIBUTBFISH_BARRACUDA_GREATBFISH_TUNA_BLUEFINBNARWHALB NARWHAL MANBNARWHAL, GIANTBHIPPOB HIPPO_MANB GIANT_HIPPOBFISH_GAR_LONGNOSEB FISH_CARPBFISH_TIGERFISHB FISH_PIKEBPLATYPUSB PLATYPUS MANBPLATYPUS, GIANTB BEAR_GRIZZLYBBEAR_GRIZZLY_MANBGIANT_BEAR_GRIZZLYB -BEAR_BLACKBBEAR_BLACK_MANBGIANT_BEAR_BLACKBDEERBDEER_MANB -GIANT_DEERBFOXBFOX_MANB GIANT_FOXBRACCOONB RACCOON_MANB GIANT_RACCOONBMACAQUE_RHESUSBMACAQUE_RHESUS_MANBGIANT_MACAQUE_RHESUSBCOUGARB -COUGAR_MANB GIANT_COUGARBWOLFBWOLF_MANB -GIANT_WOLFB GROUNDHOGB GROUNDHOG_MANBGIANT_GROUNDHOGB ALLIGATORB ALLIGATOR_MANBGIANT_ALLIGATORB BIRD_BUZZARDB BUZZARD_MANB GIANT_BUZZARDBPANDABPANDA, GIGANTICB PANDA MANBCAPYBARABCAPYBARA, GIANTB CAPYBARA MANBBADGERB -BADGER MANB BADGER, GIANTBMOOSEB MOOSE MANB MOOSE, GIANTB RED PANDAB RED PANDA MANBRED PANDA, GIANTBELEPHANTB ELEPHANT_MANBGIANT_ELEPHANTBWARTHOGB WARTHOG_MANB GIANT_WARTHOGBLIONBLION_MANB -GIANT_LIONBLEOPARDB LEOPARD_MANB GIANT_LEOPARDBJAGUARB -JAGUAR_MANB GIANT_JAGUARBTIGERB TIGER_MANB GIANT_TIGERBCHEETAHB CHEETAH_MANB GIANT_CHEETAHBGAZELLEB GAZELLE_MANB GIANT_GAZELLEBMANDRILLB MANDRILL_MANBGIANT_MANDRILLB -CHIMPANZEEBBONOBOBGORILLAB ORANGUTANBGIBBON_SIAMANGBGIBBON_WHITE_HANDEDBGIBBON_BLACK_HANDEDB GIBBON_GRAYBGIBBON_SILVERYBGIBBON_PILEATEDB GIBBON_BILOUBGIBBON_WHITE_BROWEDBGIBBON_BLACK_CRESTEDB CAMEL_1_HUMPBCAMEL_1_HUMP_MANBGIANT_CAMEL_1_HUMPB CAMEL_2_HUMPBCAMEL_2_HUMP_MANBGIANT_CAMEL_2_HUMPBCROCODILE_SALTWATERBCROCODILE_SALTWATER_MANBGIANT_CROCODILE_SALTWATERB BIRD_VULTUREB VULTURE_MANB GIANT_VULTUREB -RHINOCEROSBRHINOCEROS_MANBGIANT_RHINOCEROSBGIRAFFEB GIRAFFE_MANB GIANT_GIRAFFEB HONEY BADGERBHONEY BADGER MANBHONEY BADGER, GIANTBGIANT TORTOISEBGIANT TORTOISE MANBGIGANTIC TORTOISEB ARMADILLOB ARMADILLO MANBARMADILLO, GIANTBMUSKOXB -MUSKOX_MANB GIANT_MUSKOXBELKBELK_MANB GIANT_ELKB -BEAR_POLARBBEAR_POLAR_MANBGIANT_BEAR_POLARB WOLVERINEB WOLVERINE_MANBGIANT_WOLVERINEB -CHINCHILLABCHINCHILLA_MANBGIANT_CHINCHILLAB FLOATING_GUTSBDRUNIANB CREEPING_EYEBVORACIOUS_CAVE_CRAWLERBBLIND_CAVE_OGREB -CAP_HOPPERB -MAGMA_CRABBCRUNDLEB HUNGRY_HEADB -FLESH_BALLBELK_BIRDB HELMET_SNAKEBGREEN_DEVOURERBRUTHERERBCREEPY_CRAWLERBDRALTHABGIANT_EARTHWORMB BLOOD_MANBBUGBATBMANERAB -MOLEMARIANBJABBERERB POND_GRABBERBBLIND_CAVE_BEARB CAVE_DRAGONBREACHERBELEMENTMAN_GABBROBGORLAKB CAVE_FLOATERBPLUMP_HELMET_MANB CAVE_BLOBBELEMENTMAN_AMETHYSTBOCTOPUSB OCTOPUS_MANB GIANT_OCTOPUSBCRABBCRAB_MANB -GIANT_CRABB LEOPARD_SEALBLEOPARD_SEAL_MANBGIANT_LEOPARD_SEALB -CUTTLEFISHBCUTTLEFISH_MANBGIANT_CUTTLEFISHBORCABORCA_MANB -GIANT_ORCABSPONGEB -SPONGE_MANB GIANT_SPONGEBHORSESHOE_CRABBHORSESHOE_CRAB_MANBGIANT_HORSESHOE_CRABB SPERM_WHALEBSPERM_WHALE_MANBGIANT_SPERM_WHALEB ELEPHANT_SEALBELEPHANT_SEAL_MANBGIANT_ELEPHANT_SEALB HARP_SEALB HARP_SEAL_MANBGIANT_HARP_SEALBNAUTILUSB NAUTILUS_MANBGIANT_NAUTILUSB FOXSQUIRRELB MOGHOPPERB RAT_DEMONBWAMBLER_FLUFFYBLIZARD_RHINO_TWO_LEGGEDB WORM_KNUCKLEBSPIDER_PHANTOMB FLY_ACORNB -GNAT_BLOODBLIZARDB -LIZARD_MANB GIANT_LIZARDBSKINKB SKINK_MANB GIANT_SKINKB CHAMELEONB CHAMELEON_MANBGIANT_CHAMELEONBANOLEB ANOLE_MANB GIANT_ANOLEBIGUANAB -IGUANA_MANB GIANT_IGUANAB RIVER OTTERB SEA OTTERB OTTER_MANB GIANT_OTTERBSNAPPING TURTLEBALLIGATOR SNAPPING TURTLEBSNAPPING_TURTLE_MANBGIANT_SNAPPING_TURTLEBBEAVERB -BEAVER_MANB GIANT_BEAVERBLEECHB LEECH_MANB GIANT_LEECHBAXOLOTLB AXOLOTL_MANB GIANT_AXOLOTLBMINKBMINK_MANB -GIANT_MINKB POND_TURTLEBPOND_TURTLE_MANBGIANT_POND_TURTLEBRATBRAT_MANB SQUIRREL_GRAYBSQUIRREL_GRAY_MANBGIANT_SQUIRREL_GRAYB SQUIRREL_REDBSQUIRREL_RED_MANBGIANT_SQUIRREL_REDBCHIPMUNKB CHIPMUNK_MANBGIANT_CHIPMUNKBHAMSTERB HAMSTER_MANB GIANT_HAMSTERBHEDGEHOGB HEDGEHOG_MANBGIANT_HEDGEHOGBSQUIRREL_FLYINGBFLYING_SQUIRREL_MANBGIANT_FLYING_SQUIRRELBMUSSELBOYSTERB FISH_SALMONBFISH_CLOWNFISHB FISH_HAGFISHBFISH_LAMPREY_BROOKB FISH_RAY_BATBFISH_RAY_THORNBACKBFISH_RATFISH_SPOTTEDB FISH_HERRINGB FISH_SHADB FISH_ANCHOVYBFISH_TROUT_STEELHEADB FISH_HAKEB FISH_SEAHORSEB FISH_GLASSEYEBFISH_PUFFER_WHITE_SPOTTEDB FISH_SOLEB FISH_FLOUNDERB FISH_MACKERELBJELLYFISH_SEA_NETTLEBSQUIDB SQUID MANBGIGANTIC SQUIDB FISH_LUNGFISHBFISH_LOACH_CLOWNBFISH_BULLHEAD_BROWNBFISH_BULLHEAD_YELLOWBFISH_BULLHEAD_BLACKBFISH_KNIFEFISH_BANDEDB FISH_CHARBFISH_TROUT_RAINBOWBFISH_MOLLY_SAILFINB -FISH_GUPPYB -FISH_PERCHBDWARFBHUMANBELFBGOBLINBKOBOLDBGREMLINBTROLLBOGREBUNICORNBDRAGONBSATYRBCOLOSSUS_BRONZEBGIANTBCYCLOPSBETTINBMINOTAURBYETIB SASQUATCHB BLIZZARD_MANBWOLF_ICEBFAIRYBPIXIEBBEAK_DOGB GRIMELINGB BLENDEC_FOULB STRANGLERB NIGHTWINGBHARPYBHYDRAB MERPERSONB SEA_SERPENTB SEA_MONSTERBBIRD_ROCBCROCODILE_CAVEBTOAD_GIANT_CAVEB OLM_GIANTB BAT_GIANTB RAT_GIANTB RAT_LARGEBMOLE_DOG_NAKEDB -TROGLODYTEB -MOLE_GIANTBIMP_FIREBSPIDER_CAVE_GIANTB SPIDER_CAVEB FISH_CAVEB CAVE_FISH_MANB LOBSTER_CAVEB -SNAKE_FIREBOLMBOLM_MANBBATBBAT_MANBMAGGOT_PURRINGBELEMENTMAN_FIREBELEMENTMAN_MAGMABELEMENTMAN_IRONBELEMENTMAN_MUDBBIRD_SWALLOW_CAVEBCAVE_SWALLOW_MANBBIRD_SWALLOW_CAVE_GIANTB AMPHIBIAN_MANB REPTILE_MANB SERPENT_MANBANT_MANB -RODENT MANB WILD_BOARB WILD_BOAR_MANBGIANT_WILD_BOARBCOYOTEB -COYOTE_MANB GIANT_COYOTEBKANGAROOB KANGAROO_MANBGIANT_KANGAROOBKOALAB KOALA_MANB GIANT_KOALABADDERB ADDER_MANB GIANT_ADDERBECHIDNAB ECHIDNA_MANB GIANT_ECHIDNAB PORCUPINEB PORCUPINE_MANBGIANT_PORCUPINEB KINGSNAKEB KINGSNAKE_MANBGIANT_KINGSNAKEB GRAY_LANGURBGRAY_LANGUR_MANBGIANT_GRAY_LANGURBBOBCATB -BOBCAT_MANB GIANT_BOBCATBSKUNKB SKUNK_MANB GIANT_SKUNKBGREEN_TREE_FROGBGREEN_TREE_FROG_MANBGIANT_GREEN_TREE_FROGBHAREBHARE_MANB -GIANT_HAREB RATTLESNAKEBRATTLESNAKE_MANBGIANT_RATTLESNAKEBWEASELB -WEASEL_MANB GIANT_WEASELBCOPPERHEAD_SNAKEBCOPPERHEAD_SNAKE_MANBGIANT_COPPERHEAD_SNAKEBIBEXBIBEX_MANB -GIANT_IBEXBWOMBATB -WOMBAT_MANB GIANT_WOMBATBDINGOB DINGO_MANB GIANT_DINGOBCOATIB COATI_MANB GIANT_COATIBOPOSSUMB OPOSSUM_MANB GIANT_OPOSSUMBMONGOOSEB MONGOOSE_MANBGIANT_MONGOOSEBHYENAB HYENA_MANB GIANT_HYENABANACONDAB ANACONDA_MANBGIANT_ANACONDABMONITOR_LIZARDBMONITOR_LIZARD_MANBGIANT_MONITOR_LIZARDB -KING_COBRABKING_COBRA_MANBGIANT_KING_COBRABOCELOTB -OCELOT_MANB GIANT_OCELOTBJACKALB -JACKAL_MANB GIANT_JACKALBCAPUCHINB CAPUCHIN_MANBGIANT_CAPUCHINBSLOTHB SLOTH_MANB GIANT_SLOTHB SPIDER_MONKEYBSPIDER_MONKEY_MANBGIANT_SPIDER_MONKEYBPANGOLINB PANGOLIN_MANBGIANT_PANGOLINB BLACK_MAMBABBLACK_MAMBA_MANBGIANT_BLACK_MAMBAB -BEAR_SLOTHBSLOTH_BEAR_MANBGIANT_SLOTH_BEARBAYE-AYEB AYE-AYE_MANB GIANT_AYE-AYEB -BUSHMASTERBBUSHMASTER_MANBGIANT_BUSHMASTERBPYTHONB -PYTHON_MANB GIANT_PYTHONBTAPIRB TAPIR_MANB GIANT_TAPIRBIMPALAB -IMPALA_MANB GIANT_IMPALABAARDVARKB AARDVARK_MANBGIANT_AARDVARKB LION_TAMARINBLION_TAMARIN_MANBGIANT_LION_TAMARINBSTOATB STOAT_MANB GIANT_STOATBLYNXBLYNX_MANB -GIANT_LYNXJTOADJTOAD_MANJ -GIANT_TOADJWORMJWORM_MANJ BIRD_BLUEJAYJ BLUEJAY_MANJ GIANT_BLUEJAYJ BIRD_CARDINALJ CARDINAL_MANJGIANT_CARDINALJ BIRD_GRACKLEJ GRACKLE_MANJ GIANT_GRACKLEJ BIRD_ORIOLEJ -ORIOLE_MANJ GIANT_ORIOLEJBIRD_RW_BLACKBIRDJRW_BLACKBIRD_MANJGIANT_RW_BLACKBIRDJ BIRD_PENGUINJBIRD_PENGUIN_LITTLEJBIRD_PENGUIN_EMPERORJ PENGUIN MANJBIRD_PENGUIN_GIANTJBIRD_FALCON_PEREGRINEJPEREGRINE FALCON MANJGIANT PEREGRINE FALCONJ BIRD_KIWIJKIWI MANJBIRD_KIWI_GIANTJ BIRD_OSTRICHJ OSTRICH MANJBIRD_OSTRICH_GIANTJ BIRD_CROWJCROW_MANJ -GIANT_CROWJ -BIRD_RAVENJ RAVEN_MANJ GIANT_RAVENJBIRD_CASSOWARYJ CASSOWARY_MANJGIANT_CASSOWARYJBIRD_KEAJKEA_MANJ GIANT_KEAJBIRD_OWL_SNOWYJ SNOWY_OWL_MANJGIANT_SNOWY_OWLJSPARROWJ SPARROW_MANJ GIANT_SPARROWJBIRD_STORK_WHITEJWHITE_STORK_MANJGIANT_WHITE_STORKJ BIRD_LOONJLOON_MANJ -GIANT_LOONJ BIRD_OWL_BARNJ BARN_OWL_MANJGIANT_BARN_OWLJ BIRD_PARAKEETJ PARAKEET_MANJGIANT_PARAKEETJ BIRD_KAKAPOJ -KAKAPO_MANJ GIANT_KAKAPOJBIRD_PARROT_GREYJGREY_PARROT_MANJGIANT_GREY_PARROTJ BIRD_PUFFINJ -PUFFIN_MANJ GIANT_PUFFINJ BIRD_SWANJSWAN_MANJ -GIANT_SWANJ BIRD_LORIKEETJ LORIKEET_MANJGIANT_LORIKEETJ BIRD_WRENJWREN_MANJ -GIANT_WRENJ BIRD_OSPREYJ -OSPREY_MANJ GIANT_OSPREYJBIRD_EMUJEMU_MANJ GIANT_EMUJBIRD_COCKATIELJ COCKATIEL_MANJGIANT_COCKATIELJBIRD_LOVEBIRD_PEACH-FACEDJPEACH-FACED_LOVEBIRD_MANJGIANT_PEACH-FACED_LOVEBIRDJ BIRD_MAGPIEJ -MAGPIE_MANJ GIANT_MAGPIEJ BIRD_KESTRELJ KESTREL_MANJ GIANT_KESTRELJBIRD_ALBATROSSJ ALBATROSS_MANJGIANT_ALBATROSSJBIRD_OWL_GREAT_HORNEDJGREAT_HORNED_OWL_MANJGIANT_GREAT_HORNED_OWLJ -BIRD_EAGLEJ EAGLE_MANJ GIANT_EAGLEJ BIRD_HORNBILLJ HORNBILL_MANJGIANT_HORNBILLJBIRD_LOVEBIRD_MASKEDJMASKED_LOVEBIRD_MANJGIANT_MASKED_LOVEBIRDJ BIRD_BUSHTITJ BUSHTIT_MANJ GIANT_BUSHTITJ DAMSELFLYJ DAMSELFLY_MANJGIANT_DAMSELFLYJMOTHJMOTH_MANJ -GIANT_MOTHJ GRASSHOPPERJGRASSHOPPER_MANJGIANT_GRASSHOPPERJ BARK_SCORPIONJBARK_SCORPION_MANJGIANT_BARK_SCORPIONJMANTISJ -MANTIS_MANJ GIANT_MANTISJTICKJTICK_MANJ -GIANT_TICKJLOUSEJ LOUSE_MANJ GIANT_LOUSEJTHRIPSJ -THRIPS_MANJ GIANT_THRIPSJSLUGJSLUG_MANJ -GIANT_SLUGJMOSQUITOJ MOSQUITO_MANJGIANT_MOSQUITOJSPIDER_JUMPINGJJUMPING_SPIDER_MANJGIANT_JUMPING_SPIDERJTERMITEJ -MOON_SNAILJMOON_SNAIL_MANJGIANT_MOON_SNAILJSPIDER_BROWN_RECLUSEJBROWN_RECLUSE_SPIDER_MANJGIANT_BROWN_RECLUSE_SPIDERJSNAILJ SNAIL_MANJ GIANT_SNAILJ GECKO_LEOPARDJLEOPARD_GECKO_MANJGIANT_LEOPARD_GECKOJDESERT TORTOISEJDESERT_TORTOISE_MANJGIANT_DESERT_TORTOISEJ GILA_MONSTERJGILA_MONSTER_MANJGIANT_GILA_MONSTERJDOGJCATJMULEJDONKEYJHORSEJCOWJSHEEPJPIGJGOATJ BIRD_CHICKENJCAVYJ BIRD_DUCKJ WATER_BUFFALOJREINDEERJ -BIRD_GOOSEJYAKJLLAMAJALPACAJBIRD_GUINEAFOWLJBIRD_PEAFOWL_BLUEJ BIRD_TURKEYJRABBITJCHIMERAJCENTAURJGRIFFONJFLYJFLY_MANJ GIANT_FLYJ ROACH_LARGEJ ROACH_MANJ GIANT_ROACHJBEETLEJ -BEETLE_MANJ GIANT_BEETLEJANTJBUTTERFLY_MONARCHJBUTTERFLY_MONARCH_MANJGIANT_BUTTERFLY_MONARCHJFIREFLYJ FIREFLY_MANJ GIANT_FIREFLYJ DRAGONFLYJ DRAGONFLY_MANJGIANT_DRAGONFLYJ HONEY_BEEJ BUMBLEBEEJ GOAT_MOUNTAINJGOAT_MOUNTAIN_MANJGIANT_GOAT_MOUNTAINJ MARMOT_HOARYJMARMOT_HOARY_MANJGIANT_MARMOT_HOARYJGNOME_MOUNTAINJ -GNOME_DARKJWALRUSJ -WALRUS_MANJ GIANT_WALRUSJFISH_LAMPREY_SEAJSHARK_GREAT_WHITEJ SHARK_FRILLJSHARK_SPINY_DOGFISHJSHARK_WOBBEGONG_SPOTTEDJ SHARK_WHALEJ SHARK_BASKINGJ SHARK_NURSEJSHARK_MAKO_SHORTFINJSHARK_MAKO_LONGFINJ SHARK_TIGERJ -SHARK_BULLJSHARK_REEF_BLACKTIPJSHARK_REEF_WHITETIPJ -SHARK_BLUEJSHARK_HAMMERHEADJ SHARK_ANGELJFISH_SKATE_COMMONJFISH_RAY_MANTAJ FISH_STINGRAYJFISH_COELACANTHJ FISH_STURGEONJFISH_CONGER_EELJ FISH_MILKFISHJFISH_CODJ FISH_OPAHJFISH_GROUPER_GIANTJ FISH_BLUEFISHJFISH_SUNFISH_OCEANJFISH_SWORDFISHJ FISH_MARLINJ FISH_HALIBUTJFISH_BARRACUDA_GREATJFISH_TUNA_BLUEFINJNARWHALJ NARWHAL MANJNARWHAL, GIANTJHIPPOJ HIPPO_MANJ GIANT_HIPPOJFISH_GAR_LONGNOSEJ FISH_CARPJFISH_TIGERFISHJ FISH_PIKEJPLATYPUSJ PLATYPUS MANJPLATYPUS, GIANTJ BEAR_GRIZZLYJBEAR_GRIZZLY_MANJGIANT_BEAR_GRIZZLYJ -BEAR_BLACKJBEAR_BLACK_MANJGIANT_BEAR_BLACKJDEERJDEER_MANJ -GIANT_DEERJFOXJFOX_MANJ GIANT_FOXJRACCOONJ RACCOON_MANJ GIANT_RACCOONJMACAQUE_RHESUSJMACAQUE_RHESUS_MANJGIANT_MACAQUE_RHESUSJCOUGARJ -COUGAR_MANJ GIANT_COUGARJWOLFJWOLF_MANJ -GIANT_WOLFJ GROUNDHOGJ GROUNDHOG_MANJGIANT_GROUNDHOGJ ALLIGATORJ ALLIGATOR_MANJGIANT_ALLIGATORJ BIRD_BUZZARDJ BUZZARD_MANJ GIANT_BUZZARDJPANDAJPANDA, GIGANTICJ PANDA MANJCAPYBARAJCAPYBARA, GIANTJ CAPYBARA MANJBADGERJ -BADGER MANJ BADGER, GIANTJMOOSEJ MOOSE MANJ MOOSE, GIANTJ RED PANDAJ RED PANDA MANJRED PANDA, GIANTJELEPHANTJ ELEPHANT_MANJGIANT_ELEPHANTJWARTHOGJ WARTHOG_MANJ GIANT_WARTHOGJLIONJLION_MANJ -GIANT_LIONJLEOPARDJ LEOPARD_MANJ GIANT_LEOPARDJJAGUARJ -JAGUAR_MANJ GIANT_JAGUARJTIGERJ TIGER_MANJ GIANT_TIGERJCHEETAHJ CHEETAH_MANJ GIANT_CHEETAHJGAZELLEJ GAZELLE_MANJ GIANT_GAZELLEJMANDRILLJ MANDRILL_MANJGIANT_MANDRILLJ -CHIMPANZEEJBONOBOJGORILLAJ ORANGUTANJGIBBON_SIAMANGJGIBBON_WHITE_HANDEDJGIBBON_BLACK_HANDEDJ GIBBON_GRAYJGIBBON_SILVERYJGIBBON_PILEATEDJ GIBBON_BILOUJGIBBON_WHITE_BROWEDJGIBBON_BLACK_CRESTEDJ CAMEL_1_HUMPJCAMEL_1_HUMP_MANJGIANT_CAMEL_1_HUMPJ CAMEL_2_HUMPJCAMEL_2_HUMP_MANJGIANT_CAMEL_2_HUMPJCROCODILE_SALTWATERJCROCODILE_SALTWATER_MANJGIANT_CROCODILE_SALTWATERJ BIRD_VULTUREJ VULTURE_MANJ GIANT_VULTUREJ -RHINOCEROSJRHINOCEROS_MANJGIANT_RHINOCEROSJGIRAFFEJ GIRAFFE_MANJ GIANT_GIRAFFEJ HONEY BADGERJHONEY BADGER MANJHONEY BADGER, GIANTJGIANT TORTOISEJGIANT TORTOISE MANJGIGANTIC TORTOISEJ ARMADILLOJ ARMADILLO MANJARMADILLO, GIANTJMUSKOXJ -MUSKOX_MANJ GIANT_MUSKOXJELKJELK_MANJ GIANT_ELKJ -BEAR_POLARJBEAR_POLAR_MANJGIANT_BEAR_POLARJ WOLVERINEJ WOLVERINE_MANJGIANT_WOLVERINEJ -CHINCHILLAJCHINCHILLA_MANJGIANT_CHINCHILLAJ FLOATING_GUTSJDRUNIANJ CREEPING_EYEJVORACIOUS_CAVE_CRAWLERJBLIND_CAVE_OGREJ -CAP_HOPPERJ -MAGMA_CRABJCRUNDLEJ HUNGRY_HEADJ -FLESH_BALLJELK_BIRDJ HELMET_SNAKEJGREEN_DEVOURERJRUTHERERJCREEPY_CRAWLERJDRALTHAJGIANT_EARTHWORMJ BLOOD_MANJBUGBATJMANERAJ -MOLEMARIANJJABBERERJ POND_GRABBERJBLIND_CAVE_BEARJ CAVE_DRAGONJREACHERJELEMENTMAN_GABBROJGORLAKJ CAVE_FLOATERJPLUMP_HELMET_MANJ CAVE_BLOBJELEMENTMAN_AMETHYSTJOCTOPUSJ OCTOPUS_MANJ GIANT_OCTOPUSJCRABJCRAB_MANJ -GIANT_CRABJ LEOPARD_SEALJLEOPARD_SEAL_MANJGIANT_LEOPARD_SEALJ -CUTTLEFISHJCUTTLEFISH_MANJGIANT_CUTTLEFISHJORCAJORCA_MANJ -GIANT_ORCAJSPONGEJ -SPONGE_MANJ GIANT_SPONGEJHORSESHOE_CRABJHORSESHOE_CRAB_MANJGIANT_HORSESHOE_CRABJ SPERM_WHALEJSPERM_WHALE_MANJGIANT_SPERM_WHALEJ ELEPHANT_SEALJELEPHANT_SEAL_MANJGIANT_ELEPHANT_SEALJ HARP_SEALJ HARP_SEAL_MANJGIANT_HARP_SEALJNAUTILUSJ NAUTILUS_MANJGIANT_NAUTILUSJ FOXSQUIRRELJ MOGHOPPERJ RAT_DEMONJWAMBLER_FLUFFYJLIZARD_RHINO_TWO_LEGGEDJ WORM_KNUCKLEJSPIDER_PHANTOMJ FLY_ACORNJ -GNAT_BLOODJLIZARDJ -LIZARD_MANJ GIANT_LIZARDJSKINKJ SKINK_MANJ GIANT_SKINKJ CHAMELEONJ CHAMELEON_MANJGIANT_CHAMELEONJANOLEJ ANOLE_MANJ GIANT_ANOLEJIGUANAJ -IGUANA_MANJ GIANT_IGUANAJ RIVER OTTERJ SEA OTTERJ OTTER_MANJ GIANT_OTTERJSNAPPING TURTLEJALLIGATOR SNAPPING TURTLEJSNAPPING_TURTLE_MANJGIANT_SNAPPING_TURTLEJBEAVERJ -BEAVER_MANJ GIANT_BEAVERJLEECHJ LEECH_MANJ GIANT_LEECHJAXOLOTLJ AXOLOTL_MANJ GIANT_AXOLOTLJMINKJMINK_MANJ -GIANT_MINKJ POND_TURTLEJPOND_TURTLE_MANJGIANT_POND_TURTLEJRATJRAT_MANJ SQUIRREL_GRAYJSQUIRREL_GRAY_MANJGIANT_SQUIRREL_GRAYJ SQUIRREL_REDJSQUIRREL_RED_MANJGIANT_SQUIRREL_REDJCHIPMUNKJ CHIPMUNK_MANJGIANT_CHIPMUNKJHAMSTERJ HAMSTER_MANJ GIANT_HAMSTERJHEDGEHOGJ HEDGEHOG_MANJGIANT_HEDGEHOGJSQUIRREL_FLYINGJFLYING_SQUIRREL_MANJGIANT_FLYING_SQUIRRELJMUSSELJOYSTERJ FISH_SALMONJFISH_CLOWNFISHJ FISH_HAGFISHJFISH_LAMPREY_BROOKJ FISH_RAY_BATJFISH_RAY_THORNBACKJFISH_RATFISH_SPOTTEDJ FISH_HERRINGJ FISH_SHADJ FISH_ANCHOVYJFISH_TROUT_STEELHEADJ FISH_HAKEJ FISH_SEAHORSEJ FISH_GLASSEYEJFISH_PUFFER_WHITE_SPOTTEDJ FISH_SOLEJ FISH_FLOUNDERJ FISH_MACKERELJJELLYFISH_SEA_NETTLEJSQUIDJ SQUID MANJGIGANTIC SQUIDJ FISH_LUNGFISHJFISH_LOACH_CLOWNJFISH_BULLHEAD_BROWNJFISH_BULLHEAD_YELLOWJFISH_BULLHEAD_BLACKJFISH_KNIFEFISH_BANDEDJ FISH_CHARJFISH_TROUT_RAINBOWJFISH_MOLLY_SAILFINJ -FISH_GUPPYJ -FISH_PERCHJDWARFJHUMANJELFJGOBLINJKOBOLDJGREMLINJTROLLJOGREJUNICORNJDRAGONJSATYRJCOLOSSUS_BRONZEJGIANTJCYCLOPSJETTINJMINOTAURJYETIJ SASQUATCHJ BLIZZARD_MANJWOLF_ICEJFAIRYJPIXIEJBEAK_DOGJ GRIMELINGJ BLENDEC_FOULJ STRANGLERJ NIGHTWINGJHARPYJHYDRAJ MERPERSONJ SEA_SERPENTJ SEA_MONSTERJBIRD_ROCJCROCODILE_CAVEJTOAD_GIANT_CAVEJ OLM_GIANTJ BAT_GIANTJ RAT_GIANTJ RAT_LARGEJMOLE_DOG_NAKEDJ -TROGLODYTEJ -MOLE_GIANTJIMP_FIREJSPIDER_CAVE_GIANTJ SPIDER_CAVEJ FISH_CAVEJ CAVE_FISH_MANJ LOBSTER_CAVEJ -SNAKE_FIREJOLMJOLM_MANJBATJBAT_MANJMAGGOT_PURRINGJELEMENTMAN_FIREJELEMENTMAN_MAGMAJELEMENTMAN_IRONJELEMENTMAN_MUDJBIRD_SWALLOW_CAVEJCAVE_SWALLOW_MANJBIRD_SWALLOW_CAVE_GIANTJ AMPHIBIAN_MANJ REPTILE_MANJ SERPENT_MANJANT_MANJ -RODENT MANJ WILD_BOARJ WILD_BOAR_MANJGIANT_WILD_BOARJCOYOTEJ -COYOTE_MANJ GIANT_COYOTEJKANGAROOJ KANGAROO_MANJGIANT_KANGAROOJKOALAJ KOALA_MANJ GIANT_KOALAJADDERJ ADDER_MANJ GIANT_ADDERJECHIDNAJ ECHIDNA_MANJ GIANT_ECHIDNAJ PORCUPINEJ PORCUPINE_MANJGIANT_PORCUPINEJ KINGSNAKEJ KINGSNAKE_MANJGIANT_KINGSNAKEJ GRAY_LANGURJGRAY_LANGUR_MANJGIANT_GRAY_LANGURJBOBCATJ -BOBCAT_MANJ GIANT_BOBCATJSKUNKJ SKUNK_MANJ GIANT_SKUNKJGREEN_TREE_FROGJGREEN_TREE_FROG_MANJGIANT_GREEN_TREE_FROGJHAREJHARE_MANJ -GIANT_HAREJ RATTLESNAKEJRATTLESNAKE_MANJGIANT_RATTLESNAKEJWEASELJ -WEASEL_MANJ GIANT_WEASELJCOPPERHEAD_SNAKEJCOPPERHEAD_SNAKE_MANJGIANT_COPPERHEAD_SNAKEJIBEXJIBEX_MANJ -GIANT_IBEXJWOMBATJ -WOMBAT_MANJ GIANT_WOMBATJDINGOJ DINGO_MANJ GIANT_DINGOJCOATIJ COATI_MANJ GIANT_COATIJOPOSSUMJ OPOSSUM_MANJ GIANT_OPOSSUMJMONGOOSEJ MONGOOSE_MANJGIANT_MONGOOSEJHYENAJ HYENA_MANJ GIANT_HYENAJANACONDAJ ANACONDA_MANJGIANT_ANACONDAJMONITOR_LIZARDJMONITOR_LIZARD_MANJGIANT_MONITOR_LIZARDJ -KING_COBRAJKING_COBRA_MANJGIANT_KING_COBRAJOCELOTJ -OCELOT_MANJ GIANT_OCELOTJJACKALJ -JACKAL_MANJ GIANT_JACKALJCAPUCHINJ CAPUCHIN_MANJGIANT_CAPUCHINJSLOTHJ SLOTH_MANJ GIANT_SLOTHJ SPIDER_MONKEYJSPIDER_MONKEY_MANJGIANT_SPIDER_MONKEYJPANGOLINJ PANGOLIN_MANJGIANT_PANGOLINJ BLACK_MAMBAJBLACK_MAMBA_MANJGIANT_BLACK_MAMBAJ -BEAR_SLOTHJSLOTH_BEAR_MANJGIANT_SLOTH_BEARJAYE-AYEJ AYE-AYE_MANJ GIANT_AYE-AYEJ -BUSHMASTERJBUSHMASTER_MANJGIANT_BUSHMASTERJPYTHONJ -PYTHON_MANJ GIANT_PYTHONJTAPIRJ TAPIR_MANJ GIANT_TAPIRJIMPALAJ -IMPALA_MANJ GIANT_IMPALAJAARDVARKJ AARDVARK_MANJGIANT_AARDVARKJ LION_TAMARINJLION_TAMARIN_MANJGIANT_LION_TAMARINJSTOATJ STOAT_MANJ GIANT_STOATJLYNXJLYNX_MANJ -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/roughgems.dfstock b/data/stockpiles/roughgems.dfstock index 20ea6b98ac..fdad4be1ad 100644 Binary files a/data/stockpiles/roughgems.dfstock and b/data/stockpiles/roughgems.dfstock differ diff --git a/data/stockpiles/roughglass.dfstock b/data/stockpiles/roughglass.dfstock index 9571b3f80b..23b95b81ac 100644 Binary files a/data/stockpiles/roughglass.dfstock and b/data/stockpiles/roughglass.dfstock differ diff --git a/data/stockpiles/sand.dfstock b/data/stockpiles/sand.dfstock index a934bcb440..b97921e81e 100644 Binary files a/data/stockpiles/sand.dfstock and b/data/stockpiles/sand.dfstock differ diff --git a/data/stockpiles/seeds.dfstock b/data/stockpiles/seeds.dfstock index dbd7c220f5..ce9d0a4c22 100644 Binary files a/data/stockpiles/seeds.dfstock and b/data/stockpiles/seeds.dfstock differ diff --git a/data/stockpiles/sheetprefix.dfstock b/data/stockpiles/sheetprefix.dfstock deleted file mode 100644 index 0ba4c17961..0000000000 Binary files a/data/stockpiles/sheetprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/shells.dfstock b/data/stockpiles/shells.dfstock deleted file mode 100644 index 548152764d..0000000000 --- a/data/stockpiles/shells.dfstock +++ /dev/null @@ -1,157 +0,0 @@ -*ÆW -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCHBTOADBTOAD_MANB -GIANT_TOADBWORMBWORM_MANB BIRD_BLUEJAYB BLUEJAY_MANB GIANT_BLUEJAYB BIRD_CARDINALB CARDINAL_MANBGIANT_CARDINALB BIRD_GRACKLEB GRACKLE_MANB GIANT_GRACKLEB BIRD_ORIOLEB -ORIOLE_MANB GIANT_ORIOLEBBIRD_RW_BLACKBIRDBRW_BLACKBIRD_MANBGIANT_RW_BLACKBIRDB BIRD_PENGUINBBIRD_PENGUIN_LITTLEBBIRD_PENGUIN_EMPERORB PENGUIN MANBBIRD_PENGUIN_GIANTBBIRD_FALCON_PEREGRINEBPEREGRINE FALCON MANBGIANT PEREGRINE FALCONB BIRD_KIWIBKIWI MANBBIRD_KIWI_GIANTB BIRD_OSTRICHB OSTRICH MANBBIRD_OSTRICH_GIANTB BIRD_CROWBCROW_MANB -GIANT_CROWB -BIRD_RAVENB RAVEN_MANB GIANT_RAVENBBIRD_CASSOWARYB CASSOWARY_MANBGIANT_CASSOWARYBBIRD_KEABKEA_MANB GIANT_KEABBIRD_OWL_SNOWYB SNOWY_OWL_MANBGIANT_SNOWY_OWLBSPARROWB SPARROW_MANB GIANT_SPARROWBBIRD_STORK_WHITEBWHITE_STORK_MANBGIANT_WHITE_STORKB BIRD_LOONBLOON_MANB -GIANT_LOONB BIRD_OWL_BARNB BARN_OWL_MANBGIANT_BARN_OWLB BIRD_PARAKEETB PARAKEET_MANBGIANT_PARAKEETB BIRD_KAKAPOB -KAKAPO_MANB GIANT_KAKAPOBBIRD_PARROT_GREYBGREY_PARROT_MANBGIANT_GREY_PARROTB BIRD_PUFFINB -PUFFIN_MANB GIANT_PUFFINB BIRD_SWANBSWAN_MANB -GIANT_SWANB BIRD_LORIKEETB LORIKEET_MANBGIANT_LORIKEETB BIRD_WRENBWREN_MANB -GIANT_WRENB BIRD_OSPREYB -OSPREY_MANB GIANT_OSPREYBBIRD_EMUBEMU_MANB GIANT_EMUBBIRD_COCKATIELB COCKATIEL_MANBGIANT_COCKATIELBBIRD_LOVEBIRD_PEACH-FACEDBPEACH-FACED_LOVEBIRD_MANBGIANT_PEACH-FACED_LOVEBIRDB BIRD_MAGPIEB -MAGPIE_MANB GIANT_MAGPIEB BIRD_KESTRELB KESTREL_MANB GIANT_KESTRELBBIRD_ALBATROSSB ALBATROSS_MANBGIANT_ALBATROSSBBIRD_OWL_GREAT_HORNEDBGREAT_HORNED_OWL_MANBGIANT_GREAT_HORNED_OWLB -BIRD_EAGLEB EAGLE_MANB GIANT_EAGLEB BIRD_HORNBILLB HORNBILL_MANBGIANT_HORNBILLBBIRD_LOVEBIRD_MASKEDBMASKED_LOVEBIRD_MANBGIANT_MASKED_LOVEBIRDB BIRD_BUSHTITB BUSHTIT_MANB GIANT_BUSHTITB DAMSELFLYB DAMSELFLY_MANBGIANT_DAMSELFLYBMOTHBMOTH_MANB -GIANT_MOTHB GRASSHOPPERBGRASSHOPPER_MANBGIANT_GRASSHOPPERB BARK_SCORPIONBBARK_SCORPION_MANBGIANT_BARK_SCORPIONBMANTISB -MANTIS_MANB GIANT_MANTISBTICKBTICK_MANB -GIANT_TICKBLOUSEB LOUSE_MANB GIANT_LOUSEBTHRIPSB -THRIPS_MANB GIANT_THRIPSBSLUGBSLUG_MANB -GIANT_SLUGBMOSQUITOB MOSQUITO_MANBGIANT_MOSQUITOBSPIDER_JUMPINGBJUMPING_SPIDER_MANBGIANT_JUMPING_SPIDERBTERMITEB -MOON_SNAILBMOON_SNAIL_MANBGIANT_MOON_SNAILBSPIDER_BROWN_RECLUSEBBROWN_RECLUSE_SPIDER_MANBGIANT_BROWN_RECLUSE_SPIDERBSNAILB SNAIL_MANB GIANT_SNAILB GECKO_LEOPARDBLEOPARD_GECKO_MANBGIANT_LEOPARD_GECKOBDESERT TORTOISEBDESERT_TORTOISE_MANBGIANT_DESERT_TORTOISEB GILA_MONSTERBGILA_MONSTER_MANBGIANT_GILA_MONSTERBDOGBCATBMULEBDONKEYBHORSEBCOWBSHEEPBPIGBGOATB BIRD_CHICKENBCAVYB BIRD_DUCKB WATER_BUFFALOBREINDEERB -BIRD_GOOSEBYAKBLLAMABALPACABBIRD_GUINEAFOWLBBIRD_PEAFOWL_BLUEB BIRD_TURKEYBRABBITBCHIMERABCENTAURBGRIFFONBFLYBFLY_MANB GIANT_FLYB ROACH_LARGEB ROACH_MANB GIANT_ROACHBBEETLEB -BEETLE_MANB GIANT_BEETLEBANTBBUTTERFLY_MONARCHBBUTTERFLY_MONARCH_MANBGIANT_BUTTERFLY_MONARCHBFIREFLYB FIREFLY_MANB GIANT_FIREFLYB DRAGONFLYB DRAGONFLY_MANBGIANT_DRAGONFLYB HONEY_BEEB BUMBLEBEEB GOAT_MOUNTAINBGOAT_MOUNTAIN_MANBGIANT_GOAT_MOUNTAINB MARMOT_HOARYBMARMOT_HOARY_MANBGIANT_MARMOT_HOARYBGNOME_MOUNTAINB -GNOME_DARKBWALRUSB -WALRUS_MANB GIANT_WALRUSBFISH_LAMPREY_SEABSHARK_GREAT_WHITEB SHARK_FRILLBSHARK_SPINY_DOGFISHBSHARK_WOBBEGONG_SPOTTEDB SHARK_WHALEB SHARK_BASKINGB SHARK_NURSEBSHARK_MAKO_SHORTFINBSHARK_MAKO_LONGFINB SHARK_TIGERB -SHARK_BULLBSHARK_REEF_BLACKTIPBSHARK_REEF_WHITETIPB -SHARK_BLUEBSHARK_HAMMERHEADB SHARK_ANGELBFISH_SKATE_COMMONBFISH_RAY_MANTAB FISH_STINGRAYBFISH_COELACANTHB FISH_STURGEONBFISH_CONGER_EELB FISH_MILKFISHBFISH_CODB FISH_OPAHBFISH_GROUPER_GIANTB FISH_BLUEFISHBFISH_SUNFISH_OCEANBFISH_SWORDFISHB FISH_MARLINB FISH_HALIBUTBFISH_BARRACUDA_GREATBFISH_TUNA_BLUEFINBNARWHALB NARWHAL MANBNARWHAL, GIANTBHIPPOB HIPPO_MANB GIANT_HIPPOBFISH_GAR_LONGNOSEB FISH_CARPBFISH_TIGERFISHB FISH_PIKEBPLATYPUSB PLATYPUS MANBPLATYPUS, GIANTB BEAR_GRIZZLYBBEAR_GRIZZLY_MANBGIANT_BEAR_GRIZZLYB -BEAR_BLACKBBEAR_BLACK_MANBGIANT_BEAR_BLACKBDEERBDEER_MANB -GIANT_DEERBFOXBFOX_MANB GIANT_FOXBRACCOONB RACCOON_MANB GIANT_RACCOONBMACAQUE_RHESUSBMACAQUE_RHESUS_MANBGIANT_MACAQUE_RHESUSBCOUGARB -COUGAR_MANB GIANT_COUGARBWOLFBWOLF_MANB -GIANT_WOLFB GROUNDHOGB GROUNDHOG_MANBGIANT_GROUNDHOGB ALLIGATORB ALLIGATOR_MANBGIANT_ALLIGATORB BIRD_BUZZARDB BUZZARD_MANB GIANT_BUZZARDBPANDABPANDA, GIGANTICB PANDA MANBCAPYBARABCAPYBARA, GIANTB CAPYBARA MANBBADGERB -BADGER MANB BADGER, GIANTBMOOSEB MOOSE MANB MOOSE, GIANTB RED PANDAB RED PANDA MANBRED PANDA, GIANTBELEPHANTB ELEPHANT_MANBGIANT_ELEPHANTBWARTHOGB WARTHOG_MANB GIANT_WARTHOGBLIONBLION_MANB -GIANT_LIONBLEOPARDB LEOPARD_MANB GIANT_LEOPARDBJAGUARB -JAGUAR_MANB GIANT_JAGUARBTIGERB TIGER_MANB GIANT_TIGERBCHEETAHB CHEETAH_MANB GIANT_CHEETAHBGAZELLEB GAZELLE_MANB GIANT_GAZELLEBMANDRILLB MANDRILL_MANBGIANT_MANDRILLB -CHIMPANZEEBBONOBOBGORILLAB ORANGUTANBGIBBON_SIAMANGBGIBBON_WHITE_HANDEDBGIBBON_BLACK_HANDEDB GIBBON_GRAYBGIBBON_SILVERYBGIBBON_PILEATEDB GIBBON_BILOUBGIBBON_WHITE_BROWEDBGIBBON_BLACK_CRESTEDB CAMEL_1_HUMPBCAMEL_1_HUMP_MANBGIANT_CAMEL_1_HUMPB CAMEL_2_HUMPBCAMEL_2_HUMP_MANBGIANT_CAMEL_2_HUMPBCROCODILE_SALTWATERBCROCODILE_SALTWATER_MANBGIANT_CROCODILE_SALTWATERB BIRD_VULTUREB VULTURE_MANB GIANT_VULTUREB -RHINOCEROSBRHINOCEROS_MANBGIANT_RHINOCEROSBGIRAFFEB GIRAFFE_MANB GIANT_GIRAFFEB HONEY BADGERBHONEY BADGER MANBHONEY BADGER, GIANTBGIANT TORTOISEBGIANT TORTOISE MANBGIGANTIC TORTOISEB ARMADILLOB ARMADILLO MANBARMADILLO, GIANTBMUSKOXB -MUSKOX_MANB GIANT_MUSKOXBELKBELK_MANB GIANT_ELKB -BEAR_POLARBBEAR_POLAR_MANBGIANT_BEAR_POLARB WOLVERINEB WOLVERINE_MANBGIANT_WOLVERINEB -CHINCHILLABCHINCHILLA_MANBGIANT_CHINCHILLAB FLOATING_GUTSBDRUNIANB CREEPING_EYEBVORACIOUS_CAVE_CRAWLERBBLIND_CAVE_OGREB -CAP_HOPPERB -MAGMA_CRABBCRUNDLEB HUNGRY_HEADB -FLESH_BALLBELK_BIRDB HELMET_SNAKEBGREEN_DEVOURERBRUTHERERBCREEPY_CRAWLERBDRALTHABGIANT_EARTHWORMB BLOOD_MANBBUGBATBMANERAB -MOLEMARIANBJABBERERB POND_GRABBERBBLIND_CAVE_BEARB CAVE_DRAGONBREACHERBELEMENTMAN_GABBROBGORLAKB CAVE_FLOATERBPLUMP_HELMET_MANB CAVE_BLOBBELEMENTMAN_AMETHYSTBOCTOPUSB OCTOPUS_MANB GIANT_OCTOPUSBCRABBCRAB_MANB -GIANT_CRABB LEOPARD_SEALBLEOPARD_SEAL_MANBGIANT_LEOPARD_SEALB -CUTTLEFISHBCUTTLEFISH_MANBGIANT_CUTTLEFISHBORCABORCA_MANB -GIANT_ORCABSPONGEB -SPONGE_MANB GIANT_SPONGEBHORSESHOE_CRABBHORSESHOE_CRAB_MANBGIANT_HORSESHOE_CRABB SPERM_WHALEBSPERM_WHALE_MANBGIANT_SPERM_WHALEB ELEPHANT_SEALBELEPHANT_SEAL_MANBGIANT_ELEPHANT_SEALB HARP_SEALB HARP_SEAL_MANBGIANT_HARP_SEALBNAUTILUSB NAUTILUS_MANBGIANT_NAUTILUSB FOXSQUIRRELB MOGHOPPERB RAT_DEMONBWAMBLER_FLUFFYBLIZARD_RHINO_TWO_LEGGEDB WORM_KNUCKLEBSPIDER_PHANTOMB FLY_ACORNB -GNAT_BLOODBLIZARDB -LIZARD_MANB GIANT_LIZARDBSKINKB SKINK_MANB GIANT_SKINKB CHAMELEONB CHAMELEON_MANBGIANT_CHAMELEONBANOLEB ANOLE_MANB GIANT_ANOLEBIGUANAB -IGUANA_MANB GIANT_IGUANAB RIVER OTTERB SEA OTTERB OTTER_MANB GIANT_OTTERBSNAPPING TURTLEBALLIGATOR SNAPPING TURTLEBSNAPPING_TURTLE_MANBGIANT_SNAPPING_TURTLEBBEAVERB -BEAVER_MANB GIANT_BEAVERBLEECHB LEECH_MANB GIANT_LEECHBAXOLOTLB AXOLOTL_MANB GIANT_AXOLOTLBMINKBMINK_MANB -GIANT_MINKB POND_TURTLEBPOND_TURTLE_MANBGIANT_POND_TURTLEBRATBRAT_MANB SQUIRREL_GRAYBSQUIRREL_GRAY_MANBGIANT_SQUIRREL_GRAYB SQUIRREL_REDBSQUIRREL_RED_MANBGIANT_SQUIRREL_REDBCHIPMUNKB CHIPMUNK_MANBGIANT_CHIPMUNKBHAMSTERB HAMSTER_MANB GIANT_HAMSTERBHEDGEHOGB HEDGEHOG_MANBGIANT_HEDGEHOGBSQUIRREL_FLYINGBFLYING_SQUIRREL_MANBGIANT_FLYING_SQUIRRELBMUSSELBOYSTERB FISH_SALMONBFISH_CLOWNFISHB FISH_HAGFISHBFISH_LAMPREY_BROOKB FISH_RAY_BATBFISH_RAY_THORNBACKBFISH_RATFISH_SPOTTEDB FISH_HERRINGB FISH_SHADB FISH_ANCHOVYBFISH_TROUT_STEELHEADB FISH_HAKEB FISH_SEAHORSEB FISH_GLASSEYEBFISH_PUFFER_WHITE_SPOTTEDB FISH_SOLEB FISH_FLOUNDERB FISH_MACKERELBJELLYFISH_SEA_NETTLEBSQUIDB SQUID MANBGIGANTIC SQUIDB FISH_LUNGFISHBFISH_LOACH_CLOWNBFISH_BULLHEAD_BROWNBFISH_BULLHEAD_YELLOWBFISH_BULLHEAD_BLACKBFISH_KNIFEFISH_BANDEDB FISH_CHARBFISH_TROUT_RAINBOWBFISH_MOLLY_SAILFINB -FISH_GUPPYB -FISH_PERCHBDWARFBHUMANBELFBGOBLINBKOBOLDBGREMLINBTROLLBOGREBUNICORNBDRAGONBSATYRBCOLOSSUS_BRONZEBGIANTBCYCLOPSBETTINBMINOTAURBYETIB SASQUATCHB BLIZZARD_MANBWOLF_ICEBFAIRYBPIXIEBBEAK_DOGB GRIMELINGB BLENDEC_FOULB STRANGLERB NIGHTWINGBHARPYBHYDRAB MERPERSONB SEA_SERPENTB SEA_MONSTERBBIRD_ROCBCROCODILE_CAVEBTOAD_GIANT_CAVEB OLM_GIANTB BAT_GIANTB RAT_GIANTB RAT_LARGEBMOLE_DOG_NAKEDB -TROGLODYTEB -MOLE_GIANTBIMP_FIREBSPIDER_CAVE_GIANTB SPIDER_CAVEB FISH_CAVEB CAVE_FISH_MANB LOBSTER_CAVEB -SNAKE_FIREBOLMBOLM_MANBBATBBAT_MANBMAGGOT_PURRINGBELEMENTMAN_FIREBELEMENTMAN_MAGMABELEMENTMAN_IRONBELEMENTMAN_MUDBBIRD_SWALLOW_CAVEBCAVE_SWALLOW_MANBBIRD_SWALLOW_CAVE_GIANTB AMPHIBIAN_MANB REPTILE_MANB SERPENT_MANBANT_MANB -RODENT MANB WILD_BOARB WILD_BOAR_MANBGIANT_WILD_BOARBCOYOTEB -COYOTE_MANB GIANT_COYOTEBKANGAROOB KANGAROO_MANBGIANT_KANGAROOBKOALAB KOALA_MANB GIANT_KOALABADDERB ADDER_MANB GIANT_ADDERBECHIDNAB ECHIDNA_MANB GIANT_ECHIDNAB PORCUPINEB PORCUPINE_MANBGIANT_PORCUPINEB KINGSNAKEB KINGSNAKE_MANBGIANT_KINGSNAKEB GRAY_LANGURBGRAY_LANGUR_MANBGIANT_GRAY_LANGURBBOBCATB -BOBCAT_MANB GIANT_BOBCATBSKUNKB SKUNK_MANB GIANT_SKUNKBGREEN_TREE_FROGBGREEN_TREE_FROG_MANBGIANT_GREEN_TREE_FROGBHAREBHARE_MANB -GIANT_HAREB RATTLESNAKEBRATTLESNAKE_MANBGIANT_RATTLESNAKEBWEASELB -WEASEL_MANB GIANT_WEASELBCOPPERHEAD_SNAKEBCOPPERHEAD_SNAKE_MANBGIANT_COPPERHEAD_SNAKEBIBEXBIBEX_MANB -GIANT_IBEXBWOMBATB -WOMBAT_MANB GIANT_WOMBATBDINGOB DINGO_MANB GIANT_DINGOBCOATIB COATI_MANB GIANT_COATIBOPOSSUMB OPOSSUM_MANB GIANT_OPOSSUMBMONGOOSEB MONGOOSE_MANBGIANT_MONGOOSEBHYENAB HYENA_MANB GIANT_HYENABANACONDAB ANACONDA_MANBGIANT_ANACONDABMONITOR_LIZARDBMONITOR_LIZARD_MANBGIANT_MONITOR_LIZARDB -KING_COBRABKING_COBRA_MANBGIANT_KING_COBRABOCELOTB -OCELOT_MANB GIANT_OCELOTBJACKALB -JACKAL_MANB GIANT_JACKALBCAPUCHINB CAPUCHIN_MANBGIANT_CAPUCHINBSLOTHB SLOTH_MANB GIANT_SLOTHB SPIDER_MONKEYBSPIDER_MONKEY_MANBGIANT_SPIDER_MONKEYBPANGOLINB PANGOLIN_MANBGIANT_PANGOLINB BLACK_MAMBABBLACK_MAMBA_MANBGIANT_BLACK_MAMBAB -BEAR_SLOTHBSLOTH_BEAR_MANBGIANT_SLOTH_BEARBAYE-AYEB AYE-AYE_MANB GIANT_AYE-AYEB -BUSHMASTERBBUSHMASTER_MANBGIANT_BUSHMASTERBPYTHONB -PYTHON_MANB GIANT_PYTHONBTAPIRB TAPIR_MANB GIANT_TAPIRBIMPALAB -IMPALA_MANB GIANT_IMPALABAARDVARKB AARDVARK_MANBGIANT_AARDVARKB LION_TAMARINBLION_TAMARIN_MANBGIANT_LION_TAMARINBSTOATB STOAT_MANB GIANT_STOATBLYNXBLYNX_MANB -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/silverweapons.dfstock b/data/stockpiles/silverweapons.dfstock new file mode 100644 index 0000000000..de517d0ab6 Binary files /dev/null and b/data/stockpiles/silverweapons.dfstock differ diff --git a/data/stockpiles/skulls.dfstock b/data/stockpiles/skulls.dfstock deleted file mode 100644 index ae52e45379..0000000000 --- a/data/stockpiles/skulls.dfstock +++ /dev/null @@ -1,157 +0,0 @@ -*ÆW -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCH*TOAD*TOAD_MAN* -GIANT_TOAD*WORM*WORM_MAN* BIRD_BLUEJAY* BLUEJAY_MAN* GIANT_BLUEJAY* BIRD_CARDINAL* CARDINAL_MAN*GIANT_CARDINAL* BIRD_GRACKLE* GRACKLE_MAN* GIANT_GRACKLE* BIRD_ORIOLE* -ORIOLE_MAN* GIANT_ORIOLE*BIRD_RW_BLACKBIRD*RW_BLACKBIRD_MAN*GIANT_RW_BLACKBIRD* BIRD_PENGUIN*BIRD_PENGUIN_LITTLE*BIRD_PENGUIN_EMPEROR* PENGUIN MAN*BIRD_PENGUIN_GIANT*BIRD_FALCON_PEREGRINE*PEREGRINE FALCON MAN*GIANT PEREGRINE FALCON* BIRD_KIWI*KIWI MAN*BIRD_KIWI_GIANT* BIRD_OSTRICH* OSTRICH MAN*BIRD_OSTRICH_GIANT* BIRD_CROW*CROW_MAN* -GIANT_CROW* -BIRD_RAVEN* RAVEN_MAN* GIANT_RAVEN*BIRD_CASSOWARY* CASSOWARY_MAN*GIANT_CASSOWARY*BIRD_KEA*KEA_MAN* GIANT_KEA*BIRD_OWL_SNOWY* SNOWY_OWL_MAN*GIANT_SNOWY_OWL*SPARROW* SPARROW_MAN* GIANT_SPARROW*BIRD_STORK_WHITE*WHITE_STORK_MAN*GIANT_WHITE_STORK* BIRD_LOON*LOON_MAN* -GIANT_LOON* BIRD_OWL_BARN* BARN_OWL_MAN*GIANT_BARN_OWL* BIRD_PARAKEET* PARAKEET_MAN*GIANT_PARAKEET* BIRD_KAKAPO* -KAKAPO_MAN* GIANT_KAKAPO*BIRD_PARROT_GREY*GREY_PARROT_MAN*GIANT_GREY_PARROT* BIRD_PUFFIN* -PUFFIN_MAN* GIANT_PUFFIN* BIRD_SWAN*SWAN_MAN* -GIANT_SWAN* BIRD_LORIKEET* LORIKEET_MAN*GIANT_LORIKEET* BIRD_WREN*WREN_MAN* -GIANT_WREN* BIRD_OSPREY* -OSPREY_MAN* GIANT_OSPREY*BIRD_EMU*EMU_MAN* GIANT_EMU*BIRD_COCKATIEL* COCKATIEL_MAN*GIANT_COCKATIEL*BIRD_LOVEBIRD_PEACH-FACED*PEACH-FACED_LOVEBIRD_MAN*GIANT_PEACH-FACED_LOVEBIRD* BIRD_MAGPIE* -MAGPIE_MAN* GIANT_MAGPIE* BIRD_KESTREL* KESTREL_MAN* GIANT_KESTREL*BIRD_ALBATROSS* ALBATROSS_MAN*GIANT_ALBATROSS*BIRD_OWL_GREAT_HORNED*GREAT_HORNED_OWL_MAN*GIANT_GREAT_HORNED_OWL* -BIRD_EAGLE* EAGLE_MAN* GIANT_EAGLE* BIRD_HORNBILL* HORNBILL_MAN*GIANT_HORNBILL*BIRD_LOVEBIRD_MASKED*MASKED_LOVEBIRD_MAN*GIANT_MASKED_LOVEBIRD* BIRD_BUSHTIT* BUSHTIT_MAN* GIANT_BUSHTIT* DAMSELFLY* DAMSELFLY_MAN*GIANT_DAMSELFLY*MOTH*MOTH_MAN* -GIANT_MOTH* GRASSHOPPER*GRASSHOPPER_MAN*GIANT_GRASSHOPPER* BARK_SCORPION*BARK_SCORPION_MAN*GIANT_BARK_SCORPION*MANTIS* -MANTIS_MAN* GIANT_MANTIS*TICK*TICK_MAN* -GIANT_TICK*LOUSE* LOUSE_MAN* GIANT_LOUSE*THRIPS* -THRIPS_MAN* GIANT_THRIPS*SLUG*SLUG_MAN* -GIANT_SLUG*MOSQUITO* MOSQUITO_MAN*GIANT_MOSQUITO*SPIDER_JUMPING*JUMPING_SPIDER_MAN*GIANT_JUMPING_SPIDER*TERMITE* -MOON_SNAIL*MOON_SNAIL_MAN*GIANT_MOON_SNAIL*SPIDER_BROWN_RECLUSE*BROWN_RECLUSE_SPIDER_MAN*GIANT_BROWN_RECLUSE_SPIDER*SNAIL* SNAIL_MAN* GIANT_SNAIL* GECKO_LEOPARD*LEOPARD_GECKO_MAN*GIANT_LEOPARD_GECKO*DESERT TORTOISE*DESERT_TORTOISE_MAN*GIANT_DESERT_TORTOISE* GILA_MONSTER*GILA_MONSTER_MAN*GIANT_GILA_MONSTER*DOG*CAT*MULE*DONKEY*HORSE*COW*SHEEP*PIG*GOAT* BIRD_CHICKEN*CAVY* BIRD_DUCK* WATER_BUFFALO*REINDEER* -BIRD_GOOSE*YAK*LLAMA*ALPACA*BIRD_GUINEAFOWL*BIRD_PEAFOWL_BLUE* BIRD_TURKEY*RABBIT*CHIMERA*CENTAUR*GRIFFON*FLY*FLY_MAN* GIANT_FLY* ROACH_LARGE* ROACH_MAN* GIANT_ROACH*BEETLE* -BEETLE_MAN* GIANT_BEETLE*ANT*BUTTERFLY_MONARCH*BUTTERFLY_MONARCH_MAN*GIANT_BUTTERFLY_MONARCH*FIREFLY* FIREFLY_MAN* GIANT_FIREFLY* DRAGONFLY* DRAGONFLY_MAN*GIANT_DRAGONFLY* HONEY_BEE* BUMBLEBEE* GOAT_MOUNTAIN*GOAT_MOUNTAIN_MAN*GIANT_GOAT_MOUNTAIN* MARMOT_HOARY*MARMOT_HOARY_MAN*GIANT_MARMOT_HOARY*GNOME_MOUNTAIN* -GNOME_DARK*WALRUS* -WALRUS_MAN* GIANT_WALRUS*FISH_LAMPREY_SEA*SHARK_GREAT_WHITE* SHARK_FRILL*SHARK_SPINY_DOGFISH*SHARK_WOBBEGONG_SPOTTED* SHARK_WHALE* SHARK_BASKING* SHARK_NURSE*SHARK_MAKO_SHORTFIN*SHARK_MAKO_LONGFIN* SHARK_TIGER* -SHARK_BULL*SHARK_REEF_BLACKTIP*SHARK_REEF_WHITETIP* -SHARK_BLUE*SHARK_HAMMERHEAD* SHARK_ANGEL*FISH_SKATE_COMMON*FISH_RAY_MANTA* FISH_STINGRAY*FISH_COELACANTH* FISH_STURGEON*FISH_CONGER_EEL* FISH_MILKFISH*FISH_COD* FISH_OPAH*FISH_GROUPER_GIANT* FISH_BLUEFISH*FISH_SUNFISH_OCEAN*FISH_SWORDFISH* FISH_MARLIN* FISH_HALIBUT*FISH_BARRACUDA_GREAT*FISH_TUNA_BLUEFIN*NARWHAL* NARWHAL MAN*NARWHAL, GIANT*HIPPO* HIPPO_MAN* GIANT_HIPPO*FISH_GAR_LONGNOSE* FISH_CARP*FISH_TIGERFISH* FISH_PIKE*PLATYPUS* PLATYPUS MAN*PLATYPUS, GIANT* BEAR_GRIZZLY*BEAR_GRIZZLY_MAN*GIANT_BEAR_GRIZZLY* -BEAR_BLACK*BEAR_BLACK_MAN*GIANT_BEAR_BLACK*DEER*DEER_MAN* -GIANT_DEER*FOX*FOX_MAN* GIANT_FOX*RACCOON* RACCOON_MAN* GIANT_RACCOON*MACAQUE_RHESUS*MACAQUE_RHESUS_MAN*GIANT_MACAQUE_RHESUS*COUGAR* -COUGAR_MAN* GIANT_COUGAR*WOLF*WOLF_MAN* -GIANT_WOLF* GROUNDHOG* GROUNDHOG_MAN*GIANT_GROUNDHOG* ALLIGATOR* ALLIGATOR_MAN*GIANT_ALLIGATOR* BIRD_BUZZARD* BUZZARD_MAN* GIANT_BUZZARD*PANDA*PANDA, GIGANTIC* PANDA MAN*CAPYBARA*CAPYBARA, GIANT* CAPYBARA MAN*BADGER* -BADGER MAN* BADGER, GIANT*MOOSE* MOOSE MAN* MOOSE, GIANT* RED PANDA* RED PANDA MAN*RED PANDA, GIANT*ELEPHANT* ELEPHANT_MAN*GIANT_ELEPHANT*WARTHOG* WARTHOG_MAN* GIANT_WARTHOG*LION*LION_MAN* -GIANT_LION*LEOPARD* LEOPARD_MAN* GIANT_LEOPARD*JAGUAR* -JAGUAR_MAN* GIANT_JAGUAR*TIGER* TIGER_MAN* GIANT_TIGER*CHEETAH* CHEETAH_MAN* GIANT_CHEETAH*GAZELLE* GAZELLE_MAN* GIANT_GAZELLE*MANDRILL* MANDRILL_MAN*GIANT_MANDRILL* -CHIMPANZEE*BONOBO*GORILLA* ORANGUTAN*GIBBON_SIAMANG*GIBBON_WHITE_HANDED*GIBBON_BLACK_HANDED* GIBBON_GRAY*GIBBON_SILVERY*GIBBON_PILEATED* GIBBON_BILOU*GIBBON_WHITE_BROWED*GIBBON_BLACK_CRESTED* CAMEL_1_HUMP*CAMEL_1_HUMP_MAN*GIANT_CAMEL_1_HUMP* CAMEL_2_HUMP*CAMEL_2_HUMP_MAN*GIANT_CAMEL_2_HUMP*CROCODILE_SALTWATER*CROCODILE_SALTWATER_MAN*GIANT_CROCODILE_SALTWATER* BIRD_VULTURE* VULTURE_MAN* GIANT_VULTURE* -RHINOCEROS*RHINOCEROS_MAN*GIANT_RHINOCEROS*GIRAFFE* GIRAFFE_MAN* GIANT_GIRAFFE* HONEY BADGER*HONEY BADGER MAN*HONEY BADGER, GIANT*GIANT TORTOISE*GIANT TORTOISE MAN*GIGANTIC TORTOISE* ARMADILLO* ARMADILLO MAN*ARMADILLO, GIANT*MUSKOX* -MUSKOX_MAN* GIANT_MUSKOX*ELK*ELK_MAN* GIANT_ELK* -BEAR_POLAR*BEAR_POLAR_MAN*GIANT_BEAR_POLAR* WOLVERINE* WOLVERINE_MAN*GIANT_WOLVERINE* -CHINCHILLA*CHINCHILLA_MAN*GIANT_CHINCHILLA* FLOATING_GUTS*DRUNIAN* CREEPING_EYE*VORACIOUS_CAVE_CRAWLER*BLIND_CAVE_OGRE* -CAP_HOPPER* -MAGMA_CRAB*CRUNDLE* HUNGRY_HEAD* -FLESH_BALL*ELK_BIRD* HELMET_SNAKE*GREEN_DEVOURER*RUTHERER*CREEPY_CRAWLER*DRALTHA*GIANT_EARTHWORM* BLOOD_MAN*BUGBAT*MANERA* -MOLEMARIAN*JABBERER* POND_GRABBER*BLIND_CAVE_BEAR* CAVE_DRAGON*REACHER*ELEMENTMAN_GABBRO*GORLAK* CAVE_FLOATER*PLUMP_HELMET_MAN* CAVE_BLOB*ELEMENTMAN_AMETHYST*OCTOPUS* OCTOPUS_MAN* GIANT_OCTOPUS*CRAB*CRAB_MAN* -GIANT_CRAB* LEOPARD_SEAL*LEOPARD_SEAL_MAN*GIANT_LEOPARD_SEAL* -CUTTLEFISH*CUTTLEFISH_MAN*GIANT_CUTTLEFISH*ORCA*ORCA_MAN* -GIANT_ORCA*SPONGE* -SPONGE_MAN* GIANT_SPONGE*HORSESHOE_CRAB*HORSESHOE_CRAB_MAN*GIANT_HORSESHOE_CRAB* SPERM_WHALE*SPERM_WHALE_MAN*GIANT_SPERM_WHALE* ELEPHANT_SEAL*ELEPHANT_SEAL_MAN*GIANT_ELEPHANT_SEAL* HARP_SEAL* HARP_SEAL_MAN*GIANT_HARP_SEAL*NAUTILUS* NAUTILUS_MAN*GIANT_NAUTILUS* FOXSQUIRREL* MOGHOPPER* RAT_DEMON*WAMBLER_FLUFFY*LIZARD_RHINO_TWO_LEGGED* WORM_KNUCKLE*SPIDER_PHANTOM* FLY_ACORN* -GNAT_BLOOD*LIZARD* -LIZARD_MAN* GIANT_LIZARD*SKINK* SKINK_MAN* GIANT_SKINK* CHAMELEON* CHAMELEON_MAN*GIANT_CHAMELEON*ANOLE* ANOLE_MAN* GIANT_ANOLE*IGUANA* -IGUANA_MAN* GIANT_IGUANA* RIVER OTTER* SEA OTTER* OTTER_MAN* GIANT_OTTER*SNAPPING TURTLE*ALLIGATOR SNAPPING TURTLE*SNAPPING_TURTLE_MAN*GIANT_SNAPPING_TURTLE*BEAVER* -BEAVER_MAN* GIANT_BEAVER*LEECH* LEECH_MAN* GIANT_LEECH*AXOLOTL* AXOLOTL_MAN* GIANT_AXOLOTL*MINK*MINK_MAN* -GIANT_MINK* POND_TURTLE*POND_TURTLE_MAN*GIANT_POND_TURTLE*RAT*RAT_MAN* SQUIRREL_GRAY*SQUIRREL_GRAY_MAN*GIANT_SQUIRREL_GRAY* SQUIRREL_RED*SQUIRREL_RED_MAN*GIANT_SQUIRREL_RED*CHIPMUNK* CHIPMUNK_MAN*GIANT_CHIPMUNK*HAMSTER* HAMSTER_MAN* GIANT_HAMSTER*HEDGEHOG* HEDGEHOG_MAN*GIANT_HEDGEHOG*SQUIRREL_FLYING*FLYING_SQUIRREL_MAN*GIANT_FLYING_SQUIRREL*MUSSEL*OYSTER* FISH_SALMON*FISH_CLOWNFISH* FISH_HAGFISH*FISH_LAMPREY_BROOK* FISH_RAY_BAT*FISH_RAY_THORNBACK*FISH_RATFISH_SPOTTED* FISH_HERRING* FISH_SHAD* FISH_ANCHOVY*FISH_TROUT_STEELHEAD* FISH_HAKE* FISH_SEAHORSE* FISH_GLASSEYE*FISH_PUFFER_WHITE_SPOTTED* FISH_SOLE* FISH_FLOUNDER* FISH_MACKEREL*JELLYFISH_SEA_NETTLE*SQUID* SQUID MAN*GIGANTIC SQUID* FISH_LUNGFISH*FISH_LOACH_CLOWN*FISH_BULLHEAD_BROWN*FISH_BULLHEAD_YELLOW*FISH_BULLHEAD_BLACK*FISH_KNIFEFISH_BANDED* FISH_CHAR*FISH_TROUT_RAINBOW*FISH_MOLLY_SAILFIN* -FISH_GUPPY* -FISH_PERCH*DWARF*HUMAN*ELF*GOBLIN*KOBOLD*GREMLIN*TROLL*OGRE*UNICORN*DRAGON*SATYR*COLOSSUS_BRONZE*GIANT*CYCLOPS*ETTIN*MINOTAUR*YETI* SASQUATCH* BLIZZARD_MAN*WOLF_ICE*FAIRY*PIXIE*BEAK_DOG* GRIMELING* BLENDEC_FOUL* STRANGLER* NIGHTWING*HARPY*HYDRA* MERPERSON* SEA_SERPENT* SEA_MONSTER*BIRD_ROC*CROCODILE_CAVE*TOAD_GIANT_CAVE* OLM_GIANT* BAT_GIANT* RAT_GIANT* RAT_LARGE*MOLE_DOG_NAKED* -TROGLODYTE* -MOLE_GIANT*IMP_FIRE*SPIDER_CAVE_GIANT* SPIDER_CAVE* FISH_CAVE* CAVE_FISH_MAN* LOBSTER_CAVE* -SNAKE_FIRE*OLM*OLM_MAN*BAT*BAT_MAN*MAGGOT_PURRING*ELEMENTMAN_FIRE*ELEMENTMAN_MAGMA*ELEMENTMAN_IRON*ELEMENTMAN_MUD*BIRD_SWALLOW_CAVE*CAVE_SWALLOW_MAN*BIRD_SWALLOW_CAVE_GIANT* AMPHIBIAN_MAN* REPTILE_MAN* SERPENT_MAN*ANT_MAN* -RODENT MAN* WILD_BOAR* WILD_BOAR_MAN*GIANT_WILD_BOAR*COYOTE* -COYOTE_MAN* GIANT_COYOTE*KANGAROO* KANGAROO_MAN*GIANT_KANGAROO*KOALA* KOALA_MAN* GIANT_KOALA*ADDER* ADDER_MAN* GIANT_ADDER*ECHIDNA* ECHIDNA_MAN* GIANT_ECHIDNA* PORCUPINE* PORCUPINE_MAN*GIANT_PORCUPINE* KINGSNAKE* KINGSNAKE_MAN*GIANT_KINGSNAKE* GRAY_LANGUR*GRAY_LANGUR_MAN*GIANT_GRAY_LANGUR*BOBCAT* -BOBCAT_MAN* GIANT_BOBCAT*SKUNK* SKUNK_MAN* GIANT_SKUNK*GREEN_TREE_FROG*GREEN_TREE_FROG_MAN*GIANT_GREEN_TREE_FROG*HARE*HARE_MAN* -GIANT_HARE* RATTLESNAKE*RATTLESNAKE_MAN*GIANT_RATTLESNAKE*WEASEL* -WEASEL_MAN* GIANT_WEASEL*COPPERHEAD_SNAKE*COPPERHEAD_SNAKE_MAN*GIANT_COPPERHEAD_SNAKE*IBEX*IBEX_MAN* -GIANT_IBEX*WOMBAT* -WOMBAT_MAN* GIANT_WOMBAT*DINGO* DINGO_MAN* GIANT_DINGO*COATI* COATI_MAN* GIANT_COATI*OPOSSUM* OPOSSUM_MAN* GIANT_OPOSSUM*MONGOOSE* MONGOOSE_MAN*GIANT_MONGOOSE*HYENA* HYENA_MAN* GIANT_HYENA*ANACONDA* ANACONDA_MAN*GIANT_ANACONDA*MONITOR_LIZARD*MONITOR_LIZARD_MAN*GIANT_MONITOR_LIZARD* -KING_COBRA*KING_COBRA_MAN*GIANT_KING_COBRA*OCELOT* -OCELOT_MAN* GIANT_OCELOT*JACKAL* -JACKAL_MAN* GIANT_JACKAL*CAPUCHIN* CAPUCHIN_MAN*GIANT_CAPUCHIN*SLOTH* SLOTH_MAN* GIANT_SLOTH* SPIDER_MONKEY*SPIDER_MONKEY_MAN*GIANT_SPIDER_MONKEY*PANGOLIN* PANGOLIN_MAN*GIANT_PANGOLIN* BLACK_MAMBA*BLACK_MAMBA_MAN*GIANT_BLACK_MAMBA* -BEAR_SLOTH*SLOTH_BEAR_MAN*GIANT_SLOTH_BEAR*AYE-AYE* AYE-AYE_MAN* GIANT_AYE-AYE* -BUSHMASTER*BUSHMASTER_MAN*GIANT_BUSHMASTER*PYTHON* -PYTHON_MAN* GIANT_PYTHON*TAPIR* TAPIR_MAN* GIANT_TAPIR*IMPALA* -IMPALA_MAN* GIANT_IMPALA*AARDVARK* AARDVARK_MAN*GIANT_AARDVARK* LION_TAMARIN*LION_TAMARIN_MAN*GIANT_LION_TAMARIN*STOAT* STOAT_MAN* GIANT_STOAT*LYNX*LYNX_MAN* -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/soap.dfstock b/data/stockpiles/soap.dfstock index 2c5a367375..0436f1e7a2 100644 Binary files a/data/stockpiles/soap.dfstock and b/data/stockpiles/soap.dfstock differ diff --git a/data/stockpiles/steelarmor.dfstock b/data/stockpiles/steelarmor.dfstock index aff9f56d21..c2ba86fcbb 100644 Binary files a/data/stockpiles/steelarmor.dfstock and b/data/stockpiles/steelarmor.dfstock differ diff --git a/data/stockpiles/steelbars.dfstock b/data/stockpiles/steelbars.dfstock index bef071d150..888f32e53a 100644 Binary files a/data/stockpiles/steelbars.dfstock and b/data/stockpiles/steelbars.dfstock differ diff --git a/data/stockpiles/steelweapons.dfstock b/data/stockpiles/steelweapons.dfstock index 4b742ca4b6..fc52339252 100644 Binary files a/data/stockpiles/steelweapons.dfstock and b/data/stockpiles/steelweapons.dfstock differ diff --git a/data/stockpiles/stone.dfstock b/data/stockpiles/stone.dfstock deleted file mode 100644 index fcc8dedec5..0000000000 Binary files a/data/stockpiles/stone.dfstock and /dev/null differ diff --git a/data/stockpiles/stonetools.dfstock b/data/stockpiles/stonetools.dfstock index 6f6040189d..dee961a743 100644 Binary files a/data/stockpiles/stonetools.dfstock and b/data/stockpiles/stonetools.dfstock differ diff --git a/data/stockpiles/stoneweapons.dfstock b/data/stockpiles/stoneweapons.dfstock index 8a6ee77aa4..acba2374c1 100644 Binary files a/data/stockpiles/stoneweapons.dfstock and b/data/stockpiles/stoneweapons.dfstock differ diff --git a/data/stockpiles/tallow.dfstock b/data/stockpiles/tallow.dfstock deleted file mode 100644 index 2dbd68d311..0000000000 --- a/data/stockpiles/tallow.dfstock +++ /dev/null @@ -1 +0,0 @@ -¾ŽjCREATURE:TOAD:TALLOWjCREATURE:TOAD_MAN:TALLOWjCREATURE:GIANT_TOAD:TALLOWjCREATURE:WORM:TALLOWjCREATURE:WORM_MAN:TALLOWjCREATURE:BIRD_BLUEJAY:TALLOWjCREATURE:BLUEJAY_MAN:TALLOWjCREATURE:GIANT_BLUEJAY:TALLOWjCREATURE:BIRD_CARDINAL:TALLOWjCREATURE:CARDINAL_MAN:TALLOWjCREATURE:GIANT_CARDINAL:TALLOWjCREATURE:BIRD_GRACKLE:TALLOWjCREATURE:GRACKLE_MAN:TALLOWjCREATURE:GIANT_GRACKLE:TALLOWjCREATURE:BIRD_ORIOLE:TALLOWjCREATURE:ORIOLE_MAN:TALLOWjCREATURE:GIANT_ORIOLE:TALLOWj!CREATURE:BIRD_RW_BLACKBIRD:TALLOWj CREATURE:RW_BLACKBIRD_MAN:TALLOWj"CREATURE:GIANT_RW_BLACKBIRD:TALLOWjCREATURE:BIRD_PENGUIN:TALLOWj#CREATURE:BIRD_PENGUIN_LITTLE:TALLOWj$CREATURE:BIRD_PENGUIN_EMPEROR:TALLOWjCREATURE:PENGUIN MAN:TALLOWj"CREATURE:BIRD_PENGUIN_GIANT:TALLOWj%CREATURE:BIRD_FALCON_PEREGRINE:TALLOWj$CREATURE:PEREGRINE FALCON MAN:TALLOWj&CREATURE:GIANT PEREGRINE FALCON:TALLOWjCREATURE:BIRD_KIWI:TALLOWjCREATURE:KIWI MAN:TALLOWjCREATURE:BIRD_KIWI_GIANT:TALLOWjCREATURE:BIRD_OSTRICH:TALLOWjCREATURE:OSTRICH MAN:TALLOWj"CREATURE:BIRD_OSTRICH_GIANT:TALLOWjCREATURE:BIRD_CROW:TALLOWjCREATURE:CROW_MAN:TALLOWjCREATURE:GIANT_CROW:TALLOWjCREATURE:BIRD_RAVEN:TALLOWjCREATURE:RAVEN_MAN:TALLOWjCREATURE:GIANT_RAVEN:TALLOWjCREATURE:BIRD_CASSOWARY:TALLOWjCREATURE:CASSOWARY_MAN:TALLOWjCREATURE:GIANT_CASSOWARY:TALLOWjCREATURE:BIRD_KEA:TALLOWjCREATURE:KEA_MAN:TALLOWjCREATURE:GIANT_KEA:TALLOWjCREATURE:BIRD_OWL_SNOWY:TALLOWjCREATURE:SNOWY_OWL_MAN:TALLOWjCREATURE:GIANT_SNOWY_OWL:TALLOWjCREATURE:SPARROW:TALLOWjCREATURE:SPARROW_MAN:TALLOWjCREATURE:GIANT_SPARROW:TALLOWj CREATURE:BIRD_STORK_WHITE:TALLOWjCREATURE:WHITE_STORK_MAN:TALLOWj!CREATURE:GIANT_WHITE_STORK:TALLOWjCREATURE:BIRD_LOON:TALLOWjCREATURE:LOON_MAN:TALLOWjCREATURE:GIANT_LOON:TALLOWjCREATURE:BIRD_OWL_BARN:TALLOWjCREATURE:BARN_OWL_MAN:TALLOWjCREATURE:GIANT_BARN_OWL:TALLOWjCREATURE:BIRD_PARAKEET:TALLOWjCREATURE:PARAKEET_MAN:TALLOWjCREATURE:GIANT_PARAKEET:TALLOWjCREATURE:BIRD_KAKAPO:TALLOWjCREATURE:KAKAPO_MAN:TALLOWjCREATURE:GIANT_KAKAPO:TALLOWj CREATURE:BIRD_PARROT_GREY:TALLOWjCREATURE:GREY_PARROT_MAN:TALLOWj!CREATURE:GIANT_GREY_PARROT:TALLOWjCREATURE:BIRD_PUFFIN:TALLOWjCREATURE:PUFFIN_MAN:TALLOWjCREATURE:GIANT_PUFFIN:TALLOWjCREATURE:BIRD_SWAN:TALLOWjCREATURE:SWAN_MAN:TALLOWjCREATURE:GIANT_SWAN:TALLOWjCREATURE:BIRD_LORIKEET:TALLOWjCREATURE:LORIKEET_MAN:TALLOWjCREATURE:GIANT_LORIKEET:TALLOWjCREATURE:BIRD_WREN:TALLOWjCREATURE:WREN_MAN:TALLOWjCREATURE:GIANT_WREN:TALLOWjCREATURE:BIRD_OSPREY:TALLOWjCREATURE:OSPREY_MAN:TALLOWjCREATURE:GIANT_OSPREY:TALLOWjCREATURE:BIRD_EMU:TALLOWjCREATURE:EMU_MAN:TALLOWjCREATURE:GIANT_EMU:TALLOWjCREATURE:BIRD_COCKATIEL:TALLOWjCREATURE:COCKATIEL_MAN:TALLOWjCREATURE:GIANT_COCKATIEL:TALLOWj)CREATURE:BIRD_LOVEBIRD_PEACH-FACED:TALLOWj(CREATURE:PEACH-FACED_LOVEBIRD_MAN:TALLOWj*CREATURE:GIANT_PEACH-FACED_LOVEBIRD:TALLOWjCREATURE:BIRD_MAGPIE:TALLOWjCREATURE:MAGPIE_MAN:TALLOWjCREATURE:GIANT_MAGPIE:TALLOWjCREATURE:BIRD_KESTREL:TALLOWjCREATURE:KESTREL_MAN:TALLOWjCREATURE:GIANT_KESTREL:TALLOWjCREATURE:BIRD_ALBATROSS:TALLOWjCREATURE:ALBATROSS_MAN:TALLOWjCREATURE:GIANT_ALBATROSS:TALLOWj%CREATURE:BIRD_OWL_GREAT_HORNED:TALLOWj$CREATURE:GREAT_HORNED_OWL_MAN:TALLOWj&CREATURE:GIANT_GREAT_HORNED_OWL:TALLOWjCREATURE:BIRD_EAGLE:TALLOWjCREATURE:EAGLE_MAN:TALLOWjCREATURE:GIANT_EAGLE:TALLOWjCREATURE:BIRD_HORNBILL:TALLOWjCREATURE:HORNBILL_MAN:TALLOWjCREATURE:GIANT_HORNBILL:TALLOWj$CREATURE:BIRD_LOVEBIRD_MASKED:TALLOWj#CREATURE:MASKED_LOVEBIRD_MAN:TALLOWj%CREATURE:GIANT_MASKED_LOVEBIRD:TALLOWjCREATURE:BIRD_BUSHTIT:TALLOWjCREATURE:BUSHTIT_MAN:TALLOWjCREATURE:GIANT_BUSHTIT:TALLOWjCREATURE:DAMSELFLY:TALLOWjCREATURE:DAMSELFLY_MAN:TALLOWjCREATURE:GIANT_DAMSELFLY:TALLOWjCREATURE:MOTH:TALLOWjCREATURE:MOTH_MAN:TALLOWjCREATURE:GIANT_MOTH:TALLOWjCREATURE:GRASSHOPPER:TALLOWjCREATURE:GRASSHOPPER_MAN:TALLOWj!CREATURE:GIANT_GRASSHOPPER:TALLOWjCREATURE:BARK_SCORPION:TALLOWj!CREATURE:BARK_SCORPION_MAN:TALLOWj#CREATURE:GIANT_BARK_SCORPION:TALLOWjCREATURE:MANTIS:TALLOWjCREATURE:MANTIS_MAN:TALLOWjCREATURE:GIANT_MANTIS:TALLOWjCREATURE:TICK:TALLOWjCREATURE:TICK_MAN:TALLOWjCREATURE:GIANT_TICK:TALLOWjCREATURE:LOUSE:TALLOWjCREATURE:LOUSE_MAN:TALLOWjCREATURE:GIANT_LOUSE:TALLOWjCREATURE:THRIPS:TALLOWjCREATURE:THRIPS_MAN:TALLOWjCREATURE:GIANT_THRIPS:TALLOWjCREATURE:SLUG:TALLOWjCREATURE:SLUG_MAN:TALLOWjCREATURE:GIANT_SLUG:TALLOWjCREATURE:MOSQUITO:TALLOWjCREATURE:MOSQUITO_MAN:TALLOWjCREATURE:GIANT_MOSQUITO:TALLOWjCREATURE:SPIDER_JUMPING:TALLOWj"CREATURE:JUMPING_SPIDER_MAN:TALLOWj$CREATURE:GIANT_JUMPING_SPIDER:TALLOWjCREATURE:TERMITE:TALLOWjCREATURE:MOON_SNAIL:TALLOWjCREATURE:MOON_SNAIL_MAN:TALLOWj CREATURE:GIANT_MOON_SNAIL:TALLOWj$CREATURE:SPIDER_BROWN_RECLUSE:TALLOWj(CREATURE:BROWN_RECLUSE_SPIDER_MAN:TALLOWj*CREATURE:GIANT_BROWN_RECLUSE_SPIDER:TALLOWjCREATURE:SNAIL:TALLOWjCREATURE:SNAIL_MAN:TALLOWjCREATURE:GIANT_SNAIL:TALLOWjCREATURE:GECKO_LEOPARD:TALLOWj!CREATURE:LEOPARD_GECKO_MAN:TALLOWj#CREATURE:GIANT_LEOPARD_GECKO:TALLOWjCREATURE:DESERT TORTOISE:TALLOWj#CREATURE:DESERT_TORTOISE_MAN:TALLOWj%CREATURE:GIANT_DESERT_TORTOISE:TALLOWjCREATURE:GILA_MONSTER:TALLOWj CREATURE:GILA_MONSTER_MAN:TALLOWj"CREATURE:GIANT_GILA_MONSTER:TALLOWjCREATURE:DOG:TALLOWjCREATURE:CAT:TALLOWjCREATURE:MULE:TALLOWjCREATURE:DONKEY:TALLOWjCREATURE:HORSE:TALLOWjCREATURE:COW:TALLOWjCREATURE:SHEEP:TALLOWjCREATURE:PIG:TALLOWjCREATURE:GOAT:TALLOWjCREATURE:BIRD_CHICKEN:TALLOWjCREATURE:CAVY:TALLOWjCREATURE:BIRD_DUCK:TALLOWjCREATURE:WATER_BUFFALO:TALLOWjCREATURE:REINDEER:TALLOWjCREATURE:BIRD_GOOSE:TALLOWjCREATURE:YAK:TALLOWjCREATURE:LLAMA:TALLOWjCREATURE:ALPACA:TALLOWjCREATURE:BIRD_GUINEAFOWL:TALLOWj!CREATURE:BIRD_PEAFOWL_BLUE:TALLOWjCREATURE:BIRD_TURKEY:TALLOWjCREATURE:RABBIT:TALLOWjCREATURE:FLY:TALLOWjCREATURE:FLY_MAN:TALLOWjCREATURE:GIANT_FLY:TALLOWjCREATURE:ROACH_LARGE:TALLOWjCREATURE:ROACH_MAN:TALLOWjCREATURE:GIANT_ROACH:TALLOWjCREATURE:BEETLE:TALLOWjCREATURE:BEETLE_MAN:TALLOWjCREATURE:GIANT_BEETLE:TALLOWjCREATURE:ANT:TALLOWj!CREATURE:BUTTERFLY_MONARCH:TALLOWj%CREATURE:BUTTERFLY_MONARCH_MAN:TALLOWj'CREATURE:GIANT_BUTTERFLY_MONARCH:TALLOWjCREATURE:FIREFLY:TALLOWjCREATURE:FIREFLY_MAN:TALLOWjCREATURE:GIANT_FIREFLY:TALLOWjCREATURE:DRAGONFLY:TALLOWjCREATURE:DRAGONFLY_MAN:TALLOWjCREATURE:GIANT_DRAGONFLY:TALLOWjCREATURE:HONEY_BEE:TALLOWjCREATURE:BUMBLEBEE:TALLOWjCREATURE:GOAT_MOUNTAIN:TALLOWj!CREATURE:GOAT_MOUNTAIN_MAN:TALLOWj#CREATURE:GIANT_GOAT_MOUNTAIN:TALLOWjCREATURE:MARMOT_HOARY:TALLOWj CREATURE:MARMOT_HOARY_MAN:TALLOWj"CREATURE:GIANT_MARMOT_HOARY:TALLOWjCREATURE:GNOME_MOUNTAIN:TALLOWjCREATURE:GNOME_DARK:TALLOWjCREATURE:WALRUS:TALLOWjCREATURE:WALRUS_MAN:TALLOWjCREATURE:GIANT_WALRUS:TALLOWj CREATURE:FISH_LAMPREY_SEA:TALLOWj!CREATURE:SHARK_GREAT_WHITE:TALLOWjCREATURE:SHARK_FRILL:TALLOWj#CREATURE:SHARK_SPINY_DOGFISH:TALLOWj'CREATURE:SHARK_WOBBEGONG_SPOTTED:TALLOWjCREATURE:SHARK_WHALE:TALLOWjCREATURE:SHARK_BASKING:TALLOWjCREATURE:SHARK_NURSE:TALLOWj#CREATURE:SHARK_MAKO_SHORTFIN:TALLOWj"CREATURE:SHARK_MAKO_LONGFIN:TALLOWjCREATURE:SHARK_TIGER:TALLOWjCREATURE:SHARK_BULL:TALLOWj#CREATURE:SHARK_REEF_BLACKTIP:TALLOWj#CREATURE:SHARK_REEF_WHITETIP:TALLOWjCREATURE:SHARK_BLUE:TALLOWj CREATURE:SHARK_HAMMERHEAD:TALLOWjCREATURE:SHARK_ANGEL:TALLOWj!CREATURE:FISH_SKATE_COMMON:TALLOWjCREATURE:FISH_RAY_MANTA:TALLOWjCREATURE:FISH_STINGRAY:TALLOWjCREATURE:FISH_COELACANTH:TALLOWjCREATURE:FISH_STURGEON:TALLOWjCREATURE:FISH_CONGER_EEL:TALLOWjCREATURE:FISH_MILKFISH:TALLOWjCREATURE:FISH_COD:TALLOWjCREATURE:FISH_OPAH:TALLOWj"CREATURE:FISH_GROUPER_GIANT:TALLOWjCREATURE:FISH_BLUEFISH:TALLOWj"CREATURE:FISH_SUNFISH_OCEAN:TALLOWjCREATURE:FISH_SWORDFISH:TALLOWjCREATURE:FISH_MARLIN:TALLOWjCREATURE:FISH_HALIBUT:TALLOWj$CREATURE:FISH_BARRACUDA_GREAT:TALLOWj!CREATURE:FISH_TUNA_BLUEFIN:TALLOWjCREATURE:NARWHAL:TALLOWjCREATURE:NARWHAL MAN:TALLOWjCREATURE:NARWHAL, GIANT:TALLOWjCREATURE:HIPPO:TALLOWjCREATURE:HIPPO_MAN:TALLOWjCREATURE:GIANT_HIPPO:TALLOWj!CREATURE:FISH_GAR_LONGNOSE:TALLOWjCREATURE:FISH_CARP:TALLOWjCREATURE:FISH_TIGERFISH:TALLOWjCREATURE:FISH_PIKE:TALLOWjCREATURE:PLATYPUS:TALLOWjCREATURE:PLATYPUS MAN:TALLOWjCREATURE:PLATYPUS, GIANT:TALLOWjCREATURE:BEAR_GRIZZLY:TALLOWj CREATURE:BEAR_GRIZZLY_MAN:TALLOWj"CREATURE:GIANT_BEAR_GRIZZLY:TALLOWjCREATURE:BEAR_BLACK:TALLOWjCREATURE:BEAR_BLACK_MAN:TALLOWj CREATURE:GIANT_BEAR_BLACK:TALLOWjCREATURE:DEER:TALLOWjCREATURE:DEER_MAN:TALLOWjCREATURE:GIANT_DEER:TALLOWjCREATURE:FOX:TALLOWjCREATURE:FOX_MAN:TALLOWjCREATURE:GIANT_FOX:TALLOWjCREATURE:RACCOON:TALLOWjCREATURE:RACCOON_MAN:TALLOWjCREATURE:GIANT_RACCOON:TALLOWjCREATURE:MACAQUE_RHESUS:TALLOWj"CREATURE:MACAQUE_RHESUS_MAN:TALLOWj$CREATURE:GIANT_MACAQUE_RHESUS:TALLOWjCREATURE:COUGAR:TALLOWjCREATURE:COUGAR_MAN:TALLOWjCREATURE:GIANT_COUGAR:TALLOWjCREATURE:WOLF:TALLOWjCREATURE:WOLF_MAN:TALLOWjCREATURE:GIANT_WOLF:TALLOWjCREATURE:GROUNDHOG:TALLOWjCREATURE:GROUNDHOG_MAN:TALLOWjCREATURE:GIANT_GROUNDHOG:TALLOWjCREATURE:ALLIGATOR:TALLOWjCREATURE:ALLIGATOR_MAN:TALLOWjCREATURE:GIANT_ALLIGATOR:TALLOWjCREATURE:BIRD_BUZZARD:TALLOWjCREATURE:BUZZARD_MAN:TALLOWjCREATURE:GIANT_BUZZARD:TALLOWjCREATURE:PANDA:TALLOWjCREATURE:PANDA, GIGANTIC:TALLOWjCREATURE:PANDA MAN:TALLOWjCREATURE:CAPYBARA:TALLOWjCREATURE:CAPYBARA, GIANT:TALLOWjCREATURE:CAPYBARA MAN:TALLOWjCREATURE:BADGER:TALLOWjCREATURE:BADGER MAN:TALLOWjCREATURE:BADGER, GIANT:TALLOWjCREATURE:MOOSE:TALLOWjCREATURE:MOOSE MAN:TALLOWjCREATURE:MOOSE, GIANT:TALLOWjCREATURE:RED PANDA:TALLOWjCREATURE:RED PANDA MAN:TALLOWj CREATURE:RED PANDA, GIANT:TALLOWjCREATURE:ELEPHANT:TALLOWjCREATURE:ELEPHANT_MAN:TALLOWjCREATURE:GIANT_ELEPHANT:TALLOWjCREATURE:WARTHOG:TALLOWjCREATURE:WARTHOG_MAN:TALLOWjCREATURE:GIANT_WARTHOG:TALLOWjCREATURE:LION:TALLOWjCREATURE:LION_MAN:TALLOWjCREATURE:GIANT_LION:TALLOWjCREATURE:LEOPARD:TALLOWjCREATURE:LEOPARD_MAN:TALLOWjCREATURE:GIANT_LEOPARD:TALLOWjCREATURE:JAGUAR:TALLOWjCREATURE:JAGUAR_MAN:TALLOWjCREATURE:GIANT_JAGUAR:TALLOWjCREATURE:TIGER:TALLOWjCREATURE:TIGER_MAN:TALLOWjCREATURE:GIANT_TIGER:TALLOWjCREATURE:CHEETAH:TALLOWjCREATURE:CHEETAH_MAN:TALLOWjCREATURE:GIANT_CHEETAH:TALLOWjCREATURE:GAZELLE:TALLOWjCREATURE:GAZELLE_MAN:TALLOWjCREATURE:GIANT_GAZELLE:TALLOWjCREATURE:MANDRILL:TALLOWjCREATURE:MANDRILL_MAN:TALLOWjCREATURE:GIANT_MANDRILL:TALLOWjCREATURE:CHIMPANZEE:TALLOWjCREATURE:BONOBO:TALLOWjCREATURE:GORILLA:TALLOWjCREATURE:ORANGUTAN:TALLOWjCREATURE:GIBBON_SIAMANG:TALLOWj#CREATURE:GIBBON_WHITE_HANDED:TALLOWj#CREATURE:GIBBON_BLACK_HANDED:TALLOWjCREATURE:GIBBON_GRAY:TALLOWjCREATURE:GIBBON_SILVERY:TALLOWjCREATURE:GIBBON_PILEATED:TALLOWjCREATURE:GIBBON_BILOU:TALLOWj#CREATURE:GIBBON_WHITE_BROWED:TALLOWj$CREATURE:GIBBON_BLACK_CRESTED:TALLOWjCREATURE:CAMEL_1_HUMP:TALLOWj CREATURE:CAMEL_1_HUMP_MAN:TALLOWj"CREATURE:GIANT_CAMEL_1_HUMP:TALLOWjCREATURE:CAMEL_2_HUMP:TALLOWj CREATURE:CAMEL_2_HUMP_MAN:TALLOWj"CREATURE:GIANT_CAMEL_2_HUMP:TALLOWj#CREATURE:CROCODILE_SALTWATER:TALLOWj'CREATURE:CROCODILE_SALTWATER_MAN:TALLOWj)CREATURE:GIANT_CROCODILE_SALTWATER:TALLOWjCREATURE:BIRD_VULTURE:TALLOWjCREATURE:VULTURE_MAN:TALLOWjCREATURE:GIANT_VULTURE:TALLOWjCREATURE:RHINOCEROS:TALLOWjCREATURE:RHINOCEROS_MAN:TALLOWj CREATURE:GIANT_RHINOCEROS:TALLOWjCREATURE:GIRAFFE:TALLOWjCREATURE:GIRAFFE_MAN:TALLOWjCREATURE:GIANT_GIRAFFE:TALLOWjCREATURE:HONEY BADGER:TALLOWj CREATURE:HONEY BADGER MAN:TALLOWj#CREATURE:HONEY BADGER, GIANT:TALLOWjCREATURE:GIANT TORTOISE:TALLOWj"CREATURE:GIANT TORTOISE MAN:TALLOWj!CREATURE:GIGANTIC TORTOISE:TALLOWjCREATURE:ARMADILLO:TALLOWjCREATURE:ARMADILLO MAN:TALLOWj CREATURE:ARMADILLO, GIANT:TALLOWjCREATURE:MUSKOX:TALLOWjCREATURE:MUSKOX_MAN:TALLOWjCREATURE:GIANT_MUSKOX:TALLOWjCREATURE:ELK:TALLOWjCREATURE:ELK_MAN:TALLOWjCREATURE:GIANT_ELK:TALLOWjCREATURE:BEAR_POLAR:TALLOWjCREATURE:BEAR_POLAR_MAN:TALLOWj CREATURE:GIANT_BEAR_POLAR:TALLOWjCREATURE:WOLVERINE:TALLOWjCREATURE:WOLVERINE_MAN:TALLOWjCREATURE:GIANT_WOLVERINE:TALLOWjCREATURE:CHINCHILLA:TALLOWjCREATURE:CHINCHILLA_MAN:TALLOWj CREATURE:GIANT_CHINCHILLA:TALLOWjCREATURE:FLOATING_GUTS:TALLOWjCREATURE:DRUNIAN:TALLOWjCREATURE:CREEPING_EYE:TALLOWj&CREATURE:VORACIOUS_CAVE_CRAWLER:TALLOWjCREATURE:BLIND_CAVE_OGRE:TALLOWjCREATURE:CAP_HOPPER:TALLOWjCREATURE:MAGMA_CRAB:TALLOWjCREATURE:CRUNDLE:TALLOWjCREATURE:HUNGRY_HEAD:TALLOWjCREATURE:ELK_BIRD:TALLOWjCREATURE:HELMET_SNAKE:TALLOWjCREATURE:GREEN_DEVOURER:TALLOWjCREATURE:RUTHERER:TALLOWjCREATURE:CREEPY_CRAWLER:TALLOWjCREATURE:DRALTHA:TALLOWjCREATURE:GIANT_EARTHWORM:TALLOWjCREATURE:BUGBAT:TALLOWjCREATURE:MANERA:TALLOWjCREATURE:MOLEMARIAN:TALLOWjCREATURE:JABBERER:TALLOWjCREATURE:POND_GRABBER:TALLOWjCREATURE:BLIND_CAVE_BEAR:TALLOWjCREATURE:CAVE_DRAGON:TALLOWjCREATURE:REACHER:TALLOWjCREATURE:GORLAK:TALLOWjCREATURE:OCTOPUS:TALLOWjCREATURE:OCTOPUS_MAN:TALLOWjCREATURE:GIANT_OCTOPUS:TALLOWjCREATURE:CRAB:TALLOWjCREATURE:CRAB_MAN:TALLOWjCREATURE:GIANT_CRAB:TALLOWjCREATURE:LEOPARD_SEAL:TALLOWj CREATURE:LEOPARD_SEAL_MAN:TALLOWj"CREATURE:GIANT_LEOPARD_SEAL:TALLOWjCREATURE:CUTTLEFISH:TALLOWjCREATURE:CUTTLEFISH_MAN:TALLOWj CREATURE:GIANT_CUTTLEFISH:TALLOWjCREATURE:ORCA:TALLOWjCREATURE:ORCA_MAN:TALLOWjCREATURE:GIANT_ORCA:TALLOWjCREATURE:HORSESHOE_CRAB:TALLOWj"CREATURE:HORSESHOE_CRAB_MAN:TALLOWj$CREATURE:GIANT_HORSESHOE_CRAB:TALLOWjCREATURE:SPERM_WHALE:TALLOWjCREATURE:SPERM_WHALE_MAN:TALLOWj!CREATURE:GIANT_SPERM_WHALE:TALLOWjCREATURE:ELEPHANT_SEAL:TALLOWj!CREATURE:ELEPHANT_SEAL_MAN:TALLOWj#CREATURE:GIANT_ELEPHANT_SEAL:TALLOWjCREATURE:HARP_SEAL:TALLOWjCREATURE:HARP_SEAL_MAN:TALLOWjCREATURE:GIANT_HARP_SEAL:TALLOWjCREATURE:NAUTILUS:TALLOWjCREATURE:NAUTILUS_MAN:TALLOWjCREATURE:GIANT_NAUTILUS:TALLOWjCREATURE:FOXSQUIRREL:TALLOWjCREATURE:MOGHOPPER:TALLOWjCREATURE:RAT_DEMON:TALLOWjCREATURE:WAMBLER_FLUFFY:TALLOWj'CREATURE:LIZARD_RHINO_TWO_LEGGED:TALLOWjCREATURE:WORM_KNUCKLE:TALLOWjCREATURE:SPIDER_PHANTOM:TALLOWjCREATURE:FLY_ACORN:TALLOWjCREATURE:GNAT_BLOOD:TALLOWjCREATURE:LIZARD:TALLOWjCREATURE:LIZARD_MAN:TALLOWjCREATURE:GIANT_LIZARD:TALLOWjCREATURE:SKINK:TALLOWjCREATURE:SKINK_MAN:TALLOWjCREATURE:GIANT_SKINK:TALLOWjCREATURE:CHAMELEON:TALLOWjCREATURE:CHAMELEON_MAN:TALLOWjCREATURE:GIANT_CHAMELEON:TALLOWjCREATURE:ANOLE:TALLOWjCREATURE:ANOLE_MAN:TALLOWjCREATURE:GIANT_ANOLE:TALLOWjCREATURE:IGUANA:TALLOWjCREATURE:IGUANA_MAN:TALLOWjCREATURE:GIANT_IGUANA:TALLOWjCREATURE:RIVER OTTER:TALLOWjCREATURE:SEA OTTER:TALLOWjCREATURE:OTTER_MAN:TALLOWjCREATURE:GIANT_OTTER:TALLOWjCREATURE:SNAPPING TURTLE:TALLOWj)CREATURE:ALLIGATOR SNAPPING TURTLE:TALLOWj#CREATURE:SNAPPING_TURTLE_MAN:TALLOWj%CREATURE:GIANT_SNAPPING_TURTLE:TALLOWjCREATURE:BEAVER:TALLOWjCREATURE:BEAVER_MAN:TALLOWjCREATURE:GIANT_BEAVER:TALLOWjCREATURE:LEECH:TALLOWjCREATURE:LEECH_MAN:TALLOWjCREATURE:GIANT_LEECH:TALLOWjCREATURE:AXOLOTL:TALLOWjCREATURE:AXOLOTL_MAN:TALLOWjCREATURE:GIANT_AXOLOTL:TALLOWjCREATURE:MINK:TALLOWjCREATURE:MINK_MAN:TALLOWjCREATURE:GIANT_MINK:TALLOWjCREATURE:POND_TURTLE:TALLOWjCREATURE:POND_TURTLE_MAN:TALLOWj!CREATURE:GIANT_POND_TURTLE:TALLOWjCREATURE:RAT:TALLOWjCREATURE:RAT_MAN:TALLOWjCREATURE:SQUIRREL_GRAY:TALLOWj!CREATURE:SQUIRREL_GRAY_MAN:TALLOWj#CREATURE:GIANT_SQUIRREL_GRAY:TALLOWjCREATURE:SQUIRREL_RED:TALLOWj CREATURE:SQUIRREL_RED_MAN:TALLOWj"CREATURE:GIANT_SQUIRREL_RED:TALLOWjCREATURE:CHIPMUNK:TALLOWjCREATURE:CHIPMUNK_MAN:TALLOWjCREATURE:GIANT_CHIPMUNK:TALLOWjCREATURE:HAMSTER:TALLOWjCREATURE:HAMSTER_MAN:TALLOWjCREATURE:GIANT_HAMSTER:TALLOWjCREATURE:HEDGEHOG:TALLOWjCREATURE:HEDGEHOG_MAN:TALLOWjCREATURE:GIANT_HEDGEHOG:TALLOWjCREATURE:SQUIRREL_FLYING:TALLOWj#CREATURE:FLYING_SQUIRREL_MAN:TALLOWj%CREATURE:GIANT_FLYING_SQUIRREL:TALLOWjCREATURE:MUSSEL:TALLOWjCREATURE:OYSTER:TALLOWjCREATURE:FISH_SALMON:TALLOWjCREATURE:FISH_CLOWNFISH:TALLOWjCREATURE:FISH_HAGFISH:TALLOWj"CREATURE:FISH_LAMPREY_BROOK:TALLOWjCREATURE:FISH_RAY_BAT:TALLOWj"CREATURE:FISH_RAY_THORNBACK:TALLOWj$CREATURE:FISH_RATFISH_SPOTTED:TALLOWjCREATURE:FISH_HERRING:TALLOWjCREATURE:FISH_SHAD:TALLOWjCREATURE:FISH_ANCHOVY:TALLOWj$CREATURE:FISH_TROUT_STEELHEAD:TALLOWjCREATURE:FISH_HAKE:TALLOWjCREATURE:FISH_SEAHORSE:TALLOWjCREATURE:FISH_GLASSEYE:TALLOWj)CREATURE:FISH_PUFFER_WHITE_SPOTTED:TALLOWjCREATURE:FISH_SOLE:TALLOWjCREATURE:FISH_FLOUNDER:TALLOWjCREATURE:FISH_MACKEREL:TALLOWj$CREATURE:JELLYFISH_SEA_NETTLE:TALLOWjCREATURE:SQUID:TALLOWjCREATURE:SQUID MAN:TALLOWjCREATURE:GIGANTIC SQUID:TALLOWjCREATURE:FISH_LUNGFISH:TALLOWj CREATURE:FISH_LOACH_CLOWN:TALLOWj#CREATURE:FISH_BULLHEAD_BROWN:TALLOWj$CREATURE:FISH_BULLHEAD_YELLOW:TALLOWj#CREATURE:FISH_BULLHEAD_BLACK:TALLOWj%CREATURE:FISH_KNIFEFISH_BANDED:TALLOWjCREATURE:FISH_CHAR:TALLOWj"CREATURE:FISH_TROUT_RAINBOW:TALLOWj"CREATURE:FISH_MOLLY_SAILFIN:TALLOWjCREATURE:FISH_GUPPY:TALLOWjCREATURE:FISH_PERCH:TALLOWjCREATURE:DWARF:TALLOWjCREATURE:HUMAN:TALLOWjCREATURE:ELF:TALLOWjCREATURE:GOBLIN:TALLOWjCREATURE:KOBOLD:TALLOWjCREATURE:GREMLIN:TALLOWjCREATURE:TROLL:TALLOWjCREATURE:OGRE:TALLOWjCREATURE:UNICORN:TALLOWjCREATURE:DRAGON:TALLOWjCREATURE:SATYR:TALLOWjCREATURE:GIANT:TALLOWjCREATURE:CYCLOPS:TALLOWjCREATURE:ETTIN:TALLOWjCREATURE:MINOTAUR:TALLOWjCREATURE:YETI:TALLOWjCREATURE:SASQUATCH:TALLOWjCREATURE:BLIZZARD_MAN:TALLOWjCREATURE:WOLF_ICE:TALLOWjCREATURE:FAIRY:TALLOWjCREATURE:PIXIE:TALLOWjCREATURE:BEAK_DOG:TALLOWjCREATURE:GRIMELING:TALLOWjCREATURE:BLENDEC_FOUL:TALLOWjCREATURE:STRANGLER:TALLOWjCREATURE:NIGHTWING:TALLOWjCREATURE:HARPY:TALLOWjCREATURE:HYDRA:TALLOWjCREATURE:MERPERSON:TALLOWjCREATURE:SEA_SERPENT:TALLOWjCREATURE:SEA_MONSTER:TALLOWjCREATURE:BIRD_ROC:TALLOWjCREATURE:CROCODILE_CAVE:TALLOWjCREATURE:TOAD_GIANT_CAVE:TALLOWjCREATURE:OLM_GIANT:TALLOWjCREATURE:BAT_GIANT:TALLOWjCREATURE:RAT_GIANT:TALLOWjCREATURE:RAT_LARGE:TALLOWjCREATURE:MOLE_DOG_NAKED:TALLOWjCREATURE:TROGLODYTE:TALLOWjCREATURE:MOLE_GIANT:TALLOWjCREATURE:IMP_FIRE:TALLOWj!CREATURE:SPIDER_CAVE_GIANT:TALLOWjCREATURE:SPIDER_CAVE:TALLOWjCREATURE:FISH_CAVE:TALLOWjCREATURE:CAVE_FISH_MAN:TALLOWjCREATURE:LOBSTER_CAVE:TALLOWjCREATURE:OLM:TALLOWjCREATURE:OLM_MAN:TALLOWjCREATURE:BAT:TALLOWjCREATURE:BAT_MAN:TALLOWjCREATURE:MAGGOT_PURRING:TALLOWj!CREATURE:BIRD_SWALLOW_CAVE:TALLOWj CREATURE:CAVE_SWALLOW_MAN:TALLOWj'CREATURE:BIRD_SWALLOW_CAVE_GIANT:TALLOWjCREATURE:AMPHIBIAN_MAN:TALLOWjCREATURE:REPTILE_MAN:TALLOWjCREATURE:SERPENT_MAN:TALLOWjCREATURE:ANT_MAN:TALLOWjCREATURE:RODENT MAN:TALLOWjCREATURE:WILD_BOAR:TALLOWjCREATURE:WILD_BOAR_MAN:TALLOWjCREATURE:GIANT_WILD_BOAR:TALLOWjCREATURE:COYOTE:TALLOWjCREATURE:COYOTE_MAN:TALLOWjCREATURE:GIANT_COYOTE:TALLOWjCREATURE:KANGAROO:TALLOWjCREATURE:KANGAROO_MAN:TALLOWjCREATURE:GIANT_KANGAROO:TALLOWjCREATURE:KOALA:TALLOWjCREATURE:KOALA_MAN:TALLOWjCREATURE:GIANT_KOALA:TALLOWjCREATURE:ADDER:TALLOWjCREATURE:ADDER_MAN:TALLOWjCREATURE:GIANT_ADDER:TALLOWjCREATURE:ECHIDNA:TALLOWjCREATURE:ECHIDNA_MAN:TALLOWjCREATURE:GIANT_ECHIDNA:TALLOWjCREATURE:PORCUPINE:TALLOWjCREATURE:PORCUPINE_MAN:TALLOWjCREATURE:GIANT_PORCUPINE:TALLOWjCREATURE:KINGSNAKE:TALLOWjCREATURE:KINGSNAKE_MAN:TALLOWjCREATURE:GIANT_KINGSNAKE:TALLOWjCREATURE:GRAY_LANGUR:TALLOWjCREATURE:GRAY_LANGUR_MAN:TALLOWj!CREATURE:GIANT_GRAY_LANGUR:TALLOWjCREATURE:BOBCAT:TALLOWjCREATURE:BOBCAT_MAN:TALLOWjCREATURE:GIANT_BOBCAT:TALLOWjCREATURE:SKUNK:TALLOWjCREATURE:SKUNK_MAN:TALLOWjCREATURE:GIANT_SKUNK:TALLOWjCREATURE:GREEN_TREE_FROG:TALLOWj#CREATURE:GREEN_TREE_FROG_MAN:TALLOWj%CREATURE:GIANT_GREEN_TREE_FROG:TALLOWjCREATURE:HARE:TALLOWjCREATURE:HARE_MAN:TALLOWjCREATURE:GIANT_HARE:TALLOWjCREATURE:RATTLESNAKE:TALLOWjCREATURE:RATTLESNAKE_MAN:TALLOWj!CREATURE:GIANT_RATTLESNAKE:TALLOWjCREATURE:WEASEL:TALLOWjCREATURE:WEASEL_MAN:TALLOWjCREATURE:GIANT_WEASEL:TALLOWj CREATURE:COPPERHEAD_SNAKE:TALLOWj$CREATURE:COPPERHEAD_SNAKE_MAN:TALLOWj&CREATURE:GIANT_COPPERHEAD_SNAKE:TALLOWjCREATURE:IBEX:TALLOWjCREATURE:IBEX_MAN:TALLOWjCREATURE:GIANT_IBEX:TALLOWjCREATURE:WOMBAT:TALLOWjCREATURE:WOMBAT_MAN:TALLOWjCREATURE:GIANT_WOMBAT:TALLOWjCREATURE:DINGO:TALLOWjCREATURE:DINGO_MAN:TALLOWjCREATURE:GIANT_DINGO:TALLOWjCREATURE:COATI:TALLOWjCREATURE:COATI_MAN:TALLOWjCREATURE:GIANT_COATI:TALLOWjCREATURE:OPOSSUM:TALLOWjCREATURE:OPOSSUM_MAN:TALLOWjCREATURE:GIANT_OPOSSUM:TALLOWjCREATURE:MONGOOSE:TALLOWjCREATURE:MONGOOSE_MAN:TALLOWjCREATURE:GIANT_MONGOOSE:TALLOWjCREATURE:HYENA:TALLOWjCREATURE:HYENA_MAN:TALLOWjCREATURE:GIANT_HYENA:TALLOWjCREATURE:ANACONDA:TALLOWjCREATURE:ANACONDA_MAN:TALLOWjCREATURE:GIANT_ANACONDA:TALLOWjCREATURE:MONITOR_LIZARD:TALLOWj"CREATURE:MONITOR_LIZARD_MAN:TALLOWj$CREATURE:GIANT_MONITOR_LIZARD:TALLOWjCREATURE:KING_COBRA:TALLOWjCREATURE:KING_COBRA_MAN:TALLOWj CREATURE:GIANT_KING_COBRA:TALLOWjCREATURE:OCELOT:TALLOWjCREATURE:OCELOT_MAN:TALLOWjCREATURE:GIANT_OCELOT:TALLOWjCREATURE:JACKAL:TALLOWjCREATURE:JACKAL_MAN:TALLOWjCREATURE:GIANT_JACKAL:TALLOWjCREATURE:CAPUCHIN:TALLOWjCREATURE:CAPUCHIN_MAN:TALLOWjCREATURE:GIANT_CAPUCHIN:TALLOWjCREATURE:SLOTH:TALLOWjCREATURE:SLOTH_MAN:TALLOWjCREATURE:GIANT_SLOTH:TALLOWjCREATURE:SPIDER_MONKEY:TALLOWj!CREATURE:SPIDER_MONKEY_MAN:TALLOWj#CREATURE:GIANT_SPIDER_MONKEY:TALLOWjCREATURE:PANGOLIN:TALLOWjCREATURE:PANGOLIN_MAN:TALLOWjCREATURE:GIANT_PANGOLIN:TALLOWjCREATURE:BLACK_MAMBA:TALLOWjCREATURE:BLACK_MAMBA_MAN:TALLOWj!CREATURE:GIANT_BLACK_MAMBA:TALLOWjCREATURE:BEAR_SLOTH:TALLOWjCREATURE:SLOTH_BEAR_MAN:TALLOWj CREATURE:GIANT_SLOTH_BEAR:TALLOWjCREATURE:AYE-AYE:TALLOWjCREATURE:AYE-AYE_MAN:TALLOWjCREATURE:GIANT_AYE-AYE:TALLOWjCREATURE:BUSHMASTER:TALLOWjCREATURE:BUSHMASTER_MAN:TALLOWj CREATURE:GIANT_BUSHMASTER:TALLOWjCREATURE:PYTHON:TALLOWjCREATURE:PYTHON_MAN:TALLOWjCREATURE:GIANT_PYTHON:TALLOWjCREATURE:TAPIR:TALLOWjCREATURE:TAPIR_MAN:TALLOWjCREATURE:GIANT_TAPIR:TALLOWjCREATURE:IMPALA:TALLOWjCREATURE:IMPALA_MAN:TALLOWjCREATURE:GIANT_IMPALA:TALLOWjCREATURE:AARDVARK:TALLOWjCREATURE:AARDVARK_MAN:TALLOWjCREATURE:GIANT_AARDVARK:TALLOWjCREATURE:LION_TAMARIN:TALLOWj CREATURE:LION_TAMARIN_MAN:TALLOWj"CREATURE:GIANT_LION_TAMARIN:TALLOWjCREATURE:STOAT:TALLOWjCREATURE:STOAT_MAN:TALLOWjCREATURE:GIANT_STOAT:TALLOWjCREATURE:LYNX:TALLOWjCREATURE:LYNX_MAN:TALLOWjCREATURE:GIANT_LYNX:TALLOWjCREATURE:GNOLL:TALLOWjCREATURE:NAGA:TALLOWj!CREATURE:FORGOTTEN_BEAST_2:TALLOWj!CREATURE:FORGOTTEN_BEAST_4:TALLOWj!CREATURE:FORGOTTEN_BEAST_5:TALLOWj!CREATURE:FORGOTTEN_BEAST_6:TALLOWj!CREATURE:FORGOTTEN_BEAST_7:TALLOWj"CREATURE:FORGOTTEN_BEAST_10:TALLOWj"CREATURE:FORGOTTEN_BEAST_12:TALLOWj"CREATURE:FORGOTTEN_BEAST_13:TALLOWj"CREATURE:FORGOTTEN_BEAST_16:TALLOWj"CREATURE:FORGOTTEN_BEAST_17:TALLOWj"CREATURE:FORGOTTEN_BEAST_18:TALLOWj"CREATURE:FORGOTTEN_BEAST_19:TALLOWj"CREATURE:FORGOTTEN_BEAST_20:TALLOWj"CREATURE:FORGOTTEN_BEAST_22:TALLOWj"CREATURE:FORGOTTEN_BEAST_23:TALLOWj"CREATURE:FORGOTTEN_BEAST_24:TALLOWj"CREATURE:FORGOTTEN_BEAST_25:TALLOWj"CREATURE:FORGOTTEN_BEAST_26:TALLOWj"CREATURE:FORGOTTEN_BEAST_27:TALLOWj"CREATURE:FORGOTTEN_BEAST_28:TALLOWj"CREATURE:FORGOTTEN_BEAST_29:TALLOWj"CREATURE:FORGOTTEN_BEAST_32:TALLOWj"CREATURE:FORGOTTEN_BEAST_33:TALLOWj"CREATURE:FORGOTTEN_BEAST_34:TALLOWj"CREATURE:FORGOTTEN_BEAST_35:TALLOWj"CREATURE:FORGOTTEN_BEAST_36:TALLOWj"CREATURE:FORGOTTEN_BEAST_39:TALLOWj"CREATURE:FORGOTTEN_BEAST_41:TALLOWj"CREATURE:FORGOTTEN_BEAST_42:TALLOWj"CREATURE:FORGOTTEN_BEAST_43:TALLOWj"CREATURE:FORGOTTEN_BEAST_44:TALLOWj"CREATURE:FORGOTTEN_BEAST_45:TALLOWj"CREATURE:FORGOTTEN_BEAST_47:TALLOWj"CREATURE:FORGOTTEN_BEAST_50:TALLOWj"CREATURE:FORGOTTEN_BEAST_52:TALLOWj"CREATURE:FORGOTTEN_BEAST_53:TALLOWj"CREATURE:FORGOTTEN_BEAST_55:TALLOWj"CREATURE:FORGOTTEN_BEAST_56:TALLOWj"CREATURE:FORGOTTEN_BEAST_58:TALLOWj"CREATURE:FORGOTTEN_BEAST_59:TALLOWj"CREATURE:FORGOTTEN_BEAST_60:TALLOWj"CREATURE:FORGOTTEN_BEAST_61:TALLOWj"CREATURE:FORGOTTEN_BEAST_64:TALLOWj"CREATURE:FORGOTTEN_BEAST_66:TALLOWj"CREATURE:FORGOTTEN_BEAST_67:TALLOWj"CREATURE:FORGOTTEN_BEAST_69:TALLOWj"CREATURE:FORGOTTEN_BEAST_71:TALLOWj"CREATURE:FORGOTTEN_BEAST_72:TALLOWj"CREATURE:FORGOTTEN_BEAST_73:TALLOWj"CREATURE:FORGOTTEN_BEAST_74:TALLOWj"CREATURE:FORGOTTEN_BEAST_75:TALLOWj"CREATURE:FORGOTTEN_BEAST_78:TALLOWj"CREATURE:FORGOTTEN_BEAST_80:TALLOWj"CREATURE:FORGOTTEN_BEAST_81:TALLOWj"CREATURE:FORGOTTEN_BEAST_82:TALLOWj"CREATURE:FORGOTTEN_BEAST_83:TALLOWj"CREATURE:FORGOTTEN_BEAST_84:TALLOWj"CREATURE:FORGOTTEN_BEAST_86:TALLOWj"CREATURE:FORGOTTEN_BEAST_87:TALLOWj"CREATURE:FORGOTTEN_BEAST_89:TALLOWj"CREATURE:FORGOTTEN_BEAST_90:TALLOWj"CREATURE:FORGOTTEN_BEAST_92:TALLOWj"CREATURE:FORGOTTEN_BEAST_94:TALLOWj"CREATURE:FORGOTTEN_BEAST_95:TALLOWj"CREATURE:FORGOTTEN_BEAST_96:TALLOWj"CREATURE:FORGOTTEN_BEAST_97:TALLOWj"CREATURE:FORGOTTEN_BEAST_98:TALLOWj#CREATURE:FORGOTTEN_BEAST_100:TALLOWj#CREATURE:FORGOTTEN_BEAST_105:TALLOWj#CREATURE:FORGOTTEN_BEAST_106:TALLOWj#CREATURE:FORGOTTEN_BEAST_107:TALLOWj#CREATURE:FORGOTTEN_BEAST_108:TALLOWj#CREATURE:FORGOTTEN_BEAST_109:TALLOWj#CREATURE:FORGOTTEN_BEAST_111:TALLOWj#CREATURE:FORGOTTEN_BEAST_112:TALLOWj#CREATURE:FORGOTTEN_BEAST_113:TALLOWj#CREATURE:FORGOTTEN_BEAST_114:TALLOWj#CREATURE:FORGOTTEN_BEAST_115:TALLOWj#CREATURE:FORGOTTEN_BEAST_116:TALLOWj#CREATURE:FORGOTTEN_BEAST_117:TALLOWj#CREATURE:FORGOTTEN_BEAST_118:TALLOWj#CREATURE:FORGOTTEN_BEAST_119:TALLOWj#CREATURE:FORGOTTEN_BEAST_120:TALLOWj#CREATURE:FORGOTTEN_BEAST_122:TALLOWj#CREATURE:FORGOTTEN_BEAST_123:TALLOWj#CREATURE:FORGOTTEN_BEAST_124:TALLOWj#CREATURE:FORGOTTEN_BEAST_125:TALLOWj#CREATURE:FORGOTTEN_BEAST_127:TALLOWj#CREATURE:FORGOTTEN_BEAST_128:TALLOWj#CREATURE:FORGOTTEN_BEAST_130:TALLOWj#CREATURE:FORGOTTEN_BEAST_131:TALLOWj#CREATURE:FORGOTTEN_BEAST_132:TALLOWj#CREATURE:FORGOTTEN_BEAST_133:TALLOWj#CREATURE:FORGOTTEN_BEAST_134:TALLOWj#CREATURE:FORGOTTEN_BEAST_135:TALLOWj#CREATURE:FORGOTTEN_BEAST_137:TALLOWj#CREATURE:FORGOTTEN_BEAST_138:TALLOWj#CREATURE:FORGOTTEN_BEAST_139:TALLOWj#CREATURE:FORGOTTEN_BEAST_141:TALLOWj#CREATURE:FORGOTTEN_BEAST_142:TALLOWj#CREATURE:FORGOTTEN_BEAST_144:TALLOWj#CREATURE:FORGOTTEN_BEAST_146:TALLOWj#CREATURE:FORGOTTEN_BEAST_148:TALLOWj#CREATURE:FORGOTTEN_BEAST_149:TALLOWj#CREATURE:FORGOTTEN_BEAST_150:TALLOWj#CREATURE:FORGOTTEN_BEAST_152:TALLOWj#CREATURE:FORGOTTEN_BEAST_154:TALLOWj#CREATURE:FORGOTTEN_BEAST_156:TALLOWj#CREATURE:FORGOTTEN_BEAST_157:TALLOWj#CREATURE:FORGOTTEN_BEAST_158:TALLOWj#CREATURE:FORGOTTEN_BEAST_159:TALLOWj#CREATURE:FORGOTTEN_BEAST_161:TALLOWj#CREATURE:FORGOTTEN_BEAST_162:TALLOWj#CREATURE:FORGOTTEN_BEAST_163:TALLOWj#CREATURE:FORGOTTEN_BEAST_165:TALLOWj#CREATURE:FORGOTTEN_BEAST_167:TALLOWj#CREATURE:FORGOTTEN_BEAST_168:TALLOWj#CREATURE:FORGOTTEN_BEAST_169:TALLOWj#CREATURE:FORGOTTEN_BEAST_170:TALLOWj#CREATURE:FORGOTTEN_BEAST_171:TALLOWj#CREATURE:FORGOTTEN_BEAST_172:TALLOWj#CREATURE:FORGOTTEN_BEAST_173:TALLOWj#CREATURE:FORGOTTEN_BEAST_176:TALLOWj#CREATURE:FORGOTTEN_BEAST_177:TALLOWj#CREATURE:FORGOTTEN_BEAST_178:TALLOWj#CREATURE:FORGOTTEN_BEAST_179:TALLOWj#CREATURE:FORGOTTEN_BEAST_180:TALLOWj#CREATURE:FORGOTTEN_BEAST_181:TALLOWj#CREATURE:FORGOTTEN_BEAST_182:TALLOWj#CREATURE:FORGOTTEN_BEAST_183:TALLOWj#CREATURE:FORGOTTEN_BEAST_184:TALLOWj#CREATURE:FORGOTTEN_BEAST_185:TALLOWj#CREATURE:FORGOTTEN_BEAST_186:TALLOWj#CREATURE:FORGOTTEN_BEAST_188:TALLOWj#CREATURE:FORGOTTEN_BEAST_189:TALLOWj#CREATURE:FORGOTTEN_BEAST_190:TALLOWj#CREATURE:FORGOTTEN_BEAST_191:TALLOWj#CREATURE:FORGOTTEN_BEAST_193:TALLOWj#CREATURE:FORGOTTEN_BEAST_194:TALLOWj#CREATURE:FORGOTTEN_BEAST_195:TALLOWj#CREATURE:FORGOTTEN_BEAST_196:TALLOWj#CREATURE:FORGOTTEN_BEAST_197:TALLOWj#CREATURE:FORGOTTEN_BEAST_199:TALLOWj#CREATURE:FORGOTTEN_BEAST_200:TALLOWj#CREATURE:FORGOTTEN_BEAST_201:TALLOWj#CREATURE:FORGOTTEN_BEAST_204:TALLOWj#CREATURE:FORGOTTEN_BEAST_205:TALLOWj#CREATURE:FORGOTTEN_BEAST_206:TALLOWj#CREATURE:FORGOTTEN_BEAST_207:TALLOWj#CREATURE:FORGOTTEN_BEAST_208:TALLOWj#CREATURE:FORGOTTEN_BEAST_209:TALLOWj#CREATURE:FORGOTTEN_BEAST_210:TALLOWj#CREATURE:FORGOTTEN_BEAST_211:TALLOWj#CREATURE:FORGOTTEN_BEAST_212:TALLOWj#CREATURE:FORGOTTEN_BEAST_213:TALLOWj#CREATURE:FORGOTTEN_BEAST_214:TALLOWj#CREATURE:FORGOTTEN_BEAST_215:TALLOWj#CREATURE:FORGOTTEN_BEAST_216:TALLOWj#CREATURE:FORGOTTEN_BEAST_217:TALLOWj#CREATURE:FORGOTTEN_BEAST_218:TALLOWj#CREATURE:FORGOTTEN_BEAST_220:TALLOWj#CREATURE:FORGOTTEN_BEAST_221:TALLOWj#CREATURE:FORGOTTEN_BEAST_224:TALLOWj#CREATURE:FORGOTTEN_BEAST_225:TALLOWj#CREATURE:FORGOTTEN_BEAST_228:TALLOWj#CREATURE:FORGOTTEN_BEAST_231:TALLOWj#CREATURE:FORGOTTEN_BEAST_232:TALLOWj#CREATURE:FORGOTTEN_BEAST_235:TALLOWj#CREATURE:FORGOTTEN_BEAST_236:TALLOWj#CREATURE:FORGOTTEN_BEAST_237:TALLOWj#CREATURE:FORGOTTEN_BEAST_239:TALLOWj#CREATURE:FORGOTTEN_BEAST_240:TALLOWj#CREATURE:FORGOTTEN_BEAST_242:TALLOWj#CREATURE:FORGOTTEN_BEAST_243:TALLOWj#CREATURE:FORGOTTEN_BEAST_244:TALLOWj#CREATURE:FORGOTTEN_BEAST_245:TALLOWj#CREATURE:FORGOTTEN_BEAST_246:TALLOWj#CREATURE:FORGOTTEN_BEAST_247:TALLOWj#CREATURE:FORGOTTEN_BEAST_248:TALLOWj#CREATURE:FORGOTTEN_BEAST_249:TALLOWj#CREATURE:FORGOTTEN_BEAST_253:TALLOWj#CREATURE:FORGOTTEN_BEAST_255:TALLOWj#CREATURE:FORGOTTEN_BEAST_256:TALLOWj#CREATURE:FORGOTTEN_BEAST_259:TALLOWj#CREATURE:FORGOTTEN_BEAST_260:TALLOWj#CREATURE:FORGOTTEN_BEAST_263:TALLOWj#CREATURE:FORGOTTEN_BEAST_264:TALLOWj#CREATURE:FORGOTTEN_BEAST_265:TALLOWj#CREATURE:FORGOTTEN_BEAST_266:TALLOWj#CREATURE:FORGOTTEN_BEAST_268:TALLOWj#CREATURE:FORGOTTEN_BEAST_269:TALLOWj#CREATURE:FORGOTTEN_BEAST_270:TALLOWj#CREATURE:FORGOTTEN_BEAST_271:TALLOWj#CREATURE:FORGOTTEN_BEAST_272:TALLOWj#CREATURE:FORGOTTEN_BEAST_273:TALLOWj#CREATURE:FORGOTTEN_BEAST_274:TALLOWj#CREATURE:FORGOTTEN_BEAST_275:TALLOWj#CREATURE:FORGOTTEN_BEAST_276:TALLOWj#CREATURE:FORGOTTEN_BEAST_277:TALLOWj#CREATURE:FORGOTTEN_BEAST_279:TALLOWj#CREATURE:FORGOTTEN_BEAST_280:TALLOWj#CREATURE:FORGOTTEN_BEAST_281:TALLOWj#CREATURE:FORGOTTEN_BEAST_282:TALLOWj#CREATURE:FORGOTTEN_BEAST_283:TALLOWj#CREATURE:FORGOTTEN_BEAST_285:TALLOWj#CREATURE:FORGOTTEN_BEAST_286:TALLOWj#CREATURE:FORGOTTEN_BEAST_287:TALLOWj#CREATURE:FORGOTTEN_BEAST_288:TALLOWj#CREATURE:FORGOTTEN_BEAST_289:TALLOWj#CREATURE:FORGOTTEN_BEAST_290:TALLOWj#CREATURE:FORGOTTEN_BEAST_293:TALLOWj#CREATURE:FORGOTTEN_BEAST_295:TALLOWj#CREATURE:FORGOTTEN_BEAST_297:TALLOWj#CREATURE:FORGOTTEN_BEAST_300:TALLOWj#CREATURE:FORGOTTEN_BEAST_302:TALLOWj#CREATURE:FORGOTTEN_BEAST_306:TALLOWj#CREATURE:FORGOTTEN_BEAST_307:TALLOWj#CREATURE:FORGOTTEN_BEAST_310:TALLOWj#CREATURE:FORGOTTEN_BEAST_311:TALLOWj#CREATURE:FORGOTTEN_BEAST_312:TALLOWj#CREATURE:FORGOTTEN_BEAST_314:TALLOWj#CREATURE:FORGOTTEN_BEAST_316:TALLOWj#CREATURE:FORGOTTEN_BEAST_317:TALLOWj#CREATURE:FORGOTTEN_BEAST_318:TALLOWj#CREATURE:FORGOTTEN_BEAST_320:TALLOWj#CREATURE:FORGOTTEN_BEAST_321:TALLOWj#CREATURE:FORGOTTEN_BEAST_322:TALLOWj#CREATURE:FORGOTTEN_BEAST_323:TALLOWj#CREATURE:FORGOTTEN_BEAST_324:TALLOWj#CREATURE:FORGOTTEN_BEAST_325:TALLOWj#CREATURE:FORGOTTEN_BEAST_326:TALLOWj#CREATURE:FORGOTTEN_BEAST_327:TALLOWj#CREATURE:FORGOTTEN_BEAST_328:TALLOWj#CREATURE:FORGOTTEN_BEAST_329:TALLOWj#CREATURE:FORGOTTEN_BEAST_330:TALLOWj#CREATURE:FORGOTTEN_BEAST_332:TALLOWj#CREATURE:FORGOTTEN_BEAST_333:TALLOWj#CREATURE:FORGOTTEN_BEAST_335:TALLOWj#CREATURE:FORGOTTEN_BEAST_336:TALLOWj#CREATURE:FORGOTTEN_BEAST_337:TALLOWj#CREATURE:FORGOTTEN_BEAST_338:TALLOWj#CREATURE:FORGOTTEN_BEAST_339:TALLOWj#CREATURE:FORGOTTEN_BEAST_341:TALLOWj#CREATURE:FORGOTTEN_BEAST_342:TALLOWj#CREATURE:FORGOTTEN_BEAST_343:TALLOWj#CREATURE:FORGOTTEN_BEAST_344:TALLOWj#CREATURE:FORGOTTEN_BEAST_347:TALLOWj#CREATURE:FORGOTTEN_BEAST_348:TALLOWj#CREATURE:FORGOTTEN_BEAST_349:TALLOWj#CREATURE:FORGOTTEN_BEAST_351:TALLOWj#CREATURE:FORGOTTEN_BEAST_352:TALLOWj#CREATURE:FORGOTTEN_BEAST_353:TALLOWj#CREATURE:FORGOTTEN_BEAST_354:TALLOWj#CREATURE:FORGOTTEN_BEAST_355:TALLOWj#CREATURE:FORGOTTEN_BEAST_356:TALLOWj#CREATURE:FORGOTTEN_BEAST_357:TALLOWj#CREATURE:FORGOTTEN_BEAST_358:TALLOWj#CREATURE:FORGOTTEN_BEAST_359:TALLOWj#CREATURE:FORGOTTEN_BEAST_361:TALLOWj#CREATURE:FORGOTTEN_BEAST_363:TALLOWj#CREATURE:FORGOTTEN_BEAST_364:TALLOWj#CREATURE:FORGOTTEN_BEAST_365:TALLOWj#CREATURE:FORGOTTEN_BEAST_366:TALLOWj#CREATURE:FORGOTTEN_BEAST_367:TALLOWj#CREATURE:FORGOTTEN_BEAST_368:TALLOWj#CREATURE:FORGOTTEN_BEAST_370:TALLOWj#CREATURE:FORGOTTEN_BEAST_372:TALLOWj#CREATURE:FORGOTTEN_BEAST_374:TALLOWj#CREATURE:FORGOTTEN_BEAST_375:TALLOWj#CREATURE:FORGOTTEN_BEAST_377:TALLOWj#CREATURE:FORGOTTEN_BEAST_378:TALLOWj#CREATURE:FORGOTTEN_BEAST_379:TALLOWj#CREATURE:FORGOTTEN_BEAST_380:TALLOWj#CREATURE:FORGOTTEN_BEAST_381:TALLOWj#CREATURE:FORGOTTEN_BEAST_382:TALLOWj#CREATURE:FORGOTTEN_BEAST_383:TALLOWj#CREATURE:FORGOTTEN_BEAST_384:TALLOWj#CREATURE:FORGOTTEN_BEAST_385:TALLOWj#CREATURE:FORGOTTEN_BEAST_386:TALLOWj#CREATURE:FORGOTTEN_BEAST_387:TALLOWj#CREATURE:FORGOTTEN_BEAST_388:TALLOWj#CREATURE:FORGOTTEN_BEAST_389:TALLOWj#CREATURE:FORGOTTEN_BEAST_390:TALLOWj#CREATURE:FORGOTTEN_BEAST_391:TALLOWj#CREATURE:FORGOTTEN_BEAST_392:TALLOWj#CREATURE:FORGOTTEN_BEAST_393:TALLOWj#CREATURE:FORGOTTEN_BEAST_396:TALLOWj#CREATURE:FORGOTTEN_BEAST_397:TALLOWj#CREATURE:FORGOTTEN_BEAST_398:TALLOWj#CREATURE:FORGOTTEN_BEAST_400:TALLOWj#CREATURE:FORGOTTEN_BEAST_403:TALLOWj#CREATURE:FORGOTTEN_BEAST_404:TALLOWj#CREATURE:FORGOTTEN_BEAST_405:TALLOWj#CREATURE:FORGOTTEN_BEAST_406:TALLOWj#CREATURE:FORGOTTEN_BEAST_407:TALLOWj#CREATURE:FORGOTTEN_BEAST_408:TALLOWj#CREATURE:FORGOTTEN_BEAST_409:TALLOWj#CREATURE:FORGOTTEN_BEAST_410:TALLOWj#CREATURE:FORGOTTEN_BEAST_411:TALLOWj#CREATURE:FORGOTTEN_BEAST_412:TALLOWj#CREATURE:FORGOTTEN_BEAST_413:TALLOWj#CREATURE:FORGOTTEN_BEAST_414:TALLOWj#CREATURE:FORGOTTEN_BEAST_416:TALLOWj#CREATURE:FORGOTTEN_BEAST_417:TALLOWj#CREATURE:FORGOTTEN_BEAST_418:TALLOWj#CREATURE:FORGOTTEN_BEAST_420:TALLOWj#CREATURE:FORGOTTEN_BEAST_421:TALLOWj#CREATURE:FORGOTTEN_BEAST_422:TALLOWj#CREATURE:FORGOTTEN_BEAST_423:TALLOWj#CREATURE:FORGOTTEN_BEAST_424:TALLOWj#CREATURE:FORGOTTEN_BEAST_427:TALLOWj#CREATURE:FORGOTTEN_BEAST_429:TALLOWj#CREATURE:FORGOTTEN_BEAST_430:TALLOWj#CREATURE:FORGOTTEN_BEAST_432:TALLOWj#CREATURE:FORGOTTEN_BEAST_433:TALLOWj#CREATURE:FORGOTTEN_BEAST_434:TALLOWj#CREATURE:FORGOTTEN_BEAST_435:TALLOWj#CREATURE:FORGOTTEN_BEAST_436:TALLOWj#CREATURE:FORGOTTEN_BEAST_437:TALLOWj#CREATURE:FORGOTTEN_BEAST_438:TALLOWj#CREATURE:FORGOTTEN_BEAST_440:TALLOWj#CREATURE:FORGOTTEN_BEAST_441:TALLOWj#CREATURE:FORGOTTEN_BEAST_442:TALLOWj#CREATURE:FORGOTTEN_BEAST_444:TALLOWj#CREATURE:FORGOTTEN_BEAST_446:TALLOWj#CREATURE:FORGOTTEN_BEAST_447:TALLOWj#CREATURE:FORGOTTEN_BEAST_448:TALLOWj#CREATURE:FORGOTTEN_BEAST_449:TALLOWj#CREATURE:FORGOTTEN_BEAST_450:TALLOWj#CREATURE:FORGOTTEN_BEAST_451:TALLOWj#CREATURE:FORGOTTEN_BEAST_453:TALLOWj#CREATURE:FORGOTTEN_BEAST_454:TALLOWj#CREATURE:FORGOTTEN_BEAST_455:TALLOWj#CREATURE:FORGOTTEN_BEAST_457:TALLOWj#CREATURE:FORGOTTEN_BEAST_459:TALLOWj#CREATURE:FORGOTTEN_BEAST_461:TALLOWj#CREATURE:FORGOTTEN_BEAST_462:TALLOWj#CREATURE:FORGOTTEN_BEAST_463:TALLOWj#CREATURE:FORGOTTEN_BEAST_465:TALLOWj#CREATURE:FORGOTTEN_BEAST_466:TALLOWj#CREATURE:FORGOTTEN_BEAST_468:TALLOWj#CREATURE:FORGOTTEN_BEAST_469:TALLOWj#CREATURE:FORGOTTEN_BEAST_470:TALLOWj#CREATURE:FORGOTTEN_BEAST_471:TALLOWj#CREATURE:FORGOTTEN_BEAST_472:TALLOWj#CREATURE:FORGOTTEN_BEAST_474:TALLOWj#CREATURE:FORGOTTEN_BEAST_475:TALLOWj#CREATURE:FORGOTTEN_BEAST_476:TALLOWj#CREATURE:FORGOTTEN_BEAST_478:TALLOWj#CREATURE:FORGOTTEN_BEAST_479:TALLOWj#CREATURE:FORGOTTEN_BEAST_480:TALLOWj#CREATURE:FORGOTTEN_BEAST_481:TALLOWj#CREATURE:FORGOTTEN_BEAST_483:TALLOWj#CREATURE:FORGOTTEN_BEAST_486:TALLOWj#CREATURE:FORGOTTEN_BEAST_487:TALLOWj#CREATURE:FORGOTTEN_BEAST_489:TALLOWj#CREATURE:FORGOTTEN_BEAST_492:TALLOWj#CREATURE:FORGOTTEN_BEAST_494:TALLOWj#CREATURE:FORGOTTEN_BEAST_495:TALLOWj#CREATURE:FORGOTTEN_BEAST_496:TALLOWj#CREATURE:FORGOTTEN_BEAST_497:TALLOWj#CREATURE:FORGOTTEN_BEAST_498:TALLOWj#CREATURE:FORGOTTEN_BEAST_499:TALLOWj#CREATURE:FORGOTTEN_BEAST_501:TALLOWj#CREATURE:FORGOTTEN_BEAST_503:TALLOWj#CREATURE:FORGOTTEN_BEAST_504:TALLOWj#CREATURE:FORGOTTEN_BEAST_505:TALLOWj#CREATURE:FORGOTTEN_BEAST_507:TALLOWj#CREATURE:FORGOTTEN_BEAST_508:TALLOWj#CREATURE:FORGOTTEN_BEAST_510:TALLOWj#CREATURE:FORGOTTEN_BEAST_512:TALLOWj#CREATURE:FORGOTTEN_BEAST_513:TALLOWj#CREATURE:FORGOTTEN_BEAST_514:TALLOWj#CREATURE:FORGOTTEN_BEAST_515:TALLOWj#CREATURE:FORGOTTEN_BEAST_516:TALLOWj#CREATURE:FORGOTTEN_BEAST_517:TALLOWj#CREATURE:FORGOTTEN_BEAST_518:TALLOWj#CREATURE:FORGOTTEN_BEAST_519:TALLOWj#CREATURE:FORGOTTEN_BEAST_520:TALLOWj#CREATURE:FORGOTTEN_BEAST_521:TALLOWj#CREATURE:FORGOTTEN_BEAST_522:TALLOWj#CREATURE:FORGOTTEN_BEAST_523:TALLOWj#CREATURE:FORGOTTEN_BEAST_525:TALLOWj#CREATURE:FORGOTTEN_BEAST_526:TALLOWj#CREATURE:FORGOTTEN_BEAST_527:TALLOWj#CREATURE:FORGOTTEN_BEAST_528:TALLOWj#CREATURE:FORGOTTEN_BEAST_529:TALLOWj#CREATURE:FORGOTTEN_BEAST_530:TALLOWj#CREATURE:FORGOTTEN_BEAST_531:TALLOWj#CREATURE:FORGOTTEN_BEAST_532:TALLOWj#CREATURE:FORGOTTEN_BEAST_533:TALLOWj#CREATURE:FORGOTTEN_BEAST_534:TALLOWj#CREATURE:FORGOTTEN_BEAST_535:TALLOWj#CREATURE:FORGOTTEN_BEAST_536:TALLOWj#CREATURE:FORGOTTEN_BEAST_539:TALLOWj#CREATURE:FORGOTTEN_BEAST_540:TALLOWj#CREATURE:FORGOTTEN_BEAST_541:TALLOWj#CREATURE:FORGOTTEN_BEAST_543:TALLOWj#CREATURE:FORGOTTEN_BEAST_545:TALLOWj#CREATURE:FORGOTTEN_BEAST_546:TALLOWj#CREATURE:FORGOTTEN_BEAST_547:TALLOWj#CREATURE:FORGOTTEN_BEAST_548:TALLOWj#CREATURE:FORGOTTEN_BEAST_549:TALLOWj#CREATURE:FORGOTTEN_BEAST_550:TALLOWj#CREATURE:FORGOTTEN_BEAST_551:TALLOWj#CREATURE:FORGOTTEN_BEAST_554:TALLOWj#CREATURE:FORGOTTEN_BEAST_555:TALLOWj#CREATURE:FORGOTTEN_BEAST_556:TALLOWj#CREATURE:FORGOTTEN_BEAST_557:TALLOWj#CREATURE:FORGOTTEN_BEAST_561:TALLOWj#CREATURE:FORGOTTEN_BEAST_562:TALLOWj#CREATURE:FORGOTTEN_BEAST_564:TALLOWj#CREATURE:FORGOTTEN_BEAST_569:TALLOWj#CREATURE:FORGOTTEN_BEAST_570:TALLOWj#CREATURE:FORGOTTEN_BEAST_571:TALLOWj#CREATURE:FORGOTTEN_BEAST_572:TALLOWj#CREATURE:FORGOTTEN_BEAST_574:TALLOWj#CREATURE:FORGOTTEN_BEAST_576:TALLOWj#CREATURE:FORGOTTEN_BEAST_578:TALLOWj#CREATURE:FORGOTTEN_BEAST_579:TALLOWj#CREATURE:FORGOTTEN_BEAST_580:TALLOWj#CREATURE:FORGOTTEN_BEAST_581:TALLOWj#CREATURE:FORGOTTEN_BEAST_583:TALLOWj#CREATURE:FORGOTTEN_BEAST_584:TALLOWj#CREATURE:FORGOTTEN_BEAST_586:TALLOWj#CREATURE:FORGOTTEN_BEAST_588:TALLOWj#CREATURE:FORGOTTEN_BEAST_589:TALLOWj#CREATURE:FORGOTTEN_BEAST_590:TALLOWj#CREATURE:FORGOTTEN_BEAST_592:TALLOWj#CREATURE:FORGOTTEN_BEAST_593:TALLOWj#CREATURE:FORGOTTEN_BEAST_594:TALLOWj#CREATURE:FORGOTTEN_BEAST_595:TALLOWj#CREATURE:FORGOTTEN_BEAST_596:TALLOWj#CREATURE:FORGOTTEN_BEAST_597:TALLOWj#CREATURE:FORGOTTEN_BEAST_599:TALLOWj#CREATURE:FORGOTTEN_BEAST_600:TALLOWj#CREATURE:FORGOTTEN_BEAST_601:TALLOWj#CREATURE:FORGOTTEN_BEAST_603:TALLOWj#CREATURE:FORGOTTEN_BEAST_605:TALLOWj#CREATURE:FORGOTTEN_BEAST_607:TALLOWj#CREATURE:FORGOTTEN_BEAST_608:TALLOWj#CREATURE:FORGOTTEN_BEAST_609:TALLOWj#CREATURE:FORGOTTEN_BEAST_610:TALLOWj#CREATURE:FORGOTTEN_BEAST_611:TALLOWj#CREATURE:FORGOTTEN_BEAST_612:TALLOWj#CREATURE:FORGOTTEN_BEAST_613:TALLOWj#CREATURE:FORGOTTEN_BEAST_614:TALLOWj#CREATURE:FORGOTTEN_BEAST_616:TALLOWj#CREATURE:FORGOTTEN_BEAST_619:TALLOWj#CREATURE:FORGOTTEN_BEAST_620:TALLOWj#CREATURE:FORGOTTEN_BEAST_621:TALLOWj#CREATURE:FORGOTTEN_BEAST_623:TALLOWj#CREATURE:FORGOTTEN_BEAST_624:TALLOWj#CREATURE:FORGOTTEN_BEAST_625:TALLOWj#CREATURE:FORGOTTEN_BEAST_626:TALLOWj#CREATURE:FORGOTTEN_BEAST_627:TALLOWj#CREATURE:FORGOTTEN_BEAST_628:TALLOWj#CREATURE:FORGOTTEN_BEAST_629:TALLOWj#CREATURE:FORGOTTEN_BEAST_630:TALLOWj#CREATURE:FORGOTTEN_BEAST_631:TALLOWj#CREATURE:FORGOTTEN_BEAST_632:TALLOWj#CREATURE:FORGOTTEN_BEAST_633:TALLOWj#CREATURE:FORGOTTEN_BEAST_634:TALLOWj#CREATURE:FORGOTTEN_BEAST_635:TALLOWj#CREATURE:FORGOTTEN_BEAST_636:TALLOWj#CREATURE:FORGOTTEN_BEAST_637:TALLOWj#CREATURE:FORGOTTEN_BEAST_639:TALLOWj#CREATURE:FORGOTTEN_BEAST_640:TALLOWj#CREATURE:FORGOTTEN_BEAST_643:TALLOWj#CREATURE:FORGOTTEN_BEAST_644:TALLOWj#CREATURE:FORGOTTEN_BEAST_645:TALLOWj#CREATURE:FORGOTTEN_BEAST_646:TALLOWj#CREATURE:FORGOTTEN_BEAST_647:TALLOWj#CREATURE:FORGOTTEN_BEAST_649:TALLOWj#CREATURE:FORGOTTEN_BEAST_650:TALLOWj#CREATURE:FORGOTTEN_BEAST_651:TALLOWj#CREATURE:FORGOTTEN_BEAST_652:TALLOWj#CREATURE:FORGOTTEN_BEAST_656:TALLOWj#CREATURE:FORGOTTEN_BEAST_658:TALLOWj#CREATURE:FORGOTTEN_BEAST_659:TALLOWj#CREATURE:FORGOTTEN_BEAST_661:TALLOWj#CREATURE:FORGOTTEN_BEAST_663:TALLOWj#CREATURE:FORGOTTEN_BEAST_664:TALLOWj#CREATURE:FORGOTTEN_BEAST_666:TALLOWj#CREATURE:FORGOTTEN_BEAST_667:TALLOWj#CREATURE:FORGOTTEN_BEAST_669:TALLOWj#CREATURE:FORGOTTEN_BEAST_670:TALLOWj#CREATURE:FORGOTTEN_BEAST_671:TALLOWj#CREATURE:FORGOTTEN_BEAST_674:TALLOWj#CREATURE:FORGOTTEN_BEAST_675:TALLOWj#CREATURE:FORGOTTEN_BEAST_678:TALLOWj#CREATURE:FORGOTTEN_BEAST_680:TALLOWj#CREATURE:FORGOTTEN_BEAST_681:TALLOWj#CREATURE:FORGOTTEN_BEAST_682:TALLOWj#CREATURE:FORGOTTEN_BEAST_684:TALLOWj#CREATURE:FORGOTTEN_BEAST_685:TALLOWj#CREATURE:FORGOTTEN_BEAST_686:TALLOWj#CREATURE:FORGOTTEN_BEAST_687:TALLOWj#CREATURE:FORGOTTEN_BEAST_688:TALLOWj#CREATURE:FORGOTTEN_BEAST_689:TALLOWj#CREATURE:FORGOTTEN_BEAST_691:TALLOWj#CREATURE:FORGOTTEN_BEAST_692:TALLOWj#CREATURE:FORGOTTEN_BEAST_695:TALLOWj#CREATURE:FORGOTTEN_BEAST_696:TALLOWj#CREATURE:FORGOTTEN_BEAST_697:TALLOWj#CREATURE:FORGOTTEN_BEAST_698:TALLOWj#CREATURE:FORGOTTEN_BEAST_699:TALLOWj#CREATURE:FORGOTTEN_BEAST_700:TALLOWj#CREATURE:FORGOTTEN_BEAST_701:TALLOWj#CREATURE:FORGOTTEN_BEAST_702:TALLOWj#CREATURE:FORGOTTEN_BEAST_704:TALLOWj#CREATURE:FORGOTTEN_BEAST_706:TALLOWj#CREATURE:FORGOTTEN_BEAST_708:TALLOWj#CREATURE:FORGOTTEN_BEAST_709:TALLOWj#CREATURE:FORGOTTEN_BEAST_711:TALLOWj#CREATURE:FORGOTTEN_BEAST_712:TALLOWj#CREATURE:FORGOTTEN_BEAST_713:TALLOWj#CREATURE:FORGOTTEN_BEAST_714:TALLOWj#CREATURE:FORGOTTEN_BEAST_715:TALLOWj#CREATURE:FORGOTTEN_BEAST_717:TALLOWj#CREATURE:FORGOTTEN_BEAST_718:TALLOWj#CREATURE:FORGOTTEN_BEAST_719:TALLOWj#CREATURE:FORGOTTEN_BEAST_720:TALLOWj#CREATURE:FORGOTTEN_BEAST_721:TALLOWj#CREATURE:FORGOTTEN_BEAST_722:TALLOWj#CREATURE:FORGOTTEN_BEAST_723:TALLOWj#CREATURE:FORGOTTEN_BEAST_724:TALLOWj#CREATURE:FORGOTTEN_BEAST_726:TALLOWj#CREATURE:FORGOTTEN_BEAST_730:TALLOWj#CREATURE:FORGOTTEN_BEAST_731:TALLOWj#CREATURE:FORGOTTEN_BEAST_734:TALLOWj#CREATURE:FORGOTTEN_BEAST_735:TALLOWj#CREATURE:FORGOTTEN_BEAST_737:TALLOWj#CREATURE:FORGOTTEN_BEAST_738:TALLOWj#CREATURE:FORGOTTEN_BEAST_739:TALLOWj#CREATURE:FORGOTTEN_BEAST_740:TALLOWj#CREATURE:FORGOTTEN_BEAST_741:TALLOWj#CREATURE:FORGOTTEN_BEAST_742:TALLOWj#CREATURE:FORGOTTEN_BEAST_743:TALLOWj#CREATURE:FORGOTTEN_BEAST_744:TALLOWj#CREATURE:FORGOTTEN_BEAST_746:TALLOWj#CREATURE:FORGOTTEN_BEAST_747:TALLOWj#CREATURE:FORGOTTEN_BEAST_749:TALLOWj#CREATURE:FORGOTTEN_BEAST_750:TALLOWj#CREATURE:FORGOTTEN_BEAST_751:TALLOWj#CREATURE:FORGOTTEN_BEAST_752:TALLOWj#CREATURE:FORGOTTEN_BEAST_753:TALLOWj#CREATURE:FORGOTTEN_BEAST_754:TALLOWj#CREATURE:FORGOTTEN_BEAST_755:TALLOWj#CREATURE:FORGOTTEN_BEAST_756:TALLOWj#CREATURE:FORGOTTEN_BEAST_757:TALLOWj#CREATURE:FORGOTTEN_BEAST_758:TALLOWj#CREATURE:FORGOTTEN_BEAST_759:TALLOWj#CREATURE:FORGOTTEN_BEAST_760:TALLOWj#CREATURE:FORGOTTEN_BEAST_761:TALLOWj#CREATURE:FORGOTTEN_BEAST_762:TALLOWj#CREATURE:FORGOTTEN_BEAST_764:TALLOWj#CREATURE:FORGOTTEN_BEAST_767:TALLOWj#CREATURE:FORGOTTEN_BEAST_768:TALLOWj#CREATURE:FORGOTTEN_BEAST_769:TALLOWj#CREATURE:FORGOTTEN_BEAST_770:TALLOWj#CREATURE:FORGOTTEN_BEAST_773:TALLOWj#CREATURE:FORGOTTEN_BEAST_774:TALLOWj#CREATURE:FORGOTTEN_BEAST_776:TALLOWj#CREATURE:FORGOTTEN_BEAST_777:TALLOWj#CREATURE:FORGOTTEN_BEAST_778:TALLOWj#CREATURE:FORGOTTEN_BEAST_779:TALLOWj#CREATURE:FORGOTTEN_BEAST_780:TALLOWj#CREATURE:FORGOTTEN_BEAST_781:TALLOWj#CREATURE:FORGOTTEN_BEAST_782:TALLOWj#CREATURE:FORGOTTEN_BEAST_783:TALLOWj#CREATURE:FORGOTTEN_BEAST_784:TALLOWj#CREATURE:FORGOTTEN_BEAST_785:TALLOWj#CREATURE:FORGOTTEN_BEAST_786:TALLOWj#CREATURE:FORGOTTEN_BEAST_787:TALLOWj#CREATURE:FORGOTTEN_BEAST_789:TALLOWj#CREATURE:FORGOTTEN_BEAST_792:TALLOWj#CREATURE:FORGOTTEN_BEAST_793:TALLOWj#CREATURE:FORGOTTEN_BEAST_794:TALLOWj#CREATURE:FORGOTTEN_BEAST_795:TALLOWj#CREATURE:FORGOTTEN_BEAST_796:TALLOWj#CREATURE:FORGOTTEN_BEAST_799:TALLOWj#CREATURE:FORGOTTEN_BEAST_800:TALLOWj#CREATURE:FORGOTTEN_BEAST_801:TALLOWj#CREATURE:FORGOTTEN_BEAST_802:TALLOWj#CREATURE:FORGOTTEN_BEAST_803:TALLOWj#CREATURE:FORGOTTEN_BEAST_804:TALLOWj#CREATURE:FORGOTTEN_BEAST_806:TALLOWj#CREATURE:FORGOTTEN_BEAST_807:TALLOWj#CREATURE:FORGOTTEN_BEAST_809:TALLOWj#CREATURE:FORGOTTEN_BEAST_810:TALLOWj#CREATURE:FORGOTTEN_BEAST_811:TALLOWj#CREATURE:FORGOTTEN_BEAST_812:TALLOWj#CREATURE:FORGOTTEN_BEAST_815:TALLOWj#CREATURE:FORGOTTEN_BEAST_817:TALLOWj#CREATURE:FORGOTTEN_BEAST_818:TALLOWj#CREATURE:FORGOTTEN_BEAST_819:TALLOWj#CREATURE:FORGOTTEN_BEAST_820:TALLOWj#CREATURE:FORGOTTEN_BEAST_821:TALLOWj#CREATURE:FORGOTTEN_BEAST_822:TALLOWj#CREATURE:FORGOTTEN_BEAST_824:TALLOWj#CREATURE:FORGOTTEN_BEAST_825:TALLOWj#CREATURE:FORGOTTEN_BEAST_826:TALLOWj#CREATURE:FORGOTTEN_BEAST_827:TALLOWj#CREATURE:FORGOTTEN_BEAST_828:TALLOWj#CREATURE:FORGOTTEN_BEAST_831:TALLOWj#CREATURE:FORGOTTEN_BEAST_833:TALLOWj#CREATURE:FORGOTTEN_BEAST_835:TALLOWj#CREATURE:FORGOTTEN_BEAST_837:TALLOWj#CREATURE:FORGOTTEN_BEAST_838:TALLOWj#CREATURE:FORGOTTEN_BEAST_842:TALLOWj#CREATURE:FORGOTTEN_BEAST_843:TALLOWj#CREATURE:FORGOTTEN_BEAST_844:TALLOWj#CREATURE:FORGOTTEN_BEAST_845:TALLOWj#CREATURE:FORGOTTEN_BEAST_846:TALLOWj#CREATURE:FORGOTTEN_BEAST_847:TALLOWj#CREATURE:FORGOTTEN_BEAST_848:TALLOWj#CREATURE:FORGOTTEN_BEAST_849:TALLOWj#CREATURE:FORGOTTEN_BEAST_851:TALLOWj#CREATURE:FORGOTTEN_BEAST_853:TALLOWj#CREATURE:FORGOTTEN_BEAST_854:TALLOWj#CREATURE:FORGOTTEN_BEAST_855:TALLOWj#CREATURE:FORGOTTEN_BEAST_857:TALLOWj#CREATURE:FORGOTTEN_BEAST_858:TALLOWj#CREATURE:FORGOTTEN_BEAST_859:TALLOWj#CREATURE:FORGOTTEN_BEAST_860:TALLOWj#CREATURE:FORGOTTEN_BEAST_861:TALLOWj#CREATURE:FORGOTTEN_BEAST_862:TALLOWj#CREATURE:FORGOTTEN_BEAST_865:TALLOWj#CREATURE:FORGOTTEN_BEAST_866:TALLOWj#CREATURE:FORGOTTEN_BEAST_867:TALLOWjCREATURE:TITAN_1:TALLOWjCREATURE:TITAN_3:TALLOWjCREATURE:TITAN_4:TALLOWjCREATURE:TITAN_6:TALLOWjCREATURE:TITAN_7:TALLOWjCREATURE:TITAN_8:TALLOWjCREATURE:TITAN_9:TALLOWjCREATURE:TITAN_10:TALLOWjCREATURE:TITAN_11:TALLOWjCREATURE:TITAN_12:TALLOWjCREATURE:TITAN_13:TALLOWjCREATURE:TITAN_14:TALLOWjCREATURE:TITAN_15:TALLOWjCREATURE:TITAN_18:TALLOWjCREATURE:TITAN_19:TALLOWjCREATURE:TITAN_21:TALLOWjCREATURE:TITAN_23:TALLOWjCREATURE:TITAN_24:TALLOWjCREATURE:TITAN_25:TALLOWjCREATURE:TITAN_26:TALLOWjCREATURE:TITAN_27:TALLOWjCREATURE:TITAN_28:TALLOWjCREATURE:TITAN_29:TALLOWjCREATURE:TITAN_30:TALLOWjCREATURE:TITAN_32:TALLOWjCREATURE:TITAN_33:TALLOWjCREATURE:DEMON_7:TALLOWjCREATURE:DEMON_8:TALLOWjCREATURE:DEMON_9:TALLOWjCREATURE:DEMON_10:TALLOWjCREATURE:DEMON_11:TALLOWjCREATURE:DEMON_12:TALLOWjCREATURE:DEMON_13:TALLOWjCREATURE:DEMON_14:TALLOWjCREATURE:DEMON_15:TALLOWjCREATURE:DEMON_16:TALLOWjCREATURE:DEMON_17:TALLOWjCREATURE:DEMON_18:TALLOWjCREATURE:DEMON_19:TALLOWjCREATURE:DEMON_20:TALLOWjCREATURE:DEMON_21:TALLOWjCREATURE:DEMON_22:TALLOWjCREATURE:DEMON_23:TALLOWjCREATURE:DEMON_24:TALLOWjCREATURE:DEMON_25:TALLOWjCREATURE:DEMON_26:TALLOWjCREATURE:DEMON_27:TALLOWjCREATURE:DEMON_28:TALLOWjCREATURE:DEMON_29:TALLOWjCREATURE:DEMON_31:TALLOWjCREATURE:DEMON_32:TALLOWjCREATURE:DEMON_38:TALLOWjCREATURE:DEMON_39:TALLOWjCREATURE:DEMON_40:TALLOWjCREATURE:DEMON_41:TALLOWjCREATURE:DEMON_42:TALLOWjCREATURE:DEMON_43:TALLOWjCREATURE:DEMON_44:TALLOWjCREATURE:DEMON_45:TALLOWjCREATURE:DEMON_47:TALLOWjCREATURE:DEMON_48:TALLOWjCREATURE:DEMON_49:TALLOWjCREATURE:DEMON_52:TALLOWj CREATURE:NIGHT_CREATURE_1:TALLOWj CREATURE:NIGHT_CREATURE_2:TALLOWj CREATURE:NIGHT_CREATURE_3:TALLOWj CREATURE:NIGHT_CREATURE_4:TALLOWj CREATURE:NIGHT_CREATURE_5:TALLOWj CREATURE:NIGHT_CREATURE_6:TALLOWj CREATURE:NIGHT_CREATURE_7:TALLOWj CREATURE:NIGHT_CREATURE_8:TALLOWj CREATURE:NIGHT_CREATURE_9:TALLOWj!CREATURE:NIGHT_CREATURE_10:TALLOWj!CREATURE:NIGHT_CREATURE_11:TALLOWj!CREATURE:NIGHT_CREATURE_12:TALLOWj!CREATURE:NIGHT_CREATURE_13:TALLOWj!CREATURE:NIGHT_CREATURE_14:TALLOWj!CREATURE:NIGHT_CREATURE_15:TALLOWj!CREATURE:NIGHT_CREATURE_16:TALLOWj!CREATURE:NIGHT_CREATURE_17:TALLOWj!CREATURE:NIGHT_CREATURE_18:TALLOWj!CREATURE:NIGHT_CREATURE_19:TALLOWj!CREATURE:NIGHT_CREATURE_20:TALLOWj!CREATURE:NIGHT_CREATURE_21:TALLOWj!CREATURE:NIGHT_CREATURE_22:TALLOWj!CREATURE:NIGHT_CREATURE_23:TALLOWj!CREATURE:NIGHT_CREATURE_24:TALLOWj!CREATURE:NIGHT_CREATURE_25:TALLOWj!CREATURE:NIGHT_CREATURE_26:TALLOWj!CREATURE:NIGHT_CREATURE_27:TALLOWj!CREATURE:NIGHT_CREATURE_28:TALLOWj!CREATURE:NIGHT_CREATURE_29:TALLOWj!CREATURE:NIGHT_CREATURE_30:TALLOWj!CREATURE:NIGHT_CREATURE_31:TALLOWj!CREATURE:NIGHT_CREATURE_32:TALLOWj!CREATURE:NIGHT_CREATURE_33:TALLOWj!CREATURE:NIGHT_CREATURE_34:TALLOWj!CREATURE:NIGHT_CREATURE_35:TALLOWj!CREATURE:NIGHT_CREATURE_36:TALLOWj!CREATURE:NIGHT_CREATURE_37:TALLOWj!CREATURE:NIGHT_CREATURE_38:TALLOWj!CREATURE:NIGHT_CREATURE_39:TALLOWj!CREATURE:NIGHT_CREATURE_40:TALLOWj!CREATURE:NIGHT_CREATURE_41:TALLOWj!CREATURE:NIGHT_CREATURE_42:TALLOWj!CREATURE:NIGHT_CREATURE_43:TALLOWj!CREATURE:NIGHT_CREATURE_44:TALLOWj!CREATURE:NIGHT_CREATURE_45:TALLOWj!CREATURE:NIGHT_CREATURE_46:TALLOWj!CREATURE:NIGHT_CREATURE_47:TALLOWj!CREATURE:NIGHT_CREATURE_48:TALLOWj!CREATURE:NIGHT_CREATURE_49:TALLOWj!CREATURE:NIGHT_CREATURE_50:TALLOWj!CREATURE:NIGHT_CREATURE_51:TALLOWj!CREATURE:NIGHT_CREATURE_52:TALLOWj!CREATURE:NIGHT_CREATURE_53:TALLOWj!CREATURE:NIGHT_CREATURE_54:TALLOWj!CREATURE:NIGHT_CREATURE_55:TALLOWj!CREATURE:NIGHT_CREATURE_56:TALLOWj!CREATURE:NIGHT_CREATURE_57:TALLOWj!CREATURE:NIGHT_CREATURE_58:TALLOWj!CREATURE:NIGHT_CREATURE_59:TALLOWj!CREATURE:NIGHT_CREATURE_60:TALLOWj!CREATURE:NIGHT_CREATURE_61:TALLOWj!CREATURE:NIGHT_CREATURE_62:TALLOWj!CREATURE:NIGHT_CREATURE_63:TALLOWj!CREATURE:NIGHT_CREATURE_64:TALLOWj!CREATURE:NIGHT_CREATURE_65:TALLOWj!CREATURE:NIGHT_CREATURE_66:TALLOWj!CREATURE:NIGHT_CREATURE_67:TALLOWj!CREATURE:NIGHT_CREATURE_68:TALLOWj!CREATURE:NIGHT_CREATURE_69:TALLOWj!CREATURE:NIGHT_CREATURE_70:TALLOWj!CREATURE:NIGHT_CREATURE_71:TALLOWj!CREATURE:NIGHT_CREATURE_72:TALLOWj!CREATURE:NIGHT_CREATURE_73:TALLOWj!CREATURE:NIGHT_CREATURE_74:TALLOWj!CREATURE:NIGHT_CREATURE_75:TALLOWj!CREATURE:NIGHT_CREATURE_76:TALLOWj!CREATURE:NIGHT_CREATURE_77:TALLOWj!CREATURE:NIGHT_CREATURE_78:TALLOWj!CREATURE:NIGHT_CREATURE_79:TALLOWj!CREATURE:NIGHT_CREATURE_80:TALLOWj!CREATURE:NIGHT_CREATURE_81:TALLOWj!CREATURE:NIGHT_CREATURE_82:TALLOWj!CREATURE:NIGHT_CREATURE_83:TALLOWj!CREATURE:NIGHT_CREATURE_84:TALLOWj!CREATURE:NIGHT_CREATURE_85:TALLOWj!CREATURE:NIGHT_CREATURE_86:TALLOWj!CREATURE:NIGHT_CREATURE_87:TALLOWj!CREATURE:NIGHT_CREATURE_88:TALLOWj!CREATURE:NIGHT_CREATURE_89:TALLOWj!CREATURE:NIGHT_CREATURE_90:TALLOWj!CREATURE:NIGHT_CREATURE_91:TALLOWj!CREATURE:NIGHT_CREATURE_92:TALLOWj!CREATURE:NIGHT_CREATURE_93:TALLOWj!CREATURE:NIGHT_CREATURE_94:TALLOWj!CREATURE:NIGHT_CREATURE_95:TALLOWj!CREATURE:NIGHT_CREATURE_96:TALLOWj!CREATURE:NIGHT_CREATURE_97:TALLOWj!CREATURE:NIGHT_CREATURE_98:TALLOWj!CREATURE:NIGHT_CREATURE_99:TALLOWj"CREATURE:NIGHT_CREATURE_100:TALLOWj"CREATURE:NIGHT_CREATURE_101:TALLOWj"CREATURE:NIGHT_CREATURE_102:TALLOWj"CREATURE:NIGHT_CREATURE_103:TALLOWj"CREATURE:NIGHT_CREATURE_104:TALLOWjCREATURE:HF1248 DIVINE_1:TALLOWjCREATURE:HF1248 DIVINE_2:TALLOWjCREATURE:HF1248 DIVINE_3:TALLOWjCREATURE:HF1108 DIVINE_2:TALLOWjCREATURE:HF1249 DIVINE_1:TALLOWjCREATURE:HF1249 DIVINE_3:TALLOWjCREATURE:HF1345 DIVINE_3:TALLOW˜˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/tannedhides.dfstock b/data/stockpiles/tannedhides.dfstock index 226bd0ec29..9c58d41ce6 100644 Binary files a/data/stockpiles/tannedhides.dfstock and b/data/stockpiles/tannedhides.dfstock differ diff --git a/data/stockpiles/teeth.dfstock b/data/stockpiles/teeth.dfstock deleted file mode 100644 index 06875f8b52..0000000000 --- a/data/stockpiles/teeth.dfstock +++ /dev/null @@ -1,157 +0,0 @@ -*ÆW -WOOD -DOOR - FLOODGATE -BED -CHAIR -CHAIN -FLASK -GOBLET - -INSTRUMENT -TOY -WINDOW -CAGE -BARREL -BUCKET - -ANIMALTRAP -TABLE -COFFIN -STATUE -WEAPON -ARMOR -SHOES -SHIELD -HELM -GLOVES -BOX -BAG -BIN - -ARMORSTAND - -WEAPONRACK -CABINET -FIGURINE -AMULET -SCEPTER -AMMO -CROWN -RING -EARRING -BRACELET -GEM -ANVIL -REMAINS -MEAT -FISH -FISH_RAW -VERMIN -PET -SEEDS -PLANT - SKIN_TANNED - PLANT_GROWTH -THREAD -CLOTH -TOTEM -PANTS -BACKPACK -QUIVER - CATAPULTPARTS - BALLISTAPARTS - SIEGEAMMO -BALLISTAARROWHEAD - TRAPPARTS -TRAPCOMP -DRINK - POWDER_MISC -CHEESE -FOOD - LIQUID_MISC -COIN -GLOB - PIPE_SECTION - HATCH_COVER -GRATE -QUERN - MILLSTONE -SPLINT -CRUTCH -TRACTION_BENCH -TOOL -SLAB -EGG -BOOK -SHEET -BRANCHJTOADJTOAD_MANJ -GIANT_TOADJWORMJWORM_MANJ BIRD_BLUEJAYJ BLUEJAY_MANJ GIANT_BLUEJAYJ BIRD_CARDINALJ CARDINAL_MANJGIANT_CARDINALJ BIRD_GRACKLEJ GRACKLE_MANJ GIANT_GRACKLEJ BIRD_ORIOLEJ -ORIOLE_MANJ GIANT_ORIOLEJBIRD_RW_BLACKBIRDJRW_BLACKBIRD_MANJGIANT_RW_BLACKBIRDJ BIRD_PENGUINJBIRD_PENGUIN_LITTLEJBIRD_PENGUIN_EMPERORJ PENGUIN MANJBIRD_PENGUIN_GIANTJBIRD_FALCON_PEREGRINEJPEREGRINE FALCON MANJGIANT PEREGRINE FALCONJ BIRD_KIWIJKIWI MANJBIRD_KIWI_GIANTJ BIRD_OSTRICHJ OSTRICH MANJBIRD_OSTRICH_GIANTJ BIRD_CROWJCROW_MANJ -GIANT_CROWJ -BIRD_RAVENJ RAVEN_MANJ GIANT_RAVENJBIRD_CASSOWARYJ CASSOWARY_MANJGIANT_CASSOWARYJBIRD_KEAJKEA_MANJ GIANT_KEAJBIRD_OWL_SNOWYJ SNOWY_OWL_MANJGIANT_SNOWY_OWLJSPARROWJ SPARROW_MANJ GIANT_SPARROWJBIRD_STORK_WHITEJWHITE_STORK_MANJGIANT_WHITE_STORKJ BIRD_LOONJLOON_MANJ -GIANT_LOONJ BIRD_OWL_BARNJ BARN_OWL_MANJGIANT_BARN_OWLJ BIRD_PARAKEETJ PARAKEET_MANJGIANT_PARAKEETJ BIRD_KAKAPOJ -KAKAPO_MANJ GIANT_KAKAPOJBIRD_PARROT_GREYJGREY_PARROT_MANJGIANT_GREY_PARROTJ BIRD_PUFFINJ -PUFFIN_MANJ GIANT_PUFFINJ BIRD_SWANJSWAN_MANJ -GIANT_SWANJ BIRD_LORIKEETJ LORIKEET_MANJGIANT_LORIKEETJ BIRD_WRENJWREN_MANJ -GIANT_WRENJ BIRD_OSPREYJ -OSPREY_MANJ GIANT_OSPREYJBIRD_EMUJEMU_MANJ GIANT_EMUJBIRD_COCKATIELJ COCKATIEL_MANJGIANT_COCKATIELJBIRD_LOVEBIRD_PEACH-FACEDJPEACH-FACED_LOVEBIRD_MANJGIANT_PEACH-FACED_LOVEBIRDJ BIRD_MAGPIEJ -MAGPIE_MANJ GIANT_MAGPIEJ BIRD_KESTRELJ KESTREL_MANJ GIANT_KESTRELJBIRD_ALBATROSSJ ALBATROSS_MANJGIANT_ALBATROSSJBIRD_OWL_GREAT_HORNEDJGREAT_HORNED_OWL_MANJGIANT_GREAT_HORNED_OWLJ -BIRD_EAGLEJ EAGLE_MANJ GIANT_EAGLEJ BIRD_HORNBILLJ HORNBILL_MANJGIANT_HORNBILLJBIRD_LOVEBIRD_MASKEDJMASKED_LOVEBIRD_MANJGIANT_MASKED_LOVEBIRDJ BIRD_BUSHTITJ BUSHTIT_MANJ GIANT_BUSHTITJ DAMSELFLYJ DAMSELFLY_MANJGIANT_DAMSELFLYJMOTHJMOTH_MANJ -GIANT_MOTHJ GRASSHOPPERJGRASSHOPPER_MANJGIANT_GRASSHOPPERJ BARK_SCORPIONJBARK_SCORPION_MANJGIANT_BARK_SCORPIONJMANTISJ -MANTIS_MANJ GIANT_MANTISJTICKJTICK_MANJ -GIANT_TICKJLOUSEJ LOUSE_MANJ GIANT_LOUSEJTHRIPSJ -THRIPS_MANJ GIANT_THRIPSJSLUGJSLUG_MANJ -GIANT_SLUGJMOSQUITOJ MOSQUITO_MANJGIANT_MOSQUITOJSPIDER_JUMPINGJJUMPING_SPIDER_MANJGIANT_JUMPING_SPIDERJTERMITEJ -MOON_SNAILJMOON_SNAIL_MANJGIANT_MOON_SNAILJSPIDER_BROWN_RECLUSEJBROWN_RECLUSE_SPIDER_MANJGIANT_BROWN_RECLUSE_SPIDERJSNAILJ SNAIL_MANJ GIANT_SNAILJ GECKO_LEOPARDJLEOPARD_GECKO_MANJGIANT_LEOPARD_GECKOJDESERT TORTOISEJDESERT_TORTOISE_MANJGIANT_DESERT_TORTOISEJ GILA_MONSTERJGILA_MONSTER_MANJGIANT_GILA_MONSTERJDOGJCATJMULEJDONKEYJHORSEJCOWJSHEEPJPIGJGOATJ BIRD_CHICKENJCAVYJ BIRD_DUCKJ WATER_BUFFALOJREINDEERJ -BIRD_GOOSEJYAKJLLAMAJALPACAJBIRD_GUINEAFOWLJBIRD_PEAFOWL_BLUEJ BIRD_TURKEYJRABBITJCHIMERAJCENTAURJGRIFFONJFLYJFLY_MANJ GIANT_FLYJ ROACH_LARGEJ ROACH_MANJ GIANT_ROACHJBEETLEJ -BEETLE_MANJ GIANT_BEETLEJANTJBUTTERFLY_MONARCHJBUTTERFLY_MONARCH_MANJGIANT_BUTTERFLY_MONARCHJFIREFLYJ FIREFLY_MANJ GIANT_FIREFLYJ DRAGONFLYJ DRAGONFLY_MANJGIANT_DRAGONFLYJ HONEY_BEEJ BUMBLEBEEJ GOAT_MOUNTAINJGOAT_MOUNTAIN_MANJGIANT_GOAT_MOUNTAINJ MARMOT_HOARYJMARMOT_HOARY_MANJGIANT_MARMOT_HOARYJGNOME_MOUNTAINJ -GNOME_DARKJWALRUSJ -WALRUS_MANJ GIANT_WALRUSJFISH_LAMPREY_SEAJSHARK_GREAT_WHITEJ SHARK_FRILLJSHARK_SPINY_DOGFISHJSHARK_WOBBEGONG_SPOTTEDJ SHARK_WHALEJ SHARK_BASKINGJ SHARK_NURSEJSHARK_MAKO_SHORTFINJSHARK_MAKO_LONGFINJ SHARK_TIGERJ -SHARK_BULLJSHARK_REEF_BLACKTIPJSHARK_REEF_WHITETIPJ -SHARK_BLUEJSHARK_HAMMERHEADJ SHARK_ANGELJFISH_SKATE_COMMONJFISH_RAY_MANTAJ FISH_STINGRAYJFISH_COELACANTHJ FISH_STURGEONJFISH_CONGER_EELJ FISH_MILKFISHJFISH_CODJ FISH_OPAHJFISH_GROUPER_GIANTJ FISH_BLUEFISHJFISH_SUNFISH_OCEANJFISH_SWORDFISHJ FISH_MARLINJ FISH_HALIBUTJFISH_BARRACUDA_GREATJFISH_TUNA_BLUEFINJNARWHALJ NARWHAL MANJNARWHAL, GIANTJHIPPOJ HIPPO_MANJ GIANT_HIPPOJFISH_GAR_LONGNOSEJ FISH_CARPJFISH_TIGERFISHJ FISH_PIKEJPLATYPUSJ PLATYPUS MANJPLATYPUS, GIANTJ BEAR_GRIZZLYJBEAR_GRIZZLY_MANJGIANT_BEAR_GRIZZLYJ -BEAR_BLACKJBEAR_BLACK_MANJGIANT_BEAR_BLACKJDEERJDEER_MANJ -GIANT_DEERJFOXJFOX_MANJ GIANT_FOXJRACCOONJ RACCOON_MANJ GIANT_RACCOONJMACAQUE_RHESUSJMACAQUE_RHESUS_MANJGIANT_MACAQUE_RHESUSJCOUGARJ -COUGAR_MANJ GIANT_COUGARJWOLFJWOLF_MANJ -GIANT_WOLFJ GROUNDHOGJ GROUNDHOG_MANJGIANT_GROUNDHOGJ ALLIGATORJ ALLIGATOR_MANJGIANT_ALLIGATORJ BIRD_BUZZARDJ BUZZARD_MANJ GIANT_BUZZARDJPANDAJPANDA, GIGANTICJ PANDA MANJCAPYBARAJCAPYBARA, GIANTJ CAPYBARA MANJBADGERJ -BADGER MANJ BADGER, GIANTJMOOSEJ MOOSE MANJ MOOSE, GIANTJ RED PANDAJ RED PANDA MANJRED PANDA, GIANTJELEPHANTJ ELEPHANT_MANJGIANT_ELEPHANTJWARTHOGJ WARTHOG_MANJ GIANT_WARTHOGJLIONJLION_MANJ -GIANT_LIONJLEOPARDJ LEOPARD_MANJ GIANT_LEOPARDJJAGUARJ -JAGUAR_MANJ GIANT_JAGUARJTIGERJ TIGER_MANJ GIANT_TIGERJCHEETAHJ CHEETAH_MANJ GIANT_CHEETAHJGAZELLEJ GAZELLE_MANJ GIANT_GAZELLEJMANDRILLJ MANDRILL_MANJGIANT_MANDRILLJ -CHIMPANZEEJBONOBOJGORILLAJ ORANGUTANJGIBBON_SIAMANGJGIBBON_WHITE_HANDEDJGIBBON_BLACK_HANDEDJ GIBBON_GRAYJGIBBON_SILVERYJGIBBON_PILEATEDJ GIBBON_BILOUJGIBBON_WHITE_BROWEDJGIBBON_BLACK_CRESTEDJ CAMEL_1_HUMPJCAMEL_1_HUMP_MANJGIANT_CAMEL_1_HUMPJ CAMEL_2_HUMPJCAMEL_2_HUMP_MANJGIANT_CAMEL_2_HUMPJCROCODILE_SALTWATERJCROCODILE_SALTWATER_MANJGIANT_CROCODILE_SALTWATERJ BIRD_VULTUREJ VULTURE_MANJ GIANT_VULTUREJ -RHINOCEROSJRHINOCEROS_MANJGIANT_RHINOCEROSJGIRAFFEJ GIRAFFE_MANJ GIANT_GIRAFFEJ HONEY BADGERJHONEY BADGER MANJHONEY BADGER, GIANTJGIANT TORTOISEJGIANT TORTOISE MANJGIGANTIC TORTOISEJ ARMADILLOJ ARMADILLO MANJARMADILLO, GIANTJMUSKOXJ -MUSKOX_MANJ GIANT_MUSKOXJELKJELK_MANJ GIANT_ELKJ -BEAR_POLARJBEAR_POLAR_MANJGIANT_BEAR_POLARJ WOLVERINEJ WOLVERINE_MANJGIANT_WOLVERINEJ -CHINCHILLAJCHINCHILLA_MANJGIANT_CHINCHILLAJ FLOATING_GUTSJDRUNIANJ CREEPING_EYEJVORACIOUS_CAVE_CRAWLERJBLIND_CAVE_OGREJ -CAP_HOPPERJ -MAGMA_CRABJCRUNDLEJ HUNGRY_HEADJ -FLESH_BALLJELK_BIRDJ HELMET_SNAKEJGREEN_DEVOURERJRUTHERERJCREEPY_CRAWLERJDRALTHAJGIANT_EARTHWORMJ BLOOD_MANJBUGBATJMANERAJ -MOLEMARIANJJABBERERJ POND_GRABBERJBLIND_CAVE_BEARJ CAVE_DRAGONJREACHERJELEMENTMAN_GABBROJGORLAKJ CAVE_FLOATERJPLUMP_HELMET_MANJ CAVE_BLOBJELEMENTMAN_AMETHYSTJOCTOPUSJ OCTOPUS_MANJ GIANT_OCTOPUSJCRABJCRAB_MANJ -GIANT_CRABJ LEOPARD_SEALJLEOPARD_SEAL_MANJGIANT_LEOPARD_SEALJ -CUTTLEFISHJCUTTLEFISH_MANJGIANT_CUTTLEFISHJORCAJORCA_MANJ -GIANT_ORCAJSPONGEJ -SPONGE_MANJ GIANT_SPONGEJHORSESHOE_CRABJHORSESHOE_CRAB_MANJGIANT_HORSESHOE_CRABJ SPERM_WHALEJSPERM_WHALE_MANJGIANT_SPERM_WHALEJ ELEPHANT_SEALJELEPHANT_SEAL_MANJGIANT_ELEPHANT_SEALJ HARP_SEALJ HARP_SEAL_MANJGIANT_HARP_SEALJNAUTILUSJ NAUTILUS_MANJGIANT_NAUTILUSJ FOXSQUIRRELJ MOGHOPPERJ RAT_DEMONJWAMBLER_FLUFFYJLIZARD_RHINO_TWO_LEGGEDJ WORM_KNUCKLEJSPIDER_PHANTOMJ FLY_ACORNJ -GNAT_BLOODJLIZARDJ -LIZARD_MANJ GIANT_LIZARDJSKINKJ SKINK_MANJ GIANT_SKINKJ CHAMELEONJ CHAMELEON_MANJGIANT_CHAMELEONJANOLEJ ANOLE_MANJ GIANT_ANOLEJIGUANAJ -IGUANA_MANJ GIANT_IGUANAJ RIVER OTTERJ SEA OTTERJ OTTER_MANJ GIANT_OTTERJSNAPPING TURTLEJALLIGATOR SNAPPING TURTLEJSNAPPING_TURTLE_MANJGIANT_SNAPPING_TURTLEJBEAVERJ -BEAVER_MANJ GIANT_BEAVERJLEECHJ LEECH_MANJ GIANT_LEECHJAXOLOTLJ AXOLOTL_MANJ GIANT_AXOLOTLJMINKJMINK_MANJ -GIANT_MINKJ POND_TURTLEJPOND_TURTLE_MANJGIANT_POND_TURTLEJRATJRAT_MANJ SQUIRREL_GRAYJSQUIRREL_GRAY_MANJGIANT_SQUIRREL_GRAYJ SQUIRREL_REDJSQUIRREL_RED_MANJGIANT_SQUIRREL_REDJCHIPMUNKJ CHIPMUNK_MANJGIANT_CHIPMUNKJHAMSTERJ HAMSTER_MANJ GIANT_HAMSTERJHEDGEHOGJ HEDGEHOG_MANJGIANT_HEDGEHOGJSQUIRREL_FLYINGJFLYING_SQUIRREL_MANJGIANT_FLYING_SQUIRRELJMUSSELJOYSTERJ FISH_SALMONJFISH_CLOWNFISHJ FISH_HAGFISHJFISH_LAMPREY_BROOKJ FISH_RAY_BATJFISH_RAY_THORNBACKJFISH_RATFISH_SPOTTEDJ FISH_HERRINGJ FISH_SHADJ FISH_ANCHOVYJFISH_TROUT_STEELHEADJ FISH_HAKEJ FISH_SEAHORSEJ FISH_GLASSEYEJFISH_PUFFER_WHITE_SPOTTEDJ FISH_SOLEJ FISH_FLOUNDERJ FISH_MACKERELJJELLYFISH_SEA_NETTLEJSQUIDJ SQUID MANJGIGANTIC SQUIDJ FISH_LUNGFISHJFISH_LOACH_CLOWNJFISH_BULLHEAD_BROWNJFISH_BULLHEAD_YELLOWJFISH_BULLHEAD_BLACKJFISH_KNIFEFISH_BANDEDJ FISH_CHARJFISH_TROUT_RAINBOWJFISH_MOLLY_SAILFINJ -FISH_GUPPYJ -FISH_PERCHJDWARFJHUMANJELFJGOBLINJKOBOLDJGREMLINJTROLLJOGREJUNICORNJDRAGONJSATYRJCOLOSSUS_BRONZEJGIANTJCYCLOPSJETTINJMINOTAURJYETIJ SASQUATCHJ BLIZZARD_MANJWOLF_ICEJFAIRYJPIXIEJBEAK_DOGJ GRIMELINGJ BLENDEC_FOULJ STRANGLERJ NIGHTWINGJHARPYJHYDRAJ MERPERSONJ SEA_SERPENTJ SEA_MONSTERJBIRD_ROCJCROCODILE_CAVEJTOAD_GIANT_CAVEJ OLM_GIANTJ BAT_GIANTJ RAT_GIANTJ RAT_LARGEJMOLE_DOG_NAKEDJ -TROGLODYTEJ -MOLE_GIANTJIMP_FIREJSPIDER_CAVE_GIANTJ SPIDER_CAVEJ FISH_CAVEJ CAVE_FISH_MANJ LOBSTER_CAVEJ -SNAKE_FIREJOLMJOLM_MANJBATJBAT_MANJMAGGOT_PURRINGJELEMENTMAN_FIREJELEMENTMAN_MAGMAJELEMENTMAN_IRONJELEMENTMAN_MUDJBIRD_SWALLOW_CAVEJCAVE_SWALLOW_MANJBIRD_SWALLOW_CAVE_GIANTJ AMPHIBIAN_MANJ REPTILE_MANJ SERPENT_MANJANT_MANJ -RODENT MANJ WILD_BOARJ WILD_BOAR_MANJGIANT_WILD_BOARJCOYOTEJ -COYOTE_MANJ GIANT_COYOTEJKANGAROOJ KANGAROO_MANJGIANT_KANGAROOJKOALAJ KOALA_MANJ GIANT_KOALAJADDERJ ADDER_MANJ GIANT_ADDERJECHIDNAJ ECHIDNA_MANJ GIANT_ECHIDNAJ PORCUPINEJ PORCUPINE_MANJGIANT_PORCUPINEJ KINGSNAKEJ KINGSNAKE_MANJGIANT_KINGSNAKEJ GRAY_LANGURJGRAY_LANGUR_MANJGIANT_GRAY_LANGURJBOBCATJ -BOBCAT_MANJ GIANT_BOBCATJSKUNKJ SKUNK_MANJ GIANT_SKUNKJGREEN_TREE_FROGJGREEN_TREE_FROG_MANJGIANT_GREEN_TREE_FROGJHAREJHARE_MANJ -GIANT_HAREJ RATTLESNAKEJRATTLESNAKE_MANJGIANT_RATTLESNAKEJWEASELJ -WEASEL_MANJ GIANT_WEASELJCOPPERHEAD_SNAKEJCOPPERHEAD_SNAKE_MANJGIANT_COPPERHEAD_SNAKEJIBEXJIBEX_MANJ -GIANT_IBEXJWOMBATJ -WOMBAT_MANJ GIANT_WOMBATJDINGOJ DINGO_MANJ GIANT_DINGOJCOATIJ COATI_MANJ GIANT_COATIJOPOSSUMJ OPOSSUM_MANJ GIANT_OPOSSUMJMONGOOSEJ MONGOOSE_MANJGIANT_MONGOOSEJHYENAJ HYENA_MANJ GIANT_HYENAJANACONDAJ ANACONDA_MANJGIANT_ANACONDAJMONITOR_LIZARDJMONITOR_LIZARD_MANJGIANT_MONITOR_LIZARDJ -KING_COBRAJKING_COBRA_MANJGIANT_KING_COBRAJOCELOTJ -OCELOT_MANJ GIANT_OCELOTJJACKALJ -JACKAL_MANJ GIANT_JACKALJCAPUCHINJ CAPUCHIN_MANJGIANT_CAPUCHINJSLOTHJ SLOTH_MANJ GIANT_SLOTHJ SPIDER_MONKEYJSPIDER_MONKEY_MANJGIANT_SPIDER_MONKEYJPANGOLINJ PANGOLIN_MANJGIANT_PANGOLINJ BLACK_MAMBAJBLACK_MAMBA_MANJGIANT_BLACK_MAMBAJ -BEAR_SLOTHJSLOTH_BEAR_MANJGIANT_SLOTH_BEARJAYE-AYEJ AYE-AYE_MANJ GIANT_AYE-AYEJ -BUSHMASTERJBUSHMASTER_MANJGIANT_BUSHMASTERJPYTHONJ -PYTHON_MANJ GIANT_PYTHONJTAPIRJ TAPIR_MANJ GIANT_TAPIRJIMPALAJ -IMPALA_MANJ GIANT_IMPALAJAARDVARKJ AARDVARK_MANJGIANT_AARDVARKJ LION_TAMARINJLION_TAMARIN_MANJGIANT_LION_TAMARINJSTOATJ STOAT_MANJ GIANT_STOATJLYNXJLYNX_MANJ -GIANT_LYNXPX˜ ¨°¸À \ No newline at end of file diff --git a/data/stockpiles/thread.dfstock b/data/stockpiles/thread.dfstock index eee0653acb..2774f50e8a 100644 Binary files a/data/stockpiles/thread.dfstock and b/data/stockpiles/thread.dfstock differ diff --git a/data/stockpiles/tools.dfstock b/data/stockpiles/tools.dfstock deleted file mode 100644 index abe70454b7..0000000000 Binary files a/data/stockpiles/tools.dfstock and /dev/null differ diff --git a/data/stockpiles/toys.dfstock b/data/stockpiles/toys.dfstock new file mode 100644 index 0000000000..a90eab591a --- /dev/null +++ b/data/stockpiles/toys.dfstock @@ -0,0 +1,2 @@ +b +TOY \ No newline at end of file diff --git a/data/stockpiles/trapcomponents.dfstock b/data/stockpiles/trapcomponents.dfstock index 9f7c4194b5..475b530d4c 100644 Binary files a/data/stockpiles/trapcomponents.dfstock and b/data/stockpiles/trapcomponents.dfstock differ diff --git a/data/stockpiles/traps.dfstock b/data/stockpiles/traps.dfstock new file mode 100644 index 0000000000..ed1ba67763 Binary files /dev/null and b/data/stockpiles/traps.dfstock differ diff --git a/data/stockpiles/unpreparedfish.dfstock b/data/stockpiles/unpreparedfish.dfstock index 465a95ddda..13841da901 100644 Binary files a/data/stockpiles/unpreparedfish.dfstock and b/data/stockpiles/unpreparedfish.dfstock differ diff --git a/data/stockpiles/unusablearmor.dfstock b/data/stockpiles/unusablearmor.dfstock new file mode 100644 index 0000000000..d5b2e9c649 Binary files /dev/null and b/data/stockpiles/unusablearmor.dfstock differ diff --git a/data/stockpiles/unusableweapons.dfstock b/data/stockpiles/unusableweapons.dfstock new file mode 100644 index 0000000000..6af8d1b5a2 Binary files /dev/null and b/data/stockpiles/unusableweapons.dfstock differ diff --git a/data/stockpiles/usablearmor.dfstock b/data/stockpiles/usablearmor.dfstock new file mode 100644 index 0000000000..58c9296de9 Binary files /dev/null and b/data/stockpiles/usablearmor.dfstock differ diff --git a/data/stockpiles/usablehair.dfstock b/data/stockpiles/usablehair.dfstock index 97528d893b..2082d7dcf6 100644 Binary files a/data/stockpiles/usablehair.dfstock and b/data/stockpiles/usablehair.dfstock differ diff --git a/data/stockpiles/usableweapons.dfstock b/data/stockpiles/usableweapons.dfstock new file mode 100644 index 0000000000..248610ae94 Binary files /dev/null and b/data/stockpiles/usableweapons.dfstock differ diff --git a/data/stockpiles/wax.dfstock b/data/stockpiles/wax.dfstock index f7ec69912e..35c69f6ca8 100644 Binary files a/data/stockpiles/wax.dfstock and b/data/stockpiles/wax.dfstock differ diff --git a/data/stockpiles/weaponsprefix.dfstock b/data/stockpiles/weaponsprefix.dfstock deleted file mode 100644 index 6a84bf0c70..0000000000 Binary files a/data/stockpiles/weaponsprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/woodammo.dfstock b/data/stockpiles/woodammo.dfstock index 623ca25f23..6bec8b1e58 100644 Binary files a/data/stockpiles/woodammo.dfstock and b/data/stockpiles/woodammo.dfstock differ diff --git a/data/stockpiles/woodentools.dfstock b/data/stockpiles/woodentools.dfstock deleted file mode 100644 index de3acb7945..0000000000 Binary files a/data/stockpiles/woodentools.dfstock and /dev/null differ diff --git a/data/stockpiles/woodprefix.dfstock b/data/stockpiles/woodprefix.dfstock deleted file mode 100644 index b9480efb3e..0000000000 Binary files a/data/stockpiles/woodprefix.dfstock and /dev/null differ diff --git a/data/stockpiles/woodtools.dfstock b/data/stockpiles/woodtools.dfstock new file mode 100644 index 0000000000..86eb0d0c81 --- /dev/null +++ b/data/stockpiles/woodtools.dfstock @@ -0,0 +1,2 @@ +b +TOOLWOOD \ No newline at end of file diff --git a/depends/CMakeLists.txt b/depends/CMakeLists.txt index 15ff524889..41996294c6 100644 --- a/depends/CMakeLists.txt +++ b/depends/CMakeLists.txt @@ -1,23 +1,30 @@ # list depends here. +add_subdirectory(dfhooks) +install(TARGETS dfhooks LIBRARY DESTINATION . RUNTIME DESTINATION .) + add_subdirectory(lodepng) add_subdirectory(lua) add_subdirectory(md5) add_subdirectory(protobuf) +target_include_directories(protobuf-lite INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/protobuf) -if(UNIX AND NOT APPLE) # remove this once our MSVC build env has been updated -option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" OFF) -add_subdirectory(googletest) if(UNIX) - set_target_properties(gtest PROPERTIES COMPILE_FLAGS "-Wno-maybe-uninitialized -Wno-sign-compare") -endif() + set_target_properties(lua PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations -Wno-deprecated-enum-enum-conversion") + set_target_properties(protoc PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations -Wno-restrict") + set_target_properties(protoc-bin PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations -Wno-restrict") + set_target_properties(protobuf-lite PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations -Wno-restrict") + set_target_properties(protobuf PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations -Wno-restrict") endif() +option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" OFF) +add_subdirectory(googletest) + # Don't build tinyxml if it's being externally linked against. if(NOT TinyXML_FOUND) add_subdirectory(tinyxml) + target_include_directories(dfhack-tinyxml INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/tinyxml) endif() -add_subdirectory(tthread) option(JSONCPP_WITH_TESTS "Compile and (for jsoncpp_check) run JsonCpp test executables" OFF) option(JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post build step" OFF) option(JSONCPP_BUILD_SHARED_LIBS "Build jsoncpp_lib as a shared library." OFF) @@ -31,8 +38,6 @@ option(CLSOCKET_DEP_ONLY "Build for use inside other CMake projects as dependenc add_subdirectory(clsocket) ide_folder(clsocket "Depends") -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/luacov/src/luacov/ DESTINATION ${DFHACK_DATA_DESTINATION}/lua/luacov) - # set the default values of libexpat options - the descriptions are left empty # because later option() calls *do* override those set(EXPAT_BUILD_EXAMPLES OFF CACHE BOOL "") @@ -51,6 +56,7 @@ set(LIBZIP_BUILD_DOC OFF CACHE BOOL "") set(LIBZIP_BUILD_EXAMPLES OFF CACHE BOOL "") set(LIBZIP_BUILD_REGRESS OFF CACHE BOOL "") set(LIBZIP_BUILD_SHARED_LIBS OFF CACHE BOOL "") +set(LIBZIP_BUILD_OSSFUZZ OFF CACHE BOOL "") set(LIBZIP_BUILD_TOOLS OFF CACHE BOOL "") set(LIBZIP_ENABLE_BZIP2 OFF CACHE BOOL "") set(LIBZIP_ENABLE_COMMONCRYPTO OFF CACHE BOOL "") @@ -63,6 +69,8 @@ set(LIBZIP_DO_INSTALL OFF CACHE BOOL "") add_subdirectory(libzip) if(MSVC) target_compile_options(zip PRIVATE /wd4244) +elseif(UNIX) + set_target_properties(zip PROPERTIES COMPILE_FLAGS "-Wno-stringop-truncation -Wno-stringop-overflow") endif() set(XLSXIO_USE_DFHACK_LIBS ON CACHE BOOL "") @@ -81,3 +89,5 @@ if(MSVC) target_compile_options(xlsxio_read_STATIC PRIVATE /wd4013 /wd4244) target_compile_options(xlsxio_write_STATIC PRIVATE /wd4013 /wd4244) endif() +target_include_directories(xlsxio_read_STATIC INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/xlsxio/include) +target_include_directories(xlsxio_write_STATIC INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/xlsxio/include) diff --git a/depends/clsocket b/depends/clsocket index 6ed8aa4646..00c3267aac 160000 --- a/depends/clsocket +++ b/depends/clsocket @@ -1 +1 @@ -Subproject commit 6ed8aa46462ea01a1122fc49422840a2facc9757 +Subproject commit 00c3267aacc9c10c5864c7fce856df0de52d72a8 diff --git a/depends/dfhooks b/depends/dfhooks new file mode 160000 index 0000000000..5a904e30a8 --- /dev/null +++ b/depends/dfhooks @@ -0,0 +1 @@ +Subproject commit 5a904e30a8bace81c662b44ec7ff076b92edafd1 diff --git a/depends/googletest b/depends/googletest index 2fe3bd994b..b514bdc898 160000 --- a/depends/googletest +++ b/depends/googletest @@ -1 +1 @@ -Subproject commit 2fe3bd994b3189899d93f1d5a881e725e046fdc2 +Subproject commit b514bdc898e2951020cbdca1304b75f5950d1f59 diff --git a/depends/jsoncpp-sub b/depends/jsoncpp-sub index ba5eac5413..3a5d4ff058 160000 --- a/depends/jsoncpp-sub +++ b/depends/jsoncpp-sub @@ -1 +1 @@ -Subproject commit ba5eac54136064af94ab4a923ac110d7534d4f83 +Subproject commit 3a5d4ff0583ce7dd5abbf92bdf49dca2177459ef diff --git a/depends/libexpat b/depends/libexpat index 6ac8628a3c..e3ea446907 160000 --- a/depends/libexpat +++ b/depends/libexpat @@ -1 +1 @@ -Subproject commit 6ac8628a3c7a1677b27fb007db96f665b684a183 +Subproject commit e3ea4469079702ddf352bb3333bf85130c5346c2 diff --git a/depends/libzip b/depends/libzip index 081249cceb..011e45e125 160000 --- a/depends/libzip +++ b/depends/libzip @@ -1 +1 @@ -Subproject commit 081249cceb59adc857a72d67e60c32047680f787 +Subproject commit 011e45e125631cff73c0d6a5d19e0232dfc4df6f diff --git a/depends/lua/CMakeLists.txt b/depends/lua/CMakeLists.txt index c3ff0c16f2..44b16e56cc 100644 --- a/depends/lua/CMakeLists.txt +++ b/depends/lua/CMakeLists.txt @@ -1,5 +1,5 @@ project(lua CXX) -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.21) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLUA_USE_APICHECK") @@ -93,7 +93,9 @@ set_source_files_properties(${SRC_LIBLUA} PROPERTIES LANGUAGE CXX) list(APPEND SRC_LIBLUA ${HDR_LIBLUA}) add_library(lua SHARED ${SRC_LIBLUA}) +set_target_properties(lua PROPERTIES OUTPUT_NAME lua53) target_link_libraries(lua ${LIBS}) +target_include_directories(lua INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) if(MSVC) # need no space to prevent /FI from being stripped: https://github.com/DFHack/dfhack/issues/1455 diff --git a/depends/lua/include/dfhack_llimits.h b/depends/lua/include/dfhack_llimits.h index f8ca518190..73aa52ef0b 100644 --- a/depends/lua/include/dfhack_llimits.h +++ b/depends/lua/include/dfhack_llimits.h @@ -54,8 +54,19 @@ struct lua_extra_state { #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 luai_userstateopen(L) do { \ + luai_mutex(L) = (mutex_t*)malloc(sizeof(mutex_t)); \ + pthread_mutexattr_t attr; \ + pthread_mutexattr_init(&attr); \ + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \ + pthread_mutex_init(luai_mutex(L), &attr); \ + pthread_mutexattr_destroy(&attr); \ + } while (0) +#define luai_userstateclose(L) do { \ + lua_unlock(L); \ + pthread_mutex_destroy(luai_mutex(L)); \ + free(luai_mutex(L)); \ + } while (0) #define lua_lock(L) pthread_mutex_lock(luai_mutex(L)) #define lua_unlock(L) pthread_mutex_unlock(luai_mutex(L)) #endif diff --git a/depends/lua/src/ldo.c b/depends/lua/src/ldo.c index 316e45c8fe..65158df0b7 100644 --- a/depends/lua/src/ldo.c +++ b/depends/lua/src/ldo.c @@ -767,14 +767,14 @@ static void f_parser (lua_State *L, void *ud) { LClosure *cl; struct SParser *p = cast(struct SParser *, ud); int c = zgetc(p->z); /* read first character */ - if (c == LUA_SIGNATURE[0]) { - checkmode(L, p->mode, "binary"); - cl = luaU_undump(L, p->z, p->name); - } - else { + // if (c == LUA_SIGNATURE[0]) { + // checkmode(L, p->mode, "binary"); + // cl = luaU_undump(L, p->z, p->name); + // } + // else { checkmode(L, p->mode, "text"); cl = luaY_parser(L, p->z, &p->buff, &p->dyd, p->name, c); - } + // } lua_assert(cl->nupvalues == cl->p->sizeupvalues); luaF_initupvals(L, cl); } diff --git a/depends/luacov b/depends/luacov index 99d0682784..e09ee3fa2e 160000 --- a/depends/luacov +++ b/depends/luacov @@ -1 +1 @@ -Subproject commit 99d06827848583232dd77afb34cd7ab589567086 +Subproject commit e09ee3fa2e3366d148f94c6a5969c9896126e83a diff --git a/depends/md5/CMakeLists.txt b/depends/md5/CMakeLists.txt index 747963c454..55c0bf6c1b 100644 --- a/depends/md5/CMakeLists.txt +++ b/depends/md5/CMakeLists.txt @@ -1,5 +1,6 @@ project(dfhack-md5) add_library(dfhack-md5 STATIC EXCLUDE_FROM_ALL md5.cpp md5wrapper.cpp) +target_include_directories(dfhack-md5 INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) ide_folder(dfhack-md5 "Depends") if(UNIX) set_target_properties(dfhack-md5 PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing") diff --git a/depends/protobuf/google/protobuf/repeated_field.h b/depends/protobuf/google/protobuf/repeated_field.h index aed4ce9f25..6377082540 100644 --- a/depends/protobuf/google/protobuf/repeated_field.h +++ b/depends/protobuf/google/protobuf/repeated_field.h @@ -46,6 +46,10 @@ #ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__ #define GOOGLE_PROTOBUF_REPEATED_FIELD_H__ +#ifdef __GNUC__ +#pragma GCC system_header +#endif + #include #include #include diff --git a/depends/tthread/CMakeLists.txt b/depends/tthread/CMakeLists.txt deleted file mode 100644 index dfb1d9901c..0000000000 --- a/depends/tthread/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -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") diff --git a/depends/tthread/tinythread.cpp b/depends/tthread/tinythread.cpp deleted file mode 100644 index 176bc2ac88..0000000000 --- a/depends/tthread/tinythread.cpp +++ /dev/null @@ -1,313 +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. -*/ - -#include -#include "tinythread.h" - -#if defined(_TTHREAD_POSIX_) - #include - #include -#elif defined(_TTHREAD_WIN32_) - #include -#endif - - -namespace tthread { - -//------------------------------------------------------------------------------ -// condition_variable -//------------------------------------------------------------------------------ -// NOTE 1: The Win32 implementation of the condition_variable class is based on -// the corresponding implementation in GLFW, which in turn is based on a -// description by Douglas C. Schmidt and Irfan Pyarali: -// http://www.cs.wustl.edu/~schmidt/win32-cv-1.html -// -// NOTE 2: Windows Vista actually has native support for condition variables -// (InitializeConditionVariable, WakeConditionVariable, etc), but we want to -// be portable with pre-Vista Windows versions, so TinyThread++ does not use -// Vista condition variables. -//------------------------------------------------------------------------------ - -#if defined(_TTHREAD_WIN32_) - #define _CONDITION_EVENT_ONE 0 - #define _CONDITION_EVENT_ALL 1 -#endif - -#if defined(_TTHREAD_WIN32_) -condition_variable::condition_variable() : mWaitersCount(0) -{ - mEvents[_CONDITION_EVENT_ONE] = CreateEvent(NULL, FALSE, FALSE, NULL); - mEvents[_CONDITION_EVENT_ALL] = CreateEvent(NULL, TRUE, FALSE, NULL); - InitializeCriticalSection(&mWaitersCountLock); -} -#endif - -#if defined(_TTHREAD_WIN32_) -condition_variable::~condition_variable() -{ - CloseHandle(mEvents[_CONDITION_EVENT_ONE]); - CloseHandle(mEvents[_CONDITION_EVENT_ALL]); - DeleteCriticalSection(&mWaitersCountLock); -} -#endif - -#if defined(_TTHREAD_WIN32_) -void condition_variable::_wait() -{ - // Wait for either event to become signaled due to notify_one() or - // notify_all() being called - int result = WaitForMultipleObjects(2, mEvents, FALSE, INFINITE); - - // Check if we are the last waiter - EnterCriticalSection(&mWaitersCountLock); - -- mWaitersCount; - bool lastWaiter = (result == (WAIT_OBJECT_0 + _CONDITION_EVENT_ALL)) && - (mWaitersCount == 0); - LeaveCriticalSection(&mWaitersCountLock); - - // If we are the last waiter to be notified to stop waiting, reset the event - if(lastWaiter) - ResetEvent(mEvents[_CONDITION_EVENT_ALL]); -} -#endif - -#if defined(_TTHREAD_WIN32_) -void condition_variable::notify_one() -{ - // Are there any waiters? - EnterCriticalSection(&mWaitersCountLock); - bool haveWaiters = (mWaitersCount > 0); - LeaveCriticalSection(&mWaitersCountLock); - - // If we have any waiting threads, send them a signal - if(haveWaiters) - SetEvent(mEvents[_CONDITION_EVENT_ONE]); -} -#endif - -#if defined(_TTHREAD_WIN32_) -void condition_variable::notify_all() -{ - // Are there any waiters? - EnterCriticalSection(&mWaitersCountLock); - bool haveWaiters = (mWaitersCount > 0); - LeaveCriticalSection(&mWaitersCountLock); - - // If we have any waiting threads, send them a signal - if(haveWaiters) - SetEvent(mEvents[_CONDITION_EVENT_ALL]); -} -#endif - - -//------------------------------------------------------------------------------ -// POSIX pthread_t to unique thread::id mapping logic. -// Note: Here we use a global thread safe std::map to convert instances of -// pthread_t to small thread identifier numbers (unique within one process). -// This method should be portable across different POSIX implementations. -//------------------------------------------------------------------------------ - -#if defined(_TTHREAD_POSIX_) -static thread::id _pthread_t_to_ID(const pthread_t &aHandle) -{ - static mutex idMapLock; - static std::map idMap; - static unsigned long int idCount(1); - - lock_guard guard(idMapLock); - if(idMap.find(aHandle) == idMap.end()) - idMap[aHandle] = idCount ++; - return thread::id(idMap[aHandle]); -} -#endif // _TTHREAD_POSIX_ - - -//------------------------------------------------------------------------------ -// thread -//------------------------------------------------------------------------------ - -/// Information to pass to the new thread (what to run). -struct _thread_start_info { - void (*mFunction)(void *); ///< Pointer to the function to be executed. - void * mArg; ///< Function argument for the thread function. - thread * mThread; ///< Pointer to the thread object. -}; - -// Thread wrapper function. -#if defined(_TTHREAD_WIN32_) -unsigned WINAPI thread::wrapper_function(void * aArg) -#elif defined(_TTHREAD_POSIX_) -void * thread::wrapper_function(void * aArg) -#endif -{ - // Get thread startup information - _thread_start_info * ti = (_thread_start_info *) aArg; - - try - { - // Call the actual client thread function - ti->mFunction(ti->mArg); - } - catch(...) - { - // Uncaught exceptions will terminate the application (default behavior - // according to C++11) - std::terminate(); - } - -#if 0 - // DFHack fix: this code prevents join from freeing thread resources. - - // The thread is no longer executing - lock_guard guard(ti->mThread->mDataMutex); - ti->mThread->mNotAThread = true; -#endif - - // The thread is responsible for freeing the startup information - delete ti; - - return 0; -} - -thread::thread(void (*aFunction)(void *), void * aArg) -{ - // Serialize access to this thread structure - lock_guard guard(mDataMutex); - - // Fill out the thread startup information (passed to the thread wrapper, - // which will eventually free it) - _thread_start_info * ti = new _thread_start_info; - ti->mFunction = aFunction; - ti->mArg = aArg; - ti->mThread = this; - - // The thread is now alive - mNotAThread = false; - - // Create the thread -#if defined(_TTHREAD_WIN32_) - mHandle = (HANDLE) _beginthreadex(0, 0, wrapper_function, (void *) ti, 0, &mWin32ThreadID); -#elif defined(_TTHREAD_POSIX_) - if(pthread_create(&mHandle, NULL, wrapper_function, (void *) ti) != 0) - mHandle = 0; -#endif - - // Did we fail to create the thread? - if(!mHandle) - { - mNotAThread = true; - delete ti; - } -} - -thread::~thread() -{ - if(joinable()) - std::terminate(); -} - -void thread::join() -{ - if(joinable()) - { -#if defined(_TTHREAD_WIN32_) - WaitForSingleObject(mHandle, INFINITE); - CloseHandle(mHandle); -#elif defined(_TTHREAD_POSIX_) - pthread_join(mHandle, NULL); -#endif - -#if 1 - // DFHack patch: moved here from the wrapper function - lock_guard guard(mDataMutex); - mNotAThread = true; -#endif - } -} - -bool thread::joinable() const -{ - mDataMutex.lock(); - bool result = !mNotAThread; - mDataMutex.unlock(); - return result; -} - -void thread::detach() -{ - mDataMutex.lock(); - if(!mNotAThread) - { -#if defined(_TTHREAD_WIN32_) - CloseHandle(mHandle); -#elif defined(_TTHREAD_POSIX_) - pthread_detach(mHandle); -#endif - mNotAThread = true; - } - mDataMutex.unlock(); -} - -thread::id thread::get_id() const -{ - if(!joinable()) - return id(); -#if defined(_TTHREAD_WIN32_) - return id((unsigned long int) mWin32ThreadID); -#elif defined(_TTHREAD_POSIX_) - return _pthread_t_to_ID(mHandle); -#endif -} - -unsigned thread::hardware_concurrency() -{ -#if defined(_TTHREAD_WIN32_) - SYSTEM_INFO si; - GetSystemInfo(&si); - return (int) si.dwNumberOfProcessors; -#elif defined(_SC_NPROCESSORS_ONLN) - return (int) sysconf(_SC_NPROCESSORS_ONLN); -#elif defined(_SC_NPROC_ONLN) - return (int) sysconf(_SC_NPROC_ONLN); -#else - // The standard requires this function to return zero if the number of - // hardware cores could not be determined. - return 0; -#endif -} - - -//------------------------------------------------------------------------------ -// this_thread -//------------------------------------------------------------------------------ - -thread::id this_thread::get_id() -{ -#if defined(_TTHREAD_WIN32_) - return thread::id((unsigned long int) GetCurrentThreadId()); -#elif defined(_TTHREAD_POSIX_) - return _pthread_t_to_ID(pthread_self()); -#endif -} - -} diff --git a/depends/tthread/tinythread.h b/depends/tthread/tinythread.h deleted file mode 100644 index b5ff2f0771..0000000000 --- a/depends/tthread/tinythread.h +++ /dev/null @@ -1,714 +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 _TINYTHREAD_H_ -#define _TINYTHREAD_H_ - -/// @file -/// @mainpage TinyThread++ API Reference -/// -/// @section intro_sec Introduction -/// TinyThread++ is a minimal, portable implementation of basic threading -/// classes for C++. -/// -/// They closely mimic the functionality and naming of the C++11 standard, and -/// should be easily replaceable with the corresponding std:: variants. -/// -/// @section port_sec Portability -/// The Win32 variant uses the native Win32 API for implementing the thread -/// classes, while for other systems, the POSIX threads API (pthread) is used. -/// -/// @section class_sec Classes -/// In order to mimic the threading API of the C++11 standard, subsets of -/// several classes are provided. The fundamental classes are: -/// @li tthread::thread -/// @li tthread::mutex -/// @li tthread::recursive_mutex -/// @li tthread::condition_variable -/// @li tthread::lock_guard -/// -/// @section misc_sec Miscellaneous -/// The following special keywords are available: #thread_local. -/// -/// For more detailed information (including additional classes), browse the -/// different sections of this documentation. A good place to start is: -/// tinythread.h. - -// 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 - -// Platform specific includes -#if defined(_TTHREAD_WIN32_) - #define NOMINMAX - #ifndef WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN - #define __UNDEF_LEAN_AND_MEAN - #endif - #include - #ifdef __UNDEF_LEAN_AND_MEAN - #undef WIN32_LEAN_AND_MEAN - #undef __UNDEF_LEAN_AND_MEAN - #endif -#else - #include - #include - #include - #include -#endif - -// Generic includes -#include - -/// TinyThread++ version (major number). -#define TINYTHREAD_VERSION_MAJOR 1 -/// TinyThread++ version (minor number). -#define TINYTHREAD_VERSION_MINOR 1 -/// TinyThread++ version (full version). -#define TINYTHREAD_VERSION (TINYTHREAD_VERSION_MAJOR * 100 + TINYTHREAD_VERSION_MINOR) - -// Do we have a fully featured C++11 compiler? -#if (__cplusplus > 199711L) || (defined(__STDCXX_VERSION__) && (__STDCXX_VERSION__ >= 201001L)) - #define _TTHREAD_CPP11_ -#endif - -// ...at least partial C++11? -#if defined(_TTHREAD_CPP11_) || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(__GXX_EXPERIMENTAL_CPP0X__) - #define _TTHREAD_CPP11_PARTIAL_ -#endif - -// Macro for disabling assignments of objects. -#ifdef _TTHREAD_CPP11_PARTIAL_ - #define _TTHREAD_DISABLE_ASSIGNMENT(name) \ - name(const name&) = delete; \ - name& operator=(const name&) = delete; -#else - #define _TTHREAD_DISABLE_ASSIGNMENT(name) \ - name(const name&); \ - name& operator=(const name&); -#endif - -/// @def thread_local -/// Thread local storage keyword. -/// A variable that is declared with the @c thread_local keyword makes the -/// value of the variable local to each thread (known as thread-local storage, -/// or TLS). Example usage: -/// @code -/// // This variable is local to each thread. -/// thread_local int variable; -/// @endcode -/// @note The @c thread_local keyword is a macro that maps to the corresponding -/// compiler directive (e.g. @c __declspec(thread)). While the C++11 standard -/// allows for non-trivial types (e.g. classes with constructors and -/// destructors) to be declared with the @c thread_local keyword, most pre-C++11 -/// compilers only allow for trivial types (e.g. @c int). So, to guarantee -/// portable code, only use trivial types for thread local storage. -/// @note This directive is currently not supported on Mac OS X (it will give -/// a compiler error), since compile-time TLS is not supported in the Mac OS X -/// executable format. Also, some older versions of MinGW (before GCC 4.x) do -/// not support this directive. -/// @hideinitializer - -#if !defined(_TTHREAD_CPP11_) && !defined(thread_local) - #if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__SUNPRO_CC) || defined(__IBMCPP__) - #define thread_local __thread - #else - #define thread_local __declspec(thread) - #endif -#endif - - -/// Main name space for TinyThread++. -/// This namespace is more or less equivalent to the @c std namespace for the -/// C++11 thread classes. For instance, the tthread::mutex class corresponds to -/// the std::mutex class. -namespace tthread { - -/// Mutex class. -/// This is a mutual exclusion object for synchronizing access to shared -/// memory areas for several threads. The mutex is non-recursive (i.e. a -/// program may deadlock if the thread that owns a mutex object calls lock() -/// on that object). -/// @see recursive_mutex -class mutex { - public: - /// Constructor. - mutex() -#if defined(_TTHREAD_WIN32_) - : mAlreadyLocked(false) -#endif - { -#if defined(_TTHREAD_WIN32_) - InitializeCriticalSection(&mHandle); -#else - pthread_mutex_init(&mHandle, NULL); -#endif - } - - /// Destructor. - ~mutex() - { -#if defined(_TTHREAD_WIN32_) - DeleteCriticalSection(&mHandle); -#else - pthread_mutex_destroy(&mHandle); -#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(_TTHREAD_WIN32_) - EnterCriticalSection(&mHandle); - while(mAlreadyLocked) Sleep(1000); // Simulate deadlock... - mAlreadyLocked = true; -#else - pthread_mutex_lock(&mHandle); -#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(_TTHREAD_WIN32_) - bool ret = (TryEnterCriticalSection(&mHandle) ? true : false); - if(ret && mAlreadyLocked) - { - LeaveCriticalSection(&mHandle); - ret = false; - } - return ret; -#else - return (pthread_mutex_trylock(&mHandle) == 0) ? true : false; -#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(_TTHREAD_WIN32_) - mAlreadyLocked = false; - LeaveCriticalSection(&mHandle); -#else - pthread_mutex_unlock(&mHandle); -#endif - } - - _TTHREAD_DISABLE_ASSIGNMENT(mutex) - - private: -#if defined(_TTHREAD_WIN32_) - CRITICAL_SECTION mHandle; - bool mAlreadyLocked; -#else - pthread_mutex_t mHandle; -#endif - - friend class condition_variable; -}; - -/// Recursive mutex class. -/// This is a mutual exclusion object for synchronizing access to shared -/// memory areas for several threads. The mutex is recursive (i.e. a thread -/// may lock the mutex several times, as long as it unlocks the mutex the same -/// number of times). -/// @see mutex -class recursive_mutex { - public: - /// Constructor. - recursive_mutex() - { -#if defined(_TTHREAD_WIN32_) - InitializeCriticalSection(&mHandle); -#else - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&mHandle, &attr); -#endif - } - - /// Destructor. - ~recursive_mutex() - { -#if defined(_TTHREAD_WIN32_) - DeleteCriticalSection(&mHandle); -#else - pthread_mutex_destroy(&mHandle); -#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(_TTHREAD_WIN32_) - EnterCriticalSection(&mHandle); -#else - pthread_mutex_lock(&mHandle); -#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(_TTHREAD_WIN32_) - return TryEnterCriticalSection(&mHandle) ? true : false; -#else - return (pthread_mutex_trylock(&mHandle) == 0) ? true : false; -#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(_TTHREAD_WIN32_) - LeaveCriticalSection(&mHandle); -#else - pthread_mutex_unlock(&mHandle); -#endif - } - - _TTHREAD_DISABLE_ASSIGNMENT(recursive_mutex) - - private: -#if defined(_TTHREAD_WIN32_) - CRITICAL_SECTION mHandle; -#else - pthread_mutex_t mHandle; -#endif - - friend class condition_variable; -}; - -/// Lock guard class. -/// The constructor locks the mutex, and the destructor unlocks the mutex, so -/// the mutex will automatically be unlocked when the lock guard goes out of -/// scope. Example usage: -/// @code -/// mutex m; -/// int counter; -/// -/// void increment() -/// { -/// lock_guard guard(m); -/// ++ counter; -/// } -/// @endcode - -template -class lock_guard { - public: - typedef T mutex_type; - - lock_guard() : mMutex(0) {} - - /// The constructor locks the mutex. - explicit lock_guard(mutex_type &aMutex) - { - mMutex = &aMutex; - mMutex->lock(); - } - - /// The destructor unlocks the mutex. - ~lock_guard() - { - if(mMutex) - mMutex->unlock(); - } - - private: - mutex_type * mMutex; -}; - -/// Condition variable class. -/// This is a signalling object for synchronizing the execution flow for -/// several threads. Example usage: -/// @code -/// // Shared data and associated mutex and condition variable objects -/// int count; -/// mutex m; -/// condition_variable cond; -/// -/// // Wait for the counter to reach a certain number -/// void wait_counter(int targetCount) -/// { -/// lock_guard guard(m); -/// while(count < targetCount) -/// cond.wait(m); -/// } -/// -/// // Increment the counter, and notify waiting threads -/// void increment() -/// { -/// lock_guard guard(m); -/// ++ count; -/// cond.notify_all(); -/// } -/// @endcode -class condition_variable { - public: - /// Constructor. -#if defined(_TTHREAD_WIN32_) - condition_variable(); -#else - condition_variable() - { - pthread_cond_init(&mHandle, NULL); - } -#endif - - /// Destructor. -#if defined(_TTHREAD_WIN32_) - ~condition_variable(); -#else - ~condition_variable() - { - pthread_cond_destroy(&mHandle); - } -#endif - - /// Wait for the condition. - /// The function will block the calling thread until the condition variable - /// is woken by @c notify_one(), @c notify_all() or a spurious wake up. - /// @param[in] aMutex A mutex that will be unlocked when the wait operation - /// starts, an locked again as soon as the wait operation is finished. - template - inline void wait(_mutexT &aMutex) - { -#if defined(_TTHREAD_WIN32_) - // Increment number of waiters - EnterCriticalSection(&mWaitersCountLock); - ++ mWaitersCount; - LeaveCriticalSection(&mWaitersCountLock); - - // Release the mutex while waiting for the condition (will decrease - // the number of waiters when done)... - aMutex.unlock(); - _wait(); - aMutex.lock(); -#else - pthread_cond_wait(&mHandle, &aMutex.mHandle); -#endif - } - - /// Notify one thread that is waiting for the condition. - /// If at least one thread is blocked waiting for this condition variable, - /// one will be woken up. - /// @note Only threads that started waiting prior to this call will be - /// woken up. -#if defined(_TTHREAD_WIN32_) - void notify_one(); -#else - inline void notify_one() - { - pthread_cond_signal(&mHandle); - } -#endif - - /// Notify all threads that are waiting for the condition. - /// All threads that are blocked waiting for this condition variable will - /// be woken up. - /// @note Only threads that started waiting prior to this call will be - /// woken up. -#if defined(_TTHREAD_WIN32_) - void notify_all(); -#else - inline void notify_all() - { - pthread_cond_broadcast(&mHandle); - } -#endif - - _TTHREAD_DISABLE_ASSIGNMENT(condition_variable) - - private: -#if defined(_TTHREAD_WIN32_) - void _wait(); - HANDLE mEvents[2]; ///< Signal and broadcast event HANDLEs. - unsigned int mWaitersCount; ///< Count of the number of waiters. - CRITICAL_SECTION mWaitersCountLock; ///< Serialize access to mWaitersCount. -#else - pthread_cond_t mHandle; -#endif -}; - - -/// Thread class. -class thread { - public: -#if defined(_TTHREAD_WIN32_) - typedef HANDLE native_handle_type; -#else - typedef pthread_t native_handle_type; -#endif - - class id; - - /// Default constructor. - /// Construct a @c thread object without an associated thread of execution - /// (i.e. non-joinable). - thread() : mHandle(0), mNotAThread(true) -#if defined(_TTHREAD_WIN32_) - , mWin32ThreadID(0) -#endif - {} - - /// Thread starting constructor. - /// Construct a @c thread object with a new thread of execution. - /// @param[in] aFunction A function pointer to a function of type: - /// void fun(void * arg) - /// @param[in] aArg Argument to the thread function. - /// @note This constructor is not fully compatible with the standard C++ - /// thread class. It is more similar to the pthread_create() (POSIX) and - /// CreateThread() (Windows) functions. - thread(void (*aFunction)(void *), void * aArg); - - /// Destructor. - /// @note If the thread is joinable upon destruction, @c std::terminate() - /// will be called, which terminates the process. It is always wise to do - /// @c join() before deleting a thread object. - ~thread(); - - /// Wait for the thread to finish (join execution flows). - /// After calling @c join(), the thread object is no longer associated with - /// a thread of execution (i.e. it is not joinable, and you may not join - /// with it nor detach from it). - void join(); - - /// Check if the thread is joinable. - /// A thread object is joinable if it has an associated thread of execution. - bool joinable() const; - - /// Detach from the thread. - /// After calling @c detach(), the thread object is no longer assicated with - /// a thread of execution (i.e. it is not joinable). The thread continues - /// execution without the calling thread blocking, and when the thread - /// ends execution, any owned resources are released. - void detach(); - - /// Return the thread ID of a thread object. - id get_id() const; - - /// Get the native handle for this thread. - /// @note Under Windows, this is a @c HANDLE, and under POSIX systems, this - /// is a @c pthread_t. - inline native_handle_type native_handle() - { - return mHandle; - } - - /// Determine the number of threads which can possibly execute concurrently. - /// This function is useful for determining the optimal number of threads to - /// use for a task. - /// @return The number of hardware thread contexts in the system. - /// @note If this value is not defined, the function returns zero (0). - static unsigned hardware_concurrency(); - - _TTHREAD_DISABLE_ASSIGNMENT(thread) - - private: - native_handle_type mHandle; ///< Thread handle. - mutable mutex mDataMutex; ///< Serializer for access to the thread private data. - bool mNotAThread; ///< True if this object is not a thread of execution. -#if defined(_TTHREAD_WIN32_) - unsigned int mWin32ThreadID; ///< Unique thread ID (filled out by _beginthreadex). -#endif - - // This is the internal thread wrapper function. -#if defined(_TTHREAD_WIN32_) - static unsigned WINAPI wrapper_function(void * aArg); -#else - static void * wrapper_function(void * aArg); -#endif -}; - -/// Thread ID. -/// The thread ID is a unique identifier for each thread. -/// @see thread::get_id() -class thread::id { - public: - /// Default constructor. - /// The default constructed ID is that of thread without a thread of - /// execution. - id() : mId(0) {}; - - id(unsigned long int aId) : mId(aId) {}; - - id(const id& aId) : mId(aId.mId) {}; - - inline id & operator=(const id &aId) - { - mId = aId.mId; - return *this; - } - - inline friend bool operator==(const id &aId1, const id &aId2) - { - return (aId1.mId == aId2.mId); - } - - inline friend bool operator!=(const id &aId1, const id &aId2) - { - return (aId1.mId != aId2.mId); - } - - inline friend bool operator<=(const id &aId1, const id &aId2) - { - return (aId1.mId <= aId2.mId); - } - - inline friend bool operator<(const id &aId1, const id &aId2) - { - return (aId1.mId < aId2.mId); - } - - inline friend bool operator>=(const id &aId1, const id &aId2) - { - return (aId1.mId >= aId2.mId); - } - - inline friend bool operator>(const id &aId1, const id &aId2) - { - return (aId1.mId > aId2.mId); - } - - inline friend std::ostream& operator <<(std::ostream &os, const id &obj) - { - os << obj.mId; - return os; - } - - private: - unsigned long int mId; -}; - - -// Related to - minimal to be able to support chrono. -typedef long long __intmax_t; - -/// Minimal implementation of the @c ratio class. This class provides enough -/// functionality to implement some basic @c chrono classes. -template <__intmax_t N, __intmax_t D = 1> class ratio { - public: - static double _as_double() { return double(N) / double(D); } -}; - -/// Minimal implementation of the @c chrono namespace. -/// The @c chrono namespace provides types for specifying time intervals. -namespace chrono { - /// Duration template class. This class provides enough functionality to - /// implement @c this_thread::sleep_for(). - template > class duration { - private: - _Rep rep_; - public: - typedef _Rep rep; - typedef _Period period; - - /// Construct a duration object with the given duration. - template - explicit duration(const _Rep2& r) : rep_(r) {}; - - /// Return the value of the duration object. - rep count() const - { - return rep_; - } - }; - - // Standard duration types. - typedef duration<__intmax_t, ratio<1, 1000000000> > nanoseconds; ///< Duration with the unit nanoseconds. - typedef duration<__intmax_t, ratio<1, 1000000> > microseconds; ///< Duration with the unit microseconds. - typedef duration<__intmax_t, ratio<1, 1000> > milliseconds; ///< Duration with the unit milliseconds. - typedef duration<__intmax_t> seconds; ///< Duration with the unit seconds. - typedef duration<__intmax_t, ratio<60> > minutes; ///< Duration with the unit minutes. - typedef duration<__intmax_t, ratio<3600> > hours; ///< Duration with the unit hours. -} - -/// The namespace @c this_thread provides methods for dealing with the -/// calling thread. -namespace this_thread { - /// Return the thread ID of the calling thread. - thread::id get_id(); - - /// Yield execution to another thread. - /// Offers the operating system the opportunity to schedule another thread - /// that is ready to run on the current processor. - inline void yield() - { -#if defined(_TTHREAD_WIN32_) - Sleep(0); -#else - sched_yield(); -#endif - } - - /// Blocks the calling thread for a period of time. - /// @param[in] aTime Minimum time to put the thread to sleep. - /// Example usage: - /// @code - /// // Sleep for 100 milliseconds - /// this_thread::sleep_for(chrono::milliseconds(100)); - /// @endcode - /// @note Supported duration types are: nanoseconds, microseconds, - /// milliseconds, seconds, minutes and hours. - template void sleep_for(const chrono::duration<_Rep, _Period>& aTime) - { -#if defined(_TTHREAD_WIN32_) - Sleep(int(double(aTime.count()) * (1000.0 * _Period::_as_double()) + 0.5)); -#else - usleep(int(double(aTime.count()) * (1000000.0 * _Period::_as_double()) + 0.5)); -#endif - } -} - -} - -// Define/macro cleanup -#undef _TTHREAD_DISABLE_ASSIGNMENT - -#endif // _TINYTHREAD_H_ diff --git a/depends/xlsxio b/depends/xlsxio index 439fdbc259..e3ed11f6b4 160000 --- a/depends/xlsxio +++ b/depends/xlsxio @@ -1 +1 @@ -Subproject commit 439fdbc259c13f23a3122e68ba35ad5a13bcd97c +Subproject commit e3ed11f6b40bf68b48afc8fc3131ea2b4a22d5b1 diff --git a/depends/zlib/lib/win32/.gitignore b/depends/zlib/lib/.gitignore similarity index 100% rename from depends/zlib/lib/win32/.gitignore rename to depends/zlib/lib/.gitignore diff --git a/depends/zlib/lib/win64/.gitignore b/depends/zlib/lib/win64/.gitignore deleted file mode 100644 index 683bf139fb..0000000000 --- a/depends/zlib/lib/win64/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.lib diff --git a/docs/Core.rst b/docs/Core.rst index 86e357b27c..b386e5ea04 100644 --- a/docs/Core.rst +++ b/docs/Core.rst @@ -53,7 +53,7 @@ double quotes. To include a double quote character, use ``\"``. If the first non-whitespace character is ``:``, the command is parsed in an alternative mode. The non-whitespace characters following the ``:`` are the command name, and the remaining part of the line is used verbatim as -the first argument. This is very useful for the `lua` and `rb` commands. +the first argument. This is very useful for the `lua` command. As an example, the following two command lines are exactly equivalent:: :foo a b "c d" e f @@ -235,10 +235,57 @@ root DF folder): #. :file:`dfhack-config/scripts` #. :file:`save/{world}/scripts` (only if a save is loaded) #. :file:`hack/scripts` +#. :file:`data/installed_mods/...` (see below) For example, if ``teleport`` is run, these folders are searched in order for ``teleport.lua``, and the first matching file is run. +Scripts in installed mods +......................... + +Scripts in mods are automatically added to the script path. The following +directories are searched for mods:: + + ../../workshop/content/975370/ (the DF Steam workshop directory) + mods/ + data/installed_mods/ + +Each mod can have two directories that contain scripts: + +- ``scripts_modactive/`` is added to the script path if and only if the mod is + active in the loaded world. +- ``scripts_modinstalled/`` is added to the script path as long as the mod is + installed in one of the searched mod directories. + +Multiple versions of a mod may be installed at the same time. If a mod is +active in a loaded world, then the scripts for the version of the mod that is +active will be added to the script path. Otherwise, the latest version of each +mod is added to the script path. + +Scripts for active mods take precedence according to their load order when you +generated the current world. + +Scripts for non-active mods are ordered by their containing mod's ID. + +For example, the search paths for mods might look like this:: + + activemod_last_in_load_order/scripts_modactive + activemod_last_in_load_order/scripts_modinstalled + activemod_second_to_last_in_load_order/scripts_modactive + activemod_second_to_last_in_load_order/scripts_modinstalled + ... + inactivemod1/scripts_modinstalled + inactivemod2/scripts_modinstalled + ... + +Not all mods will have script directories, of course, and those mods will not be +added to the script search path. Mods are re-scanned whenever a world is loaded +or unloaded. For more information on scripts and mods, check out the +`modding-guide`. + +Custom script paths +................... + Script paths can be added by modifying :file:`dfhack-config/script-paths.txt`. Each line should start with one of these characters: @@ -259,6 +306,60 @@ the root DF folder. Note that ``script-paths.txt`` is only read at startup, but the paths can also be modified programmatically at any time through the `Lua API `. +Commandline options +=================== + +In addition to `Using an OS terminal`_ to execute commands on startup, DFHack +also recognizes a few commandline options. + +Options passed to Dwarf Fortress +-------------------------------- + +These options can be passed to Dwarf Fortress and will be intercepted by +DFHack. If you are launching Dwarf Fortress from Steam, you can set your +options in the "Launch Options" text box in the properties for the Dwarf +Fortress app (**NOT the DFHack app**). Note that these launch options will be +used regardless of whether you run Dwarf Fortress from its own app or DFHack's. + +- ``--disable-dfhack``: If set, then DFHack will be disabled for the session. + You will have to restart Dwarf Fortress without specifying this option in + order to use DFHack. Note that even if DFHack is disabled, :file:`stdout.txt` + and :file:`stderr.txt` will still be redirected to :file:`stdout.log` and + :file:`stderr.log`, respectively. + +- ``--nosteam-dfhack``: If set, then the DFHack stub launcher will not execute + when you launch DF from its own app in the Steam client. This will prevent + your settings from being restored or backed up with Steam Cloud Save. This is + probably not what you want. If you want to just not have the DFHack playtime + counted towards your hours, see the DFHack stub launcher ``--nowait`` option + below. + +- ``--skip-size-check``: DFHack normally verifies the sizes of important game + on startup and shuts down if a discrepancy is detected. This is intended to + reduce the risk of misalignments in these structures leading to crashes or + other misbehavior. This option bypasses the check. This option should + normally only be used to facilitate DFHack development. This option will + **not** enable DFHack to be used usefully with a version of DF with which + DFHack has not been aligned. + +Options passed to the DFHack Steam stub launcher +------------------------------------------------ + +These options can be passed to the DFHack stub launcher that executes when you +run the DFHack app from the Steam client. You can set your options in the +"Launch Options" text box in the properties for the DFHack app (**NOT the Dwarf +Fortress app**). Note that these launch options will be used regardless of +whether you run Dwarf Fortress from its own app or DFHack's. + +- ``--nowait``: If set, the DFHack stub launcher will not wait for DF to exit + before exiting itself. This may be desired by players who do not want their + playtime "double counted". However, using this option means that your DFHack + settings that get backed up to the cloud will always be out of sync. The stub + launcher normally downloads updated settings from Steam Cloud Save when DF + launches, and then backs up changed settings when DF exits. If this option is + used, then your settings will still be reconciled when DF launches, but + changes made during your play session will not be saved when DF exits. Please + use with caution -- you may lose data. .. _env-vars: @@ -272,14 +373,20 @@ on UNIX-like systems: DFHACK_SOME_VAR=1 ./dfhack +- ``DFHACK_DISABLE``: if set, DFHack will not initialize, not even to redirect + standard output or standard error. This is provided as an alternative + to the ``--disable-dfhack`` commandline parameter above for when environment + variables are more convenient. + - ``DFHACK_PORT``: the port to use for the RPC server (used by ``dfhack-run`` and `remotefortressreader` among others) instead of the default ``5000``. As with the default, if this port cannot be used, the server is not started. See `remote` for more details. -- ``DFHACK_DISABLE_CONSOLE``: if set, the DFHack console is not set up. This is - the default behavior if ``PRINT_MODE:TEXT`` is set in ``data/init/init.txt``. - Intended for situations where DFHack cannot run in a terminal window. +- ``DFHACK_DISABLE_CONSOLE``: if set, DFHack's external console is not set up. + This is the default behavior if ``PRINT_MODE:TEXT`` is set in + ``data/init/init.txt``. Intended for situations where DFHack cannot run in a + terminal window. - ``DFHACK_HEADLESS``: if set, and ``PRINT_MODE:TEXT`` is set, DF's display will be hidden, and the console will be started unless ``DFHACK_DISABLE_CONSOLE`` @@ -308,18 +415,57 @@ Other (non-DFHack-specific) variables that affect DFHack: sensitive), ``DF2CONSOLE()`` will produce UTF-8-encoded text. Note that this should be the case in most UTF-8-capable \*nix terminal emulators already. -Miscellaneous notes -=================== -This section is for odd but important notes that don't fit anywhere else. +Core preferences +================ + +Settings that control DFHack's runtime behavior can be changed dynamically via +the "Preferences" tab in `gui/control-panel` or on the commandline with +`control-panel`. The two most important settings for the core are: + +- ``HIDE_CONSOLE_ON_STARTUP``: On Windows, this controls whether to hide the + external DFHack terminal window on startup. The console is hidden by default + so it does not get in the way of gameplay, but it can be useful to enable for + debugging purposes or if you just prefer to use the external console instead + of the in-game `gui/launcher`. When you change this setting, the new behavior + will take effect the next time you start the game. If you are running the + native Linux version of DF (and DFHack), the terminal that you run the game + from becomes the DFHack console and this setting has no effect. + +- ``HIDE_ARMOK_TOOLS``: Whether to hide "armok" tools in command lists. Also + known as "Mortal mode", this setting keeps god-mode tools out of sight and + out of mind. Highly recommended for players who would prefer if the god-mode + tools were not quite as obvious and accessible. + +.. _performance-monitoring: + +Performance monitoring +====================== + +Though DFHack tools are generally performant, they do take some amount of time +to run. DFHack tracks its impact on DF game speed so the DFHack team can be +aware of (and fix) tools that are taking more than their fair share of +processing time. + +The target threshold for DFHack CPU utilization during unpaused gameplay with +all overlays and automation tools enabled is 10%. This is about the level where +players would notice the impact. In general, DFHack will have even less impact +for most players, since it is not common for every single DFHack tool to be +enabled at once. + +DFHack will record a performance report with the savegame files named +``dfhack-perf-counters.dat``. The report contains measurements from when the +game was loaded to the time when it was saved. By default, only unpaused time is +measured (since processing done while the game is paused doesn't slow anything +down from the player's perspective). You can display a live report at any time +by running:: + + :lua require('script-manager').print_timers() + +You can reset the timers to start a new measurement session by running:: -* If a DF :kbd:`H` hotkey is named with a DFHack command, pressing - the corresponding :kbd:`Fx` button will run that command, instead of - zooming to the set location. - *This feature will be removed in a future version.* (see :issue:`731`) + :lua dfhack.internal.resetPerfCounters() -* The binaries for 0.40.15-r1 to 0.34.11-r4 are on DFFD_. - Older versions are available here_. - *These files will eventually be migrated to GitHub.* (see :issue:`473`) +If you want to record performance over all elapsed time, not just unpaused +time, then instead run:: - .. _DFFD: https://dffd.bay12games.com/search.php?string=DFHack&id=15&limit=1000 - .. _here: https://dethware.org/dfhack/download + :lua dfhack.internal.resetPerfCounters(true) diff --git a/docs/Installing.rst b/docs/Installing.rst index bc58a39b72..a687498e7e 100644 --- a/docs/Installing.rst +++ b/docs/Installing.rst @@ -1,169 +1,174 @@ .. _installing: -================= -Installing DFHack -================= +========== +Installing +========== .. contents:: :local: - Requirements ============ -DFHack supports Windows, Linux, and macOS, and both 64-bit and 32-bit builds -of Dwarf Fortress. +DFHack supports all operating systems and platforms that Dwarf Fortress itself +supports, which at the moment is the 64-bit versions of Windows and Linux. +The Windows build of DFHack also works well under ``wine`` for platforms that +can't run a native version. When running via ``wine``, use the following commandline:: + + wine64 explorer Dwarf\ Fortress.exe .. _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. +are named after. For example, DFHack 50.05 only supported DF 50.05. DFHack +releases *never* support newer versions of DF -- 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 use the latest versions of both DF and DFHack. -Windows -------- +.. _downloading: -* 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 `_ +Downloading DFHack +================== -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. +Stable builds of DFHack are available on +`Steam `__ +or from our `GitHub `__. Either +location will give you exactly the same package. -.. _installing-reqs-linux: +On Steam, note that DFHack is a separate app, not a DF Steam Workshop mod. You +can run DF with DFHack by launching either the DFHack app or the original Dwarf +Fortress app. -Linux ------ +Even if you have a non-Steam version of DF (i.e. Itch or Classic), you can +still install DFHack from Steam to get the benefits of automatic updates and +Steam cloud backups. In this case, install DFHack from Steam and then move your +DF installation into the Steam-created ``Dwarf Fortress`` directory. You have +to run DF via the DFHack app in the Steam client in order to benefit from the +Steam cloud backup features. -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. +If you download from GitHub, 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 ` for details. For example: -In the event that none of the provided binaries work on your distribution, -you may need to `compile DFHack from source `. +* ``dfhack-50.07-r1-Windows-64bit.zip`` supports 64-bit DF on Windows -macOS ------ +.. warning:: -OS X 10.6.8 or later is required. + 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, please see + `building-dfhack-index` for instructions.) +Beta releases +------------- -.. _downloading: +In between stable releases, we may create beta releases to test new features. +These are available via the ``beta`` release channel on Steam or from our +regular Github page as a pre-release tagged with a "beta" or "rc" ("release +candidate") suffix. -Downloading DFHack -================== +Development builds +------------------ -Stable builds of DFHack are available on `GitHub `_. -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 ` -for details. For example: +If you are actively working with the DFHack team on testing a feature, you may +want to download and install a development build. They are available via the +``testing`` release channel on Steam or can be downloaded from the build +artifact list on GitHub for specific repository commits. -* ``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) +To download a development build from GitHub: -The `DFHack website `_ 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). +- Ensure you are logged into your GitHub account +- Go to https://github.com/DFHack/dfhack/actions/workflows/build.yml?query=branch%3Adevelop+event%3Apush+is%3Asuccess +- Click on the first entry (it should have a green checkmark next to it) +- Click the number under "Artifacts" (or scroll down) +- Click on the ``dfhack-*-build-*`` artifact for your platform to download -.. warning:: +The artifacts are "double-zipped". That is, you will have to extract the +initial zip file to get to the package archive. You can extract this second +package the same as if you are doing a manual install (see the next section). - 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 - `building-dfhack-index` for instructions.) +Older releases +-------------- + +If you are downloading DFHack for very old versions of DF, the binaries for +0.40.15-r1 to 0.34.11-r4 are on DFFD_. Even older versions are available here_. + +.. _DFFD: https://dffd.bay12games.com/search.php?string=DFHack&id=15&limit=1000 +.. _here: https://dethware.org/dfhack/download Installing DFHack ================= +If you are installing from Steam, this is handled for you automatically. The +instructions here are for manual installs. + When you `download DFHack `, 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 folders, including a ``hack`` folder where -DFHack binary and system data is stored, a ``dfhack-config`` folder where user -data and configuration is stored, and a ``blueprints`` folder where `quickfort` -blueprints are stored. 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. + If you are on Windows, please remember to right click on the file after + downloading, open the file properties, and select the "Unblock" checkbox. + This will prevent issues with Windows antivirus programs. +The release archives contain a ``hack`` folder where DFHack binary and system +data is stored, a ``stonesense`` folder that contains data specific to the +`stonesense` 3d renderer, and various libraries and executable files. 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 ``save`` folder, +among other things. Some redistributions of Dwarf Fortress may place DF in +another folder, so ensure that the ``hack`` folder ends up next to the ``data`` +folder, and you'll be fine. -Upgrading DFHack -================ +Installing into a wineskin on Mac +--------------------------------- -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). +Until DF (and DFHack) is natively available for Mac, you'll have to run the +Windows version under emulation. Here are the instructions for adding DFHack to +a wineskin that has DF installed in it: -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). +#. Find the location of your existing Dwarf Fortress app (default is + ``/user/applications/Wineskin/``). Control + click and select "Show package + contents" from the menu. +#. Find the location of the ``Dwarf Fortress`` folder inside the package + contents (default is ``/drive_c/Program Files/``) +#. Copy the contents of the unzipped DFHack folder (Windows version) into the + ``Dwarf Fortress`` folder inside the package. -.. note:: +These instructions were last tested on Mac Sonoma 14.1.2. - 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. +Uninstalling DFHack +=================== +Just renaming or removing the ``dfhooks`` library files is enough to disable +DFHack. If you would like to remove all DFHack files, consult the DFHack install +archive to see the list of files and remove the corresponding files in the Dwarf +Fortress folder. Any DFHack files left behind will not negatively affect DF. -Pre-packaged DFHack installations -================================= +On Steam, uninstalling DFHack will cleanly remove everything that was installed +with DFHack, so there is nothing else for you to do. -There are :wiki:`several packs available ` 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. +Note that Steam will leave behind the ``dfhack-config`` folder, which contains +all your personal DFHack-related settings and data. If you keep this folder, +all your settings will be restored when you reinstall DFHack later. -Linux packages -============== +Upgrading DFHack +================ -Third-party DFHack packages are available for some Linux distributions, -including in: +Again, if you have installed from Steam, your copy of DFHack will automatically +be kept up to date. This section is for manual installers. -* `AUR `__, for Arch and related - distributions -* `RPM Fusion `__, - for Fedora and related distributions +First, remove the ``hack`` and ``stonesense`` folders in their entirety. This +ensures that files that don't exist in the latest version are properly removed +and don't affect your new installation. -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. +Then, follow the instructions in the `Installing DFHack`_ section above, making +sure to choose to overwrite any remaining top-level files when extracting. diff --git a/docs/Introduction.rst b/docs/Introduction.rst index a546e56629..8f3506dad5 100644 --- a/docs/Introduction.rst +++ b/docs/Introduction.rst @@ -7,27 +7,33 @@ Introduction and overview DFHack is a Dwarf Fortress memory access library, distributed with a wide variety of useful scripts and plugins. -The project is currently hosted `on GitHub `_, -and can be downloaded from `the releases page `_ -- see `installing` for installation instructions. This is also where the -`DFHack bug tracker `_ is hosted. - -All new releases are announced in `the Bay12 forums thread `_, -which is also a good place for discussion and questions. +The project is hosted `on GitHub `__, +and can be downloaded from `the releases page `__ +-- see `installing` for installation instructions. This is also where the +`DFHack bug tracker `__ is hosted. If you would like +to download the DFHack documentation for offline viewing, you can do so by clicking +the expansion panel in the lower right corner of our +`online documentation `__ and selecting your desired format from +the "Downloads" section. + +New releases are announced in the +`DF subreddit `__, the +`DFHack Discord `__, and the +`Bay12 forums thread `__. Discussion and questions are also +welcome in each of these venues. For users, DFHack provides a significant suite of bugfixes and interface -enhancements by default, and more can be enabled. There are also many tools -(such as `workflow` or `autodump`) which can make life easier. -You can even add third-party scripts and plugins to do almost anything! +enhancements by default, and more features can be enabled as desired. There are +also many tools (such as `autofarm`) which automate aspects of gameplay many players +find toilsome. You can even add third-party scripts and plugins to do almost anything! -For modders, DFHack makes many things possible. Custom reactions, new +For modders, DFHack makes many things possible. Custom reactions, new interactions, magic creature abilities, and more can be set through `tools` -and custom raws. Non-standard DFHack scripts and inits can be stored in the -raw directory, making raws or saves fully self-contained for distribution - -or for coexistence in a single DF install, even with incompatible components. +and custom raws. 3rd party DFHack scripts can be distributed `in mods ` +via the DF Steam Workshop or on the forums. For developers, DFHack unites the various ways tools access DF memory and -allows easier development of new tools. As an open-source project under +allows easier development of new tools. As an open-source project under `various open-source licenses `, contributions are welcome. @@ -37,34 +43,44 @@ allows easier development of new tools. As an open-source project under Getting started =============== -See `installing` for details on installing DFHack. - -Once DFHack is installed, it extends DF with a console that can be used to run -commands. On Windows, this console will open automatically when DF is started. -On Linux and macOS, you will need to run the ``dfhack`` script from a terminal -(instead of the ``df`` script included with DF), and that terminal will be -used by the DFHack console. - -* Basic interaction with DFHack involves entering commands into the console. To - learn what commands are available, you can keep reading this documentation or - skip ahead and use the `ls` and `help` commands. - -* Another way to interact with DFHack is to set in-game `keybindings ` - for certain commands. Many of the newer and user-friendly tools are designed - to be used this way. -* Commands can also run at startup via `init files `, - or in batches at other times with the `script` command. +See `installing` for details about installing DFHack. -* Finally, some commands are persistent once enabled, and will sit in the - background managing or changing some aspect of the game if you `enable` them. +Once DFHack is installed, it extends DF with a console that can be used to run +commands. The in-game version of this console is called `gui/launcher`, and you +can bring it up at any time by hitting the backtick (\`) key (on most keyboards +this is the same as the tilde (~) key). There are also external consoles you can +open in a separate window. On Windows, you can show this console with the `show` +command. On Linux and macOS, you will need to run the ``dfhack`` script from a +terminal, and that terminal will be used as the DFHack console. + +Basic interaction with DFHack involves entering commands into the console. To +learn what commands are available, you can keep reading this documentation or +skip ahead and use the `ls` and `help` commands. The first command you should +run is likely `gui/control-panel` so you can set up which tools you would like +to enable now and which tools you want automatically started for new games. + +Another way to interact with DFHack is to set in-game `keybindings ` +to run commands in response to a hotkey. If you have specific commands that you +run frequently and that don't already have default keybindings, this can be a +better option than adding the command to the `gui/quickcmd` list. + +Commands can also run at startup via `init files `, or in batches +at other times with the `script` command. + +Finally, some commands are persistent once enabled, and will sit in the +background managing or changing some aspect of the game if you `enable` them. .. note:: In order to avoid user confusion, as a matter of policy all GUI tools display the word :guilabel:`DFHack` on the screen somewhere while active. When that is not appropriate because they merely add keybinding hints to - existing DF screens, they deliberately use red instead of green for the key. + existing DF screens, they surround the added text or clickable buttons in red + square brackets. + +For a more thorough introduction and guide through DFHack's capabilities, please see +the `quickstart`. .. _support: @@ -74,7 +90,6 @@ Getting help DFHack has several ways to get help online, including: - The `DFHack Discord server `__ -- The ``#dfhack`` IRC channel on `Libera `__ - GitHub: - for bugs, use the :issue:`issue tracker <>` - for more open-ended questions, use the `discussion board @@ -82,18 +97,13 @@ DFHack has several ways to get help online, including: relatively-new feature as of 2021, but maintainers should still be notified of any discussions here. - The `DFHack thread on the Bay 12 Forum `__ - -Some additional, but less DFHack-specific, places where questions may be answered include: - -- The `/r/dwarffortress `_ questions thread on Reddit -- If you are using a starter pack, the relevant thread on the `Bay 12 Forum `__ - - see the :wiki:`DF Wiki ` for a list of these threads +- The `/r/dwarffortress `__ questions thread on Reddit When reaching out to any support channels regarding problems with DFHack, please remember to provide enough details for others to identify the issue. For instance, specific error messages (copied text or screenshots) are helpful, as -well as any steps you can follow to reproduce the problem. Sometimes, log output -from ``stderr.log`` in the DF folder can point to the cause of issues as well. +well as any steps you can follow to reproduce the problem. Log output from +``stderr.log`` in the DF folder can often help point to the cause of issues. Some common questions may also be answered in documentation, including: diff --git a/docs/Quickstart.rst b/docs/Quickstart.rst index 065ba6ecc8..10d64e0bef 100644 --- a/docs/Quickstart.rst +++ b/docs/Quickstart.rst @@ -13,11 +13,11 @@ What is DFHack? DFHack is an add-on for Dwarf Fortress that enables mods and tools to significantly extend the game. The default DFHack distribution contains a wide -variety of tools, including bugfixes, interface improvements, automation agents, -design blueprints, modding building blocks, and more. Third-party tools (e.g. -mods downloaded from Steam Workshop or the forums) can also seamlessly integrate -with the DFHack framework and extend the game far beyond what can be done by -just modding the raws. +variety of these mods and tools, including bugfixes, interface improvements, +automation agents, design blueprints, modding building blocks, and more. +Third-party tools (e.g. mods downloaded from Steam Workshop or the forums) can +also seamlessly integrate with the DFHack framework and extend the game far +beyond what can be done by just modding the raws. DFHack's mission is to provide tools and interfaces for players and modders to: @@ -35,7 +35,8 @@ itself. Many of the game's rough edges have been smoothed with DFHack tools. Here are some common tasks people use DFHack tools to accomplish: - Automatically chop trees when log stocks are low -- Record blueprint files that allow copy and paste of fort designs +- Mark all damaged items for trade in a single click +- Copy and paste fort layouts - Import and export lists of manager orders - Clean contaminants from map squares that dwarves can't reach - Automatically butcher excess livestock so you don't become overrun with @@ -45,67 +46,93 @@ Here are some common tasks people use DFHack tools to accomplish: - Quickly scan the map for visible ores of specific types so you can focus your mining efforts -Some tools are one-shot commands. For example, you can run `unforbid all ` -to claim all (reachable) items on the map after a messy siege. - -Other tools must be `enabled ` and then they will run in the background. -For example, `enable seedwatch ` will start monitoring your stocks of -seeds and prevent your chefs from cooking seeds that you need for planting. -Tools that are enabled in the context of a fort will save their state with that -fort, and they will remember that they are enabled the next time you load your save. - -A third class of tools add information to the screen or provide new integrated -functionality via the DFHack `overlay` framework. For example, the `unsuspend` -tool, in addition to its basic function of unsuspending all building construction -jobs, can also overlay a marker on suspended buildings to indicate that they are -suspended (and will use different markers to tell you whether this is a problem). +Some tools are one-shot commands. For example, you can run +`unforbid all ` to claim all (reachable) items on the map after a +messy siege. + +Other tools must be `enabled ` once and then they will run in the +background. For example, once enabled, `seedwatch` will start monitoring your +stocks of seeds and prevent your chefs from cooking seeds that you need for +planting. Tools that are enabled in the context of a fort will save their state +with that fort, and they will remember that they are enabled the next time you +load your save. You can see which tools you have enabled and toggle their states +in `gui/control-panel`. + +A third class of tools adds information to the screen or provides new integrated +functionality via the DFHack `overlay` framework. For example, the `sort` tool +adds widgets to the squad member selection screen that allow you to sort and +filter the list of military candidates. You don't have to run any command to get +the benefits of the tool, it appears automatically when you're on the relevant +screen. How can I figure out which commands to run? ------------------------------------------- -There are several ways to scan DFHack tools and find the ones you need right now. +There are several ways to scan DFHack tools and find the ones you need right +now. -The first place to check is the DFHack logo hover hotspot. It's in the upper -left corner of the screen by default, though you can move it anywhere you want -with the `gui/overlay` configuration UI. +The first place to check is the DFHack logo menu. It's in the upper left corner +of the screen by default, though you can move it anywhere you want with the +`gui/overlay` configuration UI. -When you hover the mouse over the logo (or hit the Ctrl-Shift-C keyboard shortcut) -a list of DFHack tools relevant to the current context comes up. For example, when -you have a unit selected, the hotspot will show a list of tools that inspect -units, allow you to edit them, or maybe even teleport them. Next to each tool, -you'll see the hotkey you can hit to invoke the command without even opening the -hover list. +When you click on the logo (or hit the Ctrl-Shift-C keyboard shortcut), a short +list of popular, relevant DFHack tools comes up. These are the tools that have +been assigned hotkeys that are active in the current context. For example, when +you're looking at a fort map, the list will contain fortress design tools like +`gui/quickfort` and `gui/design`. You can click on the tools in the list, or +note the hotkeys listed next to them and maybe use them to launch the tool next +time without even opening the logo menu. The second place to check is the DFHack control panel: `gui/control-panel`. It will give you an overview of which tools are currently enabled, and will allow -you to toggle them on or off, see help text for them, or launch their dedicated -configuration UIs. You can open the control panel from anywhere with the -Ctrl-Shift-E hotkey or by selecting it from the logo hover list. +you to toggle tools on or off, see help text for them, or launch their +dedicated configuration UIs. You can open the control panel from anywhere with +the Ctrl-Shift-E hotkey or by selecting it from the logo menu list. In the control panel, you can also select which tools you'd like to be -automatically enabled when you start a new fort. There are also system settings -you can change, like whether DFHack windows will pause the game when they come -up. - -Finally, you can explore the full extent of the DFHack catalog in `gui/launcher`, -which is always listed first in the DFHack logo hover list. You can also bring up -the launcher by tapping the backtick key (\`) or hitting Ctrl-Shift-D. In the -launcher, you can quickly autocomplete any command name by selecting it in the -list on the right side of the window. Commands are ordered by how often you run -them, so your favorite commands will always be on top. You can also pull full -commandlines out of your history with Alt-S or by clicking on the "history search" -hotkey hint. - -Once you have typed (or autocompleted, or searched for) a command, other commands -related to the one you have selected will appear in the right-hand panel. Scanning -through that list is a great way to learn about new tools that you might find -useful. You can also see how commands are grouped by running the `tags` command. +automatically enabled and popular commands you'd like to run when you start a +new fort. On the "Preferences" tab, there are settings you can change, like +"mortal mode" (you'll learn more about this in the next section) or whether you +want DFHack windows to pause the game when they come up. + +Finally, you can explore the full extent of the DFHack catalog in +`gui/launcher`, which is always listed first in the DFHack logo menu list. You +can bring up the launcher by tapping the backtick key (\`) or hitting +Ctrl-Shift-D. In the launcher, you can quickly autocomplete any command name by +selecting it in the list on the right side of the window. You can filter the list +by command tag, for example, you can see only productivity tools by setting the +"productivity" tag to "include" in the filter panel. Commands are ordered by how +often you run them, so your favorite commands will always be on top. You can +also pull full commandlines out of your history with Alt-S or by clicking on the +"history search" button. + +Once you have typed (or autocompleted, or searched for) a command, other +commands related to the one you have selected will appear in the right-hand +panel. Scanning through that list is a great way to learn about new tools that +you might find useful. The bottom panel will show the full help text for the command you are running, -allowing you to refer to the usage documentation and examples when you are typing -your command. After you run a command, the bottom panel switches to command output -mode, but you can get back to the help text by hitting Ctrl-T or clicking on the -``Help`` tab. +allowing you to refer to the usage documentation and examples when you are +typing your command. After you run a command, the bottom panel switches to +command output mode, but you can get back to the help text by hitting Ctrl-T or +clicking on the ``Help`` tab. + +What if I don't want to be tempted by god-mode tools? +----------------------------------------------------- + +DFHack can give you god-like powers over the game. Sometimes, this is necessary +to recover from game-breaking bugs. Sometimes, this is desirable so players can +create specific role playing environments and situations. Sometimes, this is just +fun : ) + +But sometimes the knowledge that you can just "Armok" your way out of trouble +detracts from the game experience. If this is the way you feel, you can hide +DFHack's god-mode tools -- they all have the tag "armok" -- from the game. Open +`gui/control-panel` and go to the "Preferences" tab. Enable "Mortal mode" to +hide all "armok" tools. You can still access them in `gui/launcher` if you type +their names in full, but they won't show up in autocomplete lists, in the output +of `ls`, or anywhere else. Any global hotkeys that run "armok" tools will be +disabled. How do DFHack in-game windows work? ----------------------------------- @@ -122,84 +149,91 @@ you type at the keyboard. Hit Esc or right click to close the window or cancel the current action. You can click anywhere on the screen that is not a DFHack window to unfocus the window and let it just sit in the background. It won't respond to key presses or mouse clicks until you click on it again to give it -focus. If no DFHack windows are focused, you can right click directly on a window -to close it without left clicking to focus it first. +focus. If no DFHack windows are focused, you can right click directly on a +window to close it without left clicking to focus it first. DFHack windows are draggable from the title bar or from anywhere on the window that doesn't have a mouse-clickable widget on it. Many are resizable as well (if the tool window has components that can reasonably be resized). -You can generally use DFHack tools without interrupting the game. That is, if the -game is unpaused, it can continue to run while a DFHack window is open. If configured -to do so in `gui/control-panel`, tools will initially pause the game to let you -focus on the task at hand, but you can unpause like normal if you want. You can -also interact with the map, scrolling it with the keyboard or mouse and selecting -units, buildings, and items. Some tools will intercept all mouse clicks to allow -you to select regions on the map. When these tools have focus, you will not be able -to use the mouse to interact with map elements or pause/unpause the game. Therefore, -these tools will pause the game when they open, regardless of your settings in -`gui/control-panel`. You can still unpause with the keyboard (spacebar by default), -though. +You can generally use DFHack tools without interrupting the game. That is, if +the game is unpaused, it can continue to run while a DFHack window is open. If +configured to do so in `gui/control-panel`, tools will initially pause the game +to let you focus on the task at hand, but you can unpause like normal if you +want. You can also interact with the map, scrolling it with the keyboard or +mouse and selecting units, buildings, and items. Some tools, like +`gui/blueprint`, will intercept all mouse clicks to allow you to select regions +of the map. When these tools have focus, you will not be able to use the mouse +to interact with map elements or pause/unpause the game. Therefore, these tools +will pause the game when they open, regardless of your settings in +`gui/control-panel`. You can still unpause with the keyboard (spacebar by +default), though. Where do I go next? ------------------- To recap: -You can get to popular, relevant tools for the current context by hovering -the mouse over the DFHack logo or by hitting Ctrl-Shift-C. +You can get to popular, relevant tools for the current context by clicking on +the DFHack logo or by hitting Ctrl-Shift-C. You can enable DFHack tools and configure settings with `gui/control-panel`, -which you can access directly with the Ctrl-Shift-E hotkey. +which you can open from the DFHack logo or access directly with the +Ctrl-Shift-E hotkey. You can get to the launcher and its integrated autocomplete, history search, and help text by hitting backtick (\`) or Ctrl-Shift-D, or, of course, by -running it from the logo hover list. +running it from the logo menu list. With those three interfaces, you have the complete DFHack tool suite at your -fingertips. So what to run first? Here are a few commands to get you started. -You can run them all from the launcher. +fingertips. So what to run first? Here are a few examples to get you started. First, let's import some useful manager orders to keep your fort stocked with basic necessities. Run ``orders import library/basic``. If you go to your -mangager orders screen, you can see all the orders that have been created for you. -Note that you could have imported the orders directly from this screen as well, -using the DFHack `overlay` widget at the bottom of the manager orders panel. - -Next, try setting up `autochop` to automatically designate trees for chopping when -you get low on usable logs. Run `gui/control-panel` and select ``autochop`` in the -``Fort`` list. Click on the button to the left of the name or hit Enter to enable -it. You can then click on the configure button (the gear icon) to launch -`gui/autochop` if you'd like to customize its settings. If you have the extra -screen space, you can go ahead and set the `gui/autochop` window to minimal mode -(click on the hint near the upper right corner of the window or hit Alt-M) and -click on the map so the window loses keyboard focus. As you play the game, you can -glance at the live status panel to check on your stocks of wood. - -Finally, let's do some fort design copy-pasting. Go to some bedrooms that you have -set up in your fort. Run `gui/blueprint`, set a name for your blueprint by -clicking on the name field (or hitting the 'n' hotkey), typing "rooms" (or whatever) -and hitting Enter to set. Then draw a box around the target area by clicking with -the mouse. When you select the second corner, the blueprint will be saved to your -``blueprints`` subfolder. - -Now open up `gui/quickfort`. You can search for the blueprint you just created by -typing its name, but it should be up near the top already. If you copied a dug-out -area with furniture in it, your blueprint will have two labels: "/dig" and "/build". -Click on the "/dig" blueprint or select it with the keyboard arrow keys and hit Enter. -You can rotate or flip the blueprint around if you need to with the transform hotkeys. -You'll see a preview of where the blueprint will be applied as you move the mouse -cursor around the map. Red outlines mean that the blueprint may fail to fully apply -at that location, so be sure to choose a spot where all the preview tiles are shown -with green diamonds. Click the mouse or hit Enter to apply the blueprint and +manager orders screen, you can see all the orders that have been created for +you. Note that you could have imported the orders directly from this screen as +well, using the DFHack `overlay` widget at the bottom of the manager orders +panel. + +Next, try setting up `autochop` to automatically designate trees for chopping +when you get low on usable logs. Run `gui/control-panel` and enable +``autochop`` in the ``Automation`` -> ``Enabled`` tab. Click on the button to +the left of the name or hit Enter to enable it. You can then click on the +configure button (the gear icon) to launch `gui/autochop` if you'd like to +customize its settings (the defaults are usually fine). If you have the extra +screen space, you can go ahead and set the `gui/autochop` window to minimal +mode (click on the button near the upper right corner of the window or hit +Alt-M) and click on the map so the window loses keyboard focus. As you play +the game, you can glance at the live status panel to check on your stocks of +wood. + +Finally, let's do some fort design copy-pasting. Go to some bedrooms that you +have set up in your fort. Run `gui/blueprint`, set a name for your blueprint by +clicking on the name field (or hitting the 'n' hotkey). Type "rooms" (or +whatever) and hit Enter to set. Then draw a box around the target area by +clicking with the mouse. When you select the second corner, the blueprint will +be saved to your ``dfhack-config/blueprints`` subfolder. + +Now open up `gui/quickfort` (the hotkey is Ctrl-Shift-Q). You can search for the +blueprint you just created by typing its name, but it should be up near the top +already. If you copied a dug-out area with furniture in it, you will see two +blueprints with the labels "/dig" and "/build". Click on the "/dig" blueprint or +select it with the keyboard arrow keys and hit Enter. You can rotate or flip the +blueprint around if you need to with the transform hotkeys. You'll see a preview +of where the blueprint will be applied as you move the mouse cursor around the +map. Red outlines mean that the blueprint may fail to fully apply at that +location, so be sure to choose a spot where all the preview tiles are shown with +green diamonds. Click the mouse or hit Enter to apply the blueprint and designate the tiles for digging. Your dwarves will come and dig it out as if you had designated the tiles yourself. -Once the area is dug out, run `gui/quickfort` again and select the "/build" blueprint -this time. Apply the blueprint in the dug-out area, and your furniture will be -designated. It's just that easy! Note that `quickfort` uses `buildingplan` to place -buildings, so you don't even need to have the relevant furniture or building -materials in stock. The planned furniture/buildings will get built whenever you are -able to produce the building materials. +Once the area is dug out, run `gui/quickfort` again and select the "/build" +blueprint this time. Hit ``o`` to generate manager orders for the required +furniture. Click to apply the blueprint in the dug-out area, and your furniture +will be designated. It's just that easy! Note that `quickfort` uses +`buildingplan` to place buildings, so you don't even need to have the relevant +furniture or building materials in stock yet. The planned furniture/buildings +will get built whenever you are able to produce the building materials. -There are many, many more tools to explore. Have fun! +There are many, many more tools to explore. Poke around or ask other player for +advice. Have fun, and dig deep! diff --git a/docs/Tags.rst b/docs/Tags.rst index 60a6a68133..55bfde977b 100644 --- a/docs/Tags.rst +++ b/docs/Tags.rst @@ -13,23 +13,23 @@ for the tag assignment spreadsheet. "when" tags ----------- -- `adventure `: Tools that are useful while in adventure mode. Note that some tools only tagged with "fort" might also work in adventure mode, but not always in expected ways. Feel free to experiment, though! -- `dfhack `: Tools that you use to run DFHack commands or interact with the DFHack library. This tag also includes tools that help you manage the DF game itself (e.g. quicksave, etc.) +- `adventure `: Tools that are useful while in adventure mode. +- `dfhack `: Tools that you use to run DFHack commands or interact with the DFHack or DF system. - `embark `: Tools that are useful while on the fort embark screen or while creating an adventurer. - `fort `: Tools that are useful while in fort mode. - `legends `: Tools that are useful while in legends mode. "why" tags ---------- -- `armok `: Tools that give you complete control over an aspect of the game or provide access to information that the game intentionally keeps hidden. +- `armok `: Tools which give the player god-like powers or the ability to access information the game intentionally keeps hidden. Players that do not wish to see these tools can hide them in the ``Preferences`` tab of `gui/control-panel`. - `auto `: Tools that run in the background and automatically manage routine, toilsome aspects of your fortress. - `bugfix `: Tools that fix specific bugs, either permanently or on-demand. -- `design `: Tools that help you design your fort. -- `dev `: Tools that are useful when developing scripts or mods. -- `fps `: Tools that help you manage FPS drop. +- `design `: Tools that help you with fort layout. +- `dev `: Tools that are useful when debugging or developing mods. +- `fps `: Tools that help you prevent impact to your FPS. - `gameplay `: Tools that introduce new gameplay elements. - `inspection `: Tools that let you view information that is otherwise difficult to find. -- `productivity `: Tools that help you do things that you could do manually, but using the tool is better and faster. +- `productivity `: Tools that help you perform common tasks quickly and easily. "what" tags ----------- @@ -40,13 +40,13 @@ for the tag assignment spreadsheet. - `items `: Tools that interact with in-game items. - `jobs `: Tools that interact with jobs. - `labors `: Tools that deal with labor assignment. -- `map `: Tools that interact with the game map. +- `map `: Tools that interact with the game map. - `military `: Tools that interact with the military. -- `plants `: Tools that interact with trees, shrubs, and crops. +- `plants `: Tools that interact with grass, trees, shrubs, and crops. - `stockpiles `: Tools that interact with stockpiles. - `units `: Tools that interact with units. - `workorders `: Tools that interact with workorders. "misc" tags ----------- -- `untested `: Tools that are not yet tested with the current release. +- `unavailable `: Tools that are not yet available for the current release. diff --git a/docs/Tools.rst b/docs/Tools.rst index 401276d7f3..67d7edc54b 100644 --- a/docs/Tools.rst +++ b/docs/Tools.rst @@ -3,8 +3,8 @@ DFHack tools ============ -DFHack has **a lot** of tools. This page attempts to make it clearer what they -are, how they work, and how to find the ones you want. +DFHack comes with **a lot** of tools. This page attempts to make it clearer +what they are, how they work, and how to find the ones you want. .. contents:: Contents :local: @@ -36,6 +36,12 @@ more than one category. If you already know what you're looking for, try the `search` or Ctrl-F on this page. If you'd like to see the full list of tools in one flat list, please refer to the `annotated index `. +Some tools are part of our back catalog and haven't been updated yet for v50 of +Dwarf Fortress. These tools are tagged as +`unavailable `. They will still appear in the +alphabetical list at the bottom of this page, but unavailable tools will not +listed in any of the indices. + DFHack tools by game mode ------------------------- diff --git a/docs/about/Authors.rst b/docs/about/Authors.rst index 75b9eb4f7f..a154d314b6 100644 --- a/docs/about/Authors.rst +++ b/docs/about/Authors.rst @@ -3,7 +3,7 @@ List of authors The following is a list of people who have contributed to DFHack, in alphabetical order. -If you should be here and aren't, please get in touch on IRC or the forums, +If you should be here and aren't, please get in touch on Discord or the forums, or make a pull request! ======================= ======================= =========================== @@ -12,6 +12,8 @@ Name Github Other 8Z 8Z Abel abstern acwatkins acwatkins +Aleksandr Glotov glotov4 +Alex Blamey Cubittus Alexander Collins gearsix Alexander Gavrilov angavrilov ag Amber Brown hawkowl @@ -41,6 +43,7 @@ Cameron Ewell Ozzatron Carter Bray Qartar Chris Dombroski cdombroski Chris Parsons chrismdp +Christian Doczkal chdoc cjhammel cjhammel Clayton Hughes Clément Vuchener cvuchener @@ -52,12 +55,16 @@ David Nilsolm David Corbett dscorbett David Seguin dseguin David Timm dtimm +Dean Golden LightHardt Deon -dikbut Tjudge1 +dhthwy dhthwy +dikbutdagrate Tjudge1 Dmitrii Kurkin Kurkin DoctorVanGogh DoctorVanGogh Donald Ruegsegger hashaash doomchild doomchild +Droseran Droseran +dvantwisk dvantwisk DwarvenM DwarvenM Eamon Bode eamondo2 Baron Von Munchhausen EarthPulseAcademy EarthPulseAcademy @@ -82,6 +89,7 @@ Herwig Hochleitner bendlas Hevlikn Hevlikn Ian S kremlin- IndigoFenix +Jacek Konieczny Jajcus James 20k James Gilles kazimuth James Logsdon jlogsdon @@ -96,6 +104,7 @@ Joel Meador janxious John Beisley huin John Cosker johncosker John Shade gsvslto +Johnny Fisher jfisher446 JohnnyWing Jonas Ask Jonathan Clark AridTag Josh Cooper cppcooper coope @@ -119,6 +128,7 @@ Matthew Cline Matthew Lindner mlindner Matthew Taylor ymber yutna Max maxthyme Max^TM +Maxim Verkhov nibirubingus McArcady McArcady melkor217 melkor217 Meneth32 @@ -128,15 +138,19 @@ Michael Crouch creidieki Michon van Dooren MaienM miffedmap miffedmap Mike Stewart thewonderidiot +Mikhail Panov Halifay Mikko Juola Noeda Adeon Milo Christiansen milochristiansen MithrilTuxedo MithrilTuxedo mizipzor mizipzor moversti moversti +mrrho mrrho Murad Beybalaev Erquint Myk Taylor myk002 +Najeeb Al-Shabibi master-spike napagokc napagokc Neil Little nmlittle +Nicholas McDaniel NicksWorld Nick Rart nickrart comestible Nicolas Ayala nicolasayala Nik Nyby nikolas @@ -146,8 +160,10 @@ NotRexButCaesar NotRexButCaesar Nuno Fernandes UnknowableCoder nuvu vallode Omniclasm +Ong Ying Gao ong-yinggao98 oorzkws oorzkws OwnageIsMagic OwnageIsMagic +pajawojciech pajawojciech palenerd dlmarquis PassionateAngler PassionateAngler Patrik Lundell PatrikLundell @@ -158,9 +174,12 @@ Petr Mrázek peterix Pfhreak Pfhreak Pierre Lulé plule Pierre-David Bélanger pierredavidbelanger +PopnROFL PopnROFL potato ppaawwll ppaawwll ðŸ‡ðŸ‡ðŸ‡ðŸ‡ Priit Laes plaes +PrzemysÅ‚aw Skrobot frogi16 +psychowico wiktor-obrebski Putnam Putnam3145 quarque2 quarque2 Quietust quietust _Q @@ -192,6 +211,7 @@ rubybrowncoat rubybrowncoat Rumrusher rumrusher RusAnon RusAnon Ryan Bennitt ryanbennitt +Ryan Dwyer ToxicBananaParty Jimdude2435 Ryan Williams Bumber64 Bumber sami scamtank scamtank @@ -200,10 +220,13 @@ Sebastian Wolfertz Enkrod SeerSkye SeerSkye seishuuu seishuuu Seth Woodworth sethwoodworth +shevernitskiy shevernitskiy Shim Panze Shim-Panze +Silver silverflyone simon Simon Jackson sizeak Simon Lees simotek +Squid Coder realSquidCoder stolencatkarma Stoyan Gaydarov sgayda2 Su Moth-Tolias @@ -211,7 +234,9 @@ suokko suokko shrieker sv-esk sv-esk Tachytaenius wolfboyft Tacomagic +tatoyoda600 tatoyoda600 TaxiService TaxiService +terribleperson terribleperson thefriendlyhacker thefriendlyhacker TheHologram TheHologram Theo Kalfas teolandon @@ -221,6 +246,7 @@ thurin thurin Tim Siegel softmoth Tim Walberg twalberg Timothy Collett danaris +Timothy Torres timothymtorres Timur Kelman TymurGubayev Tom Jobbins TheBloke Tom Prince @@ -230,11 +256,14 @@ Travis Hoppe thoppe orthographic-pedant txtsd txtsd U-glouglou\\simon Valentin Ochs Cat-Ion +Varnavskii Aleksandr Crystalwarrior Vitaly Pronkin pronvit mifki ViTuRaS ViTuRaS Vjek vjek +Vladimir Florov foxxelias Warmist warmist Wes Malone wesQ3 +Will H TSM-EVO Will Rogers wjrogers WoosterUK WoosterUK XianMaeve XianMaeve diff --git a/docs/about/History.rst b/docs/about/History.rst index 67b65f3bc1..4bd4ec6429 100644 --- a/docs/about/History.rst +++ b/docs/about/History.rst @@ -15,6 +15,2382 @@ generation system ` to handle. :local: :depth: 1 +DFHack 0.47.05-r8 +================= + +New Plugins +----------- +- `channel-safely`: auto-manage channel designations to keep dwarves safe +- `overlay`: plugin is transformed from a single line of text that runs `gui/launcher` on click to a fully-featured overlay injection framework. It now houses a popup menu for keybindings relevant to the current DF screen, all the widgets previously provided by `dwarfmonitor` (e.g. the current date and number of happy/unhappy dwarves), the overlay that highlights suspended buildings when you pause, and others. See `overlay-dev-guide` for details. + +New Scripts +----------- +- `gui/overlay`: configuration interface for the DFHack overlays and overlay widgets. includes a click-and-drag interface for repositioning widgets! + +Fixes +----- +- Core: ensure ``foo.init`` always runs before ``foo.*.init`` (e.g. ``dfhack.init`` should always run before ``dfhack.something.init``) +- `autofarm`: flush output so status text is visible immediately after running the command +- `autolabor`, `autohauler`: properly handle jobs 241, 242, and 243 +- `automaterial`: + - fix the cursor jumping up a z level when clicking quickly after box select + - fix rendering errors with box boundary markers +- `buildingplan`: fix crash when canceling out of placement mode for a building with planning mode enabled and subsequently attempting to place a building that does not have planning mode enabled and that has no pertinent materials available +- `dwarf-op`: fixed error when matching dwarves by name +- `gui/create-item`: prevent materials list filter from intercepting sublist hotkeys +- `gui/gm-unit`: fixed behavior of ``+`` and ``-`` to adjust skill values instead of populating the search field +- `hotkeys`: correctly detect hotkeys bound to number keys, F11, and F12 +- `labormanager`: associate quern construction with the correct labor +- `mousequery`: fix the cursor jumping up z levels sometimes when using TWBT +- `tiletypes`: no longer resets dig priority to the default when updating other properties of a tile +- `warn-stealers`: + - register callback with correct event name so that units entering the map are detected + - announce thieving creatures that spawn already revealed + - cache unit IDs instead of unit objects to avoid referencing stale pointers +- `workorder`: fix interpretation of json-specified orders that set the ``item_type`` field +- ``EventManager``: + - fix a segmentation fault with the ``REPORT`` event + - fix the ``JOB_STARTED`` event only sending events to the first handler listed instead of all registered handlers + +Misc Improvements +----------------- +- UX: + - List widgets now have mouse-interactive scrollbars + - You can now hold down the mouse button on a scrollbar to make it scroll multiple times. + - You can now drag the scrollbar up and down to scroll to a specific spot +- `autolabor`, `autohauler`: refactored to use DFHack's messaging system for info/debug/trace messages +- `blueprint`: + - new ``--smooth`` option for recording all smoothed floors and walls instead of just the ones that require smoothing for later carving + - record built constructions in blueprints + - record stockpile/building/zone names in blueprints + - record room sizes in blueprints + - generate meta blueprints to reduce the number of blueprints you have to apply + - support splitting the output file into phases grouped by when they can be applied + - when splitting output files, number them so they sort into the order you should apply them in +- `digtype`: new ``-z`` option for digtype to restrict designations to the current z-level and down +- `dwarfmonitor`: widgets have been ported to the overlay framework and can be enabled and configured via the `gui/overlay` UI +- `gui/blueprint`: support new blueprint phases and options +- `gui/cp437-table`: new global keybinding for the clickable on-screen keyboard for players with keyboard layouts that prevent them from using certain keys: Ctrl-Shift-K +- `gui/create-item`: restrict materials to those normally allowed by the game by default, introduce new ``--unrestricted`` option for full freedom in choosing materials +- `gui/launcher`: show help for commands that start with ':' (like ``:lua``) +- `gui/quantum`: add option to allow corpses and refuse in your quantum stockpile +- `hotkeys`: + - hotkey screen has been transformed into an interactive `overlay` widget that you can bring up by moving the mouse cursor over the hotspot (in the upper left corner of the screen by default). Enable/disable/reposition the hotspot in the `gui/overlay` UI. Even if the hotspot is disabled, the menu can be brought up at any time with the Ctrl-Shift-C hotkey. + - now supports printing active hotkeys to the console with ``hotkeys list`` +- `ls`: + - indent tag listings and wrap them in the rightmost column for better readability + - new ``--exclude`` option for hiding matched scripts from the output. this can be especially useful for modders who don't want their mod scripts to be included in ``ls`` output. +- `modtools/create-unit`: better unit naming, more argument checks, assign nemesis save data for units without civilization so they can be properly saved when offloaded +- `orders`: replace shell craft orders in the standard orders list you get with ``orders import library/basic`` with orders for shell leggings. They have a slightly higher trade price. Also, "shleggings" is just hilarious. +- `quickfort-library-guide`: improved layout of marksdwarf barracks in the example Dreamfort blueprints +- `spectate`: + - new ``auto-unpause`` option for auto-dismissal of announcement pause events (e.g. sieges). + - new ``auto-disengage`` option for auto-disengagement of plugin through player interaction whilst unpaused. + - new ``tick-threshold`` option for specifying the maximum time to follow the same dwarf + - new ``animals`` option for sometimes following animals + - new ``hostiles`` option for sometimes following hostiles + - new ``visiting`` option for sometimes following visiting merchants, diplomats or plain visitors + - added persistent configuration of the plugin settings +- `unsuspend`: new `overlay` for displaying status of suspended buildings (functionality migrated from removed `resume` plugin) + +Documentation +------------- +- `overlay-dev-guide`: documentation and guide for injecting functionality into DF viewscreens from Lua scripts and creating interactive overlay widgets +- ``dfhack.gui.revealInDwarfmodeMap``: document ``center`` bool for Lua API + +Removed +------- +- `gui/create-item`: removed ``--restricted`` option. it is now the default behavior +- `resume`: functionality (including suspended building overlay) has moved to `unsuspend` + +API +--- +- Constructions module: added ``insert()`` to insert constructions into the game's sorted list. +- MiscUtils: added the following string transformation functions (refactored from ``uicommon.h``): ``int_to_string``, ``ltrim``, ``rtrim``, and ``trim``; added ``string_to_int`` +- Units module: + - added new predicates for: + - ``isUnitInBox()`` + - ``isAnimal()`` + - ``isVisiting()`` any visiting unit (diplomat, merchant, visitor) + - ``isVisitor()`` ie. not merchants or diplomats + - ``isInvader()`` + - ``isDemon()`` returns true for unique/regular demons + - ``isTitan()`` + - ``isMegabeast()`` + - ``isGreatDanger()`` returns true if unit is a demon, titan, or megabeast + - ``isSemiMegabeast()`` + - ``isNightCreature()`` + - ``isDanger()`` returns true if is a 'GreatDanger', semi-megabeast, night creature, undead, or invader + - modified predicates: + - ``isUndead()`` now optionally ignores vampires instead of always ignoring vampires + - ``isCitizen()`` now optionally ignores insane citizens instead of always ignoring insane citizens + - new action timer API for speeding up of slowing down units +- ``Gui::anywhere_hotkey``: for plugin commands bound to keybindings that can be invoked on any screen +- ``Gui::autoDFAnnouncement``, ``Gui::pauseRecenter``: added functionality reverse-engineered from announcement code +- ``Gui::revealInDwarfmodeMap``: Now enforce valid view bounds when pos invalid, add variant accepting x, y, z +- ``Lua::Push()``: now handles maps with otherwise supported keys and values +- ``Lua::PushInterfaceKeys()``: transforms viewscreen ``feed()`` keys into something that can be interpreted by lua-based widgets + +Internals +--------- +- Constructions module: ``findAtTile`` now uses a binary search instead of a linear search +- MSVC warning level upped to /W3, and /WX added to make warnings cause compilations to fail. + +Lua +--- +- Lua mouse events now conform to documented behavior in `lua-api` -- ``_MOUSE_L_DOWN`` will be sent exactly once per mouse click and ``_MOUSE_L`` will be sent repeatedly as long as the button is held down. Similarly for right mouse button events. +- ``dfhack.constructions.findAtTile()``: exposed preexisting function to Lua. +- ``dfhack.constructions.insert()``: exposed new function to Lua. +- ``gui.Screen.show()``: now returns ``self`` as a convenience +- ``gui.View.getMousePos()`` now takes an optional ``ViewRect`` parameter in case the caller wants to get the mouse pos relative to a rect that is not the frame_body (such as the frame_rect that includes the frame itself) +- ``widgets.EditField``: now allows other widgets to process characters that the ``on_char`` callback rejects. +- ``widgets.FilteredList``: now provides a useful default search key for list items made up of text tokens instead of plain text +- ``widgets.HotkeyLabel``: now ignores mouse clicks when ``on_activate`` is not defined +- ``widgets.List``: + - new ``getIdxUnderMouse()`` function for detecting the list index under the active mouse cursor. this allows for "selection follows mouse" behavior + - shift-clicking now triggers the ``submit2`` attribute function if it is defined +- ``widgets.Panel``: new ``frame_style`` and ``frame_title`` attributes for drawing frames around groups of widgets +- ``widgets.ResizingPanel``: now accounts for frame inset when calculating frame size +- ``widgets.Scrollbar``: new scrollbar widget that can be paired with an associated scrollable widget. Integrated with ``widgets.Label`` and ``widgets.List``. + +Structures +---------- +- ``general_refst``: type virtual union member for ``ITEM_GENERAL`` +- ``historical_figure_info.T_reputation.unk_2c``: identify ``year`` + ``year_ticks`` +- ``itemst``: identify two vmethods related to adding thread improvements to items made of cloth, and label several previously unknown return types +- ``proj_magicst``: correct structure fields (to match 40d) +- ``unit_action_type_group``: added enum and tagged ``unit_action_type`` entries with its groups for DFHack's new action timer API. +- ``world``: identify type of a vector (still not known what it's for, but it's definitely an item vector) + + +DFHack 0.47.05-r7 +================= + +New Plugins +----------- +- `autobutcher`: split off from `zone` into its own plugin. Note that to enable, the command has changed from ``autobutcher start`` to ``enable autobutcher``. +- `autonestbox`: split off from `zone` into its own plugin. Note that to enable, the command has changed from ``autonestbox start`` to ``enable autonestbox``. +- `overlay`: display a "DFHack" button in the lower left corner that you can click to start the new GUI command launcher. The `dwarfmonitor` weather display had to be moved to make room for the button. If you are seeing the weather indicator rendered over the overlay button, please remove the ``dfhack-config/dwarfmonitor.json`` file to fix the weather indicator display offset. + +New Scripts +----------- +- `gui/kitchen-info`: adds more info to the Kitchen screen +- `gui/launcher`: in-game command launcher with autocomplete, history, and context-sensitive help +- `gui/workorder-details`: adjusts work orders' input item, material, traits +- `max-wave`: dynamically limit the next immigration wave, can be set to repeat +- `pop-control`: persistent per fortress population cap, `hermit`, and `max-wave` management +- `warn-stealers`: warn when creatures that may steal your food, drinks, or items become visible + +New Internal Commands +--------------------- +- `tags`: new built-in command to list the tool category tags and their definitions. tags associated with each tool are visible in the tool help and in the output of `ls`. + +Fixes +----- +- `autochop`: designate largest trees for chopping first, instead of the smallest +- `devel/query`: fixed error when --tile is specified +- `dig-now`: Fix direction of smoothed walls when adjacent to a door or floodgate +- `dwarf-op`: fixed error when applying the Miner job to dwarves +- `emigration`: fix emigrant logic so unhappy dwarves leave as designed +- `gui/gm-unit`: allow ``+`` and ``-`` to adjust skill values as intended instead of letting the filter intercept the characters +- `gui/unit-info-viewer`: fix logic for displaying undead creature names +- `gui/workflow`: restore functionality to the add/remove/order hotkeys on the workflow status screen +- `modtools/moddable-gods`: fixed an error when assigning spheres +- `quickfort`: `Dreamfort ` blueprint set: declare the hospital zone before building the coffer; otherwise DF fails to stock the hospital with materials +- `view-item-info`: fixed a couple errors when viewing items without materials +- ``dfhack.buildings.findCivzonesAt``: no longer return duplicate civzones after loading a save with existing civzones +- ``dfhack.run_script``: ensure the arguments passed to scripts are always strings. This allows other scripts to call ``run_script`` with numeric args and it won't break parameter parsing. +- ``job.removeJob()``: ensure jobs are removed from the world list when they are canceled + +Misc Improvements +----------------- +- History files: ``dfhack.history``, ``tiletypes.history``, ``lua.history``, and ``liquids.history`` have moved to the ``dfhack-config`` directory. If you'd like to keep the contents of your current history files, please move them to ``dfhack-config``. +- Init scripts: ``dfhack.init`` and other init scripts have moved to ``dfhack-config/init/``. If you have customized your ``dfhack.init`` file and want to keep your changes, please move the part that you have customized to the new location at ``dfhack-config/init/dfhack.init``. If you do not have changes that you want to keep, do not copy anything, and the new defaults will be used automatically. +- UX: + - You can now move the cursor around in DFHack text fields in ``gui/`` scripts (e.g. `gui/blueprint`, `gui/quickfort`, or `gui/gm-editor`). You can move the cursor by clicking where you want it to go with the mouse or using the Left/Right arrow keys. Ctrl+Left/Right will move one word at a time, and Alt+Left/Right will move to the beginning/end of the text. + - You can now click on the hotkey hint text in many ``gui/`` script windows to activate the hotkey, like a button. Not all scripts have been updated to use the clickable widget yet, but you can try it in `gui/blueprint` or `gui/quickfort`. + - Label widget scroll icons are replaced with scrollbars that represent the percentage of text on the screen and move with the position of the visible text, just like web browser scrollbars. +- `devel/query`: + - inform the user when a query has been truncated due to ``--maxlength`` being hit. + - increased default maxlength value from 257 to 2048 +- `do-job-now`: new global keybinding for boosting the priority of the jobs associated with the selected building/work order/unit/item etc.: Alt-N +- `dwarf-op`: replaces [ a b c ] option lists with a,b,c option lists +- `gui/gm-unit`: don't clear the list filter when you adjust a skill value +- `gui/quickfort`: + - better formatting for the generated manager orders report + - you can now click on the map to move the blueprint anchor point to that tile instead of having to use the cursor movement keys + - display an error message when the blueprints directory cannot be found +- `gui/workorder-details`: new keybinding on the workorder details screen: ``D`` +- `keybinding`: support backquote (\`) as a hotkey (and assign the hotkey to the new `gui/launcher` interface) +- `ls`: can now filter tools by substring or tag. note that dev scripts are hidden by default. pass the ``--dev`` option to show them. +- `manipulator`: + - add a library of useful default professions + - move professions configuration from ``professions/`` to ``dfhack-config/professions/`` to keep it together with other dfhack configuration. If you have saved professions that you would like to keep, please manually move them to the new folder. +- `orders`: added useful library of manager orders. see them with ``orders list`` and import them with, for example, ``orders import library/basic`` +- `prioritize`: new ``defaults`` keyword to prioritize the list of jobs that the community agrees should generally be prioritized. Run ``prioritize -a defaults`` to try it out in your fort! +- `prospect`: add new ``--show`` option to give the player control over which report sections are shown. e.g. ``prospect all --show ores`` will just show information on ores. +- `quickfort`: + - `Dreamfort ` blueprint set improvements: set traffic designations to encourage dwarves to eat cooked food instead of raw ingredients + - library blueprints are now included by default in ``quickfort list`` output. Use the new ``--useronly`` (or just ``-u``) option to filter out library blueprints. + - better error message when the blueprints directory cannot be found +- `seedwatch`: ``seedwatch all`` now adds all plants with seeds to the watchlist, not just the "basic" crops. +- ``materials.ItemTraitsDialog``: added a default ``on_select``-handler which toggles the traits. + +Documentation +------------- +- Added `modding-guide` +- Group DFHack tools by `tag ` so similar tools are grouped and easy to find +- Update all DFHack tool documentation (300+ pages) with standard syntax formatting, usage examples, and overall clarified text. + +Removed +------- +- `fix/build-location`: The corresponding DF bug (5991) was fixed in DF 0.40.05 +- `fix/diplomats`: DF bug 3295 fixed in 0.40.05 +- `fix/fat-dwarves`: DF bug 5971 fixed in 0.40.05 +- `fix/feeding-timers`: DF bug 2606 is fixed in 0.40.12 +- `fix/merchants`: DF bug that prevents humans from making trade agreements has been fixed +- `gui/assign-rack`: No longer useful in current DF versions +- `gui/hack-wish`: Replaced by `gui/create-item` +- `gui/no-dfhack-init`: No longer useful since players don't have to create their own ``dfhack.init`` files anymore + +API +--- +- Removed "egg" ("eggy") hook support (Linux only). The only remaining method of hooking into DF is by interposing SDL calls, which has been the method used by all binary releases of DFHack. +- Removed ``Engravings`` module (C++-only). Access ``world.engravings`` directly instead. +- Removed ``Notes`` module (C++-only). Access ``ui.waypoints.points`` directly instead. +- Removed ``Windows`` module (C++-only) - unused. +- ``Constructions`` module (C++-only): removed ``t_construction``, ``isValid()``, ``getCount()``, ``getConstruction()``, and ``copyConstruction()``. Access ``world.constructions`` directly instead. +- ``Gui::getSelectedItem()``, ``Gui::getAnyItem()``: added support for the artifacts screen +- ``Units::teleport()``: now sets ``unit.idle_area`` to discourage units from walking back to their original location (or teleporting back, if using `fastdwarf`) + +Lua +--- +- Added ``dfhack.screen.hideGuard()``: exposes the C++ ``Screen::Hide`` to Lua +- History: added ``dfhack.getCommandHistory(history_id, history_filename)`` and ``dfhack.addCommandToHistory(history_id, history_filename, command)`` so gui scripts can access a commandline history without requiring a terminal. +- ``helpdb``: database and query interface for DFHack tool help text +- ``tile-material``: fix the order of declarations. The ``GetTileMat`` function now returns the material as intended (always returned nil before). Also changed the license info, with permission of the original author. +- ``utils.df_expr_to_ref()``: fixed some errors that could occur when navigating tables +- ``widgets.CycleHotkeyLabel``: clicking on the widget will now cycle the options and trigger ``on_change()``. This also applies to the ``ToggleHotkeyLabel`` subclass. +- ``widgets.EditField``: + - new ``onsubmit2`` callback attribute is called when the user hits Shift-Enter. + - new function: ``setCursor(position)`` sets the input cursor. + - new attribute: ``ignore_keys`` lets you ignore specified characters if you want to use them as hotkeys +- ``widgets.FilteredList``: new attribute: ``edit_ignore_keys`` gets passed to the filter EditField as ``ignore_keys`` +- ``widgets.HotkeyLabel``: clicking on the widget will now call ``on_activate()``. +- ``widgets.Label``: ``scroll`` function now interprets the keywords ``+page``, ``-page``, ``+halfpage``, and ``-halfpage`` in addition to simple positive and negative numbers. + +Structures +---------- +- Eliminate all "anon_X" names from structure fields +- ``army``: change ``squads`` vector type to ``world_site_inhabitant``, identify ``min_smell_trigger``+``max_odor_level``+``max_low_light_vision``+``sense_creature_classes`` +- ``cave_column_rectangle``: identify coordinates +- ``cave_column``: identify Z coordinates +- ``embark_profile``: identify reclaim fields, add missing pet_count vector +- ``entity_population``: identify ``layer_id`` +- ``feature``: identify "shiftCoords" vmethod, ``irritation_level`` and ``irritation_attacks`` fields +- ``flow_guide``: identify "shiftCoords" vmethod +- ``general_refst``: name parameters on ``getLocation`` and ``setLocation`` vmethods +- ``general_ref_locationst``: name member fields +- ``historical_entity``: confirm ``hostility_level`` and ``siege_tier`` +- ``item``: identify method ``notifyCreatedMasterwork`` that is called when a masterwork is created. +- ``language_name_type``: identify ``ElfTree`` and ``SymbolArtifice`` thru ``SymbolFood`` +- ``misc_trait_type``: update auto-decrement markers, remove obsolete references +- ``timed_event``: identify ``layer_id`` +- ``ui_advmode``: identify several fields as containing coordinates +- ``ui_build_selector``: identify ``cur_walk_tag`` and ``min_weight_races``+``max_weight_races`` +- ``ui``: identify actual contents of ``unk5b88`` field, identify infiltrator references +- ``unitst``: identify ``histeventcol_id`` field inside status2 +- ``viewscreen_barterst``: name member fields +- ``viewscreen_tradegoodsst``: rename trade_reply ``OffendedAnimal``+``OffendedAnimalAlt`` to ``OffendedBoth``+``OffendedAnimal`` +- ``world_site_inhabitant``: rename ``outcast_id`` and ``founder_outcast_entity_id``, identify ``interaction_id`` and ``interaction_effect_idx`` + + +DFHack 0.47.05-r6 +================= + +New Scripts +----------- +- `assign-minecarts`: automatically assign minecarts to hauling routes that don't have one +- `deteriorate`: combines, replaces, and extends previous `deteriorateclothes`, `deterioratecorpses`, and `deterioratefood` scripts. +- `gui/petitions`: shows petitions. now you can see which guildhall/temple you agreed to build! +- `gui/quantum`: point-and-click tool for creating quantum stockpiles +- `gui/quickfort`: shows blueprint previews on the live map so you can apply them interactively +- `modtools/fire-rate`: allows modders to adjust the rate of fire for ranged attacks + +Fixes +----- +- `build-now`: walls built above other walls can now be deconstructed like regularly-built walls +- `eventful`: + - fix ``eventful.registerReaction`` to correctly pass ``call_native`` argument thus allowing canceling vanilla item creation. Updated related documentation. + - renamed NEW_UNIT_ACTIVE event to UNIT_NEW_ACTIVE to match the ``EventManager`` event name + - fixed UNIT_NEW_ACTIVE event firing too often +- `gui/dfstatus`: no longer count items owned by traders +- `gui/unit-info-viewer`: fix calculation/labeling of unit size +- ``job.removeJob()``: fixes regression in DFHack 0.47.05-r5 where items/buildings associated with the job were not getting disassociated when the job is removed. Now `build-now` can build buildings and `gui/mass-remove` can cancel building deconstruction again +- ``widgets.CycleHotkeyLabel``: allow initial option values to be specified as an index instead of an option value + +Misc Improvements +----------------- +- `build-now`: buildings that were just designated with `buildingplan` are now built immediately (as long as there are items available to build the buildings with) instead of being skipped until buildingplan gets around to doing its regular scan +- `caravan`: new ``unload`` command, fixes endless unloading at the depot by reconnecting merchant pack animals that were disconnected from their owners +- `confirm`: + - added a confirmation dialog for removing manager orders + - allow players to pause the confirmation dialog until they exit the current screen +- `deteriorate`: new ``now`` command immediately deteriorates items of the specified types +- `dfhack-examples-guide`: + - refine food preparation orders so meal types are chosen intelligently according to the amount of meals that exist and the number of available items to cook with + - reduce required stock of dye for "Dye cloth" orders + - fix material conditions for making jugs and pots + - make wooden jugs by default to differentiate them from other stone tools. this allows players to more easily select jugs out with a properly-configured stockpile (i.e. the new ``woodentools`` alias) +- `list-agreements`: now displays translated guild names, worshipped deities, petition age, and race-appropriate professions (e.g. "Craftsdwarf" instead of "Craftsman") +- `quickfort-alias-guide`: + - new aliases: ``forbidsearch``, ``permitsearch``, and ``togglesearch`` use the `search-plugin` plugin to alter the settings for a filtered list of item types when configuring stockpiles + - new aliases: ``stonetools`` and ``woodentools``. the ``jugs`` alias is deprecated. please use ``stonetools`` instead, which is the same as the old ``jugs`` alias. + - new aliases: ``usablehair``, ``permitusablehair``, and ``forbidusablehair`` alter settings for the types of hair/wool that can be made into cloth: sheep, llama, alpaca, and troll. The ``craftrefuse`` aliases have been altered to use this alias as well. + - new aliases: ``forbidthread``, ``permitthread``, ``forbidadamantinethread``, ``permitadamantinethread``, ``forbidcloth``, ``permitcloth``, ``forbidadamantinecloth``, and ``permitadamantinecloth`` give you more control how adamantine-derived items are stored +- `quickfort`: + - `Dreamfort ` blueprint set improvements: automatically create tavern, library, and temple locations (restricted to residents only by default), automatically associate the rented rooms with the tavern + - `Dreamfort ` blueprint set improvements: new design for the services level, including were-bitten hospital recovery rooms and an appropriately-themed interrogation room next to the jail! Also fits better in a 1x1 embark for minimalist players. +- `workorder`: a manager is no longer required for orders to be created (matching behavior in the game itself) + +Removed +------- +- `deteriorateclothes`: please use ``deteriorate --types=clothes`` instead +- `deterioratecorpses`: please use ``deteriorate --types=corpses`` instead +- `deterioratefood`: please use ``deteriorate --types=food`` instead +- `devel/unforbidall`: please use `unforbid` instead. You can silence the output with ``unforbid all --quiet`` + +API +--- +- ``word_wrap``: argument ``bool collapse_whitespace`` converted to enum ``word_wrap_whitespace_mode mode``, with valid modes ``WSMODE_KEEP_ALL``, ``WSMODE_COLLAPSE_ALL``, and ``WSMODE_TRIM_LEADING``. + +Lua +--- +- ``gui.View``: all ``View`` subclasses (including all ``Widgets``) can now acquire keyboard focus with the new ``View:setFocus()`` function. See docs for details. +- ``materials.ItemTraitsDialog``: new dialog to edit item traits (where "item" is part of a job or work order or similar). The list of traits is the same as in vanilla work order conditions "``t`` change traits". +- ``widgets.EditField``: + - the ``key_sep`` string is now configurable + - can now display an optional string label in addition to the activation key + - views that have an ``EditField`` subview no longer need to manually manage the ``EditField`` activation state and input routing. This is now handled automatically by the new ``gui.View`` keyboard focus subsystem. +- ``widgets.HotkeyLabel``: the ``key_sep`` string is now configurable + +Structures +---------- +- ``art_image_elementst``: identify vmethod ``markDiscovered`` and second parameter for ``getName2`` +- ``art_image_propertyst``: identify parameters for ``getName`` +- ``building_handler``: fix vmethod ``get_machine_hookup_list`` parameters +- ``vermin``: identify ``category`` field as new enum +- ``world.unk_26a9a8``: rename to ``allow_announcements`` + + +DFHack 0.47.05-r5 +================= + +New Plugins +----------- +- `spectate`: "spectator mode" -- automatically follows dwarves doing things in your fort + +New Scripts +----------- +- `devel/eventful-client`: useful for testing eventful events + +New Tweaks +---------- +- `tweak`: ``partial-items`` displays percentage remaining for partially-consumed items such as hospital cloth + +Fixes +----- +- `autofarm`: removed restriction on only planting "discovered" plants +- `cxxrandom`: fixed exception when calling ``bool_distribution`` +- `devel/query`: + - fixed a problem printing parents when the starting path had lua pattern special characters in it + - fixed a crash when trying to iterate over linked lists +- `gui/advfort`: encrust and stud jobs no longer consume reagents without actually improving the target item +- `luasocket`: return correct status code when closing socket connections so clients can know when to retry +- `quickfort`: constructions and bridges are now properly placed over natural ramps +- `setfps`: keep internal ratio of processing FPS to graphics FPS in sync when updating FPS + +Misc Improvements +----------------- +- `autochop`: + - only designate the amount of trees required to reach ``max_logs`` + - preferably designate larger trees over smaller ones +- `autonick`: + - now displays help instead of modifying dwarf nicknames when run without parameters. use ``autonick all`` to rename all dwarves. + - added ``--quiet`` and ``--help`` options +- `blueprint`: + - ``track`` phase renamed to ``carve`` + - carved fortifications and (optionally) engravings are now captured in generated blueprints +- `cursecheck`: new option, ``--ids`` prints creature and race IDs of the cursed creature +- `debug`: + - DFHack log messages now have configurable headers (e.g. timestamp, origin plugin name, etc.) via the ``debugfilter`` command of the `debug` plugin + - script execution log messages (e.g. "Loading script: dfhack_extras.init" can now be controlled with the ``debugfilter`` command. To hide the messages, add this line to your ``dfhack.init`` file: ``debugfilter set Warning core script`` +- `dfhack-examples-guide`: + - add mugs to ``basic`` manager orders + - ``onMapLoad_dreamfort.init`` remove "cheaty" commands and new tweaks that are now in the default ``dfhack.init-example`` file +- `dig-now`: handle fortification carving +- `EventManager`: + - add new event type ``JOB_STARTED``, triggered when a job first gains a worker + - add new event type ``UNIT_NEW_ACTIVE``, triggered when a new unit appears on the active list +- `gui/blueprint`: support new `blueprint` options and phases +- `gui/create-item`: Added "(chain)" annotation text for armours with the [CHAIN_METAL_TEXT] flag set +- `manipulator`: tweak colors to make the cursor easier to locate +- `quickfort`: + - support transformations for blueprints that use expansion syntax + - adjust direction affinity when transforming buildings (e.g. bridges that open to the north now open to the south when rotated 180 degrees) + - automatically adjust cursor movements on the map screen in ``#query`` and ``#config`` modes when the blueprint is transformed. e.g. ``{Up}`` will be played back as ``{Right}`` when the blueprint is rotated clockwise and the direction key would move the map cursor + - new blueprint mode: ``#config``; for playing back key sequences that don't involve the map cursor (like configuring hotkeys, changing standing orders, or modifying military uniforms) + - API function ``apply_blueprint`` can now take ``data`` parameters that are simple strings instead of coordinate maps. This allows easier application of blueprints that are just one cell. +- `stocks`: allow search terms to match the full item label, even when the label is truncated for length +- `tweak`: ``stable-cursor`` now keeps the cursor stable even when the viewport moves a small amount +- ``dfhack.init-example``: recently-added tweaks added to example ``dfhack.init`` file + +Documentation +------------- +- add more examples to the plugin example skeleton files so they are more informative for a newbie +- update download link and installation instructions for Visual C++ 2015 build tools on Windows +- update information regarding obtaining a compatible Windows build environment +- `confirm`: correct the command name in the plugin help text +- `cxxrandom`: added usage examples +- `lua-string`: document DFHack string extensions (``startswith()``, ``endswith()``, ``split()``, ``trim()``, ``wrap()``, and ``escape_pattern()``) +- `quickfort-blueprint-guide`: added screenshots to the Dreamfort case study and overall clarified text +- `remote-client-libs`: add new Rust client library +- ``Lua API.rst``: added ``isHidden(unit)``, ``isFortControlled(unit)``, ``getOuterContainerRef(unit)``, ``getOuterContainerRef(item)`` + +API +--- +- add functions reverse-engineered from ambushing unit code: ``Units::isHidden()``, ``Units::isFortControlled()``, ``Units::getOuterContainerRef()``, ``Items::getOuterContainerRef()`` +- ``Job::removeJob()``: use the job cancel vmethod graciously provided by The Toady One in place of a synthetic method derived from reverse engineering + +Lua +--- +- `custom-raw-tokens`: library for accessing tokens added to raws by mods +- ``dfhack.units``: Lua wrappers for functions reverse-engineered from ambushing unit code: ``isHidden(unit)``, ``isFortControlled(unit)``, ``getOuterContainerRef(unit)``, ``getOuterContainerRef(item)`` +- ``dialogs``: ``show*`` functions now return a reference to the created dialog +- ``dwarfmode.enterSidebarMode()``: passing ``df.ui_sidebar_mode.DesignateMine`` now always results in you entering ``DesignateMine`` mode and not ``DesignateChopTrees``, even when you looking at the surface (where the default designation mode is ``DesignateChopTrees``) +- ``dwarfmode.MenuOverlay``: + - if ``sidebar_mode`` attribute is set, automatically manage entering a specific sidebar mode on show and restoring the previous sidebar mode on dismiss + - new class function ``renderMapOverlay`` to assist with painting tiles over the visible map +- ``ensure_key``: new global function for retrieving or dynamically creating Lua table mappings +- ``safe_index``: now properly handles lua sparse tables that are indexed by numbers +- ``string``: new function ``escape_pattern()`` escapes regex special characters within a string +- ``widgets``: + - unset values in ``frame_inset`` table default to ``0`` + - ``FilteredList`` class now allows all punctuation to be typed into the filter and can match search keys that start with punctuation + - minimum height of ``ListBox`` dialog is now calculated correctly when there are no items in the list (e.g. when a filter doesn't match anything) + - if ``autoarrange_subviews`` is set, ``Panel``\s will now automatically lay out widgets vertically according to their current height. This allows you to have widgets dynamically change height or become visible/hidden and you don't have to worry about recalculating frame layouts + - new class ``ResizingPanel`` (subclass of ``Panel``) automatically recalculates its own frame height based on the size, position, and visibility of its subviews + - new class ``HotkeyLabel`` (subclass of ``Label``) that displays and reacts to hotkeys + - new class ``CycleHotkeyLabel`` (subclass of ``Label``) allows users to cycle through a list of options by pressing a hotkey + - new class ``ToggleHotkeyLabel`` (subclass of ``CycleHotkeyLabel``) toggles between ``On`` and ``Off`` states + - new class ``WrappedLabel`` (subclass of ``Label``) provides autowrapping of text + - new class ``TooltipLabel`` (subclass of ``WrappedLabel``) provides tooltip-like behavior + +Structures +---------- +- ``adventure_optionst``: add missing ``getUnitContainer`` vmethod +- ``historical_figure.T_skills``: add ``account_balance`` field +- ``job``: add ``improvement`` field (union with ``hist_figure_id`` and ``race``) +- ``report_init.flags``: rename ``sparring`` flag to ``hostile_combat`` +- ``viewscreen_loadgamest``: add missing ``LoadingImageSets`` and ``LoadingDivinationSets`` enum values to ``cur_step`` field + + +DFHack 0.47.05-r4 +================= + +Fixes +----- +- `blueprint`: + - fixed passing incorrect parameters to `gui/blueprint` when you run ``blueprint gui`` with optional params + - key sequences for constructed walls and down stairs are now correct +- `exportlegends`: fix issue where birth year was outputted as birth seconds +- `quickfort`: + - produce a useful error message instead of a code error when a bad query blueprint key sequence leaves the game in a mode that does not have an active cursor + - restore functionality to the ``--verbose`` commandline flag + - don't designate tiles for digging if they are within the bounds of a planned or constructed building + - allow grates, bars, and hatches to be built on flat floor (like DF itself allows) + - allow tracks to be built on hard, natural rock ramps + - allow dig priority to be properly set for track designations + - fix incorrect directions for tracks that extend south or east from a track segment pair specified with expansion syntax (e.g. T(4x4)) + - fix parsing of multi-part extended zone configs (e.g. when you set custom supply limits for hospital zones AND set custom flags for a pond) + - fix error when attempting to set a custom limit for plaster powder in a hospital zone +- `tailor`: fixed some inconsistencies (and possible crashes) when parsing certain subcommands, e.g. ``tailor help`` +- `tiletypes-here`, `tiletypes-here-point`: fix crash when running from an unsuspended core context + +Misc Improvements +----------------- +- Core: DFHack now prints the name of the init script it is running to the console and stderr +- `automaterial`: ensure construction tiles are laid down in order when using `buildingplan` to plan the constructions +- `blueprint`: + - all blueprint phases are now written to a single file, using `quickfort` multi-blueprint file syntax. to get the old behavior of each phase in its own file, pass the ``--splitby=phase`` parameter to ``blueprint`` + - you can now specify the position where the cursor should be when the blueprint is played back with `quickfort` by passing the ``--playback-start`` parameter + - generated blueprints now have labels so `quickfort` can address them by name + - all building types are now supported + - multi-type stockpiles are now supported + - non-rectangular stockpiles and buildings are now supported + - blueprints are no longer generated for phases that have nothing to do (unless those phases are explicitly enabled on the commandline or gui) + - new "track" phase that discovers and records carved tracks + - new "zone" phase that discovers and records activity zones, including custom configuration for ponds, gathering, and hospitals +- `dig-now`: no longer leaves behind a designated tile when a tile was designated beneath a tile designated for channeling +- `gui/blueprint`: + - support the new ``--splitby`` and ``--format`` options for `blueprint` + - hide help text when the screen is too short to display it +- `orders`: added ``list`` subcommand to show existing exported orders +- `quickfort-library-guide`: added light aquifer tap and pump stack blueprints (with step-by-step usage guides) to the quickfort blueprint library +- `quickfort`: + - Dreamfort blueprint set improvements: added iron and flux stock level indicators on the industry level and a prisoner processing quantum stockpile in the surface barracks. also added help text for how to manage sieges and how to manage prisoners after a siege. + - add ``quickfort.apply_blueprint()`` API function that can be called directly by other scripts + - by default, don't designate tiles for digging that have masterwork engravings on them. quality level to preserve is configurable with the new ``--preserve-engravings`` param + - implement single-tile track aliases so engraved tracks can be specified tile-by-tile just like constructed tracks + - allow blueprints to jump up or down multiple z-levels with a single command (e.g. ``#>5`` goes down 5 levels) + - blueprints can now be repeated up and down a specified number of z-levels via ``repeat`` markers in meta blueprints or the ``--repeat`` commandline option + - blueprints can now be rotated, flipped, and shifted via ``transform`` and ``shift`` markers in meta blueprints or the corresponding commandline options +- `quickfort`, `dfhack-examples-guide`: Dreamfort blueprint set improvements based on playtesting and feedback. includes updated profession definitions. + +Removed +------- +- `digfort`: please use `quickfort` instead +- `fortplan`: please use `quickfort` instead + +API +--- +- ``Buildings::findCivzonesAt()``: lookups now complete in constant time instead of linearly scanning through all civzones in the game + +Lua +--- +- ``argparse.processArgsGetopt()``: you can now have long form parameters that are not an alias for a short form parameter. For example, you can now have a parameter like ``--longparam`` without needing to have an equivalent one-letter ``-l`` param. +- ``dwarfmode.enterSidebarMode()``: ``df.ui_sidebar_mode.DesignateMine`` is now a supported target sidebar mode + +Structures +---------- +- ``historical_figure_info.spheres``: give spheres vector a usable name +- ``unit.enemy``: fix definition of ``enemy_status_slot`` and add ``combat_side_id`` + + +DFHack 0.47.05-r3 +================= + +New Plugins +----------- +- `dig-now`: instantly completes dig designations (including smoothing and carving tracks) + +New Scripts +----------- +- `autonick`: gives dwarves unique nicknames +- `build-now`: instantly completes planned building constructions +- `do-job-now`: makes a job involving current selection high priority +- `prioritize`: automatically boosts the priority of current and/or future jobs of specified types, such as hauling food, tanning hides, or pulling levers +- `reveal-adv-map`: exposes/hides all world map tiles in adventure mode + +Fixes +----- +- Core: ``alt`` keydown state is now cleared when DF loses and regains focus, ensuring the ``alt`` modifier state is not stuck on for systems that don't send standard keyup events in response to ``alt-tab`` window manager events +- Lua: ``memscan.field_offset()``: fixed an issue causing `devel/export-dt-ini` to crash sometimes, especially on Windows +- `autofarm`: autofarm will now count plant growths as well as plants toward its thresholds +- `autogems`: no longer assigns gem cutting jobs to workshops with gem cutting prohibited in the workshop profile +- `devel/export-dt-ini`: fixed incorrect vtable address on Windows +- `quickfort`: + - allow machines (e.g. screw pumps) to be built on ramps just like DF allows + - fix error message when the requested label is not found in the blueprint file + +Misc Improvements +----------------- +- `assign-beliefs`, `assign-facets`: now update needs of units that were changed +- `buildingplan`: now displays which items are attached and which items are still missing for planned buildings +- `devel/query`: + - updated script to v3.2 (i.e. major rewrite for maintainability/readability) + - merged options ``-query`` and ``-querykeys`` into ``-search`` + - merged options ``-depth`` and ``-keydepth`` into ``-maxdepth`` + - replaced option ``-safer`` with ``-excludetypes`` and ``-excludekinds`` + - improved how tile data is dealt with identification, iteration, and searching + - added option ``-findvalue`` + - added option ``-showpaths`` to print full data paths instead of nested fields + - added option ``-nopointers`` to disable printing values with memory addresses + - added option ``-alignto`` to set the value column's alignment + - added options ``-oneline`` and alias ``-1`` to avoid using two lines for fields with metadata + - added support for matching multiple patterns + - added support for selecting the highlighted job, plant, building, and map block data + - added support for selecting a Lua script (e.g. `dorf_tables`) + - added support for selecting a Json file (e.g. dwarf_profiles.json) + - removed options ``-listall``, ``-listfields``, and ``-listkeys`` - these are now simply default behaviour + - ``-table`` now accepts the same abbreviations (global names, ``unit``, ``screen``, etc.) as `lua` and `gui/gm-editor` +- `dorf_tables`: integrated `devel/query` to show the table definitions when requested with ``-list`` +- `geld`: fixed ``-help`` option +- `gui/gm-editor`: made search case-insensitive +- `orders`: + - support importing and exporting reaction-specific item conditions, like "lye-containing" for soap production orders + - new ``sort`` command. sorts orders according to their repeat frequency. this prevents daily orders from blocking other orders for similar items from ever getting completed. +- `quickfort`: + - Dreamfort blueprint set improvements: extensive revision based on playtesting and feedback. includes updated ``onMapLoad_dreamfort.init`` settings file, enhanced automation orders, and premade profession definitions. see full changelog at https://github.com/DFHack/dfhack/pull/1921 and https://github.com/DFHack/dfhack/pull/1925 + - accept multiple commands, list numbers, and/or blueprint labels on a single commandline +- `tailor`: allow user to specify which materials to be used, and in what order +- `tiletypes-here`, `tiletypes-here-point`: add ``--cursor`` and ``--quiet`` options to support non-interactive use cases +- `unretire-anyone`: replaced the 'undead' descriptor with 'reanimated' to make it more mod-friendly +- `warn-starving`: added an option to only check sane dwarves + +Documentation +------------- +- `dfhack-examples-guide`: documentation for all of `dreamfort`'s supporting files (useful for all forts, not just Dreamfort!) +- `quickfort-library-guide`: updated dreamfort documentation and added screenshots + +API +--- +- The ``Items`` module ``moveTo*`` and ``remove`` functions now handle projectiles + +Internals +--------- +- Install tests in the scripts repo into hack/scripts/test/scripts when the CMake variable BUILD_TESTS is defined + +Lua +--- +- new global function: ``safe_pairs(iterable[, iterator_fn])`` will iterate over the ``iterable`` (a table or iterable userdata) with the ``iterator_fn`` (``pairs`` if not otherwise specified) if iteration is possible. If iteration is not possible or would throw an error, for example if ``nil`` is passed as the ``iterable``, the iteration is just silently skipped. + +Structures +---------- +- ``cursed_tomb``: new struct type +- ``job_item``: identified several fields +- ``ocean_wave_maker``: new struct type +- ``worldgen_parms``: moved to new struct type + + +DFHack 0.47.05-r2 +================= + +New Scripts +----------- +- `clear-webs`: removes all webs on the map and/or frees any webbed creatures +- `devel/block-borders`: overlay that displays map block borders +- `devel/luacov`: generate code test coverage reports for script development. Define the ``DFHACK_ENABLE_LUACOV=1`` environment variable to start gathering coverage metrics. +- `fix/drop-webs`: causes floating webs to fall to the ground +- `gui/blueprint`: interactive frontend for the `blueprint` plugin (with mouse support!) +- `gui/mass-remove`: mass removal/suspension tool for buildings and constructions +- `reveal-hidden-sites`: exposes all undiscovered sites +- `set-timeskip-duration`: changes the duration of the "Updating World" process preceding the start of a new game, enabling you to jump in earlier or later than usual + +Fixes +----- +- Fixed an issue preventing some external scripts from creating zones and other abstract buildings (see note about room definitions under "Internals") +- Fixed an issue where scrollable text in Lua-based screens could prevent other widgets from scrolling +- `bodyswap`: + - stopped prior party members from tagging along after bodyswapping and reloading the map + - made companions of bodyswapping targets get added to the adventurer party - they can now be viewed using the in-game party system +- `buildingplan`: + - fixed an issue where planned constructions designated with DF's sizing keys (``umkh``) would sometimes be larger than requested + - fixed an issue preventing other plugins like `automaterial` from planning constructions if the "enable all" buildingplan setting was turned on + - made navigation keys work properly in the materials selection screen when alternate keybindings are used +- `color-schemes`: fixed an error in the ``register`` subcommand when the DF path contains certain punctuation characters +- `command-prompt`: fixed issues where overlays created by running certain commands (e.g. `gui/liquids`, `gui/teleport`) would not update the parent screen correctly +- `dwarfvet`: fixed a crash that could occur with hospitals overlapping with other buildings in certain ways +- `embark-assistant`: fixed faulty early exit in first search attempt when searching for waterfalls +- `gui/advfort`: fixed an issue where starting a workshop job while not standing at the center of the workshop required advancing time manually +- `gui/unit-info-viewer`: fixed size description displaying unrelated values instead of size +- `orders`: fixed crash when importing orders with malformed IDs +- `quickfort`: + - comments in blueprint cells no longer prevent the rest of the row from being read. A cell with a single '#' marker in it, though, will still stop the parser from reading further in the row. + - fixed an off-by-one line number accounting in blueprints with implicit ``#dig`` modelines + - changed to properly detect and report an error on sub-alias params with no values instead of just failing to apply the alias later (if you really want an empty value, use ``{Empty}`` instead) + - improved handling of non-rectangular and non-solid extent-based structures (like fancy-shaped stockpiles and farm plots) + - fixed conversion of numbers to DF keycodes in ``#query`` blueprints + - fixed various errors with cropping across the map edge + - properly reset config to default values in ``quickfort reset`` even if if the ``dfhack-config/quickfort/quickfort.txt`` config file doesn't mention all config vars. Also now works even if the config file doesn't exist. +- `stonesense`: fixed a crash that could occur when ctrl+scrolling or closing the Stonesense window +- ``quickfortress.csv`` blueprint: fixed refuse stockpile config and prevented stockpiles from covering stairways + +Misc Improvements +----------------- +- Added adjectives to item selection dialogs, used in tools like `gui/create-item` - this makes it possible to differentiate between different types of high/low boots, shields, etc. (some of which are procedurally generated) +- `blueprint`: + - made ``depth`` and ``name`` parameters optional. ``depth`` now defaults to ``1`` (current level only) and ``name`` defaults to "blueprint" + - ``depth`` can now be negative, which will result in the blueprints being written from the highest z-level to the lowest. Before, blueprints were always written from the lowest z-level to the highest. + - added the ``--cursor`` option to set the starting coordinate for the generated blueprints. A game cursor is no longer necessary if this option is used. +- `devel/annc-monitor`: added ``report enable|disable`` subcommand to filter combat reports +- `embark-assistant`: slightly improved performance of surveying and improved code a little +- `gui/advfort`: added workshop name to workshop UI +- `quickfort`: + - the Dreamfort blueprint set can now be comfortably built in a 1x1 embark + - added the ``--cursor`` option for running a blueprint at specific coordinates instead of starting at the game cursor position + - added more helpful error messages for invalid modeline markers + - added support for extra space characters in blueprints + - added a warning when an invalid alias is encountered instead of silently ignoring it + - made more quiet when the ``--quiet`` parameter is specified +- `setfps`: improved error handling +- `stonesense`: sped up startup time +- `tweak` hide-priority: changed so that priorities stay hidden (or visible) when exiting and re-entering the designations menu +- `unretire-anyone`: the historical figure selection list now includes the ``SYN_NAME`` (necromancer, vampire, etc) of figures where applicable + +Documentation +------------- +- Added more client library implementations to the `remote interface docs ` + +API +--- +- Added ``dfhack.maps.getPlantAtTile(x, y, z)`` and ``dfhack.maps.getPlantAtTile(pos)``, and updated ``dfhack.gui.getSelectedPlant()`` to use it +- Added ``dfhack.units.teleport(unit, pos)`` + +Internals +--------- +- Room definitions and extents are now created for abstract buildings so callers don't have to initialize the room structure themselves +- The DFHack test harness is now much easier to use for iterative development. Configuration can now be specified on the commandline, there are more test filter options, and the test harness can now easily rerun tests that have been run before. +- The ``test/main`` command to invoke the test harness has been renamed to just ``test`` +- Unit tests can now use ``delay_until(predicate_fn, timeout_frames)`` to delay until a condition is met +- Unit tests must now match any output expected to be printed via ``dfhack.printerr()`` +- Unit tests now support fortress mode (allowing tests that require a fortress map to be loaded) - note that these tests are skipped by continuous integration for now, pending a suitable test fortress + +Lua +--- +- new library: ``argparse`` is a collection of commandline argument processing functions +- new string utility functions: + - ``string:wrap(width)`` wraps a string at space-separated word boundaries + - ``string:trim()`` removes whitespace characters from the beginning and end of the string + - ``string:split(delimiter, plain)`` splits a string with the given delimiter and returns a table of substrings. if ``plain`` is specified and set to ``true``, ``delimiter`` is interpreted as a literal string instead of as a pattern (the default) +- new utility function: ``utils.normalizePath()``: normalizes directory slashes across platforms to ``/`` and coalesces adjacent directory separators +- `reveal`: now exposes ``unhideFlood(pos)`` functionality to Lua +- `xlsxreader`: added Lua class wrappers for the xlsxreader plugin API +- ``argparse.processArgsGetopt()`` (previously ``utils.processArgsGetopt()``): + - now returns negative numbers (e.g. ``-10``) in the list of positional parameters instead of treating it as an option string equivalent to ``-1 -0`` + - now properly handles ``--`` like GNU ``getopt`` as a marker to treat all further parameters as non-options + - now detects when required arguments to long-form options are missing +- ``gui.dwarfmode``: new function: ``enterSidebarMode(sidebar_mode, max_esc)`` which uses keypresses to get into the specified sidebar mode from whatever the current screen is +- ``gui.Painter``: fixed error when calling ``viewport()`` method + +Structures +---------- +- Identified remaining rhythm beat enum values +- ``ui_advmode.interactions``: identified some fields related to party members +- ``ui_advmode_menu``: identified several enum items +- ``ui_advmode``: + - identified several fields + - renamed ``wait`` to ``rest_mode`` and changed to an enum with correct values +- ``viewscreen_legendsst.cur_page``: added missing ``Books`` enum item, which fixes some other values + + +DFHack 0.47.05-r1 +================= + +Fixes +----- +- `confirm`: stopped exposing alternate names when convicting units +- `prospector`: improved pre embark rough estimates, particularly for small clusters + +Misc Improvements +----------------- +- `autohauler`: allowed the ``Alchemist`` labor to be enabled in `manipulator` and other labor screens so it can be used for its intended purpose of flagging that no hauling labors should be assigned to a dwarf. Before, the only way to set the flag was to use an external program like Dwarf Therapist. +- `embark-assistant`: slightly improved performance of surveying +- `gui/no-dfhack-init`: clarified how to dismiss dialog that displays when no ``dfhack.init`` file is found +- `quickfort`: + - Dreamfort blueprint set improvements: `significant `_ refinements across the entire blueprint set. Dreamfort is now much faster, much more efficient, and much easier to use. The `checklist `__ now includes a mini-walkthrough for quick reference. The spreadsheet now also includes `embark profile suggestions `__ + - added aliases for configuring masterwork and artifact core quality for all stockpile categories that have them; made it possible to take from multiple stockpiles in the ``quantumstop`` alias + - an active cursor is no longer required for running #notes blueprints (like the dreamfort walkthrough) + - you can now be in any mode with an active cursor when running ``#query`` blueprints (before you could only be in a few "approved" modes, like look, query, or place) + - refined ``#query`` blueprint sanity checks: cursor should still be on target tile at end of configuration, and it's ok for the screen ID to change if you are destroying (or canceling destruction of) a building + - now reports how many work orders were added when generating manager orders from blueprints in the gui dialog + - added ``--dry-run`` option to process blueprints but not change any game state + - you can now specify the number of desired barrels, bins, and wheelbarrows for individual stockpiles when placing them + - ``quickfort orders`` on a ``#place`` blueprint will now enqueue manager orders for barrels, bins, or wheelbarrows that are explicitly set in the blueprint. + - you can now add alias definitions directly to your blueprint files instead of having to put them in a separate aliases.txt file. makes sharing blueprints with custom alias definitions much easier. + +Documentation +------------- +- `digfort`: added deprecation warnings - digfort has been replaced by `quickfort` +- `fortplan`: added deprecation warnings - fortplan has been replaced by `quickfort` + +Structures +---------- +- Identified scattered enum values (some rhythm beats, a couple of corruption unit thoughts, and a few language name categories) +- ``viewscreen_loadgamest``: renamed ``cur_step`` enumeration to match style of ``viewscreen_adopt_regionst`` and ``viewscreen_savegamest`` +- ``viewscreen_savegamest``: identified ``cur_step`` enumeration + + +DFHack 0.47.05-beta1 +==================== + +Fixes +----- +- `embark-assistant`: fixed bug in soil depth determination for ocean tiles +- `orders`: don't crash when importing orders with malformed JSON +- `quickfort`: raw numeric `quickfort-dig-priorities` (e.g. ``3``, which is a valid shorthand for ``d3``) now works when used in .xlsx blueprints + +Misc Improvements +----------------- +- `quickfort`: new commandline options for setting the initial state of the gui dialog. for example: ``quickfort gui -l dreamfort notes`` will start the dialog filtered for the dreamfort walkthrough blueprints + +Structures +---------- +- Dropped support for 0.47.03-0.47.04 + + +DFHack 0.47.04-r5 +================= + +New Scripts +----------- +- `gui/quickfort`: fast access to the quickfort interactive dialog +- `workorder-recheck`: resets the selected work order to the ``Checking`` state + +Fixes +----- +- `embark-assistant`: + - fixed order of factors when calculating min temperature + - improved performance of surveying +- `quickfort`: + - fixed eventual crashes when creating zones + - fixed library aliases for tallow and iron, copper, and steel weapons + - zones are now created in the active state by default + - solve rare crash when changing UI modes +- `search-plugin`: fixed crash when searching the ``k`` sidebar and navigating to another tile with certain keys, like ``<`` or ``>`` +- `seedwatch`: fixed an issue where the plugin would disable itself on map load +- `stockflow`: fixed ``j`` character being intercepted when naming stockpiles +- `stockpiles`: no longer outputs hotkey help text beneath `stockflow` hotkey help text + +Misc Improvements +----------------- +- Lua label widgets (used in all standard message boxes) are now scrollable with Up/Down/PgUp/PgDn keys +- `autofarm`: now fallows farms if all plants have reached the desired count +- `buildingplan`: + - added ability to set global settings from the console, e.g. ``buildingplan set boulders false`` + - added "enable all" option for buildingplan (so you don't have to enable all building types individually). This setting is not persisted (just like quickfort_mode is not persisted), but it can be set from onMapLoad.init + - modified ``Planning Mode`` status in the UI to show whether the plugin is in quickfort mode, "enable all" mode, or whether just the building type is enabled. +- `quickfort`: + - Dreamfort blueprint set improvements: added a streamlined checklist for all required dreamfort commands and gave names to stockpiles, levers, bridges, and zones + - added aliases for bronze weapons and armor + - added alias for tradeable crafts + - new blueprint mode: ``#ignore``, useful for scratch space or personal notes + - implement ``{Empty}`` keycode for use in quickfort aliases; useful for defining blank-by-default alias values + - more flexible commandline parsing allowing for more natural parameter ordering (e.g. where you used to have to write ``quickfort list dreamfort -l`` you can now write ``quickfort list -l dreamfort``) + - print out blueprint names that a ``#meta`` blueprint is applying so it's easier to understand what meta blueprints are doing + - whitespace is now allowed between a marker name and the opening parenthesis in blueprint modelines. for example, ``#dig start (5; 5)`` is now valid (you used to be required to write ``#dig start(5; 5)``) + +Documentation +------------- +- Added documentation for Lua's ``dfhack.run_command()`` and variants + +Lua +--- +- ``dfhack.run_command()``: changed to interface directly with the console when possible, which allows interactive commands and commands that detect the console encoding to work properly +- ``processArgsGetopt()`` added to utils.lua, providing a callback interface for parameter parsing and getopt-like flexibility for parameter ordering and combination (see docs in ``library/lua/utils.lua`` and ``library/lua/3rdparty/alt_getopt.lua`` for details). + +Structures +---------- +- ``job``: identified ``order_id`` field + + +DFHack 0.47.04-r4 +================= + +New Scripts +----------- +- `fix/corrupt-equipment`: fixes some military equipment-related corruption issues that can cause DF crashes + +Fixes +----- +- Fixed an issue on some Linux systems where DFHack installed through a package manager would attempt to write files to a non-writable folder (notably when running `exportlegends` or `gui/autogems`) +- `adaptation`: fixed handling of units with no cave adaptation suffered yet +- `assign-goals`: fixed error preventing new goals from being created +- `assign-preferences`: fixed handling of preferences for flour +- `buildingplan`: + - fixed an issue preventing artifacts from being matched when the maximum item quality is set to ``artifacts`` + - stopped erroneously matching items to buildings while the game is paused + - fixed a crash when pressing 0 while having a noble room selected +- `deathcause`: fixed an error when inspecting certain corpses +- `dwarfmonitor`: fixed a crash when opening the ``prefs`` screen if units have vague preferences +- `dwarfvet`: fixed a crash that could occur when discharging patients +- `embark-assistant`: + - fixed an issue causing incursion resource matching (e.g. sand/clay) to skip some tiles if those resources were provided only through incursions + - corrected river size determination by performing it at the MLT level rather than the world tile level +- `quickfort`: + - fixed handling of modifier keys (e.g. ``{Ctrl}`` or ``{Alt}``) in query blueprints + - fixed misconfiguration of nest boxes, hives, and slabs that were preventing them from being built from build blueprints + - fixed valid placement detection for floor hatches, floor grates, and floor bars (they were erroneously being rejected from open spaces and staircase tops) + - fixed query blueprint statistics being added to the wrong metric when both a query and a zone blueprint are run by the same meta blueprint + - added missing blueprint labels in gui dialog list + - fixed occupancy settings for extent-based structures so that stockpiles can be placed within other stockpiles (e.g. in a checkerboard or bullseye pattern) +- `search-plugin`: fixed an issue where search options might not display if screens were destroyed and recreated programmatically (e.g. with `quickfort`) +- `unsuspend`: now leaves buildingplan-managed buildings alone and doesn't unsuspend underwater tasks +- `workflow`: fixed an error when creating constraints on "mill plants" jobs and some other plant-related jobs +- `zone`: fixed an issue causing the ``enumnick`` subcommand to run when attempting to run ``assign``, ``unassign``, or ``slaughter`` + +Misc Improvements +----------------- +- `buildingplan`: + - added support for all buildings, furniture, and constructions (except for instruments) + - added support for respecting building job_item filters when matching items, so you can set your own programmatic filters for buildings before submitting them to buildingplan + - changed default filter setting for max quality from ``artifact`` to ``masterwork`` + - changed min quality adjustment hotkeys from 'qw' to 'QW' to avoid conflict with existing hotkeys for setting roller speed - also changed max quality adjustment hotkeys from 'QW' to 'AS' to make room for the min quality hotkey changes + - added a new global settings page accessible via the ``G`` hotkey when on any building build screen; ``Quickfort Mode`` toggle for legacy Python Quickfort has been moved to this page + - added new global settings for whether generic building materials should match blocks, boulders, logs, and/or bars - defaults are everything but bars +- `devel/export-dt-ini`: updated for Dwarf Therapist 41.2.0 +- `embark-assistant`: split the lair types displayed on the local map into mound, burrow, and lair +- `gui/advfort`: added support for linking to hatches and pressure plates with mechanisms +- `modtools/add-syndrome`: added support for specifying syndrome IDs instead of names +- `probe`: added more output for designations and tile occupancy +- `quickfort`: + - The Dreamfort sample blueprints now have complete walkthroughs for each fort level and importable orders that automate basic fort stock management + - added more blueprints to the blueprints library: several bedroom layouts, the Saracen Crypts, and the complete fortress example from Python Quickfort: TheQuickFortress + - query blueprint aliases can now accept parameters for dynamic expansion - see dfhack-config/quickfort/aliases.txt for details + - alias names can now include dashes and underscores (in addition to letters and numbers) + - improved speed of first call to ``quickfort list`` significantly, especially for large blueprint libraries + - added ``query_unsafe`` setting to disable query blueprint error checking - useful for query blueprints that send unusual key sequences + - added support for bookcases, display cases, and offering places (altars) + - added configuration support for zone pit/pond, gather, and hospital sub-menus in zone blueprints + - removed ``buildings_use_blocks`` setting and replaced it with more flexible functionality in `buildingplan` + - added support for creating uninitialized stockpiles with :kbd:`c` + +Documentation +------------- +- `quickfort-alias-guide`: alias syntax and alias standard library documentation for `quickfort` blueprints +- `quickfort-library-guide`: overview of the quickfort blueprint library + +API +--- +- `buildingplan`: added Lua interface API +- ``Buildings::setSize()``: changed to reuse existing extents when possible +- ``dfhack.job.isSuitableMaterial()``: added an item type parameter so the ``non_economic`` flag can be properly handled (it was being matched for all item types instead of just boulders) + +Lua +--- +- ``utils.addressof()``: fixed for raw userdata + +Structures +---------- +- ``building_extents_type``: new enum, used for ``building_extents.extents`` +- ``world_mountain_peak``: new struct (was previously inline) - used in ``world_data.mountain_peaks`` + + +DFHack 0.47.04-r3 +================= + +New Plugins +----------- +- `xlsxreader`: provides an API for Lua scripts to read Excel spreadsheets + +New Scripts +----------- +- `quickfort`: DFHack-native implementation of quickfort with many new features and integrations - see the `quickfort-user-guide` for details +- `timestream`: controls the speed of the calendar and creatures +- `uniform-unstick`: prompts units to reevaluate their uniform, by removing/dropping potentially conflicting worn items + +Fixes +----- +- `ban-cooking`: fixed an error in several subcommands +- `buildingplan`: fixed handling of buildings that require buckets +- `getplants`: fixed a crash that could occur on some maps +- `search-plugin`: fixed an issue causing item counts on the trade screen to display inconsistently when searching +- `stockpiles`: + - fixed a crash when loading food stockpiles + - fixed an error when saving furniture stockpiles + +Misc Improvements +----------------- +- `createitem`: + - added support for plant growths (fruit, berries, leaves, etc.) + - added an ``inspect`` subcommand to print the item and material tokens of existing items, which can be used to create additional matching items +- `embark-assistant`: added support for searching for taller waterfalls (up to 50 z-levels tall) +- `search-plugin`: added support for searching for names containing non-ASCII characters using their ASCII equivalents +- `stocks`: added support for searching for items containing non-ASCII characters using their ASCII equivalents +- `unretire-anyone`: made undead creature names appear in the historical figure list +- `zone`: + - added an ``enumnick`` subcommand to assign enumerated nicknames (e.g "Hen 1", "Hen 2"...) + - added slaughter indication to ``uinfo`` output + +Documentation +------------- +- Fixed syntax highlighting of most code blocks to use the appropriate language (or no language) instead of Python + +API +--- +- Added ``DFHack::to_search_normalized()`` (Lua: ``dfhack.toSearchNormalized()``) to convert non-ASCII alphabetic characters to their ASCII equivalents + +Structures +---------- +- ``history_event_masterpiece_createdst``: fixed alignment, including subclasses, and identified ``skill_at_time`` +- ``item_body_component``: fixed some alignment issues and identified some fields (also applies to subclasses like ``item_corpsest``) +- ``stockpile_settings``: removed ``furniture.sand_bags`` (no longer present) + + +DFHack 0.47.04-r2 +================= + +New Scripts +----------- +- `animal-control`: helps manage the butchery and gelding of animals +- `devel/kill-hf`: kills a historical figure +- `geld`: gelds or ungelds animals +- `list-agreements`: lists all guildhall and temple agreements +- `list-waves`: displays migration wave information for citizens/units +- `ungeld`: ungelds animals (wrapper around `geld`) + +New Tweaks +---------- +- `tweak` do-job-now: adds a job priority toggle to the jobs list +- `tweak` reaction-gloves: adds an option to make reactions produce gloves in sets with correct handedness + +Fixes +----- +- Fixed a segfault when attempting to start a headless session with a graphical PRINT_MODE setting +- Fixed an issue with the macOS launcher failing to un-quarantine some files +- Fixed ``Units::isEggLayer``, ``Units::isGrazer``, ``Units::isMilkable``, ``Units::isTrainableHunting``, ``Units::isTrainableWar``, and ``Units::isTamable`` ignoring the unit's caste +- Linux: fixed ``dfhack.getDFPath()`` (Lua) and ``Process::getPath()`` (C++) to always return the DF root path, even if the working directory has changed +- `digfort`: + - fixed y-line tracking when .csv files contain lines with only commas + - fixed an issue causing blueprints touching the southern or eastern edges of the map to be rejected (northern and western edges were already allowed). This allows blueprints that span the entire embark area. +- `embark-assistant`: fixed a couple of incursion handling bugs. +- `embark-skills`: fixed an issue with structures causing the ``points`` option to do nothing +- `exportlegends`: + - fixed an issue where two different ```` tags could be included in a ```` + - stopped including some tags with ``-1`` values which don't provide useful information +- `getplants`: fixed issues causing plants to be collected even if they have no growths (or unripe growths) +- `gui/advfort`: fixed "operate pump" job +- `gui/load-screen`: fixed an issue causing longer timezones to be cut off +- `labormanager`: + - fixed handling of new jobs in 0.47 + - fixed an issue preventing custom furnaces from being built +- `modtools/moddable-gods`: + - fixed an error when creating the historical figure + - removed unused ``-domain`` and ``-description`` arguments + - made ``-depictedAs`` argument work +- `names`: + - fixed an error preventing the script from working + - fixed an issue causing renamed units to display their old name in legends mode and some other places +- `pref-adjust`: fixed some compatibility issues and a potential crash +- `RemoteFortressReader`: + - fixed a couple crashes that could result from decoding invalid enum items (``site_realization_building_type`` and ``improvement_type``) + - fixed an issue that could cause block coordinates to be incorrect +- `rendermax`: fixed a hang that could occur when enabling some renderers, notably on Linux +- `stonesense`: + - fixed a crash when launching Stonesense + - fixed some issues that could cause the splash screen to hang + +Misc Improvements +----------------- +- Linux/macOS: Added console keybindings for deleting words (Alt+Backspace and Alt+d in most terminals) +- `add-recipe`: + - added tool recipes (minecarts, wheelbarrows, stepladders, etc.) + - added a command explanation or error message when entering an invalid command +- `armoks-blessing`: added adjustments to values and needs +- `blueprint`: + - now writes blueprints to the ``blueprints/`` subfolder instead of the df root folder + - now automatically creates folder trees when organizing blueprints into subfolders (e.g. ``blueprint 30 30 1 rooms/dining dig`` will create the file ``blueprints/rooms/dining-dig.csv``); previously it would fail if the ``blueprints/rooms/`` directory didn't already exist +- `confirm`: added a confirmation dialog for convicting dwarves of crimes +- `devel/query`: added many new query options +- `digfort`: + - handled double quotes (") at the start of a string, allowing .csv files exported from spreadsheets to work without manual modification + - documented that removing ramps, cutting trees, and gathering plants are indeed supported + - added a ``force`` option to truncate blueprints if the full blueprint would extend off the edge of the map +- `dwarf-op`: + - added ability to select dwarves based on migration wave + - added ability to protect dwarves based on symbols in their custom professions +- `exportlegends`: + - changed some flags to be represented by self-closing tags instead of true/false strings (e.g. ````) - note that this may require changes to other XML-parsing utilities + - changed some enum values from numbers to their string representations + - added ability to save all files to a subfolder, named after the region folder and date by default +- `gui/advfort`: added support for specifying the entity used to determine available resources +- `gui/gm-editor`: added support for automatically following ref-targets when pressing the ``i`` key +- `manipulator`: added a new column option to display units' goals +- `modtools/moddable-gods`: added support for ``neuter`` gender +- `pref-adjust`: + - added support for adjusting just the selected dwarf + - added a new ``goth`` profile +- `remove-stress`: added a ``-value`` argument to enable setting stress level directly +- `workorder`: changed default frequency from "Daily" to "OneTime" + +Documentation +------------- +- Added some new dev-facing pages, including dedicated pages about the remote API, memory research, and documentation +- Expanded the installation guide +- Made a couple theme adjustments + +API +--- +- Added ``Filesystem::mkdir_recursive`` +- Extended ``Filesystem::listdir_recursive`` to optionally make returned filenames relative to the start directory +- ``Units``: added goal-related functions: ``getGoalType()``, ``getGoalName()``, ``isGoalAchieved()`` + +Internals +--------- +- Added support for splitting scripts into multiple files in the ``scripts/internal`` folder without polluting the output of `ls` + +Lua +--- +- Added a ``ref_target`` field to primitive field references, corresponding to the ``ref-target`` XML attribute +- Made ``dfhack.units.getRaceNameById()``, ``dfhack.units.getRaceBabyNameById()``, and ``dfhack.units.getRaceChildNameById()`` available to Lua + +Ruby +---- +- Updated ``item_find`` and ``building_find`` to use centralized logic that works on more screens + +Structures +---------- +- Added a new ````, which allows ``world.*.other`` collections of vectors to use the correct subtypes for items +- ``creature_raw``: renamed ``gender`` to ``sex`` to match the field in ``unit``, which is more frequently used +- ``crime``: identified ``witnesses``, which contains the data held by the old field named ``reports`` +- ``intrigue``: new type (split out from ``historical_figure_relationships``) +- ``items_other_id``: removed ``BAD``, and by extension, ``world.items.other.BAD``, which was overlapping with ``world.items.bad`` +- ``job_type``: added job types new to 0.47 +- ``plant_raw``: material_defs now contains arrays rather than loose fields +- ``pronoun_type``: new enum (previously documented in field comments) +- ``setup_character_info``: fixed a couple alignment issues (needed by `embark-skills`) +- ``ui_advmode_menu``: identified some new enum items + + +DFHack 0.47.04-r1 +================= + +Fixes +----- +- Fixed a crash in ``find()`` for some types when no world is loaded +- Fixed translation of certain types of in-game names +- `autogems`: fixed an issue with binned gems being ignored in linked stockpiles +- `catsplosion`: fixed error when handling races with only one caste (e.g. harpies) +- `exportlegends`: fixed error when exporting maps +- `spawnunit`: fixed an error when forwarding some arguments but not a location to `modtools/create-unit` +- `stocks`: fixed display of book titles +- `tweak` embark-profile-name: fixed handling of the native shift+space key + +Misc Improvements +----------------- +- `exportlegends`: + - made interaction export more robust and human-readable + - removed empty ```` and ```` tags +- `getplants`: added switches for designations for farming seeds and for max number designated per plant +- `manipulator`: added intrigue to displayed skills +- `modtools/create-unit`: + - added ``-equip`` option to equip created units + - added ``-skills`` option to give skills to units + - added ``-profession`` and ``-customProfession`` options to adjust unit professions +- `search-plugin`: added support for the fortress mode justice screen +- ``dfhack.init-example``: enabled `autodump` + +API +--- +- Added ``Items::getBookTitle`` to get titles of books. Catches titles buried in improvements, unlike getDescription. + +Lua +--- +- ``pairs()`` now returns available class methods for DF types + +Structures +---------- +- Added globals: ``cur_rain``, ``cur_rain_counter``, ``cur_snow``, ``cur_snow_counter``, ``weathertimer``, ``jobvalue``, ``jobvalue_setter``, ``interactitem``, ``interactinvslot``, ``handleannounce``, ``preserveannounce``, ``updatelightstate`` +- ``agreement_details_data_plot_sabotage``: new struct type, along with related ``agreement_details_type.PlotSabotage`` +- ``architectural_element``: new enum +- ``battlefield``: new struct type +- ``breed``: new struct type +- ``creature_handler``: identified vmethods +- ``crime``: removed fields of ``reports`` that are no longer present +- ``dance_form``: identified most fields +- ``history_event_context``: identified fields +- ``identity_type``: new enum +- ``identity``: renamed ``civ`` to ``entity_id``, identified ``type`` +- ``image_set``: new struct type +- ``interrogation_report``: new struct type +- ``itemdef_flags``: new enum, with ``GENERATED`` flag +- ``justification``: new enum +- ``lever_target_type``: identified ``LeverMechanism`` and ``TargetMechanism`` values +- ``musical_form``: identified fields, including some renames. Also identified fields in ``scale`` and ``rhythm`` +- ``region_weather``: new struct type +- ``squad_order_cause_trouble_for_entityst``: identified fields +- ``unit_thought_type``: added several new thought types +- ``viewscreen_workquota_detailsst``: identified fields + + +DFHack 0.47.04-beta1 +==================== + +New Scripts +----------- +- `color-schemes`: manages color schemes +- `devel/print-event`: prints the description of an event by ID or index +- `gui/color-schemes`: an in-game interface for `color-schemes` +- `light-aquifers-only`: changes heavy aquifers to light aquifers +- `on-new-fortress`: runs DFHack commands only in a new fortress +- `once-per-save`: runs DFHack commands unless already run in the current save +- `resurrect-adv`: brings your adventurer back to life +- `reveal-hidden-units`: exposes all sneaking units +- `workorder`: allows queuing manager jobs; smart about shear and milk creature jobs + +Fixes +----- +- Fixed a crash when starting DFHack in headless mode with no terminal +- `devel/visualize-structure`: fixed padding detection for globals +- `exportlegends`: + - added UTF-8 encoding and XML escaping for more fields + - added checking for unhandled structures to avoid generating invalid XML + - fixed missing fields in ``history_event_assume_identityst`` export +- `full-heal`: + - when resurrected by specifying a corpse, units now appear at the location of the corpse rather than their location of death + - resurrected units now have their tile occupancy set (and are placed in the prone position to facilitate this) + +Misc Improvements +----------------- +- Added "bit" suffix to downloads (e.g. 64-bit) +- Tests: + - moved from DF folder to hack/scripts folder, and disabled installation by default + - made test runner script more flexible +- `devel/export-dt-ini`: updated some field names for DT for 0.47 +- `devel/visualize-structure`: added human-readable lengths to containers +- `dfhack-run`: added color output support +- `embark-assistant`: + - updated embark aquifer info to show all aquifer kinds present + - added neighbor display, including kobolds (SKULKING) and necro tower count + - updated aquifer search criteria to handle the new variation + - added search criteria for embark initial tree cover + - added search criteria for necro tower count, neighbor civ count, and specific neighbors. Should handle additional entities, but not tested +- `exportlegends`: + - added evilness and force IDs to regions + - added profession and weapon info to relevant entities + - added support for many new history events in 0.47 + - added historical event relationships and supplementary data +- `full-heal`: + - made resurrection produce a historical event viewable in Legends mode + - made error messages more explanatory +- `install-info`: added DFHack build ID to report +- `modtools/create-item`: added ``-matchingGloves`` and ``-matchingShoes`` arguments +- `modtools/create-unit`: + - added ``-duration`` argument to make the unit vanish after some time + - added ``-locationRange`` argument to allow spawning in a random position within a defined area + - added ``-locationType`` argument to specify the type of location to spawn in +- `unretire-anyone`: added ``-dead`` argument to revive and enable selection of a dead historical figure to use as an adventurer in adv mode + +Internals +--------- +- Added separate changelogs in the scripts and df-structures repos +- Improved support for tagged unions, allowing tools to access union fields more safely +- Moved ``reversing`` scripts to df_misc repo + +Structures +---------- +- Added an XML schema for validating df-structures syntax +- Added ``divination_set_next_id`` and ``image_set_next_id`` globals +- ``activity_entry_type``: new enum type +- ``adventure_optionst``: identified many vmethods +- ``agreement_details``: identified most fields of most sub-structs +- ``artifact_claim``: identified several fields +- ``artifact_record``: identified several fields +- ``caste_raw_flags``: renamed and identified many flags to match information from Toady +- ``creature_raw_flags``: renamed and identified many flags to match information from Toady +- ``crime_type``: new enum type +- ``dfhack_room_quality_level``: added enum attributes for names of rooms of each quality +- ``entity_site_link_type``: new enum type +- ``export_map_type``: new enum type +- ``historical_entity.flags``: identified several flags +- ``historical_entity.relations``: renamed from ``unknown1b`` and identified several fields +- ``historical_figure.vague_relationships``: identified +- ``historical_figure_info.known_info``: renamed from ``secret``, identified some fields +- ``historical_figure``: renamed ``unit_id2`` to ``nemesis_id`` +- ``history_event_circumstance_info``: new struct type (and changed several ``history_event`` subclasses to use this) +- ``history_event_reason_info``: new struct type (and changed several ``history_event`` subclasses to use this) +- ``honors_type``: identified several fields +- ``interaction_effect_create_itemst``: new struct type +- ``interaction_effect_summon_unitst``: new struct type +- ``item``: identified several vmethods +- ``layer_type``: new enum type +- ``plant.damage_flags``: added ``is_dead`` +- ``plot_role_type``: new enum type +- ``plot_strategy_type``: new enum type +- ``relationship_event_supplement``: new struct type +- ``relationship_event``: new struct type +- ``specific_ref``: moved union data to ``data`` field +- ``ui_look_list``: moved union fields to ``data`` and renamed to match ``type`` enum +- ``ui_sidebar_menus.location``: added new profession-related fields, renamed and fixed types of deity-related fields +- ``ui_sidebar_mode``: added ``ZonesLocationInfo`` +- ``unit_action``: rearranged as tagged union with new sub-types; existing code should be compatible +- ``vague_relationship_type``: new enum type +- ``vermin_flags``: identified ``is_roaming_colony`` +- ``viewscreen_justicest``: identified interrogation-related fields +- ``world_data.field_battles``: identified and named several fields + + +DFHack 0.47.03-beta1 +==================== + +New Scripts +----------- +- `devel/sc`: checks size of structures +- `devel/visualize-structure`: displays the raw memory of a structure + +Fixes +----- +- `adv-max-skills`: fixed for 0.47 +- `deep-embark`: + - prevented running in non-fortress modes + - ensured that only the newest wagon is deconstructed +- `full-heal`: + - fixed issues with removing corpses + - fixed resurrection for non-historical figures +- `modtools/create-unit`: added handling for arena tame setting +- `teleport`: fixed setting new tile occupancy + +Misc Improvements +----------------- +- `deep-embark`: + - improved support for using directly from the DFHack console + - added a ``-clear`` option to cancel +- `exportlegends`: + - added identity information + - added creature raw names and flags +- `gui/prerelease-warning`: updated links and information about nightly builds +- `modtools/syndrome-trigger`: enabled simultaneous use of ``-synclass`` and ``-syndrome`` +- `repeat`: added ``-list`` option + +Structures +---------- +- Dropped support for 0.44.12-0.47.02 +- ``abstract_building_type``: added types (and subclasses) new to 0.47 +- ``agreement_details_type``: added enum +- ``agreement_details``: added struct type (and many associated data types) +- ``agreement_party``: added struct type +- ``announcement_type``: added types new to 0.47 +- ``artifact_claim_type``: added enum +- ``artifact_claim``: added struct type +- ``breath_attack_type``: added ``SHARP_ROCK`` +- ``building_offering_placest``: new class +- ``building_type``: added ``OfferingPlace`` +- ``caste_raw_flags``: renamed many items to match DF names +- ``creature_interaction_effect``: added subclasses new to 0.47 +- ``creature_raw_flags``: + - identified several more items + - renamed many items to match DF names +- ``d_init``: added settings new to 0.47 +- ``entity_name_type``: added ``MERCHANT_COMPANY``, ``CRAFT_GUILD`` +- ``entity_position_responsibility``: added values new to 0.47 +- ``fortress_type``: added enum +- ``general_ref_type``: added ``UNIT_INTERROGATEE`` +- ``ghost_type``: added ``None`` value +- ``goal_type``: added goals types new to 0.47 +- ``histfig_site_link``: added subclasses new to 0.47 +- ``history_event_collection``: added subtypes new to 0.47 +- ``history_event_context``: added lots of new fields +- ``history_event_reason``: + - added captions for all items + - added items new to 0.47 +- ``history_event_type``: added types for events new to 0.47, as well as corresponding ``history_event`` subclasses (too many to list here) +- ``honors_type``: added struct type +- ``interaction_effect``: added subtypes new to 0.47 +- ``interaction_source_experimentst``: added class type +- ``interaction_source_usage_hint``: added values new to 0.47 +- ``interface_key``: added items for keys new to 0.47 +- ``job_skill``: added ``INTRIGUE``, ``RIDING`` +- ``lair_type``: added enum +- ``monument_type``: added enum +- ``next_global_id``: added enum +- ``poetic_form_action``: added ``Beseech`` +- ``setup_character_info``: expanded significantly in 0.47 +- ``text_system``: added layout for struct +- ``tile_occupancy``: added ``varied_heavy_aquifer`` +- ``tool_uses``: added items: ``PLACE_OFFERING``, ``DIVINATION``, ``GAMES_OF_CHANCE`` +- ``viewscreen_counterintelligencest``: new class (only layout identified so far) + + +DFHack 0.44.12-r3 +================= + +New Plugins +----------- +- `autoclothing`: automatically manage clothing work orders +- `autofarm`: replaces the previous Ruby script of the same name, with some fixes +- `map-render`: allows programmatically rendering sections of the map that are off-screen +- `tailor`: automatically manages keeping your dorfs clothed + +New Scripts +----------- +- `assign-attributes`: changes the attributes of a unit +- `assign-beliefs`: changes the beliefs of a unit +- `assign-facets`: changes the facets (traits) of a unit +- `assign-goals`: changes the goals of a unit +- `assign-preferences`: changes the preferences of a unit +- `assign-profile`: sets a dwarf's characteristics according to a predefined profile +- `assign-skills`: changes the skills of a unit +- `combat-harden`: sets a unit's combat-hardened value to a given percent +- `deep-embark`: allows embarking underground +- `devel/find-twbt`: finds a TWBT-related offset needed by the new `map-render` plugin +- `dwarf-op`: optimizes dwarves for fort-mode work; makes managing labors easier +- `forget-dead-body`: removes emotions associated with seeing a dead body +- `gui/create-tree`: creates a tree at the selected tile +- `linger`: takes over your killer in adventure mode +- `modtools/create-tree`: creates a tree +- `modtools/pref-edit`: add, remove, or edit the preferences of a unit +- `modtools/set-belief`: changes the beliefs (values) of units +- `modtools/set-need`: sets and edits unit needs +- `modtools/set-personality`: changes the personality of units +- `modtools/spawn-liquid`: spawns water or lava at the specified coordinates +- `set-orientation`: edits a unit's orientation +- `unretire-anyone`: turns any historical figure into a playable adventurer + +Fixes +----- +- Fixed a crash in the macOS/Linux console when the prompt was wider than the screen width +- Fixed inconsistent results from ``Units::isGay`` for asexual units +- Fixed some cases where Lua filtered lists would not properly intercept keys, potentially triggering other actions on the same screen +- `autofarm`: + - fixed biome detection to properly determine crop assignments on surface farms + - reimplemented as a C++ plugin to make proper biome detection possible +- `bodyswap`: fixed companion list not being updated often enough +- `cxxrandom`: removed some extraneous debug information +- `digfort`: now accounts for z-level changes when calculating maximum y dimension +- `embark-assistant`: + - fixed bug causing crash on worlds without generated metals (as well as pruning vectors as originally intended). + - fixed bug causing mineral matching to fail to cut off at the magma sea, reporting presence of things that aren't (like DF does currently). + - fixed bug causing half of the river tiles not to be recognized. + - added logic to detect some river tiles DF doesn't generate data for (but are definitely present). +- `eventful`: fixed invalid building ID in some building events +- `exportlegends`: now escapes special characters in names properly +- `getplants`: fixed designation of plants out of season (note that picked plants are still designated incorrectly) +- `gui/autogems`: fixed error when no world is loaded +- `gui/companion-order`: + - fixed error when resetting group leaders + - ``leave`` now properly removes companion links +- `gui/create-item`: fixed module support - can now be used from other scripts +- `gui/stamper`: + - stopped "invert" from resetting the designation type + - switched to using DF's designation keybindings instead of custom bindings + - fixed some typos and text overlapping +- `modtools/create-unit`: + - fixed an error associating historical entities with units + - stopped recalculating health to avoid newly-created citizens triggering a "recover wounded" job + - fixed units created in arena mode having blank names + - fixed units created in arena mode having the wrong race and/or interaction effects applied after creating units manually in-game + - stopped units from spawning with extra items or skills previously selected in the arena + - stopped setting some unneeded flags that could result in glowing creature tiles + - set units created in adventure mode to have no family, instead of being related to the first creature in the world +- `modtools/reaction-product-trigger`: + - fixed an error dealing with reactions in adventure mode + - blocked ``\\BUILDING_ID`` for adventure mode reactions + - fixed ``-clear`` to work without passing other unneeded arguments +- `modtools/reaction-trigger`: + - fixed a bug when determining whether a command was run + - fixed handling of ``-resetPolicy`` +- `mousequery`: fixed calculation of map dimensions, which was sometimes preventing scrolling the map with the mouse when TWBT was enabled +- `RemoteFortressReader`: fixed a crash when a unit's path has a length of 0 +- `stonesense`: fixed crash due to wagons and other soul-less creatures +- `tame`: now sets the civ ID of tamed animals (fixes compatibility with `autobutcher`) +- `title-folder`: silenced error when ``PRINT_MODE`` is set to ``TEXT`` + +Misc Improvements +----------------- +- Added a note to `dfhack-run` when called with no arguments (which is usually unintentional) +- On macOS, the launcher now attempts to un-quarantine the rest of DFHack +- `bodyswap`: added arena mode support +- `combine-drinks`: added more default output, similar to `combine-plants` +- `createitem`: added a list of valid castes to the "invalid caste" error message, for convenience +- `devel/export-dt-ini`: added more size information needed by newer Dwarf Therapist versions +- `dwarfmonitor`: enabled widgets to access other scripts and plugins by switching to the core Lua context +- `embark-assistant`: + - added an in-game option to activate on the embark screen + - changed waterfall detection to look for level drop rather than just presence + - changed matching to take incursions, i.e. parts of other biomes, into consideration when evaluating tiles. This allows for e.g. finding multiple biomes on single tile embarks. + - changed overlay display to show when incursion surveying is incomplete + - changed overlay display to show evil weather + - added optional parameter "fileresult" for crude external harness automated match support + - improved focus movement logic to go to only required world tiles, increasing speed of subsequent searches considerably +- `exportlegends`: added rivers to custom XML export +- `exterminate`: added support for a special ``enemy`` caste +- `gui/gm-unit`: + - added support for editing: + - added attribute editor + - added orientation editor + - added editor for bodies and body parts + - added color editor + - added belief editor + - added personality editor +- `modtools/create-item`: documented already-existing ``-quality`` option +- `modtools/create-unit`: + - added the ability to specify ``\\LOCAL`` for the fort group entity + - now enables the default labours for adult units with CAN_LEARN. + - now sets historical figure orientation. + - improved speed of creating multiple units at once + - made the script usable as a module (from other scripts) +- `modtools/reaction-trigger`: + - added ``-ignoreWorker``: ignores the worker when selecting the targets + - changed the default behavior to skip inactive/dead units; added ``-dontSkipInactive`` to include creatures that are inactive + - added ``-range``: controls how far eligible targets can be from the workshop + - syndromes now are applied before commands are run, not after + - if both a command and a syndrome are given, the command only runs if the syndrome could be applied +- `mousequery`: made it more clear when features are enabled +- `RemoteFortressReader`: + - added a basic framework for controlling and reading the menus in DF (currently only supports the building menu) + - added support for reading item raws + - added a check for whether or not the game is currently saving or loading, for utilities to check if it's safe to read from DF + - added unit facing direction estimate and position within tiles + - added unit age + - added unit wounds + - added tree information + - added check for units' current jobs when calculating the direction they are facing + +API +--- +- Added new ``plugin_load_data`` and ``plugin_save_data`` events for plugins to load/save persistent data +- Added ``Maps::GetBiomeType`` and ``Maps::GetBiomeTypeByRef`` to infer biome types properly +- Added ``Units::getPhysicalDescription`` (note that this depends on the ``unit_get_physical_description`` offset, which is not yet available for all DF builds) + +Internals +--------- +- Added new Persistence module +- Cut down on internal DFHack dependencies to improve build times +- Improved concurrency in event and server handlers +- Persistent data is now stored in JSON files instead of historical figures - existing data will be migrated when saving +- `stonesense`: fixed some OpenGL build issues on Linux + +Lua +--- +- Exposed ``gui.dwarfmode.get_movement_delta`` and ``gui.dwarfmode.get_hotkey_target`` +- ``dfhack.run_command`` now returns the command's return code + +Ruby +---- +- Made ``unit_ishostile`` consistently return a boolean + +Structures +---------- +- Added ``unit_get_physical_description`` function offset on some platforms +- Added/identified types: + - ``assume_identity_mode`` + - ``musical_form_purpose`` + - ``musical_form_style`` + - ``musical_form_pitch_style`` + - ``musical_form_feature`` + - ``musical_form_vocals`` + - ``musical_form_melodies`` + - ``musical_form_interval`` + - ``unit_emotion_memory`` +- ``need_type``: fixed ``PrayOrMeditate`` typo +- ``personality_facet_type``, ``value_type``: added ``NONE`` values +- ``twbt_render_map``: added for 64-bit 0.44.12 (for `map-render`) + + +DFHack 0.44.12-r2 +================= + +New Plugins +----------- +- `debug`: manages runtime debug print category filtering +- `nestboxes`: automatically scan for and forbid fertile eggs incubating in a nestbox + +New Scripts +----------- +- `devel/query`: searches for field names in DF objects +- `extinguish`: puts out fires +- `tame`: sets tamed/trained status of animals + +Fixes +----- +- `building-hacks`: fixed error when dealing with custom animation tables +- `devel/test-perlin`: fixed Lua error (``math.pow()``) +- `embark-assistant`: fixed crash when entering finder with a 16x16 embark selected, and added 16 to dimension choices +- `embark-skills`: fixed missing ``skill_points_remaining`` field +- `full-heal`: + - stopped wagon resurrection + - fixed a minor issue with post-resurrection hostility +- `gui/companion-order`: + - fixed issues with printing coordinates + - fixed issues with move command + - fixed cheat commands (and removed "Power up", which was broken) +- `gui/gm-editor`: fixed reinterpret cast (``r``) +- `gui/pathable`: fixed error when sidebar is hidden with ``Tab`` +- `labormanager`: + - stopped assigning labors to ineligible dwarves, pets, etc. + - stopped assigning invalid labors + - added support for crafting jobs that use pearl + - fixed issues causing cleaning jobs to not be assigned + - added support for disabling management of specific labors +- `prospector`: (also affected `embark-tools`) - fixed a crash when prospecting an unusable site (ocean, mountains, etc.) with a large default embark size in d_init.txt (e.g. 16x16) +- `siege-engine`: fixed a few Lua errors (``math.pow()``, ``unit.relationship_ids``) +- `tweak`: fixed ``hotkey-clear`` + +Misc Improvements +----------------- +- `armoks-blessing`: improved documentation to list all available arguments +- `devel/export-dt-ini`: + - added viewscreen offsets for DT 40.1.2 + - added item base flags offset + - added needs offsets +- `embark-assistant`: + - added match indicator display on the right ("World") map + - changed 'c'ancel to abort find if it's under way and clear results if not, allowing use of partial surveys. + - added Coal as a search criterion, as well as a coal indication as current embark selection info. +- `full-heal`: + - added ``-all``, ``-all_civ`` and ``-all_citizens`` arguments + - added module support + - now removes historical figure death dates and ghost data +- `growcrops`: added ``all`` argument to grow all crops +- `gui/load-screen`: improved documentation +- `labormanager`: now takes nature value into account when assigning jobs +- `open-legends`: added warning about risk of save corruption and improved related documentation +- `points`: added support when in ``viewscreen_setupdwarfgamest`` and improved error messages +- `siren`: removed break handling (relevant ``misc_trait_type`` was no longer used - see "Structures" section) + +API +--- +- New debug features related to `debug` plugin: + - Classes (C++ only): ``Signal``, ``DebugCategory``, ``DebugManager`` + - Macros: ``TRACE``, ``DEBUG``, ``INFO``, ``WARN``, ``ERR``, ``DBG_DECLARE``, ``DBG_EXTERN`` + +Internals +--------- +- Added a usable unit test framework for basic tests, and a few basic tests +- Added ``CMakeSettings.json`` with intellisense support +- Changed ``plugins/CMakeLists.custom.txt`` to be ignored by git and created (if needed) at build time instead +- Core: various thread safety and memory management improvements +- Fixed CMake build dependencies for generated header files +- Fixed custom ``CMAKE_CXX_FLAGS`` not being passed to plugins +- Linux/macOS: changed recommended build backend from Make to Ninja (Make builds will be significantly slower now) + +Lua +--- +- ``utils``: new ``OrderedTable`` class + +Structures +---------- +- Win32: added missing vtables for ``viewscreen_storesst`` and ``squad_order_rescue_hfst`` +- ``activity_event_performancest``: renamed poem as written_content_id +- ``body_part_status``: identified ``gelded`` +- ``dance_form``: named musical_form_id and musical_written_content_id +- ``incident_sub6_performance.participants``: named performance_event and role_index +- ``incident_sub6_performance``: + - made performance_event an enum + - named poetic_form_id, musical_form_id, and dance_form_id +- ``misc_trait_type``: removed ``LikesOutdoors``, ``Hardened``, ``TimeSinceBreak``, ``OnBreak`` (all unused by DF) +- ``musical_form_instruments``: named minimum_required and maximum_permitted +- ``musical_form``: named voices field +- ``plant_tree_info``: identified ``extent_east``, etc. +- ``plant_tree_tile``: gave connection bits more meaningful names (e.g. ``connection_east`` instead of ``thick_branches_1``) +- ``poetic_form``: identified many fields and related enum/bitfield types +- ``setup_character_info``: identified ``skill_points_remaining`` (for `embark-skills`) +- ``ui.main``: identified ``fortress_site`` +- ``ui.squads``: identified ``kill_rect_targets_scroll`` +- ``ui``: fixed alignment of ``main`` and ``squads`` (fixes `tweak` hotkey-clear and DF-AI) +- ``unit_action.attack``: + - identified ``attack_skill`` + - added ``lightly_tap`` and ``spar_report`` flags +- ``unit_flags3``: identified ``marked_for_gelding`` +- ``unit_personality``: identified ``stress_drain``, ``stress_boost``, ``likes_outdoors``, ``combat_hardened`` +- ``unit_storage_status``: newly identified type, stores noble holdings information (used in ``viewscreen_layer_noblelistst``) +- ``unit_thought_type``: added new expulsion thoughts from 0.44.12 +- ``viewscreen_layer_arena_creaturest``: identified item- and name-related fields +- ``viewscreen_layer_militaryst``: identified ``equip.assigned.assigned_items`` +- ``viewscreen_layer_noblelistst``: identified ``storage_status`` (see ``unit_storage_status`` type) +- ``viewscreen_new_regionst``: + - identified ``rejection_msg``, ``raw_folder``, ``load_world_params`` + - changed many ``int8_t`` fields to ``bool`` +- ``viewscreen_setupadventurest``: identified some nemesis and personality fields, and ``page.ChooseHistfig`` +- ``world_data``: added ``mountain_peak_flags`` type, including ``is_volcano`` +- ``world_history``: identified names and/or types of some fields +- ``world_site``: identified names and/or types of some fields +- ``written_content``: named poetic_form + + +DFHack 0.44.12-r1 +================= + +Fixes +----- +- Console: fixed crash when entering long commands on Linux/macOS +- Fixed special characters in `command-prompt` and other non-console in-game outputs on Linux/macOS (in tools using ``df2console``) +- Removed jsoncpp's ``include`` and ``lib`` folders from DFHack builds/packages +- `die`: fixed Windows crash in exit handling +- `dwarfmonitor`, `manipulator`: fixed stress cutoffs +- `modtools/force`: fixed a bug where the help text would always be displayed and nothing useful would happen +- `ruby`: fixed calling conventions for vmethods that return strings (currently ``enabler.GetKeyDisplay()``) +- `startdwarf`: fixed on 64-bit Linux + +Misc Improvements +----------------- +- Reduced time for designation jobs from tools like `digv` to be assigned workers +- `embark-assistant`: + - Switched to standard scrolling keys, improved spacing slightly + - Introduced scrolling of Finder search criteria, removing requirement for 46 lines to work properly (Help/Info still formatted for 46 lines). + - Added Freezing search criterion, allowing searches for NA/Frozen/At_Least_Partial/Partial/At_Most_Partial/Never Freezing embarks. +- `rejuvenate`: + - Added ``-all`` argument to apply to all citizens + - Added ``-force`` to include units under 20 years old + - Clarified documentation + +API +--- +- Added to ``Units`` module: + - ``getStressCategory(unit)`` + - ``getStressCategoryRaw(level)`` + - ``stress_cutoffs`` (Lua: ``getStressCutoffs()``) + +Internals +--------- +- Added documentation for all RPC functions and a build-time check +- Added support for build IDs to development builds +- Changed default build architecture to 64-bit +- Use ``dlsym(3)`` to find vtables from libgraphics.so + +Structures +---------- +- Added ``start_dwarf_count`` on 64-bit Linux again and fixed scanning script +- ``army_controller``: added new vector from 0.44.11 +- ``belief_system``: new type, few fields identified +- ``mental_picture``: new type, some fields identified +- ``mission_report``: + - new type (renamed, was ``mission`` before) + - identified some fields +- ``mission``: new type (used in ``viewscreen_civlistst``) +- ``spoils_report``: new type, most fields identified +- ``viewscreen_civlistst``: + - split ``unk_20`` into 3 pointers + - identified new pages + - identified new messenger-related fields +- ``viewscreen_image_creatorst``: + - fixed layout + - identified many fields +- ``viewscreen_reportlistst``: added new mission and spoils report-related fields (fixed layout) +- ``world.languages``: identified (minimal information; whole languages stored elsewhere) +- ``world.status``: + - ``mission_reports``: renamed, was ``missions`` + - ``spoils_reports``: identified +- ``world.unk_131ec0``, ``world.unk_131ef0``: researched layout +- ``world.worldgen_status``: identified many fields +- ``world``: ``belief_systems``: identified + + +DFHack 0.44.12-alpha1 +===================== + +Fixes +----- +- macOS: fixed ``renderer`` vtable address on x64 (fixes `rendermax`) +- `stonesense`: fixed ``PLANT:DESERT_LIME:LEAF`` typo + +API +--- +- Added C++-style linked list interface for DF linked lists + +Structures +---------- +- Dropped 0.44.11 support +- ``ui.squads``: Added fields new in 0.44.12 + + +DFHack 0.44.11-beta2.1 +====================== + +Internals +--------- +- `stonesense`: fixed build + + +DFHack 0.44.11-beta2 +==================== + +Fixes +----- +- Windows: Fixed console failing to initialize +- `command-prompt`: added support for commands that require a specific screen to be visible, e.g. `spotclean` +- `gui/workflow`: fixed advanced constraint menu for crafts + +API +--- +- Added ``Screen::Hide`` to temporarily hide screens, like `command-prompt` + + +DFHack 0.44.11-beta1 +==================== + +Fixes +----- +- Fixed displayed names (from ``Units::getVisibleName``) for units with identities +- Fixed potential memory leak in ``Screen::show()`` +- `fix/dead-units`: fixed script trying to use missing isDiplomat function + +Misc Improvements +----------------- +- Console: + - added support for multibyte characters on Linux/macOS + - made the console exit properly when an interactive command is active (`liquids`, `mode`, `tiletypes`) +- Linux: added automatic support for GCC sanitizers in ``dfhack`` script +- Made the ``DFHACK_PORT`` environment variable take priority over ``remote-server.json`` +- `dfhack-run`: added support for port specified in ``remote-server.json``, to match DFHack's behavior +- `digfort`: added better map bounds checking +- `remove-stress`: + - added support for ``-all`` as an alternative to the existing ``all`` argument for consistency + - sped up significantly + - improved output/error messages + - now removes tantrums, depression, and obliviousness +- `ruby`: sped up handling of onupdate events + +API +--- +- Exposed ``Screen::zoom()`` to C++ (was Lua-only) +- New functions: ``Units::isDiplomat(unit)`` + +Internals +--------- +- jsoncpp: updated to version 1.8.4 and switched to using a git submodule + +Lua +--- +- Added ``printall_recurse`` to print tables and DF references recursively. It can be also used with ``^`` from the `lua` interpreter. +- ``gui.widgets``: ``List:setChoices`` clones ``choices`` for internal table changes + +Structures +---------- +- ``history_event_entity_expels_hfst``: added (new in 0.44.11) +- ``history_event_site_surrenderedst``: added (new in 0.44.11) +- ``history_event_type``: added ``SITE_SURRENDERED``, ``ENTITY_EXPELS_HF`` (new in 0.44.11) +- ``syndrome``: identified a few fields +- ``viewscreen_civlistst``: fixed layout and identified many fields + + +DFHack 0.44.11-alpha1 +===================== + +Structures +---------- +- Added support for automatically sizing arrays indexed with an enum +- Dropped 0.44.10 support +- Removed stale generated CSV files and DT layouts from pre-0.43.05 +- ``announcement_type``: new in 0.44.11: ``NEW_HOLDING``, ``NEW_MARKET_LINK`` +- ``breath_attack_type``: added ``OTHER`` +- ``historical_figure_info.relationships.list``: added ``unk_3a``-``unk_3c`` fields at end +- ``interface_key``: added bindings new in 0.44.11 +- ``occupation_type``: new in 0.44.11: ``MESSENGER`` +- ``profession``: new in 0.44.11: ``MESSENGER`` +- ``ui_sidebar_menus``: + - ``unit.in_squad``: renamed to ``unit.squad_list_opened``, fixed location + - ``unit``: added ``expel_error`` and other unknown fields new in 0.44.11 + - ``hospital``: added, new in 0.44.11 + - ``num_speech_tokens``, ``unk_17d8``: moved out of ``command_line`` to fix layout on x64 +- ``viewscreen_civlistst``: added a few new fields (incomplete) +- ``viewscreen_locationsst``: identified ``edit_input`` + + +DFHack 0.44.10-r2 +================= + +New Plugins +----------- +- `cxxrandom`: exposes some features of the C++11 random number library to Lua + +New Scripts +----------- +- `add-recipe`: adds unknown crafting recipes to the player's civ +- `gui/stamper`: allows manipulation of designations by transforms such as translations, reflections, rotations, and inversion + +Fixes +----- +- Fixed many tools incorrectly using the ``dead`` unit flag (they should generally check ``flags2.killed`` instead) +- Fixed many tools passing incorrect arguments to printf-style functions, including a few possible crashes (`changelayer`, `follow`, `forceequip`, `generated-creature-renamer`) +- Fixed several bugs in Lua scripts found by static analysis (df-luacheck) +- Fixed ``-g`` flag (GDB) in Linux ``dfhack`` script (particularly on x64) +- `autochop`, `autodump`, `autogems`, `automelt`, `autotrade`, `buildingplan`, `dwarfmonitor`, `fix-unit-occupancy`, `fortplan`, `stockflow`: fix issues with periodic tasks not working for some time after save/load cycles +- `autogems`: + - stop running repeatedly when paused + - fixed crash when furnaces are linked to same stockpiles as jeweler's workshops +- `autogems`, `fix-unit-occupancy`: stopped running when a fort isn't loaded (e.g. while embarking) +- `autounsuspend`: now skips planned buildings +- `ban-cooking`: fixed errors introduced by kitchen structure changes in 0.44.10-r1 +- `buildingplan`, `fortplan`: stopped running before a world has fully loaded +- `deramp`: fixed deramp to find designations that already have jobs posted +- `dig`: fixed "Inappropriate dig square" announcements if digging job has been posted +- `fixnaked`: fixed errors due to emotion changes in 0.44 +- `remove-stress`: fixed an error when running on soul-less units (e.g. with ``-all``) +- `revflood`: stopped revealing tiles adjacent to tiles above open space inappropriately +- `stockpiles`: ``loadstock`` now sets usable and unusable weapon and armor settings +- `stocks`: stopped listing carried items under stockpiles where they were picked up from + +Misc Improvements +----------------- +- Added script name to messages produced by ``qerror()`` in Lua scripts +- Fixed an issue in around 30 scripts that could prevent edits to the files (adding valid arguments) from taking effect +- Linux: Added several new options to ``dfhack`` script: ``--remotegdb``, ``--gdbserver``, ``--strace`` +- `bodyswap`: improved error handling +- `buildingplan`: added max quality setting +- `caravan`: documented (new in 0.44.10-alpha1) +- `deathcause`: added "slaughtered" to descriptions +- `embark-assistant`: + - changed region interaction matching to search for evil rain, syndrome rain, and reanimation rather than interaction presence (misleadingly called evil weather), reanimation, and thralling + - gave syndrome rain and reanimation wider ranges of criterion values +- `fix/dead-units`: added a delay of around 1 month before removing units +- `fix/retrieve-units`: now re-adds units to active list to counteract `fix/dead-units` +- `modtools/create-unit`: + - added quantity argument + - now selects a caste at random if none is specified +- `mousequery`: + - migrated several features from TWBT's fork + - added ability to drag with left/right buttons + - added depth display for TWBT (when multilevel is enabled) + - made shift+click jump to lower levels visible with TWBT +- `title-version`: added version to options screen too +- ``item-descriptions``: fixed several grammatical errors + +API +--- +- New functions (also exposed to Lua): + - ``Units::isKilled()`` + - ``Units::isActive()`` + - ``Units::isGhost()`` +- Removed Vermin module (unused and obsolete) + +Internals +--------- +- Added build option to generate symbols for large generated files containing df-structures metadata +- Added fallback for YouCompleteMe database lookup failures (e.g. for newly-created files) +- Improved efficiency and error handling in ``stl_vsprintf`` and related functions +- jsoncpp: fixed constructor with ``long`` on Linux + +Lua +--- +- Added ``profiler`` module to measure lua performance +- Enabled shift+cursor movement in WorkshopOverlay-derived screens + +Structures +---------- +- ``incident_sub6_performance``: identified some fields +- ``item_body_component``: fixed location of ``corpse_flags`` +- ``job_handler``: fixed static array layout +- ``job_type``: added ``is_designation`` attribute +- ``unit_flags1``: renamed ``dead`` to ``inactive`` to better reflect its use +- ``unit_personality``: fixed location of ``current_focus`` and ``undistracted_focus`` +- ``unit_thought_type``: added ``SawDeadBody`` (new in 0.44.10) + + +DFHack 0.44.10-r1 +================= + +New Scripts +----------- +- `bodyswap`: shifts player control over to another unit in adventure mode + +New Tweaks +---------- +- `tweak` kitchen-prefs-all: adds an option to toggle cook/brew for all visible items in kitchen preferences +- `tweak` stone-status-all: adds an option to toggle the economic status of all stones + +Fixes +----- +- Lua: registered ``dfhack.constructions.designateRemove()`` correctly +- `prospector`: fixed crash due to invalid vein materials +- `tweak` max-wheelbarrow: fixed conflict with building renaming +- `view-item-info`: stopped appending extra newlines permanently to descriptions + +Misc Improvements +----------------- +- Added logo to documentation +- Documented several missing ``dfhack.gui`` Lua functions +- `adv-rumors`: bound to Ctrl-A +- `command-prompt`: added support for ``Gui::getSelectedPlant()`` +- `gui/advfort`: bound to Ctrl-T +- `gui/room-list`: added support for ``Gui::getSelectedBuilding()`` +- `gui/unit-info-viewer`: bound to Alt-I +- `modtools/create-unit`: made functions available to other scripts +- `search-plugin`: + - added support for stone restrictions screen (under ``z``: Status) + - added support for kitchen preferences (also under ``z``) + +API +--- +- New functions (all available to Lua as well): + - ``Buildings::getRoomDescription()`` + - ``Items::checkMandates()`` + - ``Items::canTrade()`` + - ``Items::canTradeWithContents()`` + - ``Items::isRouteVehicle()`` + - ``Items::isSquadEquipment()`` + - ``Kitchen::addExclusion()`` + - ``Kitchen::findExclusion()`` + - ``Kitchen::removeExclusion()`` +- syndrome-util: added ``eraseSyndromeData()`` + +Internals +--------- +- Fixed compiler warnings on all supported build configurations +- Windows build scripts now work with non-C system drives + +Structures +---------- +- ``dfhack_room_quality_level``: new enum +- ``glowing_barrier``: identified ``triggered``, added comments +- ``item_flags2``: renamed ``has_written_content`` to ``unk_book`` +- ``kitchen_exc_type``: new enum (for ``ui.kitchen``) +- ``mandate.mode``: now an enum +- ``unit_personality.emotions.flags.memory``: identified +- ``viewscreen_kitchenprefst.forbidden``, ``possible``: now a bitfield, ``kitchen_pref_flag`` +- ``world_data.feature_map``: added extensive documentation (in XML) + + +DFHack 0.44.10-beta1 +==================== + +New Scripts +----------- +- `devel/find-primitive`: finds a primitive variable in memory + +Fixes +----- +- Units::getAnyUnit(): fixed a couple problematic conditions and potential segfaults if global addresses are missing +- `autodump`, `automelt`, `autotrade`, `stocks`, `stockpiles`: fixed conflict with building renaming +- `exterminate`: fixed documentation of ``this`` option +- `full-heal`: + - units no longer have a tendency to melt after being healed + - healed units are no longer treated as patients by hospital staff + - healed units no longer attempt to clean themselves unsuccessfully + - wounded fliers now regain the ability to fly upon being healing + - now heals suffocation, numbness, infection, spilled guts and gelding +- `modtools/create-unit`: + - creatures of the appropriate age are now spawned as babies or children where applicable + - fix: civ_id is now properly assigned to historical_figure, resolving several hostility issues (spawned pets are no longer attacked by fortress military!) + - fix: unnamed creatures are no longer spawned with a string of numbers as a first name +- `stockpiles`: stopped sidebar option from overlapping with `autodump` +- `tweak` block-labors: fixed two causes of crashes related in the v-p-l menu + +Misc Improvements +----------------- +- `blueprint`: added a basic Lua API +- `devel/export-dt-ini`: added tool offsets for DT 40 +- `devel/save-version`: added current DF version to output +- `install-info`: added information on tweaks + +Internals +--------- +- Added function names to DFHack's NullPointer and InvalidArgument exceptions +- Added ``Gui::inRenameBuilding()`` +- Linux: required plugins to have symbols resolved at link time, for consistency with other platforms + + +DFHack 0.44.10-alpha1 +===================== + +New Scripts +----------- +- `caravan`: adjusts properties of caravans +- `gui/autogems`: a configuration UI for the `autogems` plugin + +Fixes +----- +- Fixed uninitialized pointer being returned from ``Gui::getAnyUnit()`` in rare cases +- `autohauler`, `autolabor`, `labormanager`: fixed fencepost error and potential crash +- `dwarfvet`: fixed infinite loop if an animal is not accepted at a hospital +- `liquids`: fixed "range" command to default to 1 for dimensions consistently +- `search-plugin`: fixed 4/6 keys in unit screen search +- `view-item-info`: fixed an error with some armor + +Misc Improvements +----------------- +- `autogems`: can now blacklist arbitrary gem types (see `gui/autogems`) +- `exterminate`: added more words for current unit, removed warning +- `fpause`: now pauses worldgen as well + +Internals +--------- +- Added some build scripts for Sublime Text +- Changed submodule URLs to relative URLs so that they can be cloned consistently over different protocols (e.g. SSH) + + +DFHack 0.44.09-r1 +================= + +Fixes +----- +- `modtools/item-trigger`: fixed token format in help text + +Misc Improvements +----------------- +- Reorganized changelogs and improved changelog editing process +- `modtools/item-trigger`: added support for multiple type/material/contaminant conditions + +Internals +--------- +- OS X: Can now build with GCC 7 (or older) + +Structures +---------- +- ``army``: added vector new in 0.44.07 +- ``building_type``: added human-readable ``name`` attribute +- ``furnace_type``: added human-readable ``name`` attribute +- ``renderer``: fixed vtable addresses on 64-bit OS X +- ``site_reputation_report``: named ``reports`` vector +- ``workshop_type``: added human-readable ``name`` attribute + + +DFHack 0.44.09-alpha1 +===================== + +Fixes +----- +- `digtype`: stopped designating non-vein tiles (open space, trees, etc.) +- `labormanager`: fixed crash due to dig jobs targeting some unrevealed map blocks + + +DFHack 0.44.08-alpha1 +===================== + +Fixes +----- +- `fix/dead-units`: fixed a bug that could remove some arriving (not dead) units + + +DFHack 0.44.07-beta1 +==================== + +Misc Improvements +----------------- +- `modtools/item-trigger`: added the ability to specify inventory mode(s) to trigger on + +Structures +---------- +- Added symbols for Toady's `0.44.07 Linux test build `_ to fix :bug:`10615` +- ``world_site``: fixed alignment + + +DFHack 0.44.07-alpha1 +===================== + +Fixes +----- +- Fixed some CMake warnings (CMP0022) +- Support for building on Ubuntu 18.04 +- `embark-assistant`: fixed detection of reanimating biomes + +Misc Improvements +----------------- +- `embark-assistant`: + - Added search for adamantine + - Now supports saving/loading profiles +- `fillneeds`: added ``-all`` option to apply to all units +- `remotefortressreader`: added flows, instruments, tool names, campfires, ocean waves, spiderwebs + +Structures +---------- +- Several new names in instrument raw structures +- ``identity``: identified ``profession``, ``civ`` +- ``manager_order_template``: fixed last field type +- ``viewscreen_createquotast``: fixed layout +- ``world.language``: moved ``colors``, ``shapes``, ``patterns`` to ``world.descriptors`` +- ``world.reactions``, ``world.reaction_categories``: moved to new compound, ``world.reactions``. Requires renaming: + - ``world.reactions`` to ``world.reactions.reactions`` + - ``world.reaction_categories`` to ``world.reactions.reaction_categories`` + + +DFHack 0.44.05-r2 +================= + +New Plugins +----------- +- `embark-assistant`: adds more information and features to embark screen + +New Scripts +----------- +- `adv-fix-sleepers`: fixes units in adventure mode who refuse to wake up (:bug:`6798`) +- `hermit`: blocks caravans, migrants, diplomats (for hermit challenge) + +New Features +------------ +- With ``PRINT_MODE:TEXT``, setting the ``DFHACK_HEADLESS`` environment variable will hide DF's display and allow the console to be used normally. (Note that this is intended for testing and is not very useful for actual gameplay.) + +Fixes +----- +- `devel/export-dt-ini`: fix language_name offsets for DT 39.2+ +- `devel/inject-raws`: fixed gloves and shoes (old typo causing errors) +- `remotefortressreader`: fixed an issue with not all engravings being included +- `view-item-info`: fixed an error with some shields + +Misc Improvements +----------------- +- `adv-rumors`: added more keywords, including names +- `autochop`: can now exclude trees that produce fruit, food, or cookable items +- `remotefortressreader`: added plant type support + + +DFHack 0.44.05-r1 +================= + +New Scripts +----------- +- `break-dance`: Breaks up a stuck dance activity +- `fillneeds`: Use with a unit selected to make them focused and unstressed +- `firestarter`: Lights things on fire: items, locations, entire inventories even! +- `flashstep`: Teleports adventurer to cursor +- `ghostly`: Turns an adventurer into a ghost or back +- `questport`: Sends your adventurer to the location of your quest log cursor +- `view-unit-reports`: opens the reports screen with combat reports for the selected unit + +Fixes +----- +- `devel/inject-raws`: now recognizes spaces in reaction names +- `dig`: added support for designation priorities - fixes issues with designations from ``digv`` and related commands having extremely high priority +- `dwarfmonitor`: + - fixed display of creatures and poetic/music/dance forms on ``prefs`` screen + - added "view unit" option + - now exposes the selected unit to other tools +- `names`: fixed many errors +- `quicksave`: fixed an issue where the "Saving..." indicator often wouldn't appear + +Misc Improvements +----------------- +- `binpatch`: now reports errors for empty patch files +- `force`: now provides useful help +- `full-heal`: + - can now select corpses to resurrect + - now resets body part temperatures upon resurrection to prevent creatures from freezing/melting again + - now resets units' vanish countdown to reverse effects of `exterminate` +- `gui/gm-unit`: + - added a profession editor + - misc. layout improvements +- `launch`: can now ride creatures +- `names`: can now edit names of units +- `remotefortressreader`: + - support for moving adventurers + - support for vehicles, gem shapes, item volume, art images, item improvements + +Removed +------- +- `tweak`: ``kitchen-keys``: :bug:`614` fixed in DF 0.44.04 + +Internals +--------- +- ``Gui::getAnyUnit()`` supports many more screens/menus + +Structures +---------- +- New globals: ``soul_next_id`` + + +DFHack 0.44.05-alpha1 +===================== + +Misc Improvements +----------------- +- `gui/liquids`: added more keybindings: 0-7 to change liquid level, P/B to cycle backwards + +Structures +---------- +- ``incident``: re-aligned again to match disassembly + + +DFHack 0.44.04-alpha1 +===================== + +Fixes +----- +- `devel/inject-raws`: now recognizes spaces in reaction names +- `exportlegends`: fixed an error that could occur when exporting empty lists + +Structures +---------- +- ``artifact_record``: fixed layout (changed in 0.44.04) +- ``incident``: fixed layout (changed in 0.44.01) - note that many fields have moved + + +DFHack 0.44.03-beta1 +==================== + +Fixes +----- +- `autolabor`, `autohauler`, `labormanager`: added support for "put item on display" jobs and building/destroying display furniture +- `gui/gm-editor`: fixed an error when editing primitives in Lua tables + +Misc Improvements +----------------- +- `devel/dump-offsets`: now ignores ``index`` globals +- `gui/pathable`: added tile types to sidebar +- `modtools/skill-change`: + - now updates skill levels appropriately + - only prints output if ``-loud`` is passed + +Structures +---------- +- Added ``job_type.PutItemOnDisplay`` +- Added ``twbt_render_map`` code offset on x64 +- Fixed an issue preventing ``enabler`` from being allocated by DFHack +- Found ``renderer`` vtable on osx64 +- New globals: + - ``version`` + - ``min_load_version`` + - ``movie_version`` + - ``basic_seed`` + - ``title`` + - ``title_spaced`` + - ``ui_building_resize_radius`` +- ``adventure_movement_optionst``, ``adventure_movement_hold_tilest``, ``adventure_movement_climbst``: named coordinate fields +- ``mission``: added type +- ``unit``: added 3 new vmethods: ``getCreatureTile``, ``getCorpseTile``, ``getGlowTile`` +- ``viewscreen_assign_display_itemst``: fixed layout on x64 and identified many fields +- ``viewscreen_reportlistst``: fixed layout, added ``mission_id`` vector +- ``world.status``: named ``missions`` vector + + +DFHack 0.44.03-alpha1 +===================== + +Lua +--- +- Improved ``json`` I/O error messages +- Stopped a crash when trying to create instances of classes whose vtable addresses are not available + + +DFHack 0.44.02-beta1 +==================== + +New Scripts +----------- +- `devel/check-other-ids`: Checks the validity of "other" vectors in the ``world`` global +- `gui/cp437-table`: An in-game CP437 table + +Fixes +----- +- Fixed issues with the console output color affecting the prompt on Windows +- `createitem`: stopped items from teleporting away in some forts +- `gui/gm-unit`: can now edit mining skill +- `gui/quickcmd`: stopped error from adding too many commands +- `modtools/create-unit`: fixed error when domesticating units + +Misc Improvements +----------------- +- The console now provides suggestions for built-in commands +- `devel/export-dt-ini`: avoid hardcoding flags +- `exportlegends`: + - reordered some tags to match DF's order + - added progress indicators for exporting long lists +- `gui/gm-editor`: added enum names to enum edit dialogs +- `gui/gm-unit`: made skill search case-insensitive +- `gui/rename`: added "clear" and "special characters" options +- `remotefortressreader`: + - includes item stack sizes + - some performance improvements + +Removed +------- +- `warn-stuck-trees`: :bug:`9252` fixed in DF 0.44.01 + +Lua +--- +- Exposed ``get_vector()`` (from C++) for all types that support ``find()``, e.g. ``df.unit.get_vector() == df.global.world.units.all`` + +Structures +---------- +- Added ``buildings_other_id.DISPLAY_CASE`` +- Fixed ``unit`` alignment +- Fixed ``viewscreen_titlest.start_savegames`` alignment +- Identified ``historical_entity.unknown1b.deities`` (deity IDs) +- Located ``start_dwarf_count`` offset for all builds except 64-bit Linux; `startdwarf` should work now + + +DFHack 0.44.02-alpha1 +===================== + +New Scripts +----------- +- `devel/dump-offsets`: prints an XML version of the global table included in in DF + +Fixes +----- +- Fixed a crash that could occur if a symbol table in symbols.xml had no content + +Lua +--- +- Added a new ``dfhack.console`` API +- API can now wrap functions with 12 or 13 parameters + +Structures +---------- +- The former ``announcements`` global is now a field in ``d_init`` +- The ``ui_menu_width`` global is now a 2-byte array; the second item is the former ``ui_area_map_width`` global, which is now removed +- ``world`` fields formerly beginning with ``job_`` are now fields of ``world.jobs``, e.g. ``world.job_list`` is now ``world.jobs.list`` + + DFHack 0.43.05-r3 ================= @@ -1198,7 +3574,7 @@ Internals New Plugins ----------- -- `hotkeys`: Shows ingame viewscreen with all dfhack keybindings active in current mode. +- `hotkeys`: Shows in-game viewscreen with all dfhack keybindings active in current mode. - `automelt`: allows marking stockpiles so any items placed in them will be designated for melting Fixes @@ -1209,7 +3585,7 @@ Fixes Misc Improvements ----------------- -- now you can use ``@`` to print things in interactive Lua with subtley different semantics +- now you can use ``@`` to print things in interactive Lua with subtly different semantics - optimizations for stockpiles for `autotrade` and `stockflow` - updated `exportlegends` to work with new maps, dfhack 40.11 r1+ @@ -1330,7 +3706,7 @@ New scripts New plugins ----------- - `rendermax`: replace the renderer with something else, eg ``rendermax light``- a lighting engine -- `automelt`: allows marking stockpiles for automelt (i.e. any items placed in stocpile will be designated for melting) +- `automelt`: allows marking stockpiles for automelt (i.e. any items placed in stockpile will be designated for melting) - `embark-tools`: implementations of Embark Anywhere, Nano Embark, and a few other embark-related utilities - `building-hacks`: Allows to add custom functionality and/or animations to buildings. - `petcapRemover`: triggers pregnancies in creatures so that you can effectively raise the default pet population cap @@ -1453,7 +3829,7 @@ Misc improvements - `superdwarf`: work in adventure mode too - `tweak` stable-cursor: carries cursor location from/to Build menu. - `deathcause`: allow selection from the unitlist screen -- slayrace: allow targetting undeads +- slayrace: allow targeting undeads - `workflow` plugin: - properly considers minecarts assigned to routes busy. @@ -1563,7 +3939,7 @@ New tweaks - tweak fast-heat: speeds up item heating & cooling, thus making stable-temp act faster. - tweak fix-dimensions: fixes subtracting small amounts from stacked liquids etc. - tweak advmode-contained: fixes UI bug in custom reactions with container inputs in advmode. -- tweak fast-trade: Shift-Enter for selecting items quckly in Trade and Move to Depot screens. +- tweak fast-trade: Shift-Enter for selecting items quickly in Trade and Move to Depot screens. - tweak military-stable-assign: Stop rightmost list of military->Positions from jumping to top. - tweak military-color-assigned: In same list, color already assigned units in brown & green. diff --git a/docs/about/Removed.rst b/docs/about/Removed.rst index 01669fac43..bf3d0118df 100644 --- a/docs/about/Removed.rst +++ b/docs/about/Removed.rst @@ -10,6 +10,18 @@ work (e.g. links from the `changelog`). :local: :depth: 1 +.. _adv-rumors: + +adv-rumors +========== +Converted to an `overlay` and merged into `advtools`. + +.. _adv-fix-sleepers: + +adv-fix-sleepers +================ +Renamed to `fix/sleepers`. + .. _autohauler: autohauler @@ -26,6 +38,26 @@ Moved frequently used materials to the top of the materials list when building buildings. Also offered extended options when building constructions. All functionality has been merged into `buildingplan`. +.. _automelt: + +automelt +======== +Automatically mark items for melting when they are brought to a monitored +stockpile. Merged into `logistics`. + +.. _autotrade: + +autotrade +========= +Automatically mark items for trading when they are brought to a monitored +stockpile. Merged into `logistics`. + +.. _autounsuspend: + +autounsuspend +============= +Replaced by `suspendmanager`. + .. _combine-drinks: combine-drinks @@ -50,7 +82,7 @@ Replaced by `gui/launcher --minimal `. create-items ============ -Replaced by `gui/create-item --multi `. +Replaced by `gui/create-item`. .. _deteriorateclothes: @@ -73,6 +105,24 @@ deterioratefood Replaced by the new combined `deteriorate` script. Run ``deteriorate --types=food``. +.. _devel/find-offsets: + +devel/find-offsets +================== +Used in pre-v50 times for memory structure analysis. No longer useful post-v50. + +.. _devel/find-twbt: + +devel/find-twbt +=============== +Used in pre-v50 times for memory structure analysis. No longer useful post-v50. + +.. _devel/prepare-save: + +devel/prepare-save +================== +Used in pre-v50 times for memory structure analysis. No longer useful post-v50. + .. _devel/unforbidall: devel/unforbidall @@ -90,6 +140,26 @@ existing .csv files. Just move them to the ``blueprints`` folder in your DF installation, and instead of ``digfort file.csv``, run ``quickfort run file.csv``. +.. _drain-aquifer: + +drain-aquifer +============= +Replaced by `aquifer` and `gui/aquifer`. + +.. _embark-tools: + +embark-tools +============ +Replaced by `gui/embark-anywhere`. Other functionality was replaced by the DF +v50 UI. + +.. _faststart: + +faststart +========= +Sped up the initial DF load sequence. Removed since Bay 12 rewrote the startup +sequence and it is now sufficiently fast on its own. + .. _fix-armory: fix-armory @@ -122,12 +192,30 @@ fix/feeding-timers ================== The corresponding DF :bug:`2606` was fixed in DF 0.40.12. +.. _fix/item-occupancy: + +fix/item-occupancy +================== +Merged into `fix/occupancy`. + .. _fix/merchants: fix/merchants ============= Humans can now make trade agreements. This fix is no longer necessary. +.. _fix/tile-occupancy: + +fix/tile-occupancy +================== +Merged into `fix/occupancy`. + +.. _fix-unit-occupancy: + +fix-unit-occupancy +================== +Merged into `fix/occupancy`. + .. _fortplan: fortplan @@ -146,11 +234,23 @@ This script is no longer useful in current DF versions. The script required a binpatch `, which has not been available since DF 0.34.11. +.. _gui/automelt: + +gui/automelt +============ +Replaced by the `stockpiles` overlay and the gui for `logistics`. + +.. _gui/create-tree: + +gui/create-tree +=============== +Replaced by `gui/sandbox`. + .. _gui/dig: gui/dig ======= -Renamed to gui/design +Renamed to `gui/design`. .. _gui/hack-wish: @@ -158,6 +258,25 @@ gui/hack-wish ============= Replaced by `gui/create-item`. +.. _gui/logcleaner: + +gui/logcleaner +============== +Removed because changes to Dwarf Fortress internals made the functionality +impossible to implement safely. + +.. _gui/manager-quantity: + +gui/manager-quantity +==================== +Ability to modify manager order quantities has been added to the vanilla UI. + +.. _gui/mechanisms: + +gui/mechanisms +============== +Linked building interface has been added to the vanilla UI. + .. _gui/no-dfhack-init: gui/no-dfhack-init @@ -166,12 +285,55 @@ Tool that warned the user when the ``dfhack.init`` file did not exist. Now that ``dfhack.init`` is autogenerated in ``dfhack-config/init``, this warning is no longer necessary. +.. _logcleaner: + +logcleaner +=============== +Removed because changes to Dwarf Fortress internals made the functionality +impossible to implement safely. + .. _masspit: masspit ======= Replaced with a GUI version: `gui/masspit`. +.. _max-wave: + +max-wave +======== +Set population cap based on parameters. Merged into `pop-control`. + +.. _modtools/force: + +modtools/force +============== +Merged into `force`. + +.. _mousequery: + +mousequery +========== +Functionality superseded by vanilla v50 interface. + +.. _petcapRemover: + +petcapRemover +============= +Renamed to `pet-uncapper`. + +.. _plants: + +plants +====== +Renamed to `plant`. + +.. _rename: + +rename +====== +Superseded by vanilla rename capabilities and `gui/rename`. + .. _resume: resume @@ -187,14 +349,58 @@ ruby Support for the Ruby language in DFHack scripts was removed due to the issues the Ruby library causes when used as an embedded language. +.. _search-plugin: + +search +====== +Functionality was merged into `sort`. + .. _show-unit-syndromes: show-unit-syndromes =================== Replaced with a GUI version: `gui/unit-syndromes`. +.. _stocksettings: + +stocksettings +============= +Along with ``copystock``, ``loadstock`` and ``savestock``, replaced with the new +`stockpiles` API. + +.. _title-version: + +title-version +============= +Replaced with an `overlay`. + +.. _unsuspend: + +unsuspend +========= +Merged into `suspendmanager`. + +.. _warn-starving: + +warn-starving +============= +Functionality was merged into `gui/notify`. + +.. _warn-stealers: + +warn-stealers +============= +Functionality was merged into `gui/notify`. + .. _warn-stuck-trees: warn-stuck-trees ================ The corresponding DF :bug:`9252` was fixed in DF 0.44.01. + +.. _workorder-recheck: + +workorder-recheck +================= +Tool to set 'Checking' status of the selected work order, allowing conditions +to be reevaluated. Merged into `orders`. diff --git a/docs/api/Maps.rst b/docs/api/Maps.rst index cfffe79059..f6a0a98826 100644 --- a/docs/api/Maps.rst +++ b/docs/api/Maps.rst @@ -7,7 +7,7 @@ Maps API DFHack offers several ways to access and manipulate map data. * C++: the ``Maps`` and ``MapCache`` modules -* Lua: the `dfhack.maps module `_ +* Lua: the `dfhack.maps module` * All languages: the ``map`` field of the ``world`` global contains raw map data when the world is loaded. diff --git a/docs/build.py b/docs/build.py index bfb6780b23..bf0dd9e488 100755 --- a/docs/build.py +++ b/docs/build.py @@ -62,6 +62,8 @@ def output_format(s): help='Sphinx executable to run [environment variable: SPHINX; default: "sphinx-build"]') parser.add_argument('-j', '--jobs', type=str, default=os.environ.get('JOBS', 'auto'), help='Number of Sphinx threads to run [environment variable: JOBS; default: "auto"]') + parser.add_argument('-q', '--quiet', action='store_true', + help='Disable most output on stdout (also passed to sphinx-build)') parser.add_argument('--debug', action='store_true', help='Log commands that are run, etc.') parser.add_argument('--offline', action='store_true', @@ -91,6 +93,8 @@ def output_format(s): command = [args.sphinx] + OUTPUT_FORMATS[format_name].args + ['-j', args.jobs] if args.clean: command += ['-E'] + if args.quiet: + command += ['-q'] command += forward_args if args.debug: @@ -98,4 +102,5 @@ def output_format(s): print('Running:', command) subprocess.run(command, check=True, env=sphinx_env) - print('') + if not args.quiet: + print('') diff --git a/docs/builtins/keybinding.rst b/docs/builtins/keybinding.rst index c9665a048d..e8f206848d 100644 --- a/docs/builtins/keybinding.rst +++ b/docs/builtins/keybinding.rst @@ -9,8 +9,9 @@ Like any other command, it can be used at any time from the console, but bindings are not remembered between runs of the game unless re-created in :file:`dfhack-config/init/dfhack.init`. -Hotkeys can be any combinations of Ctrl/Alt/Shift with A-Z, 0-9, F1-F12, or ` -(the key below the :kbd:`Esc` key on most keyboards). +Hotkeys can be any combinations of Ctrl/Alt/Super/Shift with any key recognized by SDL. +You can also represent mouse buttons beyond the first three with ``MOUSE4`` +through ``MOUSE15``. Usage ----- @@ -26,12 +27,18 @@ Usage ``keybinding set "" ["" ...]`` Clear, and then add bindings for the specified key. -The ```` parameter above has the following **case-sensitive** syntax:: +The ```` parameter above has the following case-insensitive syntax:: - [Ctrl-][Alt-][Shift-]KEY[@context[|context...]] + [Ctrl-][Alt-][Super-][Shift-]KEY[@context[|context...]] where the ``KEY`` part can be any recognized key and :kbd:`[`:kbd:`]` denote -optional parts. +optional parts. It is important to note that the key is the non-shifted version +of the key. For example ``!`` would be defined as ``Shift-0``. + +DFHack commands can advertise the contexts in which they can be usefully run. +For example, a command that acts on a selected unit can tell `keybinding` that +it is not "applicable" in the current context if a unit is not actively +selected. When multiple commands are bound to the same key combination, DFHack selects the first applicable one. Later ``add`` commands, and earlier entries within one @@ -56,12 +63,22 @@ require the console for interactive input. Examples -------- -``keybinding add Ctrl-Shift-C hotkeys`` - Bind Ctrl-Shift-C to run the `hotkeys` command on any screen at any time. -``keybinding add Alt-F@dwarfmode gui/quickfort`` - Bind Alt-F to run `gui/quickfort`, but only when on a screen that shows the - main map. -``keybinding add Ctrl-Shift-Z@dwarfmode/Default "stocks show"`` - Bind Ctrl-Shift-Z to run `stocks show `, but only when on the main - map in the default mode (that is, no special mode, like cursor look, is - enabled). +Bind Ctrl-Shift-C to run the `hotkeys` command on any screen at any time:: + + keybinding add Ctrl-Shift-C hotkeys + +Bind Ctrl-M to run `gui/mass-remove`, but only when on the main map with +nothing else selected:: + + keybinding add Ctrl-M@dwarfmode/Default gui/mass-remove + +Bind the fourth mouse button to launch `gui/teleport` when a unit is selected +or `gui/autodump` when an item is selected:: + + keybinding add MOUSE4@dwarfmode/ViewSheets/UNIT gui/teleport + keybinding add MOUSE4@dwarfmode/ViewSheets/ITEM gui/autodump + +Bind Shift + the fifth mouse button to toggle the keyboard cursor in fort or +adventure mode:: + + keybinding add Shift-MOUSE5@dwarfmode|dungeonmode toggle-kbd-cursor diff --git a/docs/changelog.txt b/docs/changelog.txt index b565f533f8..904fcc86fb 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,39 +1,36 @@ === Scroll down for changes ===[[[ -The text below is included in docs/dev/Documentation.rst - see that file for more details on the changelog setup. -This is kept in this file as a quick syntax reference. +For information on how to edit/build the changelogs, see `docs/html/docs/dev/Documentation.html` or `docs/dev/Documentation.rst`. -===help +The text between the `syntax-reference` markers is included in `docs/dev/Documentation.rst`, so it must be valid RST. +It is kept in this file as a quick syntax reference. -changelog.txt uses a syntax similar to RST, with a few special sequences: +===syntax-reference-start + +The changelogs use a syntax similar to RST, with a few special sequences: - ``===`` indicates the start of a comment - ``#`` indicates the start of a release name (do not include "DFHack") -- ``##`` indicates the start of a section name (this must be listed in ``gen_changelog.py``) +- ``##`` indicates the start of a section name (which must be listed in ``docs/sphinx_extensions/dfhack/changelog.py``) - ``-`` indicates the start of a changelog entry. **Note:** an entry currently must be only one line. -- ``:`` (colon followed by space) separates the name of a feature from a description of a change to that feature. - Changes made to the same feature are grouped if they end up in the same section. -- ``:\`` (colon, backslash, space) avoids the above behavior -- ``- @`` (the space is optional) indicates the start of an entry that should only be displayed in NEWS-dev.rst. - Use this sparingly, e.g. for immediate fixes to one development build in another development build that - are not of interest to users of stable builds only. +- ``:`` (followed by space) separates the name of a feature from a description of a change to that feature. + - Changes made to the same feature are grouped if they end up in the same section. +- ``:\`` (followed by space) avoids the above behavior +- ``- @`` (the space is optional) indicates the start of an entry that should only be displayed in ``NEWS-dev.rst``. + - Use this sparingly, e.g. for immediate fixes to one development build in another development build that + are not of interest to users of stable builds only. - Three ``[`` characters indicate the start of a block (possibly a comment) that spans multiple lines. Three ``]`` characters indicate the end of such a block. -- ``!`` immediately before a phrase set up to be replaced (see gen_changelog.py) stops that occurrence from being replaced. +- ``!`` immediately before a configured replacement (see ``docs/sphinx_extensions/dfhack/changelog.py``) stops that occurrence from being replaced. -===end -]]] +===syntax-reference-end -================================================================================ -======== IMPORTANT: rename this, and add a new "future" section, BEFORE ======== -======== making a new DFHack release, even if the only changes made ======== -======== were in submodules with their own changelogs! ======== -================================================================================ +Template for new versions: -# Future +## New Tools -## New Plugins +## New Features ## Fixes @@ -47,1809 +44,2267 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Removed -# 50.07-beta1 +]]] -## Fixes --@ `buildingplan`: items are now attached correctly to screw pumps and other multi-item buildings --@ `buildingplan`: buildings with different material filters will no longer get "stuck" if one of the filters currently matches no items -- `showmood` properly count required number of bars and cloth when they aren't the main item for the strange mood +================================================================================ +======== IMPORTANT: rename this, and add a new "Future" section, BEFORE ======== +======== making a new DFHack release, even if the only changes made ======== +======== were in submodules with their own changelogs! ======== +================================================================================ -## Misc Improvements --@ `buildingplan`: can now filter by clay materials --@ `buildingplan`: remember choice per building type for whether the player wants to choose specific items --@ `buildingplan`: you can now attach multiple weapons to spike traps --@ `buildingplan`: can now filter by whether a slab is engraved --@ `buildingplan`: add "minimize" button to temporarily get the planner overlay out of the way if you would rather use the vanilla UI for placing the current building --@ `buildingplan`: add ``buildingplan reset`` command for resetting all filters to defaults --@ `buildingplan`: rename "Build" button to "Confirm" on the item selection dialog and change the hotkey from "B" to "C" -- `blueprint`: now writes blueprints to the ``dfhack-config/blueprints`` directory -- `blueprint-library-guide`: library blueprints have moved from ``blueprints`` to ``hack/data/blueprints`` -- `blueprint-library-guide`: player-created blueprints should now go in the ``dfhack-config/blueprints`` folder. please move your existing blueprints from ``blueprints`` to ``dfhack-config/blueprints``. you don't need to move the library blueprints -- those can be safely deleted from the old ``blueprints`` directory. --@ `showmood`: clarify how many bars and/or cloth items are actually needed for the mood +# Future -## Removed --@ `buildingplan`: "heat safety" setting is temporarily removed while we investigate incorrect item matching +## New Tools -# 50.07-alpha3 +## New Features ## Fixes --@ ``widgets.HotkeyLabel``: don't trigger on click if the widget is disabled -- ``dfhack.job.isSuitableMaterial``: now properly detects lack of fire and magma safety for vulnerable materials with high melting points -- `dig-now`: fixed multi-layer channel designations only channeling every second layer ## Misc Improvements -- `dig-now`: added handling of dig designations that have been converted into active jobs -- `buildingplan`: entirely new UI for building placement, item selection, and materials filtering! + +## Documentation ## API -- Gui focus strings will no longer get the "dfhack/" prefix if the string "dfhack/" already exists in the focus string -- ``Military``: New module for military functionality -- ``Military``: new ``makeSquad`` to create a squad -- ``Military``: changed ``getSquadName`` to take a squad identifier -- ``Military``: new ``updateRoomAssignments`` for assigning a squad to a barracks and archery range -- ``Maps::GetBiomeType`` renamed to ``Maps::getBiomeType`` for consistency -- ``Maps::GetBiomeTypeRef`` renamed to ``Maps::getBiomeTypeRef`` for consistency ## Lua -- ``dfhack.job.attachJobItem()``: allows you to attach specific items to a job -- ``dfhack.screen.paintTile()``: you can now explicitly clear the interface cursor from a map tile by passing ``0`` as the tile value -- ``widgets.Label``: token ``tile`` properties can now be functions that return a value -- ``widgets.CycleHotkeyLabel``: add ``label_below`` attribute for compact 2-line output --@ ``widgets.FilteredList``: search key matching is now case insensitive by default --@ ``gui.INTERIOR_FRAME``: a panel frame style for use in highlighting off interior areas of a UI -- ``maps.getBiomeType``: exposed preexisting function to Lua ## Removed --@ ``gui.THIN_FRAME``: replaced by ``gui.INTERIOR_FRAME`` -- `automaterial`: all functionality has been merged into `buildingplan` -# 50.07-alpha2 +# 53.16-r1.1 + +## New Tools + +## New Features ## Fixes --@ `nestboxes`: fixed bug causing nestboxes themselves to be forbidden, which prevented citizens from using them to lay eggs. Now only eggs are forbidden. -- `autobutcher`: implemented work-around for Dwarf Fortress not setting nicknames properly, so that nicknames created in the in-game interface are detected & protect animals from being butchered properly. Note that nicknames for unnamed units are not currently saved by dwarf fortress - use ``enable fix/protect-nicks`` to fix any nicknames created/removed within dwarf fortress so they can be saved/reloaded when you reload the game. --@ `seedwatch`: fix saving and loading of seed stock targets -- `autodump`: changed behaviour to only change ``dump`` and ``forbid`` flags if an item is successfully dumped. --@ `autochop`: generate default names for burrows with no assigned names -- ``Buildings::StockpileIterator``: fix check for stockpile items on block boundary. -- `tailor`: block making clothing sized for toads; make replacement clothing orders use the size of the wearer, not the size of the garment --@ `confirm`: fix fps drop when enabled -- `channel-safely`: fix an out of bounds error regarding the REPORT event listener receiving (presumably) stale id's +- `stockpiles` will no longer incorrectly size the "rough gem" and "cut gem" vectors, which avoids a crash when viewing stockpile settings. This potentially affects anything that uses blueprints to create a stockpile, including `gui/quantum` ## Misc Improvements -- `autobutcher`: logs activity to the console terminal instead of making disruptive in-game announcements -- DFHack tool windows that capture mouse clicks (and therefore prevent you from clicking on the "pause" button) now unconditionally pause the game when they open (but you can still unpause with the keyboard if you want to). Examples of this behavior: `gui/quickfort`, `gui/blueprint`, `gui/liquids` -- `showmood`: now shows the number of items needed for cloth and bars in addition to the technically correct but always confusing "total dimension" (150 per bar or 10,000 per cloth) --@ Stopped mouse clicks from affecting the map when a click on a DFHack screen dismisses the window -- `confirm`: configuration data is now persisted globally. -- `tailor`: add support for adamantine cloth (off by default); improve logging + +## Documentation ## API -- ``Gui::any_civzone_hotkey``, ``Gui::getAnyCivZone``, ``Gui::getSelectedCivZone``: new functions to operate on the new zone system -- Units module: added new predicates for ``isGeldable()``, ``isMarkedForGelding()``, and ``isPet()`` ## Lua -- ``dfhack.gui.getSelectedCivZone``: returns the Zone that the user has selected currently -- ``widgets.FilteredList``: Added ``edit_on_change`` optional parameter to allow a custom callback on filter edit change. -- ``widgets.TabBar``: new library widget (migrated from control-panel.lua) -# 50.07-alpha1 +## Removed + +# 53.16-r1 + +## New Tools + +## New Features ## Fixes -- ``Units::isFortControlled``: Account for agitated wildlife --@ Fix right click sometimes closing both a DFHack window and a vanilla panel -- Fixed issue with scrollable lists having some data off-screen if they were scrolled before being made visible -- `channel-safely`: fixed bug resulting in marker mode never being set for any designation --@ `automelt`: fixed bug related to lua stack smashing behavior in returned stockpile configs --@ `autochop`: fixed bug related to lua stack smashing behavior in returned stockpile configs -- `nestboxes`: now cancels any in-progress hauling jobs when it protects a fertile egg --@ Fix persisted data not being written on manual save -- `nestboxes`: now scans for eggs more frequently and cancels any in-progress hauling jobs when it protects a fertile egg +- ``TextArea`` widget corrected to use ``COLOR_BLACK`` instead of ``COLOR_RESET`` as default background color ## Misc Improvements --@ `automelt`: is now more resistent to vanilla savegame corruption --@ `hotkeys`: DFHack logo is now hidden on screens where it covers important information when in the default position (e.g. when choosing an embark site) -- `misery`: now persists state with the fort --@ `autodump`: reinstate ``autodump-destroy-item``, hotkey: Ctrl-K -- `autodump`: new hotkey for ``autodump-destroy-here``: Ctrl-H --@ `dig`: new hotkeys for vein designation on z-level (Ctrl-V) and vein designation across z-levels (Ctrl-Shift-V) --@ `clean`: new hotkey for `spotclean`: Ctrl-C -- `autobutcher`: changed defaults from 5 females / 1 male to 4 females / 2 males so a single unfortunate accident doesn't leave players without a mating pair -- `autobutcher`: now immediately loads races available at game start into the watchlist --@ replaced DFHack logo used for the hover hotspot with a crisper image --@ `orders`: recipe for silver crossbows removed from ``library/military`` as it is not a vanilla recipe, but is available in ``library/military_include_artifact_materials`` -- `stonesense`: added an ``INVERT_MOUSE_Z`` option to invert the mouse wheel direction +- a safety check was added to ``Screen::doSetTile_char`` for out of bound pen color values ## Documentation ## API ## Lua -- `overlay`: overlay widgets can now specify focus paths for the viewscreens they attach to so they only appear in specific contexts. see `overlay-dev-guide` for details. -- ``widgets.CycleHotkeyLabel``: Added ``key_back`` optional parameter to cycle backwards. -- ``widgets.HotkeyLabel``: Added ``setLabel`` method to allow easily updating the label text without mangling the keyboard shortcut. -- ``widgets.HotkeyLabel``: Added ``setOnActivate`` method to allow easily updating the ``on_activate`` callback. -- ``widgets.FilteredList``: Added ``case_sensitive`` optional paramter to determine if filtering is case sensitive. -# 50.05-alpha3.1 +## Removed -## Fixes --@ `seedwatch`: fix parameter parsing when setting targets +# 53.15-r3 -# 50.05-alpha3 +## New Tools -## New Plugins -- `autoslab`: automatically create work orders to engrave slabs for ghostly dwarves +## New Features ## Fixes --@ DF screens can no longer get "stuck" on transitions when DFHack tool windows are visible. Instead, those DF screens are force-paused while DFHack windows are visible so the player can close them first and not corrupt the screen sequence. The "PAUSE FORCED" indicator will appear on these DFHack windows to indicate what is happening. --@ allow launcher tools to launch themselves without hanging the game --@ fix issues with clicks "passing through" some DFHack window elements to the screen below -- `getplants`: trees are now designated correctly -- `autoclothing`: fixed a crash that can happen when units are holding invalid items. --@ `orders`: fix orders in library/basic that create bags -- `orders`: library/military now sticks to vanilla rules and does not add orders for normally-mood-only platinum weapons. A new library orders file ``library/military_include_artifact_materials`` is now offered as an alternate ``library/military`` set of orders that still includes the platinum weapons. -- `autochop`: fixed a crash when processing trees with corrupt data structures (e.g. when a trunk tile fails to fall when the rest of the tree is chopped down) +- `buildingplan`: restore planner UI elements: hollow constructions, only engraved slabs, only empty cages, weapon count ## Misc Improvements --@ DFHack windows can now be "defocused" by clicking somewhere not over the tool window. This has the same effect as pinning previously did, but without the extra clicking. -- `getplants`: ID values will now be accepted regardless of case --@ Windows now display "PAUSE FORCED" on the lower border if the tool is forcing the game to pause --@ New borders for DFHack tool windows -- tell us what you think! --@ `autoclothing`: merged the two separate reports into the same command. -- `automelt`: stockpile configuration can now be set from the commandline -- `channel-safely`: new monitoring for cave-in prevention --@ `gui/control-panel`: you can now configure whether DFHack tool windows should pause the game by default -- `gui/control-panel`: new global hotkey for quick access: Ctrl-Shift-E --@ `hotkeys`: clicking on the DFHack logo no longer closes the popup menu -- `nestboxes`: now saves enabled state in your savegame -- `gui/launcher`: sped up initialization time for faster window appearance -- `orders`: orders plugin functionality is now accessible via an `overlay` widget when the manager orders screen is open -- `gui/quickcmd`: now has its own global keybinding for your convenience: Ctrl-Shift-A -- `seedwatch`: now persists enabled state in the savegame, automatically loads useful defaults, and respects reachability when counting available seeds --@ `quickfort`: planned buildings are now properly attached to any pertinent overlapping zones +- `EventManager`: add safety check to potentially avoid a DFHack crash when DF's ``reports`` table is out of order ## Documentation -- `compile`: instructions added for cross-compiling DFHack for Windows from a Linux Docker builder --@ Quickstart guide has been updated with info on new window behavior and how to use the control panel ## API -- ``Buildings::containsTile()``: no longer takes a ``room`` parameter since that's not how rooms work anymore. If the building has extents, the extents will be checked. otherwise, the result just depends on whether the tile is within the building's bounding box. -- ``Units::getCitizens()``: gets a list of citizens, which otherwise you'd have to iterate over all units the world to discover -- ``Screen::Pen``: now accepts ``top_of_text`` and ``bottom_of_text`` properties to support offset text in graphics mode -- `overlay`: overlay widgets can now specify a default enabled state if they are not already set in the player's overlay config file -- ``Lua::Push``: now supports ``std::unordered_map`` +- ``DFSDL``: added ``obtain_library_handle`` and ``obtain_image_library_handle`` so that a plugin can obtain DFHack's already-open handle to these libs instead of having to do it itself. +- ``Screen``: new functions ``paintMapPortTile`` and ``readMapPortTile`` to write and read world and region map tiles. +- ``Materials``: ``MaterialInfo`` constants ``NUM_BUILTIN``, ``GROUP_SIZE``, ``CREATURE_BASE``, ``FIGURE_BASE``, ``PLANT_BASE``, and ``END_BASE`` removed. New plugins should use appropriate members of the ``df::builtin_mats`` enum. ## Lua -- `helpdb`: new function: ``helpdb.refresh()`` to force a refresh of the database. Call if you are a developer adding new scripts, loading new plugins, or changing help text during play -- `helpdb`: changed from auto-refreshing every 60 seconds to only refreshing on explicit call to ``helpdb.refresh()``. docs very rarely change during a play session, and the automatic database refreshes were slowing down the startup of `gui/launcher` and anything else that displays help text. -- ``widgets.Label``: ``label.scroll()`` now understands ``home`` and ``end`` keywords for scrolling to the top or bottom -- ``widgets.List``: new callbacks for double click and shift double click -- ``dfhack.units.getCitizens()``: gets a list of citizens --@ ``gui.ZScreen``: new attribute: ``defocusable`` for controlling whether a window loses keyboard focus when the map is clicked -- ``widgets.Label``: token ``tile`` properties can now be either pens or numeric texture ids -- `tiletypes`: now has a Lua API! ``tiletypes_setTile`` +- Added ``Screen::paintMapPortTile`` as ``dfhack.screen.paintMapPortTile`` +- Added ``Screen::readMapPortTile`` as ``dfhack.screen.readMapPortTile`` +- Deprecated ``gui.materials.CREATURE_BASE`` and ``gui.materials.PLANT_BASE`` - scripts should instead use ``df.builtin_mats.CREATURE_1`` and ``df.builtin_mats.PLANT_1``, respectively. ## Removed -- `autohauler`: no plans to port to v50, as it just doesn't make sense with the new work detail system -# 50.05-alpha2 +# 53.15-r2 -## Fixes -- `autofarm`: don't duplicate status line entries for crops with no current supply --@ `orders`: allow the orders library to be listed and imported properly (if you previously copied the orders library into your ``dfhack-config/orders`` directory to work around this bug, you can remove those files now) -- `tailor`: now respects the setting of the "used dyed clothing" standing order toggle +## New Tools -# 50.05-alpha1 +## New Features +- `buildingplan`: add a ``Pull`` button next to linked levers on a building's "Show linked buildings" tab so you can queue a high-priority pull-lever job (or cancel a queued one) without navigating to the lever ## Fixes -- ``widgets.WrappedLabel``: no longer resets scroll position when window is moved or resized +- `autoclothing`: correct defect in validating material specification on command line +- `autolabor`: Fix running 1 tick less frequently than intended. +- `buildingplan`: fixed non-clickable pressure plates's triggers (issue #5736) +- `getplants`: added protective code to avoid misoperation when a plant has an invalid material (which should never happen, but...) ## Misc Improvements -- Scrollable widgets now react to mouse wheel events when the mouse is over the widget -- the ``dfhack-config/scripts/`` folder is now searched for scripts by default -- `hotkeys`: overlay hotspot widget now shows the DFHack logo in graphics mode and "DFHack" in text mode -- `script-paths`: removed "raw" directories from default script paths. now the default locations to search for scripts are ``dfhack-config/scripts``, ``save/*/scripts``, and ``hack/scripts`` -- ``init.d``: directories have moved from the ``raw`` subfolder (which no longer exists) to the root of the main DF folder or a savegame folder +- `buildingplan`: added a slider on the weapontrap overlay +- `buildingplan`: added a small tooltip text about renaming favorites in the UI +- `buildingplan`: buildingplan can now generate work orders +- `orders`: exported orders now include a human-readable ``name`` field ## Documentation -- `overlay-dev-guide`: added troubleshooting tips and common development workflows -- added DFHack architecture diagrams to the dev intro -- added DFHack Quickstart guide ## API -- ``Gui::getDwarfmodeDims``: now only returns map viewport dimensions; menu dimensions are obsolete -- ``Gui::getDFViewscreen``: returns the topmost underlying DF viewscreen -- ``Screen::Pen``: now accepts ``keep_lower`` and ``write_to_lower`` properties to support foreground and background textures in graphics mode +- Core: added ``getConfigPath()`` API for obtaining the path to user-specific configuration files +- ``widgets.RadioButton``: New button widget resembling those used in ``gui/control-panel`` ## Lua -- Removed ``os.execute()`` and ``io.popen()`` built-in functions -- ``gui.View``: ``visible`` and ``active`` can now be functions that return a boolean -- ``widgets.Panel``: new attributes to control window dragging and resizing with mouse or keyboard -- ``widgets.Window``: Panel subclass with attributes preset for top-level windows -- ``widgets.CycleHotkeyLabel``: now supports rendering option labels in the color of your choice -- ``widgets.CycleHotkeyLabel``: new functions ``setOption()`` and ``getOptionPen()`` -- ``widgets.ToggleHotkeyLabel``: now renders the ``On`` option in green text -- ``widgets.Label``: tiles can now have an associated width -- `overlay`: ``OverlayWidget`` now inherits from ``Panel`` instead of ``Widget`` to get all the frame and mouse integration goodies -- ``dfhack.gui.getDFViewscreen()``: returns the topmost underlying DF viewscreen -- ``gui.ZScreen``: Screen subclass that implements window raising, multi-viewscreen input handling, and viewscreen event pass-through so the underlying map can be interacted with and dragged around while DFHack screens are visible -- ``gui.View``: new function ``view:getMouseFramePos()`` for detecting whether the mouse is within (or over) the exterior frame of a view -- ``gui.CLEAR_PEN``: now clears the background and foreground and writes to the background (before it would always write to the foreground) -- ``gui.KEEP_LOWER_PEN``: a general use pen that writes associated tiles to the foreground while keeping the existing background +- Added ``dfhack.getConfigPath()`` API, proxying ``Core::getConfigPath`` ## Removed -- ``fix-job-postings`` from the `workflow` plugin is now obsolete since affected savegames can no longer be loaded -- Ruby is no longer a supported DFHack scripting language -# 0.47.05-r8 +# 53.15-r1 -## New Plugins -- `overlay`: plugin is transformed from a single line of text that runs `gui/launcher` on click to a fully-featured overlay injection framework. It now houses a popup menu for keybindings relevant to the current DF screen, all the widgets previously provided by `dwarfmonitor` (e.g. the current date and number of happy/unhappy dwarves), the overlay that highlights suspended buildings when you pause, and others. See `overlay-dev-guide` for details. -- `channel-safely`: auto-manage channel designations to keep dwarves safe - -## Fixes -- `automaterial`: fix the cursor jumping up a z level when clicking quickly after box select -- `buildingplan`: fix crash when canceling out of placement mode for a building with planning mode enabled and subsequently attempting to place a building that does not have planning mode enabled and that has no pertinent materials available -- `gui/create-item`: prevent materials list filter from intercepting sublist hotkeys -- `mousequery`: fix the cursor jumping up z levels sometimes when using TWBT -- `tiletypes`: no longer resets dig priority to the default when updating other properties of a tile -- `automaterial`: fix rendering errors with box boundary markers -- `autolabor`, `autohauler`: properly handle jobs 241, 242, and 243 -- `autofarm`: flush output so status text is visible immediately after running the command -- `hotkeys`: correctly detect hotkeys bound to number keys, F11, and F12 -- `labormanager`: associate quern construction with the correct labor -- ``EventManager``: fix a segmentation fault with the ``REPORT`` event -- ``EventManager``: fix the ``JOB_STARTED`` event only sending events to the first handler listed instead of all registered handlers -- Core: ensure ``foo.init`` always runs before ``foo.*.init`` (e.g. ``dfhack.init`` should always run before ``dfhack.something.init``) - -## Misc Improvements -- `autolabor`, `autohauler`: refactored to use DFHack's messaging system for info/debug/trace messages -- `blueprint`: new ``--smooth`` option for recording all smoothed floors and walls instead of just the ones that require smoothing for later carving -- `blueprint`: record built constructions in blueprints -- `blueprint`: record stockpile/building/zone names in blueprints -- `blueprint`: record room sizes in blueprints -- `blueprint`: generate meta blueprints to reduce the number of blueprints you have to apply -- `blueprint`: support splitting the output file into phases grouped by when they can be applied -- `blueprint`: when splitting output files, number them so they sort into the order you should apply them in -- `dwarfmonitor`: widgets have been ported to the overlay framework and can be enabled and configured via the `gui/overlay` UI -- `ls`: indent tag listings and wrap them in the rightmost column for better readability -- `ls`: new ``--exclude`` option for hiding matched scripts from the output. this can be especially useful for modders who don't want their mod scripts to be included in ``ls`` output. -- `hotkeys`: hotkey screen has been transformed into an interactive `overlay` widget that you can bring up by moving the mouse cursor over the hotspot (in the upper left corner of the screen by default). Enable/disable/reposition the hotspot in the `gui/overlay` UI. Even if the hotspot is disabled, the menu can be brought up at any time with the Ctrl-Shift-C hotkey. -- `hotkeys`: now supports printing active hotkeys to the console with ``hotkeys list`` -- `digtype`: new ``-z`` option for digtype to restrict designations to the current z-level and down -- UX: List widgets now have mouse-interactive scrollbars -- UX: You can now hold down the mouse button on a scrollbar to make it scroll multiple times. -- UX: You can now drag the scrollbar up and down to scroll to a specific spot -- `orders`: replace shell craft orders in the standard orders list you get with ``orders import library/basic`` with orders for shell leggings. They have a slightly higher trade price. Also, "shleggings" is just hilarious. -- `spectate`: new ``auto-unpause`` option for auto-dismissal of announcement pause events (e.g. sieges). -- `spectate`: new ``auto-disengage`` option for auto-disengagement of plugin through player interaction whilst unpaused. -- `spectate`: new ``tick-threshold`` option for specifying the maximum time to follow the same dwarf -- `spectate`: new ``animals`` option for sometimes following animals -- `spectate`: new ``hostiles`` option for sometimes following hostiles -- `spectate`: new ``visiting`` option for sometimes following visiting merchants, diplomats or plain visitors -- `spectate`: added persistent configuration of the plugin settings -- `gui/cp437-table`: new global keybinding for the clickable on-screen keyboard for players with keyboard layouts that prevent them from using certain keys: Ctrl-Shift-K -- `quickfort-library-guide`: improved layout of marksdwarf barracks in the example Dreamfort blueprints - -## Documentation -- `overlay-dev-guide`: documentation and guide for injecting functionality into DF viewscreens from Lua scripts and creating interactive overlay widgets -- ``dfhack.gui.revealInDwarfmodeMap``: document ``center`` bool for Lua API - -## API -- ``Gui::anywhere_hotkey``: for plugin commands bound to keybindings that can be invoked on any screen -- ``Gui::autoDFAnnouncement``, ``Gui::pauseRecenter``: added functionality reverse-engineered from announcement code -- ``Gui::revealInDwarfmodeMap``: Now enforce valid view bounds when pos invalid, add variant accepting x, y, z -- ``Lua::PushInterfaceKeys()``: transforms viewscreen ``feed()`` keys into something that can be interpreted by lua-based widgets -- ``Lua::Push()``: now handles maps with otherwise supported keys and values -- Units module: added new predicates for: - - ``isUnitInBox()`` - - ``isAnimal()`` - - ``isVisiting()`` any visiting unit (diplomat, merchant, visitor) - - ``isVisitor()`` ie. not merchants or diplomats - - ``isInvader()`` - - ``isDemon()`` returns true for unique/regular demons - - ``isTitan()`` - - ``isMegabeast()`` - - ``isGreatDanger()`` returns true if unit is a demon, titan, or megabeast - - ``isSemiMegabeast()`` - - ``isNightCreature()`` - - ``isDanger()`` returns true if is a 'GreatDanger', semi-megabeast, night creature, undead, or invader -- Units module: modified predicates: - - ``isUndead()`` now optionally ignores vampires instead of always ignoring vampires - - ``isCitizen()`` now optionally ignores insane citizens instead of always ignoring insane citizens -- Units module: new action timer API for speeding up of slowing down units -- Constructions module: added ``insert()`` to insert constructions into the game's sorted list. -- MiscUtils: added the following string transformation functions (refactored from ``uicommon.h``): ``int_to_string``, ``ltrim``, ``rtrim``, and ``trim``; added ``string_to_int`` - -## Lua -- ``widgets.Scrollbar``: new scrollbar widget that can be paired with an associated scrollable widget. Integrated with ``widgets.Label`` and ``widgets.List``. -- ``widgets.List``: new ``getIdxUnderMouse()`` function for detecting the list index under the active mouse cursor. this allows for "selection follows mouse" behavior -- ``widgets.List``: shift-clicking now triggers the ``submit2`` attribute function if it is defined -- ``dfhack.constructions.findAtTile()``: exposed preexisting function to Lua. -- ``dfhack.constructions.insert()``: exposed new function to Lua. -- ``widgets.Panel``: new ``frame_style`` and ``frame_title`` attributes for drawing frames around groups of widgets -- ``widgets.EditField``: now allows other widgets to process characters that the ``on_char`` callback rejects. -- ``widgets.FilteredList``: now provides a useful default search key for list items made up of text tokens instead of plain text -- ``widgets.ResizingPanel``: now accounts for frame inset when calculating frame size -- ``widgets.HotkeyLabel``: now ignores mouse clicks when ``on_activate`` is not defined -- ``gui.Screen.show()``: now returns ``self`` as a convenience -- ``gui.View.getMousePos()`` now takes an optional ``ViewRect`` parameter in case the caller wants to get the mouse pos relative to a rect that is not the frame_body (such as the frame_rect that includes the frame itself) -- Lua mouse events now conform to documented behavior in `lua-api` -- ``_MOUSE_L_DOWN`` will be sent exactly once per mouse click and ``_MOUSE_L`` will be sent repeatedly as long as the button is held down. Similarly for right mouse button events. - -## Internals -- Constructions module: ``findAtTile`` now uses a binary search intead of a linear search -- MSVC warning level upped to /W3, and /WX added to make warnings cause compilations to fail. +## New Tools -## Removed -- `resume`: functionality (including suspended building overlay) has moved to `unsuspend` +## New Features -# 0.47.05-r7 +## Fixes +- `autoclothing`: will no longer count gloves and pants as if they were helms +- `timestream`: do not skip ticks when a caravan is loading or unloading, and be more careful about skipping ticks when flows are active -## New Plugins -- `autonestbox`: split off from `zone` into its own plugin. Note that to enable, the command has changed from ``autonestbox start`` to ``enable autonestbox``. -- `autobutcher`: split off from `zone` into its own plugin. Note that to enable, the command has changed from ``autobutcher start`` to ``enable autobutcher``. -- `overlay`: display a "DFHack" button in the lower left corner that you can click to start the new GUI command launcher. The `dwarfmonitor` weather display had to be moved to make room for the button. If you are seeing the weather indicator rendered over the overlay button, please remove the ``dfhack-config/dwarfmonitor.json`` file to fix the weather indicator display offset. - -## New Internal Commands -- `tags`: new built-in command to list the tool category tags and their definitions. tags associated with each tool are visible in the tool help and in the output of `ls`. - -## Fixes -- `autochop`: designate largest trees for chopping first, instead of the smallest -- ``dfhack.run_script``: ensure the arguments passed to scripts are always strings. This allows other scripts to call ``run_script`` with numeric args and it won't break parameter parsing. -- `dig-now`: Fix direction of smoothed walls when adjacent to a door or floodgate -- ``job.removeJob()``: ensure jobs are removed from the world list when they are canceled -- `quickfort`: `Dreamfort ` blueprint set: declare the hospital zone before building the coffer; otherwise DF fails to stock the hospital with materials -- ``dfhack.buildings.findCivzonesAt``: no longer return duplicate civzones after loading a save with existing civzones - -## Misc Improvements -- Init scripts: ``dfhack.init`` and other init scripts have moved to ``dfhack-config/init/``. If you have customized your ``dfhack.init`` file and want to keep your changes, please move the part that you have customized to the new location at ``dfhack-config/init/dfhack.init``. If you do not have changes that you want to keep, do not copy anything, and the new defaults will be used automatically. -- History files: ``dfhack.history``, ``tiletypes.history``, ``lua.history``, and ``liquids.history`` have moved to the ``dfhack-config`` directory. If you'd like to keep the contents of your current history files, please move them to ``dfhack-config``. -- `do-job-now`: new global keybinding for boosting the priority of the jobs associated with the selected building/work order/unit/item etc.: Alt-N -- `gui/workorder-details`: new keybinding on the workorder details screen: ``D`` -- `keybinding`: support backquote (\`) as a hotkey (and assign the hotkey to the new `gui/launcher` interface) -- `ls`: can now filter tools by substring or tag. note that dev scripts are hidden by default. pass the ``--dev`` option to show them. -- `manipulator`: add a library of useful default professions -- `manipulator`: move professions configuration from ``professions/`` to ``dfhack-config/professions/`` to keep it together with other dfhack configuration. If you have saved professions that you would like to keep, please manually move them to the new folder. -- ``materials.ItemTraitsDialog``: added a default ``on_select``-handler which toggles the traits. -- `orders`: added useful library of manager orders. see them with ``orders list`` and import them with, for example, ``orders import library/basic`` -- `prospect`: add new ``--show`` option to give the player control over which report sections are shown. e.g. ``prospect all --show ores`` will just show information on ores. -- `seedwatch`: ``seedwatch all`` now adds all plants with seeds to the watchlist, not just the "basic" crops. -- UX: You can now move the cursor around in DFHack text fields in ``gui/`` scripts (e.g. `gui/blueprint`, `gui/quickfort`, or `gui/gm-editor`). You can move the cursor by clicking where you want it to go with the mouse or using the Left/Right arrow keys. Ctrl+Left/Right will move one word at a time, and Alt+Left/Right will move to the beginning/end of the text. -- UX: You can now click on the hotkey hint text in many ``gui/`` script windows to activate the hotkey, like a button. Not all scripts have been updated to use the clickable widget yet, but you can try it in `gui/blueprint` or `gui/quickfort`. -- UX: Label widget scroll icons are replaced with scrollbars that represent the percentage of text on the screen and move with the position of the visible text, just like web browser scrollbars. -- `quickfort`: `Dreamfort ` blueprint set improvements: set traffic designations to encourage dwarves to eat cooked food instead of raw ingredients +## Misc Improvements ## Documentation -- Added `modding-guide` -- Update all DFHack tool documentation (300+ pages) with standard syntax formatting, usage examples, and overall clarified text. -- Group DFHack tools by `tag ` so similar tools are grouped and easy to find ## API -- Removed "egg" ("eggy") hook support (Linux only). The only remaining method of hooking into DF is by interposing SDL calls, which has been the method used by all binary releases of DFHack. -- Removed ``Engravings`` module (C++-only). Access ``world.engravings`` directly instead. -- Removed ``Notes`` module (C++-only). Access ``ui.waypoints.points`` directly instead. -- Removed ``Windows`` module (C++-only) - unused. -- ``Constructions`` module (C++-only): removed ``t_construction``, ``isValid()``, ``getCount()``, ``getConstruction()``, and ``copyConstruction()``. Access ``world.constructions`` directly instead. -- ``Gui::getSelectedItem()``, ``Gui::getAnyItem()``: added support for the artifacts screen -- ``Units::teleport()``: now sets ``unit.idle_area`` to discourage units from walking back to their original location (or teleporting back, if using `fastdwarf`) ## Lua -- History: added ``dfhack.getCommandHistory(history_id, history_filename)`` and ``dfhack.addCommandToHistory(history_id, history_filename, command)`` so gui scripts can access a commandline history without requiring a terminal. -- Added ``dfhack.screen.hideGuard()``: exposes the C++ ``Screen::Hide`` to Lua -- ``helpdb``: database and query interface for DFHack tool help text -- ``tile-material``: fix the order of declarations. The ``GetTileMat`` function now returns the material as intended (always returned nil before). Also changed the license info, with permission of the original author. -- ``utils.df_expr_to_ref()``: fixed some errors that could occur when navigating tables -- ``widgets.EditField``: new ``onsubmit2`` callback attribute is called when the user hits Shift-Enter. -- ``widgets.EditField``: new function: ``setCursor(position)`` sets the input cursor. -- ``widgets.EditField``: new attribute: ``ignore_keys`` lets you ignore specified characters if you want to use them as hotkeys -- ``widgets.FilteredList``: new attribute: ``edit_ignore_keys`` gets passed to the filter EditField as ``ignore_keys`` -- ``widgets.Label``: ``scroll`` function now interprets the keywords ``+page``, ``-page``, ``+halfpage``, and ``-halfpage`` in addition to simple positive and negative numbers. -- ``widgets.HotkeyLabel``: clicking on the widget will now call ``on_activate()``. -- ``widgets.CycleHotkeyLabel``: clicking on the widget will now cycle the options and trigger ``on_change()``. This also applies to the ``ToggleHotkeyLabel`` subclass. -# 0.47.05-r6 +## Removed + +# 53.14-r2 + +## New Tools + +## New Features ## Fixes -- `eventful`: fix ``eventful.registerReaction`` to correctly pass ``call_native`` argument thus allowing canceling vanilla item creation. Updated related documentation. -- `eventful`: renamed NEW_UNIT_ACTIVE event to UNIT_NEW_ACTIVE to match the ``EventManager`` event name -- `eventful`: fixed UNIT_NEW_ACTIVE event firing too often -- ``job.removeJob()``: fixes regression in DFHack 0.47.05-r5 where items/buildings associated with the job were not getting disassociated when the job is removed. Now `build-now` can build buildings and `gui/mass-remove` can cancel building deconstruction again -- ``widgets.CycleHotkeyLabel``: allow initial option values to be specified as an index instead of an option value ## Misc Improvements -- `confirm`: added a confirmation dialog for removing manager orders -- `confirm`: allow players to pause the confirmation dialog until they exit the current screen -- `dfhack-examples-guide`: refine food preparation orders so meal types are chosen intelligently according to the amount of meals that exist and the number of aviailable items to cook with -- `dfhack-examples-guide`: reduce required stock of dye for "Dye cloth" orders -- `dfhack-examples-guide`: fix material conditions for making jugs and pots -- `dfhack-examples-guide`: make wooden jugs by default to differentiate them from other stone tools. this allows players to more easily select jugs out with a properly-configured stockpile (i.e. the new ``woodentools`` alias) -- `quickfort-alias-guide`: new aliases: ``forbidsearch``, ``permitsearch``, and ``togglesearch`` use the `search-plugin` plugin to alter the settings for a filtered list of item types when configuring stockpiles -- `quickfort-alias-guide`: new aliases: ``stonetools`` and ``woodentools``. the ``jugs`` alias is deprecated. please use ``stonetools`` instead, which is the same as the old ``jugs`` alias. -- `quickfort-alias-guide`: new aliases: ``usablehair``, ``permitusablehair``, and ``forbidusablehair`` alter settings for the types of hair/wool that can be made into cloth: sheep, llama, alpaca, and troll. The ``craftrefuse`` aliases have been altered to use this alias as well. -- `quickfort-alias-guide`: new aliases: ``forbidthread``, ``permitthread``, ``forbidadamantinethread``, ``permitadamantinethread``, ``forbidcloth``, ``permitcloth``, ``forbidadamantinecloth``, and ``permitadamantinecloth`` give you more control how adamantine-derived items are stored -- `quickfort`: `Dreamfort ` blueprint set improvements: automatically create tavern, library, and temple locations (restricted to residents only by default), automatically associate the rented rooms with the tavern -- `quickfort`: `Dreamfort ` blueprint set improvements: new design for the services level, including were-bitten hospital recovery rooms and an appropriately-themed interrogation room next to the jail! Also fits better in a 1x1 embark for minimalist players. +- Core: attempts to delete a pool-allocated DF object will now throw an exception instead of corrupting the heap + +## Documentation ## API -- ``word_wrap``: argument ``bool collapse_whitespace`` converted to enum ``word_wrap_whitespace_mode mode``, with valid modes ``WSMODE_KEEP_ALL``, ``WSMODE_COLLAPSE_ALL``, and ``WSMODE_TRIM_LEADING``. ## Lua -- ``gui.View``: all ``View`` subclasses (including all ``Widgets``) can now acquire keyboard focus with the new ``View:setFocus()`` function. See docs for details. -- ``materials.ItemTraitsDialog``: new dialog to edit item traits (where "item" is part of a job or work order or similar). The list of traits is the same as in vanilla work order conditions "``t`` change traits". -- ``widgets.EditField``: the ``key_sep`` string is now configurable -- ``widgets.EditField``: can now display an optional string label in addition to the activation key -- ``widgets.EditField``: views that have an ``EditField`` subview no longer need to manually manage the ``EditField`` activation state and input routing. This is now handled automatically by the new ``gui.View`` keyboard focus subsystem. -- ``widgets.HotkeyLabel``: the ``key_sep`` string is now configurable - -# 0.47.05-r5 - -## New Plugins -- `spectate`: "spectator mode" -- automatically follows dwarves doing things in your fort - -## New Tweaks -- `tweak`: ``partial-items`` displays percentage remaining for partially-consumed items such as hospital cloth - -## Fixes -- `autofarm`: removed restriction on only planting "discovered" plants -- `cxxrandom`: fixed exception when calling ``bool_distribution`` -- `luasocket`: return correct status code when closing socket connections so clients can know when to retry - -## Misc Improvements -- `autochop`: only designate the amount of trees required to reach ``max_logs`` -- `autochop`: preferably designate larger trees over smaller ones -- `blueprint`: ``track`` phase renamed to ``carve`` -- `blueprint`: carved fortifications and (optionally) engravings are now captured in generated blueprints -- `cursecheck`: new option, ``--ids`` prints creature and race IDs of the cursed creature -- `debug`: DFHack log messages now have configurable headers (e.g. timestamp, origin plugin name, etc.) via the ``debugfilter`` command of the `debug` plugin -- `debug`: script execution log messages (e.g. "Loading script: dfhack_extras.init" can now be controlled with the ``debugfilter`` command. To hide the messages, add this line to your ``dfhack.init`` file: ``debugfilter set Warning core script`` -- `dfhack-examples-guide`: add mugs to ``basic`` manager orders -- `dfhack-examples-guide`: ``onMapLoad_dreamfort.init`` remove "cheaty" commands and new tweaks that are now in the default ``dfhack.init-example`` file -- ``dfhack.init-example``: recently-added tweaks added to example ``dfhack.init`` file -- `dig-now`: handle fortification carving -- `EventManager`: add new event type ``JOB_STARTED``, triggered when a job first gains a worker -- `EventManager`: add new event type ``UNIT_NEW_ACTIVE``, triggered when a new unit appears on the active list -- `gui/create-item`: Added "(chain)" annotation text for armours with the [CHAIN_METAL_TEXT] flag set -- `manipulator`: tweak colors to make the cursor easier to locate -- `stocks`: allow search terms to match the full item label, even when the label is truncated for length -- `tweak`: ``stable-cursor`` now keeps the cursor stable even when the viewport moves a small amount - -## Documentation -- add more examples to the plugin example skeleton files so they are more informative for a newbie -- `confirm`: correct the command name in the plugin help text -- `cxxrandom`: added usage examples -- ``Lua API.rst``: added ``isHidden(unit)``, ``isFortControlled(unit)``, ``getOuterContainerRef(unit)``, ``getOuterContainerRef(item)`` -- `lua-string`: document DFHack string extensions (``startswith()``, ``endswith()``, ``split()``, ``trim()``, ``wrap()``, and ``escape_pattern()``) -- `quickfort-blueprint-guide`: added screenshots to the Dreamfort case study and overall clarified text -- `remote-client-libs`: add new Rust client library -- update download link and installation instructions for Visual C++ 2015 build tools on Windows -- update information regarding obtaining a compatible Windows build environment - -## API -- add functions reverse-engineered from ambushing unit code: ``Units::isHidden()``, ``Units::isFortControlled()``, ``Units::getOuterContainerRef()``, ``Items::getOuterContainerRef()`` -- ``Job::removeJob()``: use the job cancel vmethod graciously provided by The Toady One in place of a synthetic method derived from reverse engineering - -## Lua -- `custom-raw-tokens`: library for accessing tokens added to raws by mods -- ``dfhack.units``: Lua wrappers for functions reverse-engineered from ambushing unit code: ``isHidden(unit)``, ``isFortControlled(unit)``, ``getOuterContainerRef(unit)``, ``getOuterContainerRef(item)`` -- ``dialogs``: ``show*`` functions now return a reference to the created dialog -- ``dwarfmode.enterSidebarMode()``: passing ``df.ui_sidebar_mode.DesignateMine`` now always results in you entering ``DesignateMine`` mode and not ``DesignateChopTrees``, even when you looking at the surface (where the default designation mode is ``DesignateChopTrees``) -- ``dwarfmode.MenuOverlay``: if ``sidebar_mode`` attribute is set, automatically manage entering a specific sidebar mode on show and restoring the previous sidebar mode on dismiss -- ``dwarfmode.MenuOverlay``: new class function ``renderMapOverlay`` to assist with painting tiles over the visible map -- ``ensure_key``: new global function for retrieving or dynamically creating Lua table mappings -- ``safe_index``: now properly handles lua sparse tables that are indexed by numbers -- ``string``: new function ``escape_pattern()`` escapes regex special characters within a string -- ``widgets``: unset values in ``frame_inset`` table default to ``0`` -- ``widgets``: ``FilteredList`` class now allows all punctuation to be typed into the filter and can match search keys that start with punctuation -- ``widgets``: minimum height of ``ListBox`` dialog is now calculated correctly when there are no items in the list (e.g. when a filter doesn't match anything) -- ``widgets``: if ``autoarrange_subviews`` is set, ``Panel``\s will now automatically lay out widgets vertically according to their current height. This allows you to have widgets dynamically change height or become visible/hidden and you don't have to worry about recalculating frame layouts -- ``widgets``: new class ``ResizingPanel`` (subclass of ``Panel``) automatically recalculates its own frame height based on the size, position, and visibility of its subviews -- ``widgets``: new class ``HotkeyLabel`` (subclass of ``Label``) that displays and reacts to hotkeys -- ``widgets``: new class ``CycleHotkeyLabel`` (subclass of ``Label``) allows users to cycle through a list of options by pressing a hotkey -- ``widgets``: new class ``ToggleHotkeyLabel`` (subclass of ``CycleHotkeyLabel``) toggles between ``On`` and ``Off`` states -- ``widgets``: new class ``WrappedLabel`` (subclass of ``Label``) provides autowrapping of text -- ``widgets``: new class ``TooltipLabel`` (subclass of ``WrappedLabel``) provides tooltip-like behavior - -# 0.47.05-r4 - -## Fixes -- `blueprint`: fixed passing incorrect parameters to `gui/blueprint` when you run ``blueprint gui`` with optional params -- `blueprint`: key sequences for constructed walls and down stairs are now correct -- `tailor`: fixed some inconsistencies (and possible crashes) when parsing certain subcommands, e.g. ``tailor help`` -- `tiletypes-here`, `tiletypes-here-point`: fix crash when running from an unsuspended core context - -## Misc Improvements -- Core: DFHack now prints the name of the init script it is running to the console and stderr -- `automaterial`: ensure construction tiles are laid down in order when using `buildingplan` to plan the constructions -- `blueprint`: all blueprint phases are now written to a single file, using `quickfort` multi-blueprint file syntax. to get the old behavior of each phase in its own file, pass the ``--splitby=phase`` parameter to ``blueprint`` -- `blueprint`: you can now specify the position where the cursor should be when the blueprint is played back with `quickfort` by passing the ``--playback-start`` parameter -- `blueprint`: generated blueprints now have labels so `quickfort` can address them by name -- `blueprint`: all building types are now supported -- `blueprint`: multi-type stockpiles are now supported -- `blueprint`: non-rectangular stockpiles and buildings are now supported -- `blueprint`: blueprints are no longer generated for phases that have nothing to do (unless those phases are explicitly enabled on the commandline or gui) -- `blueprint`: new "track" phase that discovers and records carved tracks -- `blueprint`: new "zone" phase that discovers and records activity zones, including custom configuration for ponds, gathering, and hospitals -- `dig-now`: no longer leaves behind a designated tile when a tile was designated beneath a tile designated for channeling -- `orders`: added ``list`` subcommand to show existing exported orders -- `quickfort`, `dfhack-examples-guide`: Dreamfort blueprint set improvements based on playtesting and feedback. includes updated profession definitions. -- `quickfort-library-guide`: added light aquifer tap and pump stack blueprints (with step-by-step usage guides) to the quickfort blueprint library -- `quickfort`: Dreamfort blueprint set improvements: added iron and flux stock level indicators on the industry level and a prisoner processing quantum stockpile in the surface barracks. also added help text for how to manage sieges and how to manage prisoners after a siege. - -## API -- ``Buildings::findCivzonesAt()``: lookups now complete in constant time instead of linearly scanning through all civzones in the game - -## Lua -- ``argparse.processArgsGetopt()``: you can now have long form parameters that are not an alias for a short form parameter. For example, you can now have a parameter like ``--longparam`` without needing to have an equivalent one-letter ``-l`` param. -- ``dwarfmode.enterSidebarMode()``: ``df.ui_sidebar_mode.DesignateMine`` is now a suported target sidebar mode ## Removed -- `fortplan`: please use `quickfort` instead +- `logcleaner`: Removed (cannot be safely implemented at this time) -# 0.47.05-r3 +# 53.14-r1 -## New Plugins -- `dig-now`: instantly completes dig designations (including smoothing and carving tracks) +## New Tools + +## New Features +- Compatibility with Dwarf Fortress 53.14 ## Fixes -- Core: ``alt`` keydown state is now cleared when DF loses and regains focus, ensuring the ``alt`` modifier state is not stuck on for systems that don't send standard keyup events in response to ``alt-tab`` window manager events -- Lua: ``memscan.field_offset()``: fixed an issue causing `devel/export-dt-ini` to crash sometimes, especially on Windows -- `autofarm`: autofarm will now count plant growths as well as plants toward its thresholds -- `autogems`: no longer assigns gem cutting jobs to workshops with gem cutting prohibited in the workshop profile ## Misc Improvements -- `buildingplan`: now displays which items are attached and which items are still missing for planned buildings -- `orders`: support importing and exporting reaction-specific item conditions, like "lye-containing" for soap production orders -- `orders`: new ``sort`` command. sorts orders according to their repeat frequency. this prevents daily orders from blocking other orders for simlar items from ever getting completed. -- `tiletypes-here`, `tiletypes-here-point`: add ``--cursor`` and ``--quiet`` options to support non-interactive use cases -- `quickfort`: Dreamfort blueprint set improvements: extensive revision based on playtesting and feedback. includes updated ``onMapLoad_dreamfort.init`` settings file, enhanced automation orders, and premade profession definitions. see full changelog at https://github.com/DFHack/dfhack/pull/1921 and https://github.com/DFHack/dfhack/pull/1925 -- `tailor`: allow user to specify which materials to be used, and in what order + +## Documentation ## API -- The ``Items`` module ``moveTo*`` and ``remove`` functions now handle projectiles ## Lua -- new global function: ``safe_pairs(iterable[, iterator_fn])`` will iterate over the ``iterable`` (a table or iterable userdata) with the ``iterator_fn`` (``pairs`` if not otherwise specified) if iteration is possible. If iteration is not possible or would throw an error, for example if ``nil`` is passed as the ``iterable``, the iteration is just silently skipped. -## Documentation -- `quickfort-library-guide`: updated dreamfort documentation and added screenshots -- `dfhack-examples-guide`: documentation for all of `dreamfort`'s supporting files (useful for all forts, not just Dreamfort!) - -# 0.47.05-r2 - -## Fixes -- Fixed an issue where scrollable text in Lua-based screens could prevent other widgets from scrolling -- Fixed an issue preventing some external scripts from creating zones and other abstract buildings (see note about room definitions under "Internals") -- `buildingplan`: fixed an issue where planned constructions designated with DF's sizing keys (``umkh``) would sometimes be larger than requested -- `buildingplan`: fixed an issue preventing other plugins like `automaterial` from planning constructions if the "enable all" buildingplan setting was turned on -- `buildingplan`: made navigation keys work properly in the materials selection screen when alternate keybindings are used -- `command-prompt`: fixed issues where overlays created by running certain commands (e.g. `gui/liquids`, `gui/teleport`) would not update the parent screen correctly -- `dwarfvet`: fixed a crash that could occur with hospitals overlapping with other buildings in certain ways -- `orders`: fixed crash when importing orders with malformed IDs -- ``quickfortress.csv`` blueprint: fixed refuse stockpile config and prevented stockpiles from covering stairways -- `stonesense`: fixed a crash that could occur when ctrl+scrolling or closing the Stonesense window -- `embark-assistant`: fixed faulty early exit in first search attempt when searching for waterfalls - -## Misc Improvements -- Added adjectives to item selection dialogs, used in tools like `gui/create-item` - this makes it possible to differentiate between different types of high/low boots, shields, etc. (some of which are procedurally generated) -- `blueprint`: made ``depth`` and ``name`` parameters optional. ``depth`` now defaults to ``1`` (current level only) and ``name`` defaults to "blueprint" -- `blueprint`: ``depth`` can now be negative, which will result in the blueprints being written from the highest z-level to the lowest. Before, blueprints were always written from the lowest z-level to the highest. -- `blueprint`: added the ``--cursor`` option to set the starting coordinate for the generated blueprints. A game cursor is no longer necessary if this option is used. -- `quickfort`: the Dreamfort blueprint set can now be comfortably built in a 1x1 embark -- `stonesense`: sped up startup time -- `tweak` hide-priority: changed so that priorities stay hidden (or visible) when exiting and re-entering the designations menu -- `embark-assistant`: slightly improved performance of surveying and improved code a little - -## Lua -- new string utility functions: - - ``string:wrap(width)`` wraps a string at space-separated word boundaries - - ``string:trim()`` removes whitespace characters from the beginning and end of the string - - ``string:split(delimiter, plain)`` splits a string with the given delimiter and returns a table of substrings. if ``plain`` is specified and set to ``true``, ``delimiter`` is interpreted as a literal string instead of as a pattern (the default) -- new library: ``argparse`` is a collection of commandline argument processing functions -- ``gui.Painter``: fixed error when calling ``viewport()`` method -- ``gui.dwarfmode``: new function: ``enterSidebarMode(sidebar_mode, max_esc)`` which uses keypresses to get into the specified sidebar mode from whatever the current screen is -- `reveal`: now exposes ``unhideFlood(pos)`` functionality to Lua -- new utility function: ``utils.normalizePath()``: normalizes directory slashes across platoforms to ``/`` and coaleses adjacent directory separators -- ``argparse.processArgsGetopt()`` (previously ``utils.processArgsGetopt()``): - - now returns negative numbers (e.g. ``-10``) in the list of positional parameters instead of treating it as an option string equivalent to ``-1 -0`` - - now properly handles ``--`` like GNU ``getopt`` as a marker to treat all further parameters as non-options - - now detects when required arguments to long-form options are missing -- `xlsxreader`: added Lua class wrappers for the xlsxreader plugin API - -## API -- Added ``dfhack.units.teleport(unit, pos)`` -- Added ``dfhack.maps.getPlantAtTile(x, y, z)`` and ``dfhack.maps.getPlantAtTile(pos)``, and updated ``dfhack.gui.getSelectedPlant()`` to use it +## Removed -## Documentation -- Added more client library implementations to the `remote interface docs ` +# 53.13-r2 -## Internals -- The DFHack test harness is now much easier to use for iterative development. Configuration can now be specified on the commandline, there are more test filter options, and the test harness can now easily rerun tests that have been run before. -- The ``test/main`` command to invoke the test harness has been renamed to just ``test`` -- Unit tests must now match any output expected to be printed via ``dfhack.printerr()`` -- Unit tests now support fortress mode (allowing tests that require a fortress map to be loaded) - note that these tests are skipped by continuous integration for now, pending a suitable test fortress -- Unit tests can now use ``delay_until(predicate_fn, timeout_frames)`` to delay until a condition is met -- Room definitions and extents are now created for abstract buildings so callers don't have to initialize the room structure themselves +## New Tools -# 0.47.05-r1 +## New Features ## Fixes -- `confirm`: stopped exposing alternate names when convicting units -- `prospector`: improved pre embark rough estimates, particularly for small clusters +- ``Gui::makeAnnoucement``, ``Gui::showPopupAnnouncement`, and ``Gui::autoDFAnnouncement`` will no longer attempt to cull the DF announcement vector ## Misc Improvements -- `autohauler`: allowed the ``Alchemist`` labor to be enabled in `manipulator` and other labor screens so it can be used for its intended purpose of flagging that no hauling labors should be assigned to a dwarf. Before, the only way to set the flag was to use an external program like Dwarf Therapist. -- `embark-assistant`: slightly improved performance of surveying -- `quickfort`: Dreamfort blueprint set improvements: `significant `_ refinements across the entire blueprint set. Dreamfort is now much faster, much more efficient, and much easier to use. The `checklist `__ now includes a mini-walkthrough for quick reference. The spreadsheet now also includes `embark profile suggestions `__ -- `quickfort`: added aliases for configuring masterwork and artifact core quality for all stockpile categories that have them; made it possible to take from multiple stockpiles in the ``quantumstop`` alias ## Documentation -- `fortplan`: added deprecation warnings - fortplan has been replaced by `quickfort` -# 0.47.05-beta1 +## API -## Fixes -- `embark-assistant`: fixed bug in soil depth determination for ocean tiles -- `orders`: don't crash when importing orders with malformed JSON +## Lua -# 0.47.04-r5 +## Removed -## Fixes -- `embark-assistant`: fixed order of factors when calculating min temperature -- `embark-assistant`: improved performance of surveying -- `quickfort`: fixed eventual crashes when creating zones -- `quickfort`: fixed library aliases for tallow and iron, copper, and steel weapons -- `seedwatch`: fixed an issue where the plugin would disable itself on map load -- `search`: fixed crash when searching the ``k`` sidebar and navigating to another tile with certain keys, like ``<`` or ``>`` -- `stockflow`: fixed ``j`` character being intercepted when naming stockpiles -- `stockpiles`: no longer outputs hotkey help text beneath `stockflow` hotkey help text +# 53.13-r1 -## Misc Improvements -- Lua label widgets (used in all standard message boxes) are now scrollable with Up/Down/PgUp/PgDn keys -- `autofarm`: now fallows farms if all plants have reached the desired count -- `buildingplan`: added ability to set global settings from the console, e.g. ``buildingplan set boulders false`` -- `buildingplan`: added "enable all" option for buildingplan (so you don't have to enable all building types individually). This setting is not persisted (just like quickfort_mode is not persisted), but it can be set from onMapLoad.init -- `buildingplan`: modified ``Planning Mode`` status in the UI to show whether the plugin is in quickfort mode, "enable all" mode, or whether just the building type is enabled. -- `quickfort`: Dreamfort blueprint set improvements: added a streamlined checklist for all required dreamfort commands and gave names to stockpiles, levers, bridges, and zones -- `quickfort`: added aliases for bronze weapons and armor -- `quickfort`: added alias for tradeable crafts +## New Tools -## Lua -- ``dfhack.run_command()``: changed to interface directly with the console when possible, which allows interactive commands and commands that detect the console encoding to work properly -- ``processArgsGetopt()`` added to utils.lua, providing a callback interface for parameter parsing and getopt-like flexibility for parameter ordering and combination (see docs in ``library/lua/utils.lua`` and ``library/lua/3rdparty/alt_getopt.lua`` for details). +## New Features -## Documentation -- Added documentation for Lua's ``dfhack.run_command()`` and variants - -# 0.47.04-r4 - -## Fixes -- Fixed an issue on some Linux systems where DFHack installed through a package manager would attempt to write files to a non-writable folder (notably when running `exportlegends` or `gui/autogems`) -- `buildingplan`: fixed an issue preventing artifacts from being matched when the maximum item quality is set to ``artifacts`` -- `buildingplan`: stopped erroneously matching items to buildings while the game is paused -- `buildingplan`: fixed a crash when pressing 0 while having a noble room selected -- `dwarfvet`: fixed a crash that could occur when discharging patients -- `dwarfmonitor`: fixed a crash when opening the ``prefs`` screen if units have vague preferences -- `embark-assistant`: fixed an issue causing incursion resource matching (e.g. sand/clay) to skip some tiles if those resources were provided only through incursions -- `embark-assistant`: corrected river size determination by performing it at the MLT level rather than the world tile level -- `search`: fixed an issue where search options might not display if screens were destroyed and recreated programmatically (e.g. with `quickfort`) -- `workflow`: fixed an error when creating constraints on "mill plants" jobs and some other plant-related jobs -- `zone`: fixed an issue causing the ``enumnick`` subcommand to run when attempting to run ``assign``, ``unassign``, or ``slaughter`` - -## Misc Improvements -- `buildingplan`: added support for all buildings, furniture, and constructions (except for instruments) -- `buildingplan`: added support for respecting building job_item filters when matching items, so you can set your own programmatic filters for buildings before submitting them to buildingplan -- `buildingplan`: changed default filter setting for max quality from ``artifact`` to ``masterwork`` -- `buildingplan`: changed min quality adjustment hotkeys from 'qw' to 'QW' to avoid conflict with existing hotkeys for setting roller speed - also changed max quality adjustment hotkeys from 'QW' to 'AS' to make room for the min quality hotkey changes -- `buildingplan`: added a new global settings page accessible via the ``G`` hotkey when on any building build screen; ``Quickfort Mode`` toggle for legacy Python Quickfort has been moved to this page -- `buildingplan`: added new global settings for whether generic building materials should match blocks, boulders, logs, and/or bars - defaults are everything but bars -- `embark-assistant`: split the lair types displayed on the local map into mound, burrow, and lair -- `probe`: added more output for designations and tile occupancy -- `quickfort`: The Dreamfort sample blueprints now have complete walkthroughs for each fort level and importable orders that automate basic fort stock management -- `quickfort`: added more blueprints to the blueprints library: several bedroom layouts, the Saracen Crypts, and the complete fortress example from Python Quickfort: TheQuickFortress +## Fixes + +## Misc Improvements ## Documentation -- `quickfort-alias-guide`: alias syntax and alias standard library documentation for `quickfort` blueprints -- `quickfort-library-guide`: overview of the quickfort blueprint library +- updated documentation for ``autofarm`` for more clarity ## API -- `buildingplan`: added Lua interface API -- ``dfhack.job.isSuitableMaterial()``: added an item type parameter so the ``non_economic`` flag can be properly handled (it was being matched for all item types instead of just boulders) -- ``Buildings::setSize()``: changed to reuse existing extents when possible +- add flexible casting to ``enum_field`` to enable explicit casting to more types +- Handle units without current soul in ``Units::getFocusPenalty`` ## Lua -- ``utils.addressof()``: fixed for raw userdata -# 0.47.04-r3 +## Removed -## New Plugins -- `xlsxreader`: provides an API for Lua scripts to read Excel spreadsheets +# 53.12-r1 + +## New Tools + +## New Features +- Compatibility with Dwarf Fortress 53.12 ## Fixes -- `buildingplan`: fixed handling of buildings that require buckets -- `getplants`: fixed a crash that could occur on some maps -- `search`: fixed an issue causing item counts on the trade screen to display inconsistently when searching -- `stockpiles`: fixed a crash when loading food stockpiles -- `stockpiles`: fixed an error when saving furniture stockpiles +- Stockpile definitions in the default library will be correctly found and used (fixed missing path separator) ## Misc Improvements -- `createitem`: added support for plant growths (fruit, berries, leaves, etc.) -- `createitem`: added an ``inspect`` subcommand to print the item and material tokens of existing items, which can be used to create additional matching items -- `embark-assistant`: added support for searching for taller waterfalls (up to 50 z-levels tall) -- `search`: added support for searching for names containing non-ASCII characters using their ASCII equivalents -- `stocks`: added support for searching for items containing non-ASCII characters using their ASCII equivalents -- `zone`: added an ``enumnick`` subcommand to assign enumerated nicknames (e.g "Hen 1", "Hen 2"...) -- `zone`: added slaughter indication to ``uinfo`` output ## Documentation -- Fixed syntax highlighting of most code blocks to use the appropriate language (or no language) instead of Python ## API -- Added ``DFHack::to_search_normalized()`` (Lua: ``dfhack.toSearchNormalized()``) to convert non-ASCII alphabetic characters to their ASCII equivalents -# 0.47.04-r2 +## Lua + +## Removed + +# 53.11-r3 + +## New Tools -## New Tweaks -- `tweak` do-job-now: adds a job priority toggle to the jobs list -- `tweak` reaction-gloves: adds an option to make reactions produce gloves in sets with correct handedness +## New Features ## Fixes -- Fixed a segfault when attempting to start a headless session with a graphical PRINT_MODE setting -- Fixed an issue with the macOS launcher failing to un-quarantine some files -- Linux: fixed ``dfhack.getDFPath()`` (Lua) and ``Process::getPath()`` (C++) to always return the DF root path, even if the working directory has changed -- `getplants`: fixed issues causing plants to be collected even if they have no growths (or unripe growths) -- `labormanager`: fixed handling of new jobs in 0.47 -- `labormanager`: fixed an issue preventing custom furnaces from being built -- `embark-assistant`: fixed a couple of incursion handling bugs. -- Fixed ``Units::isEggLayer``, ``Units::isGrazer``, ``Units::isMilkable``, ``Units::isTrainableHunting``, ``Units::isTrainableWar``, and ``Units::isTamable`` ignoring the unit's caste -- `RemoteFortressReader`: fixed a couple crashes that could result from decoding invalid enum items (``site_realization_building_type`` and ``improvement_type``) -- `RemoteFortressReader`: fixed an issue that could cause block coordinates to be incorrect -- `rendermax`: fixed a hang that could occur when enabling some renderers, notably on Linux -- `stonesense`: fixed a crash when launching Stonesense -- `stonesense`: fixed some issues that could cause the splash screen to hang +- Core: Windows console will always use UTF-8 regardless of system code page settings +- Steam launcher: Switch to injection strategy, allowing Dwarf Fortress and DFHack to be installed in disparate locations ## Misc Improvements -- Linux/macOS: Added console keybindings for deleting words (Alt+Backspace and Alt+d in most terminals) -- `blueprint`: now writes blueprints to the ``blueprints/`` subfolder instead of the df root folder -- `blueprint`: now automatically creates folder trees when organizing blueprints into subfolders (e.g. ``blueprint 30 30 1 rooms/dining dig`` will create the file ``blueprints/rooms/dining-dig.csv``); previously it would fail if the ``blueprints/rooms/`` directory didn't already exist -- `confirm`: added a confirmation dialog for convicting dwarves of crimes -- `manipulator`: added a new column option to display units' goals +- Make DFHack relocatable so that it doesn't depend on being fully co-installed with Dwarf Fortress -## API -- Added ``Filesystem::mkdir_recursive`` -- Extended ``Filesystem::listdir_recursive`` to optionally make returned filenames relative to the start directory -- ``Units``: added goal-related functions: ``getGoalType()``, ``getGoalName()``, ``isGoalAchieved()`` +## Documentation -## Internals -- Added support for splitting scripts into multiple files in the ``scripts/internal`` folder without polluting the output of `ls` +## API ## Lua -- Added a ``ref_target`` field to primitive field references, corresponding to the ``ref-target`` XML attribute -- Made ``dfhack.units.getRaceNameById()``, ``dfhack.units.getRaceBabyNameById()``, and ``dfhack.units.getRaceChildNameById()`` available to Lua -## Ruby -- Updated ``item_find`` and ``building_find`` to use centralized logic that works on more screens +## Removed + +# 53.11-r2 -## Documentation -- Expanded the installation guide -- Added some new dev-facing pages, including dedicated pages about the remote API, memory research, and documentation -- Made a couple theme adjustments +## New Tools -# 0.47.04-r1 +## New Features ## Fixes -- Fixed translation of certain types of in-game names -- Fixed a crash in ``find()`` for some types when no world is loaded -- `autogems`: fixed an issue with binned gems being ignored in linked stockpiles -- `stocks`: fixed display of book titles -- `tweak` embark-profile-name: fixed handling of the native shift+space key +- `autoclothing`, `autoslab`, `tailor`: orders will no longer be created with a repetition frequency of ``NONE`` ## Misc Improvements -- ``dfhack.init-example``: enabled `autodump` -- `getplants`: added switches for designations for farming seeds and for max number designated per plant -- `manipulator`: added intrigue to displayed skills -- `search`: added support for the fortress mode justice screen +- General: DFHack will unconditionally use UTF-8 for the console on Windows, now that DF forces the process effective system code page to 65001 during startup -## API -- Added ``Items::getBookTitle`` to get titles of books. Catches titles buried in improvements, unlike getDescription. +## Documentation + +## API ## Lua -- ``pairs()`` now returns available class methods for DF types -# 0.47.04-beta1 +## Removed + +# 53.11-r1 + +## New Tools + +## New Features ## Fixes -- Fixed a crash when starting DFHack in headless mode with no terminal +- `sort`: correct misspelling of ``PERSEVERENCE``; fixes "hates combat" filter in squad selection screen ## Misc Improvements -- Added "bit" suffix to downloads (e.g. 64-bit) -- Tests: - - moved from DF folder to hack/scripts folder, and disabled installation by default - - made test runner script more flexible -- `dfhack-run`: added color output support -- `embark-assistant`: - - updated embark aquifer info to show all aquifer kinds present - - added neighbor display, including kobolds (SKULKING) and necro tower count - - updated aquifer search criteria to handle the new variation - - added search criteria for embark initial tree cover - - added search criteria for necro tower count, neighbor civ count, and specific neighbors. Should handle additional entities, but not tested -## Internals -- Improved support for tagged unions, allowing tools to access union fields more safely -- Added separate changelogs in the scripts and df-structures repos -- Moved ``reversing`` scripts to df_misc repo - -# 0.47.03-beta1 - -## New Scripts -- `devel/sc`: checks size of structures -- `devel/visualize-structure`: displays the raw memory of a structure - -## Fixes -- @ `adv-max-skills`: fixed for 0.47 -- `deep-embark`: - - prevented running in non-fortress modes - - ensured that only the newest wagon is deconstructed -- `full-heal`: - - fixed issues with removing corpses - - fixed resurrection for non-historical figures -- @ `modtools/create-unit`: added handling for arena tame setting -- `teleport`: fixed setting new tile occupancy - -## Misc Improvements -- `deep-embark`: - - improved support for using directly from the DFHack console - - added a ``-clear`` option to cancel -- `exportlegends`: - - added identity information - - added creature raw names and flags -- `gui/prerelease-warning`: updated links and information about nightly builds -- `modtools/syndrome-trigger`: enabled simultaneous use of ``-synclass`` and ``-syndrome`` -- `repeat`: added ``-list`` option - -## Structures -- Dropped support for 0.44.12-0.47.02 -- ``abstract_building_type``: added types (and subclasses) new to 0.47 -- ``agreement_details_type``: added enum -- ``agreement_details``: added struct type (and many associated data types) -- ``agreement_party``: added struct type -- ``announcement_type``: added types new to 0.47 -- ``artifact_claim_type``: added enum -- ``artifact_claim``: added struct type -- ``breath_attack_type``: added ``SHARP_ROCK`` -- ``building_offering_placest``: new class -- ``building_type``: added ``OfferingPlace`` -- ``creature_interaction_effect``: added subclasses new to 0.47 -- ``creature_raw_flags``: identified several more items -- ``creature_raw_flags``: renamed many items to match DF names -- ``caste_raw_flags``: renamed many items to match DF names -- ``d_init``: added settings new to 0.47 -- ``entity_name_type``: added ``MERCHANT_COMPANY``, ``CRAFT_GUILD`` -- ``entity_position_responsibility``: added values new to 0.47 -- ``fortress_type``: added enum -- ``general_ref_type``: added ``UNIT_INTERROGATEE`` -- ``ghost_type``: added ``None`` value -- ``goal_type``: added goals types new to 0.47 -- ``histfig_site_link``: added subclasses new to 0.47 -- ``history_event_collection``: added subtypes new to 0.47 -- ``history_event_context``: added lots of new fields -- ``history_event_reason``: added captions for all items -- ``history_event_reason``: added items new to 0.47 -- ``history_event_type``: added types for events new to 0.47, as well as corresponding ``history_event`` subclasses (too many to list here) -- ``honors_type``: added struct type -- ``interaction_effect``: added subtypes new to 0.47 -- ``interaction_source_experimentst``: added class type -- ``interaction_source_usage_hint``: added values new to 0.47 -- ``interface_key``: added items for keys new to 0.47 -- ``job_skill``: added ``INTRIGUE``, ``RIDING`` -- ``lair_type``: added enum -- ``monument_type``: added enum -- ``next_global_id``: added enum -- ``poetic_form_action``: added ``Beseech`` -- ``setup_character_info``: expanded significantly in 0.47 -- ``text_system``: added layout for struct -- ``tile_occupancy``: added ``varied_heavy_aquifer`` -- ``tool_uses``: added items: ``PLACE_OFFERING``, ``DIVINATION``, ``GAMES_OF_CHANCE`` -- ``viewscreen_counterintelligencest``: new class (only layout identified so far) - -# 0.44.12-r3 +## Documentation -## New Plugins -- `autoclothing`: automatically manage clothing work orders -- `autofarm`: replaces the previous Ruby script of the same name, with some fixes -- `map-render`: allows programmatically rendering sections of the map that are off-screen -- `tailor`: automatically manages keeping your dorfs clothed - -## New Scripts -- `assign-attributes`: changes the attributes of a unit -- `assign-beliefs`: changes the beliefs of a unit -- `assign-facets`: changes the facets (traits) of a unit -- `assign-goals`: changes the goals of a unit -- `assign-preferences`: changes the preferences of a unit -- `assign-profile`: sets a dwarf's characteristics according to a predefined profile -- `assign-skills`: changes the skills of a unit -- `combat-harden`: sets a unit's combat-hardened value to a given percent -- `deep-embark`: allows embarking underground -- `devel/find-twbt`: finds a TWBT-related offset needed by the new `map-render` plugin -- `dwarf-op`: optimizes dwarves for fort-mode work; makes managing labors easier -- `forget-dead-body`: removes emotions associated with seeing a dead body -- `gui/create-tree`: creates a tree at the selected tile -- `linger`: takes over your killer in adventure mode -- `modtools/create-tree`: creates a tree -- `modtools/pref-edit`: add, remove, or edit the preferences of a unit -- `modtools/set-belief`: changes the beliefs (values) of units -- `modtools/set-need`: sets and edits unit needs -- `modtools/set-personality`: changes the personality of units -- `modtools/spawn-liquid`: spawns water or lava at the specified coordinates -- `set-orientation`: edits a unit's orientation -- `unretire-anyone`: turns any historical figure into a playable adventurer - -## Fixes -- Fixed a crash in the macOS/Linux console when the prompt was wider than the screen width -- Fixed some cases where Lua filtered lists would not properly intercept keys, potentially triggering other actions on the same screen -- Fixed inconsistent results from ``Units::isGay`` for asexual units -- `autofarm`: - - fixed biome detection to properly determine crop assignments on surface farms - - reimplemented as a C++ plugin to make proper biome detection possible -- `bodyswap`: fixed companion list not being updated often enough -- `cxxrandom`: removed some extraneous debug information -- `digfort`: now accounts for z-level changes when calculating maximum y dimension -- `embark-assistant`: - - fixed bug causing crash on worlds without generated metals (as well as pruning vectors as originally intended). - - fixed bug causing mineral matching to fail to cut off at the magma sea, reporting presence of things that aren't (like DF does currently). - - fixed bug causing half of the river tiles not to be recognized. - - added logic to detect some river tiles DF doesn't generate data for (but are definitely present). -- `eventful`: fixed invalid building ID in some building events -- `exportlegends`: now escapes special characters in names properly -- `getplants`: fixed designation of plants out of season (note that picked plants are still designated incorrectly) -- `gui/autogems`: fixed error when no world is loaded -- `gui/companion-order`: - - fixed error when resetting group leaders - - ``leave`` now properly removes companion links -- `gui/create-item`: fixed module support - can now be used from other scripts -- `gui/stamper`: - - stopped "invert" from resetting the designation type - - switched to using DF's designation keybindings instead of custom bindings - - fixed some typos and text overlapping -- `modtools/create-unit`: - - fixed an error associating historical entities with units - - stopped recalculating health to avoid newly-created citizens triggering a "recover wounded" job - - fixed units created in arena mode having blank names - - fixed units created in arena mode having the wrong race and/or interaction effects applied after creating units manually in-game - - stopped units from spawning with extra items or skills previously selected in the arena - - stopped setting some unneeded flags that could result in glowing creature tiles - - set units created in adventure mode to have no family, instead of being related to the first creature in the world -- `modtools/reaction-product-trigger`: - - fixed an error dealing with reactions in adventure mode - - blocked ``\\BUILDING_ID`` for adventure mode reactions - - fixed ``-clear`` to work without passing other unneeded arguments -- `modtools/reaction-trigger`: - - fixed a bug when determining whether a command was run - - fixed handling of ``-resetPolicy`` -- `mousequery`: fixed calculation of map dimensions, which was sometimes preventing scrolling the map with the mouse when TWBT was enabled -- `RemoteFortressReader`: - - fixed a crash when a unit's path has a length of 0 -- `stonesense`: - - fixed crash due to wagons and other soul-less creatures -- `tame`: now sets the civ ID of tamed animals (fixes compatibility with `autobutcher`) -- `title-folder`: silenced error when ``PRINT_MODE`` is set to ``TEXT`` - -## Misc Improvements -- Added a note to `dfhack-run` when called with no arguments (which is usually unintentional) -- On macOS, the launcher now attempts to un-quarantine the rest of DFHack -- `bodyswap`: added arena mode support -- `createitem`: added a list of valid castes to the "invalid caste" error message, for convenience -- `combine-drinks`: added more default output, similar to `combine-plants` -- `devel/export-dt-ini`: added more size information needed by newer Dwarf Therapist versions -- `dwarfmonitor`: enabled widgets to access other scripts and plugins by switching to the core Lua context -- `embark-assistant`: - - added an in-game option to activate on the embark screen - - changed waterfall detection to look for level drop rather than just presence - - changed matching to take incursions, i.e. parts of other biomes, into consideration when evaluating tiles. This allows for e.g. finding multiple biomes on single tile embarks. - - changed overlay display to show when incursion surveying is incomplete - - changed overlay display to show evil weather - - added optional parameter "fileresult" for crude external harness automated match support - - improved focus movement logic to go to only required world tiles, increasing speed of subsequent searches considerably -- `exportlegends`: added rivers to custom XML export -- `exterminate`: added support for a special ``enemy`` caste -- `gui/gm-unit`: added support for editing: - - added attribute editor - - added orientation editor - - added editor for bodies and body parts - - added color editor - - added belief editor - - added personality editor -- `modtools/create-item`: - - documented already-existing ``-quality`` option -- `modtools/create-unit`: - - added the ability to specify ``\\LOCAL`` for the fort group entity - - now enables the default labours for adult units with CAN_LEARN. - - now sets historical figure orientation. - - improved speed of creating multiple units at once - - made the script usable as a module (from other scripts) -- `modtools/reaction-trigger`: - - added ``-ignoreWorker``: ignores the worker when selecting the targets - - changed the default behavior to skip inactive/dead units; added ``-dontSkipInactive`` to include creatures that are inactive - - added ``-range``: controls how far elligible targets can be from the workshop - - syndromes now are applied before commands are run, not after - - if both a command and a syndrome are given, the command only runs if the syndrome could be applied -- `mousequery`: made it more clear when features are enabled -- `RemoteFortressReader`: - - added a basic framework for controlling and reading the menus in DF (currently only supports the building menu) - - added support for reading item raws - - added a check for whether or not the game is currently saving or loading, for utilities to check if it's safe to read from DF - - added unit facing direction estimate and position within tiles - - added unit age - - added unit wounds - - added tree information - - added check for units' current jobs when calculating the direction they are facing - -## API -- Added ``Maps::GetBiomeType`` and ``Maps::GetBiomeTypeByRef`` to infer biome types properly -- Added ``Units::getPhysicalDescription`` (note that this depends on the ``unit_get_physical_description`` offset, which is not yet available for all DF builds) -- Added new ``plugin_load_data`` and ``plugin_save_data`` events for plugins to load/save persistent data +## API -## Internals -- Added new Persistence module -- Persistent data is now stored in JSON files instead of historical figures - existing data will be migrated when saving -- Cut down on internal DFHack dependencies to improve build times -- Improved concurrency in event and server handlers -- `stonesense`: fixed some OpenGL build issues on Linux - -## Lua -- Exposed ``gui.dwarfmode.get_movement_delta`` and ``gui.dwarfmode.get_hotkey_target`` -- ``dfhack.run_command`` now returns the command's return code - -## Ruby -- Made ``unit_ishostile`` consistently return a boolean - -## Structures -- Added ``unit_get_physical_description`` function offset on some platforms -- Added/identified types: - - ``assume_identity_mode`` - - ``musical_form_purpose`` - - ``musical_form_style`` - - ``musical_form_pitch_style`` - - ``musical_form_feature`` - - ``musical_form_vocals`` - - ``musical_form_melodies`` - - ``musical_form_interval`` - - ``unit_emotion_memory`` -- ``twbt_render_map``: added for 64-bit 0.44.12 (for `map-render`) -- ``personality_facet_type``, ``value_type``: added ``NONE`` values -- ``need_type``: fixed ``PrayOrMeditate`` typo - -# 0.44.12-r2 +## Lua -## New Plugins -- `debug`: manages runtime debug print category filtering -- `nestboxes`: automatically scan for and forbid fertile eggs incubating in a nestbox - -## New Scripts -- `devel/query`: searches for field names in DF objects -- `extinguish`: puts out fires -- `tame`: sets tamed/trained status of animals - -## Fixes -- `building-hacks`: fixed error when dealing with custom animation tables -- `devel/test-perlin`: fixed Lua error (``math.pow()``) -- `embark-assistant`: fixed crash when entering finder with a 16x16 embark selected, and added 16 to dimension choices -- `embark-skills`: fixed missing ``skill_points_remaining`` field -- `full-heal`: - - stopped wagon resurrection - - fixed a minor issue with post-resurrection hostility -- `gui/companion-order`: - - fixed issues with printing coordinates - - fixed issues with move command - - fixed cheat commands (and removed "Power up", which was broken) -- `gui/gm-editor`: fixed reinterpret cast (``r``) -- `gui/pathable`: fixed error when sidebar is hidden with ``Tab`` -- `labormanager`: - - stopped assigning labors to ineligible dwarves, pets, etc. - - stopped assigning invalid labors - - added support for crafting jobs that use pearl - - fixed issues causing cleaning jobs to not be assigned - - added support for disabling management of specific labors -- `prospector`: (also affected `embark-tools`) - fixed a crash when prospecting an unusable site (ocean, mountains, etc.) with a large default embark size in d_init.txt (e.g. 16x16) -- `siege-engine`: fixed a few Lua errors (``math.pow()``, ``unit.relationship_ids``) -- `tweak`: fixed ``hotkey-clear`` - -## Misc Improvements -- `armoks-blessing`: improved documentation to list all available arguments -- `devel/export-dt-ini`: - - added viewscreen offsets for DT 40.1.2 - - added item base flags offset - - added needs offsets -- `embark-assistant`: - - added match indicator display on the right ("World") map - - changed 'c'ancel to abort find if it's under way and clear results if not, allowing use of partial surveys. - - added Coal as a search criterion, as well as a coal indication as current embark selection info. -- `full-heal`: - - added ``-all``, ``-all_civ`` and ``-all_citizens`` arguments - - added module support - - now removes historical figure death dates and ghost data -- `growcrops`: added ``all`` argument to grow all crops -- `gui/load-screen`: improved documentation -- `labormanager`: now takes nature value into account when assigning jobs -- `open-legends`: added warning about risk of save corruption and improved related documentation -- `points`: added support when in ``viewscreen_setupdwarfgamest`` and improved error messages -- `siren`: removed break handling (relevant ``misc_trait_type`` was no longer used - see "Structures" section) +## Removed -## Internals -- Linux/macOS: changed recommended build backend from Make to Ninja (Make builds will be significantly slower now) -- Added a usable unit test framework for basic tests, and a few basic tests -- Core: various thread safety and memory management improvements -- Fixed CMake build dependencies for generated header files -- Fixed custom ``CMAKE_CXX_FLAGS`` not being passed to plugins -- Changed ``plugins/CMakeLists.custom.txt`` to be ignored by git and created (if needed) at build time instead -- Added ``CMakeSettings.json`` with intellisense support - -## Lua -- ``utils``: new ``OrderedTable`` class - -## Structures -- Win32: added missing vtables for ``viewscreen_storesst`` and ``squad_order_rescue_hfst`` -- ``activity_event_performancest``: renamed poem as written_content_id -- ``dance_form``: named musical_form_id and musical_written_content_id -- ``incident_sub6_performance.participants``: named performance_event and role_index -- ``incident_sub6_performance``: made performance_event an enum -- ``incident_sub6_performance``: named poetic_form_id, musical_form_id, and dance_form_id -- ``musical_form_instruments``: named minimum_required and maximum_permitted -- ``musical_form``: named voices field -- ``poetic_form``: identified many fields and related enum/bitfield types -- ``setup_character_info``: identified ``skill_points_remaining`` (for `embark-skills`) -- ``unit_thought_type``: added new expulsion thoughts from 0.44.12 -- ``viewscreen_layer_militaryst``: identified ``equip.assigned.assigned_items`` -- ``world_data``: added ``mountain_peak_flags`` type, including ``is_volcano`` -- ``written_content``: named poetic_form -- ``unit_action.attack``: identified ``attack_skill`` -- ``unit_action.attack``: added ``lightly_tap`` and ``spar_report`` flags -- ``misc_trait_type``: removed ``LikesOutdoors``, ``Hardened``, ``TimeSinceBreak``, ``OnBreak`` (all unused by DF) -- ``unit_personality``: identified ``stress_drain``, ``stress_boost``, ``likes_outdoors``, ``combat_hardened`` -- ``plant_tree_tile``: gave connection bits more meaningful names (e.g. ``connection_east`` instead of ``thick_branches_1``) -- ``plant_tree_info``: identified ``extent_east``, etc. -- ``ui``: fixed alignment of ``main`` and ``squads`` (fixes `tweak` hotkey-clear and DF-AI) -- ``ui.main``: identified ``fortress_site`` -- ``ui.squads``: identified ``kill_rect_targets_scroll`` -- ``world_site``: identified names and/or types of some fields -- ``world_history``: identified names and/or types of some fields -- ``viewscreen_setupadventurest``: identified some nemesis and personality fields, and ``page.ChooseHistfig`` -- ``unit_storage_status``: newly identified type, stores noble holdings information (used in ``viewscreen_layer_noblelistst``) -- ``viewscreen_layer_noblelistst``: identified ``storage_status`` (see ``unit_storage_status`` type) -- ``viewscreen_layer_arena_creaturest``: identified item- and name-related fields -- ``viewscreen_new_regionst``: identified ``rejection_msg``, ``raw_folder``, ``load_world_params`` -- ``viewscreen_new_regionst``: changed many ``int8_t`` fields to ``bool`` -- ``unit_flags3``: identified ``marked_for_gelding`` -- ``body_part_status``: identified ``gelded`` - -## API -- New debug features related to `debug` plugin: - - Classes (C++ only): ``Signal``, ``DebugCategory``, ``DebugManager`` - - Macros: ``TRACE``, ``DEBUG``, ``INFO``, ``WARN``, ``ERR``, ``DBG_DECLARE``, ``DBG_EXTERN`` +# 53.10-r2 -================================================================================ -# 0.44.12-r1 +## New Tools +- ``logcleaner``: New plugin for time-triggered clearing of combat, sparring, and hunting reports with configurable filtering and overlay UI. + +## New Features +- `orders`: added search overlay to find and navigate to matching manager orders with arrow indicators +- `sort`: added ``Uniformed`` filter to squad assignment screen to filter dwarves with mining, woodcutting, or hunting labors +- `sort`: Add death cause button to dead/missing tab in the creatures screen ## Fixes --@ Console: fixed crash when entering long commands on Linux/macOS --@ Removed jsoncpp's ``include`` and ``lib`` folders from DFHack builds/packages -- Fixed special characters in `command-prompt` and other non-console in-game outputs on Linux/macOS (in tools using ``df2console``) -- `die`: fixed Windows crash in exit handling -- `dwarfmonitor`, `manipulator`: fixed stress cutoffs -- `modtools/force`: fixed a bug where the help text would always be displayed and nothing useful would happen -- `ruby`: fixed calling conventions for vmethods that return strings (currently ``enabler.GetKeyDisplay()``) -- `startdwarf`: fixed on 64-bit Linux ## Misc Improvements -- Reduced time for designation jobs from tools like `digv` to be assigned workers -- `embark-assistant`: - - Switched to standard scrolling keys, improved spacing slightly - - Introduced scrolling of Finder search criteria, removing requirement for 46 lines to work properly (Help/Info still formatted for 46 lines). - - Added Freezing search criterion, allowing searches for NA/Frozen/At_Least_Partial/Partial/At_Most_Partial/Never Freezing embarks. -- `rejuvenate`: - - Added ``-all`` argument to apply to all citizens - - Added ``-force`` to include units under 20 years old - - Clarified documentation +- Core: DFHack now validates vtable pointers in objects read from memory and will throw an exception instead of crashing when an invalid vtable pointer is encountered. This makes it easier to identify which DF data structure contains corrupted data when this manifests in the form of a bad vtable pointer, and shifts blame for such crashes from DFHack to DF. + +## Documentation ## API -- Added to ``Units`` module: - - ``getStressCategory(unit)`` - - ``getStressCategoryRaw(level)`` - - ``stress_cutoffs`` (Lua: ``getStressCutoffs()``) +- Added ``Items::pickGrowthPrint``: given a plant material and a growth index, returns the print variant corresponding to the current in-game time. +- Added ``Items::useStandardMaterial``: given an item type, returns true if the item is made of a specific material and false if it has a race and caste instead. +- Added ``Maps::addItemSpatter``: add a spatter of the specified item + material + growth print to the indicated tile, returning whatever amount wouldn't fit in the tile. +- Added ``Maps::addMaterialSpatter``: add a spatter of the specified material + state to the indicated tile, returning whatever amount wouldn't fit in the tile. -## Internals -- Changed default build architecture to 64-bit -- Added documentation for all RPC functions and a build-time check -- Added support for build IDs to development builds -- Use ``dlsym(3)`` to find vtables from libgraphics.so - -## Structures -- Added ``start_dwarf_count`` on 64-bit Linux again and fixed scanning script -- ``army_controller``: added new vector from 0.44.11 --@ ``viewscreen_civlistst``: split ``unk_20`` into 3 pointers -- ``belief_system``: new type, few fields identified -- ``mental_picture``: new type, some fields identified -- ``mission``: new type (used in ``viewscreen_civlistst``) -- ``mission_report``: - - new type (renamed, was ``mission`` before) - - identified some fields -- ``spoils_report``: new type, most fields identified -- ``viewscreen_civlistst``: - - identified new pages - - identified new messenger-related fields -- ``viewscreen_image_creatorst``: - - fixed layout - - identified many fields -- ``viewscreen_reportlistst``: - - added new mission and spoils report-related fields (fixed layout) -- ``world``: - - ``belief_systems``: identified -- ``world.languages``: identified (minimal information; whole languages stored elsewhere) -- ``world.status``: - - ``mission_reports``: renamed, was ``missions`` - - ``spoils_reports``: identified -- ``world.unk_131ec0``, ``world.unk_131ef0``: researched layout -- ``world.worldgen_status``: identified many fields +## Lua +- Added ``Maps::addItemSpatter`` as ``dfhack.maps.addItemSpatter``. +- Added ``Maps::addMaterialSpatter`` as ``dfhack.maps.addMaterialSpatter``. -================================================================================ -# 0.44.12-alpha1 +## Removed + +# 53.10-r1 + +## New Tools + +## New Features ## Fixes --@ macOS: fixed ``renderer`` vtable address on x64 (fixes `rendermax`) -- `stonesense`: fixed ``PLANT:DESERT_LIME:LEAF`` typo +- `autochop`: the report will no longer throw a C++ exception when burrows are defined. +- `suspendmanager`: Fix the overlay appearing where it should not when following a unit + +## Misc Improvements + +## Documentation ## API -- Added C++-style linked list interface for DF linked lists +- Added ``Burrows::getName``: obtains the name of a burrow, or the same placeholder name that DF would show if the burrow is unnamed. -## Structures -- Dropped 0.44.11 support -- ``ui.squads``: Added fields new in 0.44.12 +## Lua +- Added ``Burrows::getName`` as ``dfhack.burrows.getName``. -================================================================================ -# 0.44.11-beta2.1 +## Removed -## Internals --@ `stonesense`: fixed build +# 53.09-r1 -================================================================================ -# 0.44.11-beta2 +## New Tools + +## New Features +- `tweak`: ``drawbridge-tiles``: Make it so raised bridges render with different tiles in ASCII mode to make it more obvious that they ARE raised (and to indicate their direction) ## Fixes --@ Windows: Fixed console failing to initialize -- `command-prompt`: added support for commands that require a specific screen to be visible, e.g. `spotclean` -- `gui/workflow`: fixed advanced constraint menu for crafts +- ``Filesystem::as_string`` now always uses UTF-8 encoding rather than using the system locale encoding + +## Misc Improvements + +## Documentation ## API -- Added ``Screen::Hide`` to temporarily hide screens, like `command-prompt` +- ``dfhack.job.getManagerOrderName``: New function to get the display name of a manager order -================================================================================ -# 0.44.11-beta1 +## Lua + +## Removed + +# 53.08-r1 + +## New Tools + +## New Features +- compatibility with DF 53.08 ## Fixes -- Fixed displayed names (from ``Units::getVisibleName``) for units with identities -- Fixed potential memory leak in ``Screen::show()`` -- `fix/dead-units`: fixed script trying to use missing isDiplomat function ## Misc Improvements -- Console: - - added support for multibyte characters on Linux/macOS - - made the console exit properly when an interactive command is active (`liquids`, `mode`, `tiletypes`) -- Made the ``DFHACK_PORT`` environment variable take priority over ``remote-server.json`` -- Linux: added automatic support for GCC sanitizers in ``dfhack`` script -- `digfort`: added better map bounds checking -- `dfhack-run`: added support for port specified in ``remote-server.json``, to match DFHack's behavior -- `remove-stress`: - - added support for ``-all`` as an alternative to the existing ``all`` argument for consistency - - sped up significantly - - improved output/error messages - - now removes tantrums, depression, and obliviousness -- `ruby`: sped up handling of onupdate events + +## Documentation ## API -- New functions: - - ``Units::isDiplomat(unit)`` -- Exposed ``Screen::zoom()`` to C++ (was Lua-only) ## Lua -- Added ``printall_recurse`` to print tables and DF references recursively. It can be also used with ``^`` from the `lua` interpreter. -- ``gui.widgets``: ``List:setChoices`` clones ``choices`` for internal table changes -## Internals -- jsoncpp: updated to version 1.8.4 and switched to using a git submodule +## Removed -## Structures -- ``history_event_entity_expels_hfst``: added (new in 0.44.11) -- ``history_event_site_surrenderedst``: added (new in 0.44.11) -- ``history_event_type``: added ``SITE_SURRENDERED``, ``ENTITY_EXPELS_HF`` (new in 0.44.11) -- ``syndrome``: identified a few fields -- ``viewscreen_civlistst``: fixed layout and identified many fields +# 53.07-r1 -================================================================================ -# 0.44.11-alpha1 - -## Structures -- Dropped 0.44.10 support -- Added support for automatically sizing arrays indexed with an enum -- Removed stale generated CSV files and DT layouts from pre-0.43.05 -- ``announcement_type``: new in 0.44.11: ``NEW_HOLDING``, ``NEW_MARKET_LINK`` -- ``breath_attack_type``: added ``OTHER`` -- ``historical_figure_info.relationships.list``: added ``unk_3a``-``unk_3c`` fields at end -- ``interface_key``: added bindings new in 0.44.11 -- ``occupation_type``: new in 0.44.11: ``MESSENGER`` -- ``profession``: new in 0.44.11: ``MESSENGER`` -- ``ui_sidebar_menus``: - - ``unit.in_squad``: renamed to ``unit.squad_list_opened``, fixed location - - ``unit``: added ``expel_error`` and other unknown fields new in 0.44.11 - - ``hospital``: added, new in 0.44.11 - - ``num_speech_tokens``, ``unk_17d8``: moved out of ``command_line`` to fix layout on x64 --@ ``viewscreen_civlistst``: added a few new fields (incomplete) -- ``viewscreen_locationsst``: identified ``edit_input`` +## New Tools +- ``edgescroll``: Introduced plugin to pan the view automatically when the mouse reaches the screen border. +- `infinite-sky`: Re-enabled with compatibility with new siege map data. -================================================================================ -# 0.44.10-r2 +## New Features +- `sort`: Places search widget can search "Siege engines" subtab by name, loaded status, and operator status -## New Plugins -- `cxxrandom`: exposes some features of the C++11 random number library to Lua - -## New Scripts -- `gui/stamper`: allows manipulation of designations by transforms such as translations, reflections, rotations, and inversion -- `add-recipe`: adds unknown crafting recipes to the player's civ - -## Fixes -- Fixed many tools incorrectly using the ``dead`` unit flag (they should generally check ``flags2.killed`` instead) -- Fixed many tools passing incorrect arguments to printf-style functions, including a few possible crashes (`changelayer`, `follow`, `forceequip`, `generated-creature-renamer`) -- Fixed ``-g`` flag (GDB) in Linux ``dfhack`` script (particularly on x64) -- Fixed several bugs in Lua scripts found by static analysis (df-luacheck) -- `autochop`, `autodump`, `autogems`, `automelt`, `autotrade`, `buildingplan`, `dwarfmonitor`, `fix-unit-occupancy`, `fortplan`, `stockflow`: fix issues with periodic tasks not working for some time after save/load cycles -- `autogems`, `fix-unit-occupancy`: stopped running when a fort isn't loaded (e.g. while embarking) -- `buildingplan`, `fortplan`: stopped running before a world has fully loaded -- `autogems`: - - stop running repeatedly when paused - - fixed crash when furnaces are linked to same stockpiles as jeweler's workshops -- `ban-cooking`: fixed errors introduced by kitchen structure changes in 0.44.10-r1 -- `remove-stress`: fixed an error when running on soul-less units (e.g. with ``-all``) -- `revflood`: stopped revealing tiles adjacent to tiles above open space inappropriately -- `dig`: fixed "Inappropriate dig square" announcements if digging job has been posted -- `stockpiles`: ``loadstock`` now sets usable and unusable weapon and armor settings -- `stocks`: stopped listing carried items under stockpiles where they were picked up from -- `deramp`: fixed deramp to find designations that already have jobs posted -- `fixnaked`: fixed errors due to emotion changes in 0.44 -- `autounsuspend`: now skips planned buildings - -## Misc Improvements -- Added script name to messages produced by ``qerror()`` in Lua scripts -- Fixed an issue in around 30 scripts that could prevent edits to the files (adding valid arguments) from taking effect -- Linux: Added several new options to ``dfhack`` script: ``--remotegdb``, ``--gdbserver``, ``--strace`` -- `bodyswap`: improved error handling -- `buildingplan`: added max quality setting -- `caravan`: documented (new in 0.44.10-alpha1) -- `deathcause`: added "slaughtered" to descriptions -- `fix/retrieve-units`: now re-adds units to active list to counteract `fix/dead-units` -- ``item-descriptions``: fixed several grammatical errors -- `modtools/create-unit`: - - added quantity argument - - now selects a caste at random if none is specified -- `mousequery`: - - migrated several features from TWBT's fork - - added ability to drag with left/right buttons - - added depth display for TWBT (when multilevel is enabled) - - made shift+click jump to lower levels visible with TWBT -- `title-version`: added version to options screen too -- `embark-assistant`: - - changed region interaction matching to search for evil rain, syndrome rain, and reanimation rather than interaction presence (misleadingly called evil weather), reanimation, and thralling - - gave syndrome rain and reanimation wider ranges of criterion values -- `fix/dead-units`: added a delay of around 1 month before removing units - -## API -- New functions (also exposed to Lua): - - ``Units::isKilled()`` - - ``Units::isActive()`` - - ``Units::isGhost()`` -- Removed Vermin module (unused and obsolete) - -## Lua -- Added ``profiler`` module to measure lua performance -- Enabled shift+cursor movement in WorkshopOverlay-derived screens - -## Structures -- ``unit_flags1``: renamed ``dead`` to ``inactive`` to better reflect its use -- ``item_body_component``: fixed location of ``corpse_flags`` -- ``job_type``: added ``is_designation`` attribute -- ``unit_thought_type``: added ``SawDeadBody`` (new in 0.44.10) -- ``unit_personality``: fixed location of ``current_focus`` and ``undistracted_focus`` -- ``incident_sub6_performance``: identified some fields -- ``job_handler``: fixed static array layout +## Fixes +- `sort`: Using the squad unit selector will no longer cause Dwarf Fortress to crash on exit +- `sort`: Places search widget moved to account for DF's new "Siege engines" subtab -## Internals -- Added fallback for YouCompleteMe database lookup failures (e.g. for newly-created files) -- jsoncpp: fixed constructor with ``long`` on Linux -- Improved efficiency and error handling in ``stl_vsprintf`` and related functions -- Added build option to generate symbols for large generated files containing df-structures metadata +## Misc Improvements +- `createitem`: created items can now be placed onto/into tables, nests, bookcases, display cases, and altars +- The ``fpause`` console command can now be used to force world generation to pause (as it did prior to version 50). +- `keybinding`: keybinds may now include the super key, and are no longer limited to particular keys ranges of keys, allowing any recognized by SDL. -================================================================================ -# 0.44.10-r1 +## Documentation + +## API +- ``Hotkey``: New module for hotkey functionality + +## Lua +- The ``Lua interactive interpreter`` banner now documents keywords such as ``unit`` and ``item`` which reference the currently-selected object in the DF UI. +- ``dfhack.hotkey.addKeybind``: Creates new keybindings +- ``dfhack.hotkey.removeKeybind``: Removes existing keybindings +- ``dfhack.hotkey.listActiveKeybinds``: Lists all keybinds for the current context +- ``dfhack.hotkey.listAllKeybinds``: Lists all keybinds for all contexts +- ``dfhack.hotkey.requestKeybindingInput``: Requests the next keybind-compatible input is saved +- ``dfhack.hotkey.getKeybindingInput``: Reads the input saved in response to a request. + +## Removed -## New Scripts -- `bodyswap`: shifts player control over to another unit in adventure mode +# 53.06-r1 -## New Tweaks -- `tweak` stone-status-all: adds an option to toggle the economic status of all stones -- `tweak` kitchen-prefs-all: adds an option to toggle cook/brew for all visible items in kitchen preferences +## New Tools + +## New Features ## Fixes -- Lua: registered ``dfhack.constructions.designateRemove()`` correctly -- `prospector`: fixed crash due to invalid vein materials -- `tweak` max-wheelbarrow: fixed conflict with building renaming -- `view-item-info`: stopped appending extra newlines permanently to descriptions ## Misc Improvements -- Added logo to documentation -- Documented several missing ``dfhack.gui`` Lua functions -- `adv-rumors`: bound to Ctrl-A -- `command-prompt`: added support for ``Gui::getSelectedPlant()`` -- `gui/advfort`: bound to Ctrl-T -- `gui/room-list`: added support for ``Gui::getSelectedBuilding()`` -- `gui/unit-info-viewer`: bound to Alt-I -- `modtools/create-unit`: made functions available to other scripts -- `search`: - - added support for stone restrictions screen (under ``z``: Status) - - added support for kitchen preferences (also under ``z``) -## Internals -- Fixed compiler warnings on all supported build configurations -- Windows build scripts now work with non-C system drives - -## API -- New functions (all available to Lua as well): - - ``Buildings::getRoomDescription()`` - - ``Items::checkMandates()`` - - ``Items::canTrade()`` - - ``Items::canTradeWithContents()`` - - ``Items::isRouteVehicle()`` - - ``Items::isSquadEquipment()`` - - ``Kitchen::addExclusion()`` - - ``Kitchen::findExclusion()`` - - ``Kitchen::removeExclusion()`` -- syndrome-util: added ``eraseSyndromeData()`` - -## Structures -- ``dfhack_room_quality_level``: new enum -- ``glowing_barrier``: identified ``triggered``, added comments -- ``item_flags2``: renamed ``has_written_content`` to ``unk_book`` -- ``kitchen_exc_type``: new enum (for ``ui.kitchen``) -- ``mandate.mode``: now an enum -- ``unit_personality.emotions.flags.memory``: identified -- ``viewscreen_kitchenprefst.forbidden``, ``possible``: now a bitfield, ``kitchen_pref_flag`` -- ``world_data.feature_map``: added extensive documentation (in XML) +## Documentation -================================================================================ -# 0.44.10-beta1 - -## New Scripts -- `devel/find-primitive`: finds a primitive variable in memory - -## Fixes -- Units::getAnyUnit(): fixed a couple problematic conditions and potential segfaults if global addresses are missing -- `stockpiles`: stopped sidebar option from overlapping with `autodump` --@ `autodump`, `automelt`, `autotrade`, `stocks`, `stockpiles`: fixed conflict with building renaming -- `tweak` block-labors: fixed two causes of crashes related in the v-p-l menu -- `full-heal`: - - units no longer have a tendency to melt after being healed - - healed units are no longer treated as patients by hospital staff - - healed units no longer attempt to clean themselves unsuccessfully - - wounded fliers now regain the ability to fly upon being healing - - now heals suffocation, numbness, infection, spilled guts and gelding -- `modtools/create-unit`: - - creatures of the appropriate age are now spawned as babies or children where applicable - - fix: civ_id is now properly assigned to historical_figure, resolving several hostility issues (spawned pets are no longer attacked by fortress military!) - - fix: unnamed creatures are no longer spawned with a string of numbers as a first name -- `exterminate`: fixed documentation of ``this`` option - -## Misc Improvements -- `blueprint`: added a basic Lua API -- `devel/export-dt-ini`: added tool offsets for DT 40 -- `devel/save-version`: added current DF version to output -- `install-info`: added information on tweaks +## API -## Internals -- Added ``Gui::inRenameBuilding()`` -- Added function names to DFHack's NullPointer and InvalidArgument exceptions -- Linux: required plugins to have symbols resolved at link time, for consistency with other platforms +## Lua -================================================================================ -# 0.44.10-alpha1 +## Removed +- `infiniteSky`: Temporarily disabled due to incompatibility with changes made as part of DF's siege update + +# 53.05-r1 + +## New Tools -## New Scripts -- `caravan`: adjusts properties of caravans -- `gui/autogems`: a configuration UI for the `autogems` plugin +## New Features +- compatibility with 53.05 ## Fixes -- Fixed uninitialized pointer being returned from ``Gui::getAnyUnit()`` in rare cases -- `autohauler`, `autolabor`, `labormanager`: fixed fencepost error and potential crash -- `dwarfvet`: fixed infinite loop if an animal is not accepted at a hospital -- `liquids`: fixed "range" command to default to 1 for dimensions consistently -- `search`: fixed 4/6 keys in unit screen search -- `view-item-info`: fixed an error with some armor +- `sort`: Using the squad unit selector will no longer cause Dwarf Fortress to crash on exit ## Misc Improvements -- `autogems`: can now blacklist arbitrary gem types (see `gui/autogems`) -- `exterminate`: added more words for current unit, removed warning -- `fpause`: now pauses worldgen as well -## Internals -- Added some build scripts for Sublime Text -- Changed submodule URLs to relative URLs so that they can be cloned consistently over different protocols (e.g. SSH) +## Documentation -================================================================================ -# 0.44.09-r1 +## API -## Internals -- OS X: Can now build with GCC 7 (or older) +## Lua + +## Removed + +# 53.04-r1.1 + +## New Tools + +## New Features ## Fixes -- `modtools/item-trigger`: fixed token format in help text +- fixed misalignment in ``widgets::unit_list`` ## Misc Improvements -- Reorganized changelogs and improved changelog editing process -- `modtools/item-trigger`: added support for multiple type/material/contaminant conditions -## Structures --@ ``renderer``: fixed vtable addresses on 64-bit OS X -- ``building_type``: added human-readable ``name`` attribute -- ``furnace_type``: added human-readable ``name`` attribute -- ``workshop_type``: added human-readable ``name`` attribute -- ``army``: added vector new in 0.44.07 -- ``site_reputation_report``: named ``reports`` vector +## Documentation -================================================================================ -# 0.44.09-alpha1 +## API + +## Lua + +## Removed + +# 53.04-r1 + +## New Tools + +## New Features ## Fixes -- `digtype`: stopped designating non-vein tiles (open space, trees, etc.) -- `labormanager`: fixed crash due to dig jobs targeting some unrevealed map blocks +- `buildingplan`: Bolt throwers will no longer be constructed using populated bins. +- `RemoteFortressReader`: updated siege engine facing enums for new diagonal directions +- `suspendmanager`: treat reinforced walls as a blocking construction and buildable platform +## Misc Improvements +- `autolabor`: support for new dying and siege-related labors +- `blueprint`: support for reinforced walls and bolt throwers -================================================================================ -# 0.44.08-alpha1 +## Documentation + +## API + +## Lua + +## Removed + +# 53.03-r1 + +## New Tools + +## New Features ## Fixes -- `fix/dead-units`: fixed a bug that could remove some arriving (not dead) units +## Misc Improvements +- Release builds for Linux are now compiled with gcc 11 -================================================================================ -# 0.44.07-beta1 +## Documentation -## Structures --@ Added symbols for Toady's `0.44.07 Linux test build `_ to fix :bug:`10615` --@ ``world_site``: fixed alignment +## API -## Misc improvements -- `modtools/item-trigger`: added the ability to specify inventory mode(s) to trigger on +## Lua +## Removed -================================================================================ -# 0.44.07-alpha1 +# 53.02-r2 + +## New Tools + +## New Features ## Fixes -- Support for building on Ubuntu 18.04 -- Fixed some CMake warnings (CMP0022) -- `embark-assistant`: fixed detection of reanimating biomes +- `buildingplan`: Building costs for reinforced walls are now correct. +- `cleanconst`: do not attempt to clean Reinforced constructions ## Misc Improvements -- `embark-assistant`: +- `buildingplan`: Added support for bolt throwers and siege engine rotation. - - Added search for adamantine - - Now supports saving/loading profiles +## Documentation -- `fillneeds`: added ``-all`` option to apply to all units -- `remotefortressreader`: added flows, instruments, tool names, campfires, ocean waves, spiderwebs +## API -## Structures -- Several new names in instrument raw structures -- ``identity``: identified ``profession``, ``civ`` -- ``manager_order_template``: fixed last field type -- ``viewscreen_createquotast``: fixed layout -- ``world.language``: moved ``colors``, ``shapes``, ``patterns`` to ``world.descriptors`` -- ``world.reactions``, ``world.reaction_categories``:\ moved to new compound, ``world.reactions``. Requires renaming: +## Lua - - ``world.reactions`` to ``world.reactions.reactions`` - - ``world.reaction_categories`` to ``world.reactions.reaction_categories`` +## Removed +# 53.02-r1 -================================================================================ -# 0.44.05-r2 +## New Tools + +## New Features ## Fixes -- `devel/export-dt-ini`: fix language_name offsets for DT 39.2+ -- `devel/inject-raws`: fixed gloves and shoes (old typo causing errors) -- `remotefortressreader`: fixed an issue with not all engravings being included -- `view-item-info`: fixed an error with some shields ## Misc Improvements -- `adv-rumors`: added more keywords, including names -- `autochop`: can now exclude trees that produce fruit, food, or cookable items -- `remotefortressreader`: added plant type support +- Core: added ``gps`` (``graphicst``) to the set of globals whose sizes must agree for DFHack to pass initialization checks -## New Plugins -- `embark-assistant`: adds more information and features to embark screen +## Documentation + +## API + +## Lua -## New Scripts -- `adv-fix-sleepers`: fixes units in adventure mode who refuse to wake up (:bug:`6798`) -- `hermit`: blocks caravans, migrants, diplomats (for hermit challenge) +## Removed + +# 53.01-r1 + +## New Tools ## New Features -- With ``PRINT_MODE:TEXT``, setting the ``DFHACK_HEADLESS`` environment variable will hide DF's display and allow the console to be used normally. (Note that this is intended for testing and is not very useful for actual gameplay.) +## Fixes + +## Misc Improvements +- `stockpiles`: add support for managing the dyed, undyed, and color filter settings. -================================================================================ -# 0.44.05-r1 - -## New Scripts -- `break-dance`: Breaks up a stuck dance activity -- `fillneeds`: Use with a unit selected to make them focused and unstressed -- `firestarter`: Lights things on fire: items, locations, entire inventories even! -- `flashstep`: Teleports adventurer to cursor -- `ghostly`: Turns an adventurer into a ghost or back -- `questport`: Sends your adventurer to the location of your quest log cursor -- `view-unit-reports`: opens the reports screen with combat reports for the selected unit - -## Fixes -- `devel/inject-raws`: now recognizes spaces in reaction names -- `dig`: added support for designation priorities - fixes issues with designations from ``digv`` and related commands having extremely high priority -- `dwarfmonitor`: - - fixed display of creatures and poetic/music/dance forms on ``prefs`` screen - - added "view unit" option - - now exposes the selected unit to other tools - -- `names`: fixed many errors -- `quicksave`: fixed an issue where the "Saving..." indicator often wouldn't appear - -## Misc Improvements -- `gui/gm-unit`: - - added a profession editor - - misc. layout improvements -- `remotefortressreader`: - - support for moving adventurers - - support for vehicles, gem shapes, item volume, art images, item improvements -- `binpatch`: now reports errors for empty patch files -- `force`: now provides useful help -- `full-heal`: - - can now select corpses to resurrect - - now resets body part temperatures upon resurrection to prevent creatures from freezing/melting again - - now resets units' vanish countdown to reverse effects of `exterminate` -- `launch`: can now ride creatures -- `names`: can now edit names of units +## Documentation + +## API + +## Lua ## Removed -- `tweak`: ``kitchen-keys``: :bug:`614` fixed in DF 0.44.04 -## Internals -- ``Gui::getAnyUnit()`` supports many more screens/menus +# 52.05-r2 -## Structures -- New globals: ``soul_next_id`` +## New Tools -================================================================================ -# 0.44.05-alpha1 +## New Features + +## Fixes +- `script-manager`: the ``scripts_modactive`` and ``scripts_modinstalled`` folders of a script-enabled mod will be properly added to the script path search list ## Misc Improvements -- `gui/liquids`: added more keybindings: 0-7 to change liquid level, P/B to cycle backwards -## Structures --@ ``incident``: re-aligned again to match disassembly +## Documentation +- added a clarification link to DF's Lua API documentation to the DFHack Lua API documentation, as a way to reduce end-user confusion +## API -================================================================================ -# 0.44.04-alpha1 +## Lua + +## Removed + +# 52.05-r1 + +## New Tools + +## New Features ## Fixes -- `devel/inject-raws`: now recognizes spaces in reaction names -- `exportlegends`: fixed an error that could occur when exporting empty lists +- improved file system handling: gracefully handle errors from operations, preventing crashes. +- `zone`: animal assignment dialog now tolerates corrupt animal-to-pasture links. +## Misc Improvements -## Structures -- ``artifact_record``: fixed layout (changed in 0.44.04) -- ``incident``: fixed layout (changed in 0.44.01) - note that many fields have moved +## Documentation +## API -================================================================================ -# 0.44.03-beta1 - -## Fixes -- `autolabor`, `autohauler`, `labormanager`: added support for "put item on display" jobs and building/destroying display furniture -- `gui/gm-editor`: fixed an error when editing primitives in Lua tables - -## Misc Improvements -- @ `devel/dump-offsets`: now ignores ``index`` globals -- `gui/pathable`: added tile types to sidebar -- `modtools/skill-change`: - - now updates skill levels appropriately - - only prints output if ``-loud`` is passed - -## Structures -- New globals: - - ``version`` - - ``min_load_version`` - - ``movie_version`` - - ``basic_seed`` - - ``title`` - - ``title_spaced`` - - ``ui_building_resize_radius`` -- Added ``twbt_render_map`` code offset on x64 -- Fixed an issue preventing ``enabler`` from being allocated by DFHack -- Added ``job_type.PutItemOnDisplay`` -- Found ``renderer`` vtable on osx64 -- ``adventure_movement_optionst``, ``adventure_movement_hold_tilest``, ``adventure_movement_climbst``: named coordinate fields -- ``mission``: added type -- ``unit``: added 3 new vmethods: ``getCreatureTile``, ``getCorpseTile``, ``getGlowTile`` -- ``viewscreen_assign_display_itemst``: fixed layout on x64 and identified many fields -- ``viewscreen_reportlistst``: fixed layout, added ``mission_id`` vector -- ``world.status``: named ``missions`` vector +## Lua +## Removed -================================================================================ -# 0.44.03-alpha1 +# 52.04-r1 + +## New Tools + +## New Features +- Compatibility with DF 52.04 + +## Fixes + +## Misc Improvements + +## Documentation + +## API ## Lua -- Improved ``json`` I/O error messages -- Stopped a crash when trying to create instances of classes whose vtable addresses are not available +## Removed + +# 52.03-r2 -================================================================================ -# 0.44.02-beta1 +## New Tools -## New Scripts -- `devel/check-other-ids`: Checks the validity of "other" vectors in the ``world`` global -- `gui/cp437-table`: An in-game CP437 table +## New Features +- `nestboxes`: allow limiting egg protection to nestboxes inside a designated burrow +- `tailor`: tailor now provides optional dye automation ## Fixes -- Fixed issues with the console output color affecting the prompt on Windows -- `createitem`: stopped items from teleporting away in some forts -- `gui/gm-unit`: can now edit mining skill -- `gui/quickcmd`: stopped error from adding too many commands -- `modtools/create-unit`: fixed error when domesticating units +- ``Units::getReadableName`` will no longer append a comma to the names of histfigs with no profession +- `stockpiles`: fixed off-by-one error in exporting furniture stockpiles ## Misc Improvements -- The console now provides suggestions for built-in commands -- `devel/export-dt-ini`: avoid hardcoding flags -- `exportlegends`: - - reordered some tags to match DF's order - - added progress indicators for exporting long lists -- `gui/gm-editor`: added enum names to enum edit dialogs -- `gui/gm-unit`: made skill search case-insensitive -- `gui/rename`: added "clear" and "special characters" options -- `remotefortressreader`: - - includes item stack sizes - - some performance improvements + +## Documentation + +## API +- ``Job``: new functions ``createLinked`` and ``assignToWorkshop`` +- ``Units``: new functions ``getFocusPenalty``, ``unbailableSocialActivity``, ``isJobAvailable`` + +## Lua +- New functions: ``dfhack.jobs.createLinked``, ``dfhack.jobs.assignToWorkshop``, ``dfhack.units.getFocusPenalty``, ``dfhack.units.unbailableSocialActivity``, and ``dfhack.units.isJobAvailable`` ## Removed -- `warn-stuck-trees`: :bug:`9252` fixed in DF 0.44.01 + +# 52.03-r1.1 + +## New Tools + +## New Features + +## Fixes +- job descriptions of mix dye job will display proper dye names + +## Misc Improvements + +## Documentation + +## API ## Lua -- Exposed ``get_vector()`` (from C++) for all types that support ``find()``, e.g. ``df.unit.get_vector() == df.global.world.units.all`` -## Structures -- Located ``start_dwarf_count`` offset for all builds except 64-bit Linux; `startdwarf` should work now -- Added ``buildings_other_id.DISPLAY_CASE`` -- Fixed ``viewscreen_titlest.start_savegames`` alignment -- Fixed ``unit`` alignment -- Identified ``historical_entity.unknown1b.deities`` (deity IDs) +## Removed + +# 52.03-r1 +## New Tools -================================================================================ -# 0.44.02-alpha1 +## New Features + +## Fixes +- `preserve-rooms` will no longer hang on startup in the presence of a cycle in the replacement relationship of noble positions + +## Misc Improvements + +## Documentation + +## API +- Adjusted the logic inside ``Military::removeFromSquad`` to more closely match the game's own behavior + +## Lua + +## Removed + +# 52.02-r2 + +## New Tools + +## New Features + +## Fixes +- Several fixes related to changes in file system handling in DF 52.01 +- `dig-now`: don't allow UNDIGGABLE stones to be excavated + +## Misc Improvements +- `autoclothing`: added a ``clear`` option to unset previously set orders + +## Documentation + +## API +- Added GUI focus strings for new_arena: ``/Loading`` and ``/Mods`` +- ``Filesystem::getBaseDir`` and ``Filesystem::getInstallDir`` added (and made available in Lua) +- Expanded the partial implementations of ``Military::addToSquad`` and ``Military::removeFromSquad`` + +## Lua +- Inserting values into STL containers containing nonprimitive types is now supported + +## Removed + +# 52.02-r1 -## New Scripts -- `devel/dump-offsets`: prints an XML version of the global table included in in DF +## New Tools + +## New Features ## Fixes -- Fixed a crash that could occur if a symbol table in symbols.xml had no content +- Honor the "portable mode" preference setting for locating save folders. Fixes DFHack cosaves not working in most cases. + +## Misc Improvements + +## Documentation + +## API ## Lua -- Added a new ``dfhack.console`` API -- API can now wrap functions with 12 or 13 parameters -## Structures -- The ``ui_menu_width`` global is now a 2-byte array; the second item is the former ``ui_area_map_width`` global, which is now removed -- The former ``announcements`` global is now a field in ``d_init`` -- ``world`` fields formerly beginning with ``job_`` are now fields of ``world.jobs``, e.g. ``world.job_list`` is now ``world.jobs.list`` +## Removed + +# 52.01-r1 + +## New Tools + +## New Features +- `tweak`: ``animaltrap-reuse``: make it so built animal traps automatically unload the vermin they catch into stockpiled animal traps, so that they can be automatically re-baited and reused + +## Fixes + +## Misc Improvements + +## Documentation + +## API + +## Lua +- ``widgets.Slider``: new mouse-controlled single-headed slider widget + +## Removed + +# 51.13-r1 + +## New Features + +- Compatibility with DF 51.13 + +# 51.12-r1.1 + +## New Features + +- Compatibility with Itch release of DF 51.12 + +# 51.12-r1 + +## Fixes +- `getplants`: will no longer crash when faced with plants with growths that do not drop seeds when processed +- `getplants`: use updated formula for calculating whether plant growths are ripe +- `getplants`: fix logic for determining whether plant growths have been picked +- `gui/teleport`: adapt to new behavior in DF 51.11 to avoid a crash when teleporting items into mid-air +- `script-manager`: fix lua scripts in mods not being reloaded properly upon entering a saved world on Windows +- `preserve-rooms`: don't warn when a room is assigned to a non-existent unit. this is now common behavior for DF when it keeps a room for an unloaded unit +- fixed an overly restrictive type constraint that resulted in some object types being glossed as a boolean when passed as an argument from C++ to Lua +- `plants`: will no longer generate a traceback when a filter is used +- `createitem`: multiple items should be properly created in stacks again + +## Misc Improvements +- All places where units are listed in DFHack tools now show the translated English name in addition to the native name. In particular, this makes units searchable by English name in `gui/sitemap`. +- `dig`: ASCII overlay now displays priority of digging designations +- `spectate`: added prefer nicknamed units +- `blueprint`: support for recording zones +- `blueprint`: support for recording stockpile properties like names and stockpile links; does not yet support recording detailed contents configuration +- `strangemood`: support added for specifying unit id instead of selected unit or random one. + +## API +- ``Random`` module: added ``SplitmixRNG`` class, implements the Splitmix64 RNG used by Dwarf Fortress for "simple" randomness +- ``Items::getDescription``: fixed display of quality levels, now displays ALL item designations (in correct order) and obeys vanilla SHOW_IMP_QUALITY setting +- ``cuboid::forCoord``, ``Maps::forCoord``: take additional parameter to control whether iteration goes in column major or row major order + +## Lua +- ``script-manager``: new ``get_active_mods()`` function for getting information on active mods +- ``script-manager``: new ``get_mod_info_metadata()`` function for getting information out of mod ``info.txt`` files + +## Removed +- removed historically unused ``Core::RegisterData``/``Core::GetData`` API and associated internal data structures + +# 51.11-r1.2 + +## Fixes +- `preserve-tombs`: will no longer crash when a tomb is assigned to a unit that does not exist + +# 51.11-r1.1 + +## Fixes +- `preserve-rooms`: will no longer crash when a civzone is assigned to a unit that does not exist +- `gui/design`: fix misaligned shape icons + +# 51.11-r1 + +## Fixes +- `spectate`: don't show a hover tooltip for hidden units (e.g. invisible snatchers) +- `stockpiles`: fix one-off error in item type when importing furniture stockpile settings +- `dig-now`: fix cases where boulders/rough gems of incorrect material were being generated when digging through walls +- `dig-now`: properly generate ice boulders when digging through ice walls +- `gui/teleport`: now properly handles teleporting units that are currently falling or being flung +- `unload`: fix recent regression where `unload` would immediately `reload` the target +- ``Buildings`` module: do not crash if a ``map_block`` unexpectedly contains an item that is not on the master item vector +- `suspendmanager`: fix walls being treated as potential suitable access if another wall is built underneath +- text widgets no longer lose their cursor when the Ctrl-a (select all) hotkey is pressed when there is no text to select + +## Misc Improvements +- `spectate`: show dwarves' activities (like prayer) + +## API +- ``Military`` module: added ``addToSquad`` function +- ``Units`` module: added ``get_cached_unit_by_global_id`` to emulate how DF handles unit vector index caching (used in civzones and in general references) +- ``Buildings`` module: add ``getOwner`` (using the ``Units::get_cached_unit_by_global_id`` mechanic) to reflect changes in 51.11 +- ``Units::teleport``: projectile information is now cleared for teleported units +- ``Buildings::setOwner``: updated for changes in 51.11 + +## Lua +- ``dfhack.military.addToSquad``: expose Military API function +- ``dfhack.buildings.getOwner``: make new Buildings API available to Lua + +# 51.10-r1 + +## Misc Improvements +- Compatibility with DF 51.10 + +# 51.09-r1 + +## New Features +- `gui/journal`: Ctrl-j hotkey to launch `gui/journal` now works in adventure mode! + +## Fixes +- Fix processing error in the overlay that displays unit preferences in the baron selection list + +## API +- ``Filesystem`` module: rewritten to use C++ standard library components, for better portability + +# 51.08-r1 + +## Misc Improvements +- Compatibility update for DF 51.08 + +# 51.07-r1 + +## New Features +- `spectate`: can now specify number of seconds (in real time) before switching to follow a new unit +- `spectate`: new "cinematic-action" mode that dynamically speeds up perspective switches based on intensity of conflict +- `spectate`: new global keybinding for toggling spectate mode: Ctrl-Shift-S +- `spectate`: new overlay panel that allows you to cycle through following next/previous units (regardless of whether spectate mode is enabled) +- `gui/sitemap`: is now the official "go to" tool. new global hotkey for fort and adventure mode: Ctrl-G + +## Fixes +- Windows console: fix possible hang if the console returns a too-small window width (for any reason) +- `createitem`: produced items will now end up at the look cursor position (if it is active) +- `spectate`: don't allow temporarily modified announcement settings to be written to disk when "auto-unpause" mode is enabled +- `changevein`: fix a crash that could occur when attempting to change a vein into itself +- `overlay`: reset draw context between rendering widgets so context changes can't propagate from widget to widget +- `suspendmanager`: in ASCII mode, building planning mode overlay now only displays when viewing the default map, reducing issues with showing through the UI + +## Misc Improvements +- `spectate`: player-set configuration is now stored globally instead of per-fort +- `autobutcher`: treat animals on restraints as unavailable for slaughter +- `stockpiles`: add property filters for brewable, millable, and processable (e.g. at a Farmer's workshop) organic materials +- `quickfort`: redesigned ``library/aquifer_tap.cav`` to improve the water fill rate + +## Documentation +- `stonesense-art-guide`: guide for making sprite art for Stonesense + +## API +- ``Military::removeFromSquad``: removes unit from any squad assignments +- ``Buildings::checkFreeTiles``: now takes a building instead of a pointer to the building extents +- ``Units::isUnitInBox``, ``Units::getUnitsInBox``: don't include inactive units +- ``Items::getItemBaseValue``: adjust to the reduced value of prepared meals (changed in DF 51.06) +- ``Items::getValue``: magical powers now correctly contribute to item value + +## Lua +- ``dfhack.units.setAutomaticProfessions``: sets unit labors according to current work detail settings +- ``dfhack.military.removeFromSquad``: Lua API for ``Military::removeFromSquad`` +- ``gui.dwarfmode``: adventure mode cursor now supported in ``getCursorPos``, ``setCursorPos``, and ``clearCursorPos`` funcitons +- ``dfhack.buildings.checkFreeTiles``: now takes a building pointer instead of an extents parameter +- ``overlay.isOverlayEnabled``: new API for querying whether a given overlay is enabled +- ``overlay``: widgets can now declare ``overlay_onenable`` and ``overlay_ondisable`` functions to hook enable/disable + +## Removed +- `orders`: MakeCheese job removed from library/basic orders set. Please use `autocheese` instead! + +# 51.06-r1 + +## Misc Improvements +- Compatibility with DF 51.06 + +# 51.05-r1 + +## Misc Improvements +- Compatibility with DF 51.05 + +# 51.04-r1.1 + +## Fixes +- `gui/launcher`: ensure commandline is fully visible when searching through history and switching from a very long command to a short command +- `gui/launcher`: flatten text when pasting multi-line text from the clipboard +- Ctrl-a hotkeys have been changed to something else (Ctrl-n) for tools that also have an editable text field, where Ctrl-a is interpreted as select all text + +## API +- ``Core::getUnpausedMs``: new API for getting unpaused ms since load in a fort-mode game + +# 51.04-r1 + +## Misc Improvements +- Compatibility with Steam release of DF 51.04 + +# 51.03-r1.1 + +## Misc Improvements +- Compatibility with Itch release of DF 51.03 + +# 51.03-r1 + +## Fixes +- `gui/gm-editor`: fix Enter key not being recognized for opening the selected object + +# 51.02-r1 + +## Misc Improvements +- DFHack edit field widgets, such as the commandline editor in `gui/launcher`, now support text selection and other advanced text editing features from `gui/journal` + +# 50.15-r2 + +## New Features +- `stockpiles`: add simple import/export dialogs to stockpile overlay panel +- `orders`: add transparent overlays to the manager orders screen that allow right clicks to cancel edit of quantities or condition details instead of exiting to the main screen + +## Fixes +- `preserve-rooms`: don't erroneously release reservations for units that have returned from their missions but have not yet entered the fort map +- `preserve-rooms`: handle case where unit records are culled by DF immediately after a unit leaves the map +- `preserve-tombs`: properly re-enable after loading a game that had the tool enabled +- `zone`: assign animal to cage/restraint dialog now allows you to unassign a pet from the cage or restraint if the pet is already somehow assigned (e.g. war dog was in cage and was subsequently assigned to a dwarf) +- `stockpiles`: don't set ``use_links_only`` flag to a random value when the flag is not set to anything in the settings that are being imported +- `strangemood`: ensure generated names for artifacts match what the game itself would generate + +## Misc Improvements +- `strangemood`: add ability to choose Stone Cutting and Stone Carving as the mood skill +- `suspendmanager`: add more specific messages for submerged job sites and those managed by `buildingplan` +- `dig-now`: handle digging in pool and river tiles + +## Documentation +- Added example code for creating plugin RPC endpoints that can be used to extend the DFHack API + +## API +- ``Units::isUnitInBox``, ``Units::getUnitsInBox``: add versions accepting pos arguments +- ``Units::getVisibleName``: when acting on a unit without an impersonated identity, returns the unit's name structure instead of the associated histfig's name structure +- ``Translation::generateName``: generates in-game names, mirroring DF's internal logic +- ``Persistence::getUnsavedSeconds``: returns the number of seconds since last save or load + +## Lua +- ``dfhack.units.isUnitInBox``, ``dfhack.units.getUnitsInBox``: add versions accepting pos arguments +- ``widgets.FilteredList``: search keys for list items can now be functions that return a string +- ``dfhack.translation.generateName``: Lua API for ``Translation::generateName`` +- ``dfhack.persistent.getUnsavedSeconds``: Lua API for ``Persistence::getUnsavedSeconds`` + +## Removed +- ``dfhack.TranslateName`` has been renamed to ``dfhack.translation.translateName`` + +## Internals +- Plugin command callbacks are now called with the core suspended by default so DF memory is always safe to access without extra steps +- Errors when unloading a plugin's DLL are now checked and reported + +# 50.15-r1.2 + +## Misc Improvements + +- Updated support for Itch + +# 50.15-r1.1 + +## Misc Improvements + +- Updated support for Classic (Itch not available for analysis yet) + +# 50.15-r1 + +## Fixes + +- `gui/prerelease-warning`: don't pop up during worldgen, only after a fort has been loaded + +# 50.14-r2 + +## New Tools +- `infinite-sky`: (reinstated, renamed from ``infiniteSky``) automatically create new z-levels of sky to build in +- `forceequip`: (reinstated) forcibly move items into a unit's inventory + +## New Features +- `tweak`: ``realistic-melting``: change melting return for inorganic armor parts, shields, weapons, trap components and tools to stop smelters from creating metal, bring melt return for adamantine in line with other metals to ~95% of forging cost. wear reduces melt return by 10% per level + +## Fixes +- Fix mouse clicks bleeding through resizable DFHack windows when clicking in the space between the frame and the window content +- `autobutcher`: don't run a scanning and marking cycle on the first tick of a fortress to allow for all custom configuration to be set first +- `nestboxes`: don't consider eggs to be infertile just because the mother has left the nest; eggs can still hatch in this situation +- `timestream`: adjust the incubation counter on fertile eggs so they hatch at the expected time +- `timestream`: adjust the timeout on traps so they can be re-triggered at normal rates +- `logistics`: don't ignore rotten items when applying stockpile logistics operations (e.g. autodump, autoclaim, etc.) + +## Misc Improvements +- DFHack now verifies that critical DF data structures have known sizes and refuses to start if there is a mismatch +- DFHack text edit fields now delete the character at the cursor when you hit the Delete key +- DFHack text edit fields now move the cursor by one word left or right with Ctrl-Left and Ctrl-Right +- DFHack text edit fields now move the cursor to the beginning or end of the line with Home and End +- Quickfort blueprint library: ``aquifer_tap`` blueprint walkthough rewritten for clarity +- Quickfort blueprint library: ``aquifer_tap`` blueprint now designated at priority 3 and marks the stairway tile below the tap in "blueprint" mode to prevent drips while the drainage pipe is being prepared +- `preserve-rooms`: automatically release room reservations for captured squad members. we were kidding ourselves with our optimistic kept reservations. they're unlikely to come back : (( +- `buildingplan`: add value info to item selection dialog (effectively ungrouping items with different values) and add sorting by value +- `timestream`: improve FPS by a further 10% +- `fix/occupancy`: additionally handle the case where tile building occupancy needs to be set instead of cleared +- `orders`: ``orders sort`` now moves orders that are tied to a specific workshop to the top of the list in the global manager orders screen +- `gui/pathable`: make wagon path to depot representation more robust + +## Documentation +- Dreamfort: add link to Dreamfort tutorial youtube series: https://www.youtube.com/playlist?list=PLzXx9JcB9oXxmrtkO1y8ZXzBCFEZrKxve +- The error message that comes up if there is a version mismatch between DF and DFHack now informs you which DF versions are supported by the installed version of DFHack + +## API +- ``DFHack::Units``: new function ``setPathGoal`` +- ``Units::setAutomaticProfessions``: bay12-provided entry point to assign labors based on work details + +## Lua +- ``dfhack.units``: new function ``setPathGoal`` +- ``widgets.TabBar``: updated to allow for horizontal scrolling of tabs when there are too many to fit in the available space + +## Removed +- UI focus strings for squad panel flows combined into a single tree: ``dwarfmode/SquadEquipment`` -> ``dwarfmode/Squads/Equipment``, ``dwarfmode/SquadSchedule`` -> ``dwarfmode/Squads/Schedule`` +- `faststart`: removed since the vanilla startup sequence is now sufficiently fast + +# 50.14-r1 + +## Fixes +- `preserve-rooms`: don't reserve a room for citizens that you expel from the fort +- `autobutcher`: fix regression in ordering of butcherable animals + +# 50.13-r5 + +## New Tools +- `preserve-rooms`: manage room assignments for off-map units and noble roles. reserves rooms owned by traveling units and reinstates their ownership when they return to the site. also allows you to assign rooms to noble/administrator roles, and the rooms will be automatically assigned whenever the holder of the role changes + +## Fixes +- prevent hang when buildings in zones are destroyed in the case where the buildings were not added to the zone in the same order that they were created (uncommon) +- `buildingplan`: improved performance in forts with large numbers of items +- System clipboard: when pasting single lines from the system clipboard, replace newlines with spaces so they don't show up as strange CP437 glyphs in-game +- `exterminate`: don't kill friendly undead (unless ``--include-friendly`` is passed) when specifying ``undead`` as the target +- `gui/settings-manager`: work details overlay no longer disappears when you click on a unit in the unit list +- `buildingplan`: fixed processing errors when using quick material filter slot '0' +- DFHack screens that allow keyboard cursor and camera movement while focused now also allow diagonal and Z-change keyboard cursor keys +- `strangemood`: manually-triggered Macabre moods will now correctly request up to 3 bones/remains for the primary component instead of only 1 +- `regrass`: no longer add all compatible grass types when using ``--force`` without ``--new`` +- `regrass`: ``--mud`` now converts muddy slade to grass, consistent with normal DF behavior +- `gui/pathable`: fix hang when showing trade depot wagon access and a trade depot is submerged under water or magma +- `gui/pathable`: fix representation of wagon paths over stairs and through doors +- DFHack state for a site is now properly saved when retiring a fort +- `gui/teleport`: fix issue when teleporting units that are not prone, resulting in later issues with phantom "cannot build here: unit blocking tile" messages + +## Misc Improvements +- `sort`: can now search for stockpiles on the Places>Stockpile tab by name, number, or enabled item categories +- `gui/family-affairs`: you can start this tool by the name ``gui/pregnancy`` to start directly on the "Pregnancies" tab +- `buildingplan`: only consider building materials that can be accessed by at least one citizen/resident +- Dreamfort: integrate with `preserve-rooms` to assign relevant rooms to nobles/adimistrators +- Dreamfort: smooth tiles under statues and other large furniture that you can't easily smooth later + +## Documentation +- add documentation for ``dfhack.items.findType(string)`` and ``dfhack.items.findSubtype(string)`` +- `modding-guide`: added examples for reading and writing various types of persistent storage +- `modding-guide`: updated all code snippets for greater clarity + +## API +- ``Units``: new ``isWildlife`` and ``isAgitated`` property checks +- ``Items::createItem``: removed ``growth_print`` parameter; now determined automatically +- ``DFHack::cuboid``: ``cuboid::clampMap`` now returns the cuboid itself (instead of boolean) to allow method chaining; call ``cuboid::isValid`` to determine success + +## Lua +- ``dfhack.units``: ``isWildlife`` and ``isAgitated`` property checks +- ``dfhack.units.isDanger``: no longer unconditionally returns true for intelligent undead +- Overlay widgets can now assume their ``active`` and ``visible`` functions will only execute in a context that matches their ``viewscreens`` associations +- ``gui.simulateInput``: do not generate spurious keycode from ``_STRING`` key inputs +- ``dfhack.items.createItem``: removed ``growth_print`` parameter to match C++ API + +## Removed +- ``quickfortress.csv``: remove old sample blueprints for "The Quick Fortress", which were unmaintained and non-functional in DF v50+. Online blueprints are available at https://docs.google.com/spreadsheets/d/1WuLYZBM6S2nt-XsPS30kpDnngpOQCuIdlw4zjrcITdY if anyone is interested in giving these blueprints some love + +# 50.13-r4 + +## New Features +- `gui/journal`: new hotkey, accessible from anywhere in fort mode: Ctrl-j + +## Fixes +- `changelayer`: fix incorrect lookup of geological region in multi-region embarks +- Copy/Paste: Fix handling of multi-line text when interacting with the system clipboard on Windows +- `zone`: fix alignment of animal actions overlay panel (the one where you can click to geld/train/etc.) when the animal has a custom portrait (like named dragons) +- `autodump`: cancel any jobs that point to dumped items +- `add-spatter`: fix a crash related to unloading a savegame with add-spatter reactions, then loading a second savegame with add-spatter reactions +- `plant`: properly detect trees in a specified cuboid that only have branches/leaves in the cuboid area + +## Misc Improvements +- performance improvements for DFHack tools and infrastructure +- `gui/pathable`: give edge tiles where wagons can enter the map a special highlight to make them more identifiable. this is especially useful when the game decides that only a portion of the map edge is usable by wagons. +- `autodump`: allow dumping items into mid-air, converting them into projectiles like `gui/autodump` does + +## Documentation +- improved docs for ``dfhack.units`` module functions + +## API +- ``Units``: add overloads that take historical figures for ``getReadableName``, ``getVisibleName``, and ``getProfessionName`` +- ``Units::isUnitInBox``, ``getUnitsInBox``: add versions that take a cuboid range, add filter fn parameter for ``getUnitsInBox`` +- ``Units::getProfession``: account for units with fake identities +- ``Units::getCasteRaw``: get a caste_raw from a unit or race and caste +- ``cuboid``: construct from ``df::map_block*``, ``forBlock`` iterator to access map blocks in cuboid +- ``cuboid``: ``clamp(cuboid other)``, ``clampNew(cuboid other)`` for cuboid intersection. ``clampNew`` returns new cuboid instead of modifying. +- ``Items``: no longer need to pass MapCache parameter to ``moveToGround``, ``moveToContainer``, ``moveToBuilding``, ``moveToInventory``, ``makeProjectile``, or ``remove`` +- ``Units::isVisible``: account for units in cages +- ``Units::getReadableName``: correct display of ghost+curse names w/r/t each other and unit prof, use ``curse.name`` instead of iterating syndrome name effects +- ``setAreaAquifer``, ``removeAreaAquifer``: add overloads that take cuboid range specifiers +- ``Units::isNaked``: now only checks equipped items (including rings, for now). Setting bool ``no_items`` to true checks empty inventory like before. +- ``Units::isUndead``: bool ``include_vamps`` renamed to ``hiding_curse``. Fn now checks that instead of bloodsucker syndrome. +- ``Units::isDanger``: added bool ``hiding_curse``, passed to ``isUndead`` to avoid spoilers +- ``Units::getRaceChildName``, ``getRaceChildNameById``, ``getRaceBabyName``, ``getRaceBabyNameById``: bool ``plural`` to get plural form +- ``Units::getProfessionName``: bool ``land_title`` to append "of Sitename" where applicable, use Prisoner/Slave and noble spouse titles (controlled by ``ignore_noble``) + +## Lua +- ``gui.ZScreen``: new ``defocused`` property for starting screens without keyboard focus +- ``dfhack.units``: allow historical figures to be passed instead of units for ``getReadableName``, ``getVisibleName``, and ``getProfessionName`` +- ``dfhack.items.moveToInventory``: make ``use_mode`` and ``body_part`` args optional +- ``dfhack.units``: add ``getRaceReadableName``, ``getRaceReadableNameById``, ``getRaceNamePluralById`` + +## Removed +- The ``PRELOAD_LIB`` environment variable has been renamed to ``DF_PRELOAD`` to match the naming scheme of other environment variables used by the ``dfhack`` startup script. If you are preloading libraries (e.g. for performance testing) please define ``DF_PRELOAD`` instead of ``PRELOAD_LIB`` or ``LD_PRELOAD`` +- ``cuboid::clamp(bool block)``: renamed to ``cuboid::clampMap(bool block)``, name taken by ``cuboid::clamp(cuboid other)`` +- ``Units::MAX_COLORS``, ``Units::findIndexById``, ``Units::getNumUnits``, ``Units::getUnit``: replaced by ``DFHack::COLOR_MAX`` and the generated type-specific ``get_vector`` functions +- ``Units::getPhysicalDescription``: function requires DF call point that is no longer available. alternative is to navigate the unit info sheet and extract the description from the UI (see `markdown`) + +# 50.13-r3 + +## New Tools +- `plant`: (reinstated) tool for creating/growing/removing plants + +## New Features +- `tweak`: ``named-codices``: display book titles instead of a material description in the stocks/trade screens +- `logistics`: automatically forbid or claim items brought to a stockpile +- `plant`: can now ``remove`` shrubs and saplings; ``list`` all valid shrub/sapling raw IDs; ``grow`` can make mature trees older; many new command options +- Locale-sensitive number formatting: select your preferred format in `gui/control-panel`. prices and other large numbers in DFHack UIs can be displayed with commas (English formatting), the number formatting used by your system locale, in SI units (e.g. ``12.3k``), or even in scientific notation + +## Fixes +- ``Gui::makeAnnouncement``, ``Gui::autoDFAnnouncement``: fix case where a new announcement is created instead of adding to the count of an existing announcement if the existing announcement was the first one in the reports vector +- `regrass`: don't remove mud on regrass, consistent with vanilla behavior +- `seedwatch`: display a limit of ``-`` instead of ``0`` for a seed that is present in inventory but not being watched +- `tiletypes`: make aquifers functional when adding the ``aquifer`` property and there are no existing aquifer tiles in the same map block +- `seedwatch`: do not include unplantable tree seeds in status report +- ``Buildings::containsTile``: fix result for buildings that are solid and have no extent structures +- Mortal mode: prevent keybindings that run armok tools from being recognized when in mortal mode +- `dig`: don't leave phantom dig designations behind when autodigging warm/damp designated tiles +- `buildingplan`: properly identify appropriate construction items for modded buildings built from thread +- `overlay`: overlay positions are now adjusted according to the configured max interface width percentage in the DF settings +- `zone`: animal assignment overlay button moved to not conflict with vanilla aquarium/terrarium button on glass cages +- `zone`: allow friendly creatures to be released from cages by assigning them to a pasture zone and then unassigning them +- `autobutcher`: fix inverted ranking of which animals to butcher first + +## Misc Improvements +- `blueprint`: capture track carving designations in addition to already-carved tracks +- `changevein`: follow veins into adjacent map blocks so you can run the command once instead of once per map block that the vein crosses +- `regrass`: now accepts numerical IDs for grass raws; ``regrass --list`` replaces ``regrass --plant ""`` +- `tiletypes`: performance improvements when affecting tiles over a large area +- `tiletypes`: support for creating heavy aquifers +- `tiletypes`: new ``autocorrect`` property for autocorrecting adjacent tiles when making changes (e.g. adding ramp tops when you add a ramp) +- Dreamfort: add a full complement of beds and chests to both barracks +- Dreamfort: redesign guildhall/temple/library level for better accessibility +- Dreamfort: walkthrough documentation refresh +- Dreamfort: add milking/shearing station in surface grazing pasture +- Dreamfort: integrate building prioritization into the blueprints and remove `prioritize` checklist steps +- Dreamfort: add plumbing template for filling cisterns with running water +- `buildingplan`: add option to ignore items from a specified burrow +- `autobutcher`: do not butcher pregnant (or brooding) females +- `quickfort`: support buildable instruments +- `orders`: you can now delete your exported orders from the import dialog +- `nestboxes`: increase the scanning frequency for fertile eggs to reduce the chance that they get snarfed by eager dwarves +- `autonestbox`: wait until juveniles become adults before they are assigned to nestboxes +- `suspendmanager`: add option to ``unsuspend`` that unsuspends all jobs, regardless of potential issues (like blocking other construction jobs) +- `gui/create-item`: allow right click to cancel out of material dialog submenus + +## Documentation +- `installing`: add instructions for how to use Steam DFHack with non-Steam DF (e.g. to benefit from DFHack auto-updates and cloud backups) +- `modding-guide`: add a section on persistent storage, both for global settings and world-specific settings +- Developer's primer for DFHack's type identity system + +## API +- Focus strings have moved for stockpile states: ``dwarfmode/CustomStockpile`` is now ``dwarfmode/Stockpile/Some/Customize`` and similar for ``dwarfmode/StockpileTools`` and ``dwarfmode/StockpileLink`` +- ``Buildings::getName``: get a building's name +- ``Maps::isTileAquifer``, ``Maps::isTileHeavyAquifer``, ``Maps::setTileAquifer``, ``Maps::removeTileAquifer``, ``Maps::setAreaAquifer``, ``Maps::removeAreaAquifer``: new aquifer detection and modification API +- ``Units::create``, ``Units::makeown``: new APIs to use bay12-provided entry points for low-level operations +- ``format_number``: format numbers according to the configured player formatting preference +- ``Items::remove``: now cancels related jobs and marks the item as hidden and forbidden until it can be garbage collected +- ``Job::addGeneralRef``: new easy API for creating general references and adding them to a Job +- ``Job::addWorker``: new API function for assigning a job to unit + +## Lua +- ``dfhack.gui.getSelectedJob``: can now return the job with a destination under the keyboard cursor (e.g. digging/carving/engraving jobs) +- ``widgets.makeButtonLabelText``: create text and graphical buttons from character/color/tile maps and/or dynamically loaded tilesets +- ``widgets.DimensionsTooltip``: reusable selected dimensions tooltip that follows the mouse cursor around +- ``widgets.ButtonGroup``: subclass of CycleHotkeyLabel that additionally displays clickable graphical buttons +- ``widgets.CycleHotkeyLabel``: when the widget has both forward and backward hotkeys defined, support moving backwards by clicking on the appropriate hotkey hint +- ``safe_index``: will now return nil when attempting to index into a non-indexable object +- ``script-manager``: add ``getModSourcePath`` and ``getModStatePath`` so modders can get the directory path to their own files +- ``widgets.FilteredList``: don't restrict the player from inputting multiple successive space characters +- ``dfhack.maps.isTileAquifer``, ``dfhack.maps.isTileHeavyAquifer``, ``dfhack.maps.setTileAquifer``, ``dfhack.maps.removeTileAquifer``: access to new aquifer API +- ``plugins.tiletypes.tiletypes_setTile``: can now accept a table for access to previously unavailable options +- ``dialogs.showYesNoPrompt``: extend options so the standard dialog can be used for `gui/confirm`-style confirmation prompts +- ``dfhack.units.create``, ``dfhack.units.makeown``: Lua access to new module API +- ``dfhack.formatInt``, ``dfhack.formatFloat``: formats numbers according to the player preferences for number formatting set in `gui/control-panel` +- ``gui.get_interface_rect``, ``gui.get_interface_frame``: convenience functions for working with scaled interfaces +- ``overlay``: new attributes: ``fullscreen`` and ``full_interface`` for overlays that need access to the entire screen or the scaled interface area, respectively +- ``string:wrap``: now preserves inter-word spacing and can return the wrapped lines as a table of strings instead of a single multi-line string +- ``dfhack.internal.getClipboardTextCp437Multiline``: for retrieving multiline text from the system clipboard + +## Removed +- `plants`: renamed to `plant` +- ``gui.FramedScreen``: this class is now deprecated; please use ``gui.ZScreen`` and ``widgets.Window`` instead +- ``dfhack.HIDE_CONSOLE_ON_STARTUP`` and ``dfhack.HIDE_ARMOK_TOOLS`` are no longer directly accessible. Please use `control-panel` or `gui/control-panel` to interact with those settings. + +# 50.13-r2.1 + +## Fixes +- `suspendmanager`: stop suspending single tile stair constructions + +# 50.13-r2 + +## New Tools +- Updated for adventure mode: `reveal` + +## New Features +- `buildingplan`: quick material filter favorites on main planner panel +- DFHack and the Dwarf Fortress translation project can now both be run at the same time + +## Fixes +- `zone`: fix display of distance from cage/pit for small pets in assignment dialog +- `blueprint`: correctly define stockpile boundaries in recorded stockpile ("place") blueprints when there are adjacent non-rectangular stockpiles of identical types +- `dig`: refresh count of tiles that will be modified by "mark all designated tiles on this z-level for warm/damp dig" when the z-level changes +- `dig`: don't affect already-revealed tiles when marking z-level for warm/damp dig +- `zone`: refresh values in distance column when switching selected pastures when the assign animals dialog is open +- `logistics`: include semi-wild pets when autoretrain is enabled +- `suspendmanager`: fully suspend unbuildable dead ends (e.g. building second level of a wall when the wall top is only accessible via ramp, causing the planned wall to be pathable but not buildable) +- `prospect`: don't use scientific notation for representing large numbers + +## Misc Improvements +- `caravan`: display who is in the cages you are selecting for trade and whether they are hostile +- `regrass`: can now add grass to stairs, ramps, ashes, buildings, muddy stone, shrubs, and trees +- `regrass`: can now restrict area of effect to specified tile, block, cuboid, or z-levels +- `regrass`: can now add grass in map blocks where there hasn't been any +- `regrass`: can now choose specific grass type +- `dig`: warm/damp/aquifer status will now be shown in mining mode for tiles that your dwarves can see from the level below +- `dig`: warm/damp/aquifer status will now be shown when in smoothing/engraving modes +- `stockpiles`: support import and export "desired items" configuration for route stops +- New commandline options for controlling the Cloud Save coprocess when launching from Steam. See the `dfhack-core` documentation for details. +- `markdown`: new keybinding for triggering text export: Ctrl-t (when unit or item is selected) +- `flashstep`: new keybinding for teleporting adventurer to the mouse cursor: Ctrl-t (when adventure map is in the default state and mortal mode is disabled in DFHack preferences) +- Dreamfort: move wells on services level so brawling drunken tavern patrons are less likely to fall in +- `unretire-anyone`: new keybinding for adding a historical figure to the adventurer selection list in the adventure mode setup screen: Ctrl-a + +## Documentation +- Quickfort Blueprint Library: add demo videos for pump stack and light aquifer tap blueprints +- Update docs for dependency requirements and compilation procedures + +## API +- ``dfhack.items.getReadableDescription()``: easy API for getting a human-readable item description with useful annotations and information (like tattered markers or who is in a cage) +- ``Items::createItem``: now returns a list of item pointers rather than a single ID, moved creator parameter to beginning, added growth_print and no_floor parameters at end +- ``World::getAdventurer``: returns current adventurer unit +- ``World::ReadPauseState``: now returns true when the game is effectively paused due to a large panel obscuring the map. this aligns the return value with the visual state of the pause button when in fort mode. + +## Lua +- ``dfhack.internal.setClipboardTextCp437Multiline``: for copying multiline text to the system clipboard +- ``dfhack.world.getAdventurer``: returns current adventurer unit +- ``dfhack.items.createItem``: return value and parameters have changed as per C++ API + +# 50.13-r1.1 + +## Documentation +- Update docs on release procedures and symbol generation + +# 50.13-r1 + +## Fixes +- Fixed misidentification of visitors from your own civ as residents; affects all tools that iterate through citizens/residents +- `cursecheck`: act on selected unit only if a unit is selected +- Fixed incorrect DFHack background window texture when DF is started in ascii mode and subsequently switched to graphics mode + +## Misc Improvements +- `suspendmanager`: Account for walls planned on the z-layer below when determining accessibility to a job + +## Documentation +- `autoclothing`: add section comparing ``autoclothing`` and `tailor` to guide players choosing which to enable + +# 50.12-r3 + +## New Tools +- `aquifer`: commandline tool for creating, draining, and modifying aquifers + +## New Features +- `buildingplan`: add overlays for unlinking and freeing mechanisms from buildings +- `dig`: designate tiles for damp or warm dig, which allows you to dig through damp or warm tiles without designations being canceled +- `dig`: damp and warm tile icons now remain visible when included in the designation selection box (graphics mode) +- `dig`: aquifer tiles are now visually distinct from "just damp" tiles (graphics and ascii modes) +- `dig`: light aquifer tiles are now visually distinct from heavy aquifer tiles (graphics and ascii modes) +- `dig`: autodig designations that are marked for damp/warm dig propagate the damp/warm tag when expanding to newly exposed tiles +- `blueprint`: designations and active dig jobs are now captured in generated blueprints +- `blueprint`: warm/damp dig markers are captured in generated blueprints + +## Fixes +- fix behavior of Linux Steam launcher on systems that don't support the inotify API +- fix rendering of resize "notch" in lower right corner of resizable windows in ascii mode +- `quickfort`: stockpiles can now be placed even if there is water covering the tile, as per vanilla behavior +- `suspendmanager`: prevent cancellation spam when an item is preventing a building from being completed +- `stonesense`: fix a crash with buildings made of unusual materials (such as campsite tents made out of organic "walls") + +## Misc Improvements +- `tailor`: allow turning off automatic confiscation of tattered clothing +- aquifer_tap blueprint: now designates in damp dig mode for uninterrupted digging in a light aquifer +- pump_stack blueprint: now designates in warm and damp dig mode for uninterrupted digging through warm and damp tiles +- `keybinding`: you can now assign keybindings to mouse buttons (if your mouse has more than the three buttons already used by DF) + +## Documentation +- Lua API: documented existing ``enum:next_item(index)`` function + +## API +- ``Units::citizensRange``: c++-20 std::range filter for citizen units +- ``Units::forCitizens``: iterator callback function for citizen units +- ``Units::paintTile``, ``Units::readTile``: now takes an optional field specification for reading and writing to specific map compositing layers +- ``Buildings::checkFreeTiles``: now takes a ``allow_flow`` parameter to control whether water- or magma-filled tiles are valid + +## Lua +- ``dfhack.gui.matchFocusString``: focus string matching is now case sensitive (for performance reasons) + +# 50.12-r2.1 + +## Fixes +- `orders`: don't intercept keyboard input for setting skill or labor restrictions on workshop workers tab when the player is setting the building nickname + +# 50.12-r2 + +## New Features +- `stocks`: add button/hotkey for removing empty categories from the stocks list +- `sort`: updated and reinstated military status/squad membership/burrow membership filter for work animal assignment screen +- `logistics`: ``autoretrain`` will automatically assign trainers to your partially-trained (but not yet domesticated) livestock. this prevents children of partially-trained parents from reverting to wild if you don't notice they were born +- `orders`: add overlay for configuring labor and skill level restrictions for workshops + +## Fixes +- `autochop`: fix underestimation of log yield for cavern mushrooms +- `gui/notify`: prevent notification overlay from showing up in arena mode +- `logistics`: don't melt/trade/dump empty containers that happen to be sitting on the stockpile unless the stockpile accepts those item types +- `gui/launcher`: fix detection on Shift-Enter for running commands and autoclosing the launcher +- `logistics`: don't send autotrade items to forbidden depots +- `autoclothing`: don't produce clothes for dead units +- `caravan`: fix trade price calculations when the same item was requested for both import and export + +## Misc Improvements +- `autobutcher`: prefer butchering partially trained animals and save fully domesticated animals to assist in wildlife domestication programs +- `autodump`: can now teleport items loosely stored in buildings (clutter) +- When launched from the Steam client on Linux, both Dwarf Fortress and DFHack will be shown as "Running". This ensures that DF has proper accounting for Linux player usage. +- `suspendmanager`: improve performance when there are many active jobs +- `clean`: protect farm plots when cleaning mud +- `tweak`: add ``quiet`` option for silent enablement and disablement of tweaks +- `gui/teleport`: add global Ctrl-Shift-T keybinding (only available when DFHack mortal mode is disabled) +- Dreamfort: the four Craftsdwarf's workshops on the industry level are now specialized for Stonecrafting, Woodcrafting, Bone Carving, and miscellaneous tasks, respectively +- `dwarfvet`: automatically unassign animals from pastures when they need treatment so they can make their way to the hospital. reassign them to their original pasture when treatment is complete. +- `dwarfvet`: ignore animals assigned to cages or restraints +- Many tools that previously only worked for citizens or only for dwarves now work for all citizens and residents, e.g. `fastdwarf`, `rejuvenate`, etc. +- `buildingplan`: remember player preference for whether unavailable materials should be hidden in the filter selection dialog +- `buildingplan`: sort by available quantity by default int he filter selection dialog +- Dreamfort: update embark profile recommendations and example embark profile + +## Documentation +- `overlay-dev-guide`: updated examples and troubleshooting steps +- `introduction`: refresh getting started content +- `quickstart`: refresh quickstart guide + +## API +- ``Units::isForgottenBeast``: property check for forgotten beasts +- ``Units::isGreatDanger``: now includes forgotten beasts +- ``Units::isResident``: property check for residents (as opposed to citizens) +- ``Units::getCitizens``: now includes residents by default + +## Lua +- ``widgets.Label``: ``*pen`` attributes can now either be a pen or a function that dynamically returns a pen +- `helpdb`: ``search_entries`` now returns a match if *all* filters in the ``include`` list are matched. previous behavior was to match if *any* ``include`` filter matched. +- ``matinfo.decode``: now directly handles plant objects +- ``dfhack.units.isForgottenBeast``: make new units method available to Lua +- ``dfhack.units.getCitizens``: now includes residents by default + +# 50.12-r1.1 + +## Fixes +- `sort`: fix crash when assigning work animals to units + +## Removed +- offline HTML rendered docs are no longer distributed with DFHack since they are randomly triggering Windows Defender antivirus heuristics. If you want to download DFHack docs for offline browsing, you can still get them from the Downloads link at https://dfhack.org/docs + +# 50.12-r1 + +## Misc Improvements +- `sort`: squad assignment overlay rewritten for compatibility with new vanilla data structures and screen layouts + +## Fixes +- `gui/design`: no longer comes up when Ctrl-D is pressed but other DFHack windows have focus + +## API + +- ``Gui::getWidget``: retrieve a vanilla DF widget by name or index + +## Lua + +- ``dfhack.gui.getWidget``: retrieve a vanilla DF widget by hierarchy path, with each step specified by a widget name or index +- ``dfhack.gui.getWidgetChildren``: retrieve a list of child widgets for a given widget container + +## Removed +- `burrow`: removed overlay 3D box select since it is now provided by the vanilla UI +- `sort`: removed Search widgets for screens that now have vanilla search + +# 50.11-r7 + +## New Tools +- `tweak`: (reinstated) a collection of small bugfixes and gameplay tweaks +- `pet-uncapper`: (reinstated, renamed from ``petcapRemover``) allow pets to breed beyond the default population cap of 50 + +## New Features +- `cleanowned`: Add a "nodump" option to allow for confiscating items without dumping +- `tweak`: Add "flask-contents", makes flasks/vials/waterskins be named according to their contents + +## Fixes +- `dig`: overlay that shows damp designations in ASCII mode now properly highlights tiles that are damp because of an aquifer in the layer above +- `dig-now`: fix digging stairs in the surface sometimes creating underworld gates. +- ``Units::getVisibleName``: don't reveal the true identities of units that are impersonating other historical figures +- ``Gui::revealInDwarfmodeMap``: properly center the zoom even when the target tile is near the edge of the map +- `warn-stranded`: don't complain about units that aren't on the map (e.g. soldiers out on raids) +- `autoclothing`: Fix enabled behavior +- ``Gui::makeAnnouncement``, ``Gui::autoDFAnnouncement``: don't display popup for all announcement types +- ``gui.View:getMouseFramePos``: function now detects the correct coordinates even when the widget is nested within other frames +- `strangemood`: correctly recognize Stonecutter and Stone Carver as moodable skills, move the Mason's boosted mood chance to the Stone Carver, and select Fell/Macabre based on long-term stress + +## Misc Improvements +- `autonestbox`: assign egg layers to the nestbox they have chosen if they have already chosen a nestbox +- `regrass`: also regrow depleted cavern moss +- `probe`: act on the selected building/unit instead of requiring placement of the keyboard cursor for ``bprobe`` and ``cprobe`` +- `buildingplan`: use closest matching item rather than newest matching item +- `zone`: animal assignment dialog now shows distance to pasture/cage and allows sorting by distance +- `zone`: animal assignment dialog shows number of creatures assigned to this pasture/cage/etc. + +## API +- Gui module Announcement functions now use DF's new announcement alert system +- ``Gui::addCombatReport``, ``Gui::addCombatReportAuto``: add versions that take ``report *`` instead of report vector index +- ``Gui::MTB_clean``, ``Gui::MTB_parse``, ``Gui::MTB_set_width``: new functions for manipulating ``markup_text_boxst`` +- ``toupper_cp437(char)``, ``tolower_cp437(char)``: new ``MiscUtils`` functions, return a char with case changed, respecting CP437 +- ``toUpper``, ``toLower``: ``MiscUtils`` functions renamed to ``toUpper_cp437`` and ``toLower_cp437``, CP437 compliant +- Gui focus strings will now include ``dwarfmode/Default`` if the only other panel open is the Squads panel +- ``Gui::revealInDwarfmodeMap``: unfollow any currently followed units/items so the viewport doesn't just jump back to where it was + +## Lua +- Overlay framework now respects ``active`` and ``visible`` widget attributes +- ``dfhack.gui`` announcement functions use default arguments when omitted +- ``dfhack.units.getCitizens`` now only returns units that are on the map +- ``dfhack.upperCp437(string)``, ``dfhack.lowerCp437(string)``: new functions, return string with all chars changed, respecting CP437 code page + +# 50.11-r6 + +## New Features +- `zone`: Add overlay for toggling butchering/gelding/adoption/taming options in animal "Overview" tabs + +## Fixes +- `dig-now`: remove diagonal ramps rendered unusable by digging +- `dig-now`: fix error propagating "light" and "outside" properties to newly exposed tiles when piercing the surface +- `sort`: fix potential crash when switching between certain info tabs +- `suspendmanager`: overlays for suspended building info panels no longer disappear when another window has focus + +## Misc Improvements +- `reveal`: automatically reset saved map state when a new save is loaded +- `autonestbox`: don't automatically assign partially trained egg-layers to nestboxes if they don't have an ongoing trainer assigned since they might revert to wild +- `buildingplan`: replace ``[edit filters]`` button in planner overlay with abbreviated filter information + +## API +- ``Units::assignTrainer``: assign a trainer to a trainable animal +- ``Units::unassignTrainer``: unassign a trainer from an animal +- ``Gui::getAnyWorkshopJob``: get the first job associated with the selected workshop +- ``Gui::getAnyJob``: get the job associated with the selected game element (item, unit, workshop, etc.) + +## Lua +- ``dfhack.units.isTamable``: return false for invaders to match vanilla logic +- ``dfhack.units.assignTrainer``: expose API to Lua +- ``dfhack.units.unassignTrainer``: expose API to Lua +- ``dfhack.gui.getAnyWorkshopJob``: expose API to Lua +- ``dfhack.gui.getAnyJob``: expose API to Lua + +## Removed +- ``nopause``: functionality has moved to `spectate` + +# 50.11-r5 + +## New Tools +- `gui/embark-anywhere`: new keybinding (active when choosing an embark site): Ctrl-A + +## New Features +- `sort`: search and sort for the "choose unit to elevate to the barony" screen. units are sorted by the number of item preferences they have and the units are annotated with the items that they have preferences for +- `zone`: add button to location details page for retiring unused locations +- `gui/mass-remove`: new global keybinding: Ctrl-M while on the fort map + +## Fixes +- `reveal`: now avoids revealing blocks that contain divine treasures, encased horrors, and deep vein hollows (so the surprise triggers are not triggered prematurely) +- `sort`: fix mouse clicks falling through the squad assignment overlay panel when clicking on the panel but not on a clickable widget +- `sort`: fix potential crash when removing jobs directly from the Tasks info screen +- `misery`: fix error when changing the misery factor +- When passing map movement keys through to the map from DFHack tool windows, also pass fast z movements (shift-scroll by default) +- `getplants`: fix crash when processing mod-added plants with invalid materials +- Dreamfort: fix holes in the "Inside+" burrow on the farming level (burrow autoexpand is interrupted by the pre-dug miasma vents to the surface) +- ``Maps::getBiomeType``, ``Maps::getBiomeTypeWithRef``: fix identification of tropical oceans +- DFHack tabs (e.g. in `gui/control-panel`) are now rendered correctly when there are certain vanilla screen elements behind them +- `buildingplan`: when you save a game and load it again, newly planned buildings are now correctly placed in line after existing planned buildings of the same type +- `buildingplan`: treat items in wheelbarrows as unavailable, just as vanilla DF does. Make sure the `fix/empty-wheelbarrows` fix is enabled so those items aren't permanently unavailable! +- `buildingplan`: show correct number of materials required when laying down areas of constructions and some of those constructions are on invalid tiles +- `stonesense`: fix crash in cleanup code after mega screenshot (Ctrl-F5) completes; however, the mega screenshot will still make stonesense unresponsive. close and open the stonesense window to continue using it. +- `gui/design`: fix incorrect highlight when box selecting area in ASCII mode +- `fastdwarf`: prevent units from teleporting to inaccessible areas when in teledwarf mode +- `fastdwarf`: allow units to meander and satisfy needs when they have no current job and teledwarf mode is enabled + +## Misc Improvements +- `autochop`: better error output when target burrows are not specified on the commandline +- `autoclothing` : now does not consider worn (x) clothing as usable/available; reduces overproduction when using `tailor` at same time +- `buildingplan`: add option for preventing constructions from being planned on top of existing constructions (e.g. don't build floors on top of floors) +- `burrow`: flood fill now requires an explicit toggle before it is enabled to help prevent accidental flood fills +- wherever units are listed in DFHack tools, properties like "agitated" or (-trained-) are now shown +- `work-now`: now saves its enabled status with the fort +- `fastdwarf`: now saves its state with the fort +- `zone`: add include/only/exclude filter for juveniles to the pasture/pit/cage/restraint assignment screen +- The "PAUSE FORCED" badge will blink briefly to draw attention if the player attempts to unpause when a DFHack tool window requires the game to be paused +- `sort`: add "Toggle all filters" hotkey button to the squad assignment panel +- `sort`: rename "Weak mental fortitude" filter to "Dislikes combat", which should be more understandable +- Dreamfort: put more chairs adjacent to each other to make the tavern more "social" +- `zone`: show geld status and custom profession (if set, it's the lower editable line in creature description) in pasture/pit/cage/restraint assignment screen +- `orders`: reduce prepared meal target and raise booze target in ``basic`` importable orders in the orders library + +## Documentation +- `installing`: Add installation instructions for wineskin on Mac +- UTF-8 text in tool docs is now properly displayed in-game in `gui/launcher` (assuming that it can be converted to cp-437) +- `modding-guide`: Add examples for script-only and blueprint-only mods that you can upload to DF's Steam Workshop +- DFHack developer's guide updated, with refreshed `architectural-diagrams` + +## API +- ``random_index``, ``vector_get_random``: new ``MiscUtils`` functions, for getting a random entry in a vector +- ``capitalize_string_words``: new ``MiscUtils`` function, returns string with all words capitalized +- ``grab_token_string_pos``: new ``MiscUtils`` function, used for parsing tokens +- ``Items``: add item melting logic ``canMelt(item)``, ``markForMelting(item)``, and ``cancelMelting(item)`` +- ``World``: ``GetCurrentSiteId()`` returns the loaded fort site ID (or -1 if no site is loaded) +- ``World``: ``IsSiteLoaded()`` check to detect if a site (e.g. a player fort) is active (as opposed to the world or a map) +- ``World``: ``AddPersistentData`` and related functions replaced with ``AddPersistentSiteData`` and ``AddPersistentWorldData`` equivalents +- New plugin API for saving and loading persistent data. See plugins/examples/skeleton.cpp and plugins/examples/persistent_per_save_example.cpp for details +- Plugin ABI (binary interface) version bump! Any external plugins must be recompiled against this version of DFHack source code in order to load. +- ``Persistence``: persistent keys are now namespaced by an entity_id (e.g. a player fort site ID) +- ``Persistence``: data is now stored one file per entity ID (plus one for the global world) in the DF savegame directory +- ``Units.isDanger``: now returns true for agitated wildlife +- ``Constructions::designateRemove``: no longer designates the non-removable "pseudo" constructions that represent the top of walls + +## Lua +- ``dfhack.capitalizeStringWords``: new function, returns string with all words capitalized +- ``widgets.Divider``: linear divider to split an existing frame; configurable T-junction edges and frame style matching +- ``dfhack.persistent``: new, table-driven API for easier world- and site-associated persistent storage. See the Lua API docs for details. +- ``dfhack.isSiteLoaded``: returns whether a site (e.g. a player fort) is loaded +- ``dfhack.items``: access to ``canMelt(item)``, ``markForMelting(item)``, and ``cancelMelting(item)`` from ``Items`` module +- ``dfhack.world.getCurrentSite``: returns the ``df.world_site`` instance of the currently loaded fort + +## Removed +- ``persist-table``: replaced by new ``dfhack.persistent`` API +- `channel-safely`: (temporarily) removed due to stability issues with the underlying DF API + +# 50.11-r4 + +## Fixes +- `buildingplan`: fix choosing the wrong mechanism (or something that isn't a mechanism) when linking a lever and manually choosing a mechanism, but then canceling the selection +- RemoteServer: don't shut down the socket prematurely, allowing continuing connections from, for example, dfhack-run +- `sort`: fix potential crash when exiting and re-entering a creatures subtab with a search active +- `sort`: prevent keyboard keys from affecting the UI when search is active and multiple keys are hit at once +- `tailor`: fix corner case where existing stock was being ignored, leading to over-ordering + +## Misc Improvements +- `buildingplan`: save magma safe mechanisms for when magma safety is requested when linking levers and pressure plates to targets +- `buildingplan`: when choosing mechanisms for linking levers/pressure plates, filter out unreachable mechanisms +- `sort`: when searching on the Tasks tab, also search the names of the things the task is associated with, such as the name of the stockpile that an item will be stored in + +# 50.11-r3 + +## New Tools +- `burrow`: (reinstated) automatically expand burrows as you dig + +## New Features +- `prospect`: can now give you an estimate of resources from the embark screen. hover the mouse over a potential embark area and run `prospect`. +- `burrow`: integrated 3d box fill and 2d/3d flood fill extensions for burrow painting mode +- `buildingplan`: allow specific mechanisms to be selected when linking levers or pressure plates +- `sort`: military and burrow membership filters for the burrow assignment screen + +## Fixes +- `stockpiles`: hide configure and help buttons when the overlay panel is minimized +- `caravan`: price of vermin swarms correctly adjusted down. a stack of 10000 bees is worth 10, not 10000 +- `sort`: when filtering out already-established temples in the location assignment screen, also filter out the "No specific deity" option if a non-denominational temple has already been established +- RemoteServer: continue to accept connections as long as the listening socket is valid instead of closing the socket after the first disconnect +- `buildingplan`: overlay and filter editor gui now uses ctrl-d to delete the filter to avoid conflict with increasing the filter's minimum quality (shift-x) +- `tailor`: fix crash on Linux where scanned unit is wearing damaged non-clothing (e.g. a crown) + +## Misc Improvements +- `buildingplan`: display how many items are available on the planner panel +- `buildingplan`: make it easier to build single-tile staircases of any shape (up, down, or up/down) +- `sort`: allow searching by profession on the squad assignment page +- `sort`: add search for places screens +- `sort`: add search for work animal assignment screen; allow filtering by military/squad/civilian/burrow +- `sort`: on the squad assignment screen, make effectiveness and potential ratings use the same scale so effectiveness is always less than or equal to potential for a given unit. this way you can also tell when units are approaching their maximum potential +- `sort`: new overlay on the animal assignment screen that shows how many work animals each visible unit already has assigned to them +- `dreamfort`: Inside+ and Clearcutting burrows now automatically created and managed + +## Documentation +- Document the Lua API for the ``dfhack.world`` module + +## API +- ``Gui::revealInDwarfmodeMap``: gained ``highlight`` parameter to control setting the tile highlight on the zoom target +- ``Maps::getWalkableGroup``: get the walkability group of a tile +- ``Units::getReadableName``: now returns the *untranslated* name +- ``Burrows::setAssignedUnit``: now properly handles inactive burrows +- ``Gui::getMousePos``: now takes an optional ``allow_out_of_bounds`` parameter so coordinates can be returned for mouse positions outside of the game map (i.e. in the blank space around the map) +- ``Buildings::completebuild``: used to link a newly created building into the world + +## Lua +- ``dfhack.gui.revealInDwarfmodeMap``: gained ``highlight`` parameter to control setting the tile highlight on the zoom target +- ``dfhack.maps.getWalkableGroup``: get the walkability group of a tile +- ``dfhack.gui.getMousePos``: support new optional ``allow_out_of_bounds`` parameter +- ``gui.FRAME_THIN``: a panel frame suitable for floating tooltips +- ``dfhack.buildings.completebuild``: expose new module API + +# 50.11-r2 + +## New Tools +- `spectate`: (reinstated) automatically follow dwarves, cycling among interesting ones +- `preserve-tombs`: keep tombs assigned to units when they die + +## New Features +- `logistics`: ``automelt`` now optionally supports melting masterworks; click on gear icon on `stockpiles` overlay frame +- `sort`: new search widgets for Info panel tabs, including all "Creatures" subtabs, all "Objects" subtabs, "Tasks", candidate assignment on the "Noble" subtab, and the "Work details" subtab under "Labor" +- `sort`: new search and filter widgets for the "Interrogate" and "Convict" screens under "Justice" +- `sort`: new search widgets for location selection screen (when you're choosing what kind of guildhall or temple to dedicate) +- `sort`: new search widgets for burrow assignment screen and other unit assignment dialogs +- `sort`: new search widgets for artifacts on the world/raid screen +- `sort`: new search widgets for slab engraving menu; can filter for only units that need a slab to prevent rising as a ghost +- `stocks`: hotkey for collapsing all categories on stocks screen + +## Fixes +- `buildingplan`: remove bars of ash, coal, and soap as valid building materials to match v50 rules +- `buildingplan`: fix incorrect required items being displayed sometimes when switching the planner overlay on and off +- `zone`: races without specific child or baby names will now get generic child/baby names instead of an empty string +- `zone`: don't show animal assignment link for cages and restraints linked to dungeon zones (which aren't normally assignable) +- `sort`: don't count mercenaries as appointed officials in the squad assignment screen +- `dwarfvet`: fix invalid job id assigned to ``Rest`` job, which could cause crashes on reload + +## Misc Improvements +- `overlay`: allow ``overlay_onupdate_max_freq_seconds`` to be dynamically set to 0 for a burst of high-frequency updates +- Help icons added to several complex overlays. clicking the icon runs `gui/launcher` with the help text in the help area +- `orders`: ``recheck`` command now only resets orders that have conditions that can be rechecked +- `sort`: added help button for squad assignment search/filter/sort +- `zone`: animals trained for war or hunting are now labeled as such in animal assignment screens +- `buildingplan`: support filtering cages by whether they are occupied +- `buildingplan`: show how many items you need to make when planning buildings +- `tailor`: now adds to existing orders if possible instead of creating new ones + +## Documentation +- unavailable tools are no longer listed in the tag indices in the online docs + +## API +- added ``Items::getCapacity``, returns the capacity of an item as a container (reverse-engineered), needed for `combine` + +## Lua +- added ``GRAY`` color aliases for ``GREY`` colors +- added ``dfhack.items.getCapacity`` to expose the new module API +- ``utils.search_text``: text search routine (generalized from internal ``widgets.FilteredList`` logic) + +## Removed +- ``FILTER_FULL_TEXT``: moved from ``gui.widgets`` to ``utils``; if your full text search preference is lost, please reset it in `gui/control-panel` + +# 50.11-r1 + +## New Tools +- `tubefill`: (reinstated) replenishes mined-out adamantine + +## Fixes +- `autolabor`: ensure vanilla work details are reinstated when the fort or the plugin is unloaded +- ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving` +- EventManager: Unit death event no longer misfires on units leaving the map + +## Misc Improvements +- `digtype`: designate only visible tiles by default, and use "auto" dig mode for following veins +- `digtype`: added options for designating only current z-level, this z-level and above, and this z-level and below +- `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable +- `hotkeys`: use vertical bars instead of "!" symbols for the DFHack logo in ascii mode to make it easier to read +- EventManager: guard against potential iterator invalidation if one of the event listeners were to modify the global data structure being iterated over +- EventManager: for ``onBuildingCreatedDestroyed`` events, changed firing order of events so destroyed events come before created events + +## Lua +- mouse key events are now aligned with internal DF semantics: ``_MOUSE_L`` indicates that the left mouse button has just been pressed and ``_MOUSE_L_DOWN`` indicates that the left mouse button is being held down. similarly for ``_MOUSE_R`` and ``_MOUSE_M``. 3rd party scripts may have to adjust. + +# 50.10-r1 + +## Fixes +- Linux launcher: allow Steam Overlay and game streaming to function +- `autobutcher`: don't ignore semi-wild units when marking units for slaughter + +## Misc Improvements +- 'sort': Improve combat skill scale thresholds + +# 50.09-r4 + +## New Features +- `dig`: new overlay for ASCII mode that visualizes designations for smoothing, engraving, carving tracks, and carving fortifications + +## Fixes +- `buildingplan`: make the construction dimensions readout visible again +- `seedwatch`: fix a crash when reading data saved by very very old versions of the plugin +- `gui/mod-manager`: don't continue to display overlay after the raws loading progress bar appears + +## Misc Improvements +- `sort`: add sort option for training need on squad assignment screen +- `sort`: filter mothers with infants, units with weak mental fortitude, and critically injured units on the squad assignment screen +- `sort`: display a rating relative to the current sort order next to the visible units on the squad assignment screen + +## Documentation +- add instructions for downloading development builds to the ``Installing`` page + +## API +- `overlay`: overlay widgets can now declare a ``version`` attribute. changing the version of a widget will reset its settings to defaults. this is useful when changing the overlay layout and old saved positions will no longer be valid. + +## Lua +- ``argparse.boolean``: convert arguments to lua boolean values. + +# 50.09-r3 + +## New Features +- `sort`: search, sort, and filter for squad assignment screen +- `zone`: advanced unit assignment screens for cages, restraints, and pits/ponds +- `buildingplan`: one-click magma/fire safety filter for planned buildings + +## Fixes +- Core: reload scripts in mods when a world is unloaded and immediately loaded again +- Core: fix text getting added to DFHack text entry widgets when Alt- or Ctrl- keys are hit +- `buildingplan`: ensure selected barrels and buckets are empty (or at least free of lye and milk) as per the requirements of the building +- `orders`: prevent import/export overlay from appearing on the create workorder screen +- `caravan`: corrected prices for cages that have units inside of them +- `tailor`: remove crash caused by clothing items with an invalid ``maker_race`` +- ``dialogs.MessageBox``: fix spacing around scrollable text +- `seedwatch`: ignore unplantable tree seeds +- `autobutcher`: fix ``ticks`` commandline option incorrectly rejecting positive integers as valid values + +## Misc Improvements +- Surround DFHack-specific UI elements with square brackets instead of red-yellow blocks for better readability +- `autobutcher`: don't mark animals for butchering if they are already marked for some kind of training (war, hunt) +- `hotkeys`: don't display DFHack logo in legends mode since it covers up important interface elements. the Ctrl-Shift-C hotkey to bring up the menu and the mouseover hotspot still function, though. +- `sort`: animals are now sortable by race on the assignment screens +- `createitem`: support creating items inside of bags + +## API +- ``Items::getValue()``: remove ``caravan_buying`` parameter since the identity of the selling party doesn't actually affect the item value +- `RemoteFortressReader`: add a ``force_reload`` option to the GetBlockList RPC API to return blocks regardless of whether they have changed since the last request +- ``Units``: new animal property check functions ``isMarkedForTraining(unit)``, ``isMarkedForTaming(unit)``, ``isMarkedForWarTraining(unit)``, and ``isMarkedForHuntTraining(unit)`` +- ``Gui``: ``getAnyStockpile`` and ``getAnyCivzone`` (along with their ``getSelected`` variants) now work through layers of ZScreens. This means that they will still return valid results even if a DFHack tool window is in the foreground. + +## Lua +- ``new()``: improved error handling so that certain errors that were previously uncatchable (creating objects with members with unknown vtables) are now catchable with ``pcall()`` +- ``dfhack.items.getValue()``: remove ``caravan_buying`` param as per C++ API change +- ``widgets.BannerPanel``: panel with distinctive border for marking DFHack UI elements on otherwise vanilla screens +- ``widgets.Panel``: new functions to override instead of setting corresponding properties (useful when subclassing instead of just setting attributes): ``onDragBegin``, ``onDragEnd``, ``onResizeBegin``, ``onResizeEnd`` +- ``dfhack.screen.readTile()``: now populates extended tile property fields (like ``top_of_text``) in the returned ``Pen`` object +- ``dfhack.units``: new animal property check functions ``isMarkedForTraining(unit)``, ``isMarkedForTaming(unit)``, ``isMarkedForWarTraining(unit)``, and ``isMarkedForHuntTraining(unit)`` +- ``dfhack.gui``: new ``getAnyCivZone`` and ``getAnyStockpile`` functions; also behavior of ``getSelectedCivZone`` and ``getSelectedStockpile`` functions has changes as per the related API notes + +# 50.09-r2 + +## New Plugins +- `3dveins`: reinstated for v50, this plugin replaces vanilla DF's blobby vein generation with veins that flow smoothly and naturally between z-levels +- `zone`: new searchable, sortable, filterable screen for assigning units to pastures +- `dwarfvet`: reinstated and updated for v50's new hospital mechanics; allow your animals to have their wounds treated at hospitals +- `dig`: new ``dig.asciiwarmdamp`` overlay that highlights warm and damp tiles when in ASCII mode. there is no effect in graphics mode since the tiles are already highlighted there + +## Fixes +- Fix extra keys appearing in DFHack text boxes when shift (or any other modifier) is released before the other key you were pressing +- `logistics`: don't autotrain domestic animals brought by invaders (they'll get attacked by friendly creatures as soon as you let them out of their cage) +- `logistics`: don't bring trade goods to depot if the only caravans present are tribute caravans +- `gui/create-item`: when choosing a citizen to create the chosen items, avoid choosing a dead citizen +- `logistics`: fix potential crash when removing stockpiles or turning off stockpile features + +## Misc Improvements +- `stockpiles`: include exotic pets in the "tameable" filter +- `logistics`: bring an autotraded bin to the depot if any item inside is tradeable instead of marking all items within the bin as untradeable if any individual item is untradeable +- `autonick`: add more variety to nicknames based on famous literary dwarves +- ``widgets.EditField``: DFHack edit fields now support cut/copy/paste with the system clipboard with Ctrl-X/Ctrl-C/Ctrl-V +- Suppress DF keyboard events when a DFHack keybinding is matched. This prevents, for example, a backtick from appearing in a textbox as text when you launch `gui/launcher` from the backtick keybinding. +- Dreamfort: give noble suites double-thick walls and add apartment doors + +## Documentation +- `misery`: rewrite the documentation to clarify the actual effects of the plugin + +## API +- ``Units::getUnitByNobleRole``, ``Units::getUnitsByNobleRole``: unit lookup API by role +- ``Items::markForTrade()``, ``Items::isRequestedTradeGood()``, ``Items::getValue``: see Lua notes below + +## Internals +- Price calculations fixed for many item types + +## Lua +- ``dfhack.units.getUnitByNobleRole``, ``dfhack.units.getUnitsByNobleRole``: unit lookup API by role +- ``dfhack.items.markForTrade``: mark items for trade +- ``dfhack.items.isRequestedTradeGood``: discover whether an item is named in a trade agreement with an active caravan +- ``dfhack.items.getValue``: gained optional ``caravan`` and ``caravan_buying`` parameters for prices that take trader races and agreements into account +- ``widgets.TextButton``: wraps a ``HotkeyLabel`` and decorates it to look more like a button + +# 50.09-r1 + +## Internals + +- Core: update SDL interface from SDL1 to SDL2 + +# 50.08-r4 + +## New Plugins +- `logistics`: automatically mark and route items or animals that come to monitored stockpiles. options are toggleable on an overlay that comes up when you have a stockpile selected. + +## Fixes +- `buildingplan`: don't include artifacts when max quality is masterful +- `dig-now`: clear item occupancy flags for channeled tiles that had items on them +- `RemoteFortressReader`: fix a crash with engravings with undefined images + +## Misc Improvements +- `autonick`: additional nicknames based on burrowing animals, colours, gems, and minerals +- `stockpiles`: added ``barrels``, ``organic``, ``artifacts``, and ``masterworks`` stockpile presets +- `orders`: only display import/export/sort/clear panel on main orders screen +- `orders`: refine order conditions for library orders to reduce cancellation spam +- Blueprint library: dreamfort: full rewrite and update for DF v50 +- Blueprint library: pump_stack: updated walkthrough and separated dig and channel steps so boulders can be cleared +- Blueprint library: aquifer_tap: updated walkthrough +- `dig-now`: can now handle digging obsidian that has been formed from magma and water + +## Documentation +- `blueprint-library-guide`: update Dreamfort screenshots and links, add ``aquifer_tap`` screenshot + +# 50.08-r3 + +## Fixes +- Fix crash for some players when they launch DF outside of the Steam client + +# 50.08-r2 + +## New Plugins +- `add-spatter`: (reinstated) allow mods to add poisons and magical effects to weapons +- `changeitem`: (reinstated) change item material, quality, and subtype +- `createitem`: (reinstated) create arbitrary items from the command line +- `deramp`: (reinstated) removes all ramps designated for removal from the map +- `flows`: (reinstated) counts map blocks with flowing liquids +- `lair`: (reinstated) mark the map as a monster lair (this avoids item scatter when the fortress is abandoned) +- `luasocket`: (reinstated) provides a Lua API for accessing network sockets +- `work-now`: (reinstated, renamed from ``workNow``) prevent dwarves from wandering aimlessly with "No job" after completing a task + +## Fixes +- DFHack screen backgrounds now use appropriate tiles in DF Classic +- RemoteServer: fix crash on malformed json in ``dfhack-config/remote-server.json`` +- `autolabor`: work detail override warning now only appears on the work details screen +- `RemoteFortressReader`: ensured names are transmitted in UTF-8 instead of CP437 + +## Misc Improvements +- `autodump`: no longer checks for a keyboard cursor before executing, so ``autodump destroy`` (which doesn't require a cursor) can still function +- Settings: recover gracefully when settings files become corrupted (e.g. by DF CTD) +- `orders`: update orders in library for prepared meals, bins, archer uniforms, and weapons +- `gui/control-panel`: new preference for whether filters in lists search for substrings in the middle of words (e.g. if set to true, then "ee" will match "steel") +- `gui/design`: Improved performance for drawing shapes +- Dreamfort: improve traffic patterns throughout the fortress +- `gui/blueprint`: recording of stockpile layouts and categories is now supported. note that detailed stockpile configurations will *not* be saved (yet) +- Core: new commandline flag/environment var: pass ``--disable-dfhack`` on the Dwarf Fortress commandline or specify ``DFHACK_DISABLE=1`` in the environment to disable DFHack for the current session. +- `overlay`: add links to the quickstart guide and the control panel on the DF title screen +- Window behavior: non-resizable windows now allow dragging by their frame edges by default +- `gui/autodump`: fort-mode keybinding: Ctrl-H (when ``armok`` tools are enabled in `gui/control-panel`) +- Window behavior: if you have multiple DFHack tool windows open, scrolling the mouse wheel while over an unfocused window will focus it and raise it to the top +- `stockpiles`: allow filtering creatures by tameability + +## Internals +- ``dfhack.internal``: added memory analysis functions: ``msizeAddress``, ``getHeapState``, ``heapTakeSnapshot``, ``isAddressInHeap``, ``isAddressActiveInHeap``, ``isAddressUsedAfterFreeInHeap``, ``getAddressSizeInHeap``, and ``getRootAddressOfHeapObject`` + +## Lua +- ``overlay.reload()``: has been renamed to ``overlay.rescan()`` so as not to conflict with the global ``reload()`` function. If you are developing an overlay, please take note of the new function name for reloading your overlay during development. +- ``gui``: changed frame naming scheme to ``FRAME_X`` rather than ``X_FRAME``, and added aliases for backwards compatibility. (for example ``BOLD_FRAME`` is now called ``FRAME_BOLD``) +- ``ensure_keys``: walks a series of keys, creating new tables for any missing values + +## Removed +- `orders`: ``library/military_include_artifact_materials`` library file removed since recent research indicates that platinum blunt weapons and silver crossbows are not more effective than standard steel. the alternate military orders file was also causing unneeded confusion. + +# 50.08-r1 + +## Fixes +- `autoclothing`: eliminate game lag when there are many inventory items in the fort +- `buildingplan`: fixed size limit calculations for rollers +- `buildingplan`: fixed items not being checked for accessibility in the filter and item selection dialogs +- `dig-now`: properly detect and complete smoothing designations that have been converted into active jobs + +## Misc Improvements +- `buildingplan`: planner panel is minimized by default and now remembers minimized state +- `buildingplan`: can now filter by gems (for gem windows) and yarn (for ropes in wells) +- ``toggle-kbd-cursor``: add hotkey for toggling the keyboard cursor (Alt-K) +- ``version``: add alias to display the DFHack help (including the version number) so something happens when players try to run "version" +- `gui/control-panel`: add preference option for hiding the terminal console on startup +- `gui/control-panel`: add preference option for hiding "armok" tools in command lists +- ``Dwarf Therapist``: add a warning to the Labors screen when Dwarf Therapist is active so players know that changes they make to that screen will have no effect. If you're starting a new embark and nobody seems to be doing anything, check your Labors tab for this warning to see if Dwarf Therapist thinks it is in control (even if it's not running). +- `overlay`: add the DFHack version string to the DF title screen + +## Lua +- ``widgets.RangeSlider``: new mouse-controlled two-headed slider widget +- ``gui.ZScreenModal``: ZScreen subclass for modal dialogs +- ``widgets.CycleHotkeyLabel``: exposed "key_sep" and "option_gap" attributes for improved stylistic control. + +## Removed +- `title-version`: replaced by an `overlay` widget + +# 50.07-r1 + +## New Plugins +- `faststart`: speeds up the "Loading..." screen so the Main Menu appears faster + +## Fixes +-@ `hotkeys`: hotkey hints on menu popup will no longer get their last character cut off by the scrollbar +-@ ``launchdf``: launch Dwarf Fortress via the Steam client so Steam Workshop is functional +- `blueprint`: interpret saplings, shrubs, and twigs as floors instead of walls +- `combine`: fix error processing stockpiles with boundaries that extend outside of the map +-@ `prospector`: display both "raw" Z levels and "cooked" elevations +- `stockpiles`: fix crash when importing settings for gems from other worlds +-@ `stockpiles`: allow numbers in saved stockpile filenames + +## Misc Improvements +-@ `buildingplan`: items in the item selection dialog should now use the same item quality symbols as the base game +-@ `buildingplan`: hide planner overlay while the DF tutorial is active so that it can detect when you have placed the carpenter's workshop and bed and allow you to finish the tutorial +- `buildingplan`: can now filter by cloth and silk materials (for ropes) +-@ `buildingplan`: rearranged elements of ``planneroverlay`` interface +-@ `buildingplan`: rearranged elements of ``itemselection`` interface +-@ Mods: scripts in mods that are only in the steam workshop directory are now accessible. this means that a script-only mod that you never mark as "active" when generating a world will still receive automatic updates and be usable from in-game +-@ Mods: scripts from only the most recent version of an installed mod are added to the script path +-@ Mods: give active mods a chance to reattach their load hooks when a world is reloaded +- `gui/control-panel`: bugfix services are now enabled by default +- Core: hide DFHack terminal console by default when running on Steam Deck + +## Documentation +- `installing`: updated to include Steam installation instructions + +## Lua +- added two new window borders: ``gui.BOLD_FRAME`` for accented elements and ``gui.INTERIOR_MEDIUM_FRAME`` for a signature-less frame that's thicker than the existing ``gui.INTERIOR_FRAME`` + +# 50.07-beta2 + +## New Plugins +- `getplants`: reinstated: designate trees for chopping and shrubs for gathering according to type +- `prospector`: reinstated: get stone, ore, gem, and other tile property counts in fort mode. + +## Fixes +-@ `buildingplan`: filters are now properly applied to planned stairs +-@ `buildingplan`: existing carved up/down stairs are now taken into account when determining which stair shape to construct +- `buildingplan`: upright spike traps are now placed extended rather than retracted +- `buildingplan`: you can no longer designate constructions on tiles with magma or deep water, mirroring the vanilla restrictions +-@ `buildingplan`: fixed material filters getting lost for planning buildings on save/reload +-@ `buildingplan`: respect building size limits (e.g. roads and bridges cannot be more than 31 tiles in any dimension) +- `tailor`: properly discriminate between dyed and undyed cloth +-@ `tailor`: no longer default to using adamantine cloth for producing clothes +- `tailor`: take queued orders into account when calculating available materials +- `tailor`: skip units who can't wear clothes +- `tailor`: identify more available items as available, solving issues with over-production + +## Misc Improvements +- `buildingplan`: filters and global settings are now ignored when manually choosing items for a building, allowing you to make custom choices independently of the filters that would otherwise be used +- `buildingplan`: if `suspendmanager` is running, then planned buildings will be left suspended when their items are all attached. `suspendmanager` will unsuspend them for construction when it is safe to do so. +- `buildingplan`: add option for autoselecting the last manually chosen item (like `automaterial` used to do) +- `confirm`: adds confirmation for removing burrows via the repaint menu +- `stockpiles`: support applying stockpile configurations with fully enabled categories to stockpiles in worlds other than the one where the configuration was exported from +- `stockpiles`: support partial application of a saved config based on dynamic filtering (e.g. disable all tallow in a food stockpile, even tallow from world-specific generated creatures) +- `stockpiles`: additive and subtractive modes when applying a second stockpile configuration on top of a first +- `stockpiles`: write player-exported stockpile configurations to the ``dfhack-config/stockpiles`` folder. If you have any stockpile configs in other directories, please move them to that folder. +- `stockpiles`: now includes a library of useful stockpile configs (see docs for details) +- `automelt`: now allows metal chests to be melted (workaround for DF bug 2493 is no longer needed) +- `orders`: add minimize button to overlay panel so you can get it out of the way to read long statue descriptions when choosing a subject in the details screen +- `orders`: add option to delete exported files from the import dialog +- `enable`: can now interpret aliases defined with the `alias` command +- Mods: scripts in mods are now automatically added to the DFHack script path. DFHack recognizes two directories in a mod's folder: ``scripts_modinstalled/`` and ``scripts_modactive/``. ``scripts_modinstalled/`` folders will always be added the script path, regardless of whether the mod is active in a world. ``scripts_modactive/`` folders will only be added to the script path when the mod is active in the current loaded world. + +## Documentation +- `modding-guide`: guide updated to include information for 3rd party script developers +- the ``untested`` tag has been renamed to ``unavailable`` to better reflect the status of the remaining unavailable tools. most of the simply "untested" tools have now been tested and marked as working. the remaining tools are known to need development work before they are available again. + +## Lua +- ``widgets.Label``: tokens can now specify a ``htile`` property to indicate the tile that should be shown when the Label is hovered over with the mouse +- ``widgets.Label``: click handlers no longer get the label itself as the first param to the click handler +- ``widgets.CycleHotkeyLabel``: options that are bare integers will no longer be interpreted as the pen color in addition to being the label and value +- ``widgets.CycleHotkeyLabel``: option labels and pens can now be functions that return a label or pen + +# 50.07-beta1 + +## Fixes +-@ `buildingplan`: items are now attached correctly to screw pumps and other multi-item buildings +-@ `buildingplan`: buildings with different material filters will no longer get "stuck" if one of the filters currently matches no items +- `showmood` properly count required number of bars and cloth when they aren't the main item for the strange mood + +## Misc Improvements +-@ `buildingplan`: can now filter by clay materials +-@ `buildingplan`: remember choice per building type for whether the player wants to choose specific items +-@ `buildingplan`: you can now attach multiple weapons to spike traps +-@ `buildingplan`: can now filter by whether a slab is engraved +-@ `buildingplan`: add "minimize" button to temporarily get the planner overlay out of the way if you would rather use the vanilla UI for placing the current building +-@ `buildingplan`: add ``buildingplan reset`` command for resetting all filters to defaults +-@ `buildingplan`: rename "Build" button to "Confirm" on the item selection dialog and change the hotkey from "B" to "C" +- `blueprint`: now writes blueprints to the ``dfhack-config/blueprints`` directory +- `blueprint-library-guide`: library blueprints have moved from ``blueprints`` to ``hack/data/blueprints`` +- `blueprint-library-guide`: player-created blueprints should now go in the ``dfhack-config/blueprints`` folder. please move your existing blueprints from ``blueprints`` to ``dfhack-config/blueprints``. you don't need to move the library blueprints -- those can be safely deleted from the old ``blueprints`` directory. +-@ `showmood`: clarify how many bars and/or cloth items are actually needed for the mood + +## Removed +-@ `buildingplan`: "heat safety" setting is temporarily removed while we investigate incorrect item matching + +# 50.07-alpha3 + +## Fixes +-@ ``widgets.HotkeyLabel``: don't trigger on click if the widget is disabled +- ``dfhack.job.isSuitableMaterial``: now properly detects lack of fire and magma safety for vulnerable materials with high melting points +- `dig-now`: fixed multi-layer channel designations only channeling every second layer + +## Misc Improvements +- `dig-now`: added handling of dig designations that have been converted into active jobs +- `buildingplan`: entirely new UI for building placement, item selection, and materials filtering! + +## API +- Gui focus strings will no longer get the "dfhack/" prefix if the string "dfhack/" already exists in the focus string +- ``Military``: New module for military functionality +- ``Military``: new ``makeSquad`` to create a squad +- ``Military``: changed ``getSquadName`` to take a squad identifier +- ``Military``: new ``updateRoomAssignments`` for assigning a squad to a barracks and archery range +- ``Maps::GetBiomeType`` renamed to ``Maps::getBiomeType`` for consistency +- ``Maps::GetBiomeTypeRef`` renamed to ``Maps::getBiomeTypeRef`` for consistency + +## Lua +- ``dfhack.job.attachJobItem()``: allows you to attach specific items to a job +- ``dfhack.screen.paintTile()``: you can now explicitly clear the interface cursor from a map tile by passing ``0`` as the tile value +- ``widgets.Label``: token ``tile`` properties can now be functions that return a value +- ``widgets.CycleHotkeyLabel``: add ``label_below`` attribute for compact 2-line output +-@ ``widgets.FilteredList``: search key matching is now case insensitive by default +-@ ``gui.INTERIOR_FRAME``: a panel frame style for use in highlighting off interior areas of a UI +- ``maps.getBiomeType``: exposed preexisting function to Lua + +## Removed +-@ ``gui.THIN_FRAME``: replaced by ``gui.INTERIOR_FRAME`` +- `automaterial`: all functionality has been merged into `buildingplan` + +# 50.07-alpha2 + +## Fixes +-@ `nestboxes`: fixed bug causing nestboxes themselves to be forbidden, which prevented citizens from using them to lay eggs. Now only eggs are forbidden. +-@ `autobutcher`: implemented work-around for Dwarf Fortress not setting nicknames properly, so that nicknames created in the in-game interface are detected & protect animals from being butchered properly. Note that nicknames for unnamed units are not currently saved by dwarf fortress - use ``enable fix/protect-nicks`` to fix any nicknames created/removed within dwarf fortress so they can be saved/reloaded when you reload the game. +-@ `seedwatch`: fix saving and loading of seed stock targets +- `autodump`: changed behaviour to only change ``dump`` and ``forbid`` flags if an item is successfully dumped. +-@ `autochop`: generate default names for burrows with no assigned names +- ``Buildings::StockpileIterator``: fix check for stockpile items on block boundary. +- `tailor`: block making clothing sized for toads; make replacement clothing orders use the size of the wearer, not the size of the garment +-@ `confirm`: fix fps drop when enabled +-@ `channel-safely`: fix an out of bounds error regarding the REPORT event listener receiving (presumably) stale id's + +## Misc Improvements +- `autobutcher`: logs activity to the console terminal instead of making disruptive in-game announcements +- DFHack tool windows that capture mouse clicks (and therefore prevent you from clicking on the "pause" button) now unconditionally pause the game when they open (but you can still unpause with the keyboard if you want to). Examples of this behavior: `gui/quickfort`, `gui/blueprint`, `gui/liquids` +- `showmood`: now shows the number of items needed for cloth and bars in addition to the technically correct but always confusing "total dimension" (150 per bar or 10,000 per cloth) +-@ Stopped mouse clicks from affecting the map when a click on a DFHack screen dismisses the window +- `confirm`: configuration data is now persisted globally. +- `tailor`: add support for adamantine cloth (off by default); improve logging + +## API +- ``Gui::any_civzone_hotkey``, ``Gui::getAnyCivZone``, ``Gui::getSelectedCivZone``: new functions to operate on the new zone system +- Units module: added new predicates for ``isGeldable()``, ``isMarkedForGelding()``, and ``isPet()`` + +## Lua +- ``dfhack.gui.getSelectedCivZone``: returns the Zone that the user has selected currently +- ``widgets.FilteredList``: Added ``edit_on_change`` optional parameter to allow a custom callback on filter edit change. +- ``widgets.TabBar``: new library widget (migrated from control-panel.lua) + +# 50.07-alpha1 + +## Fixes +- ``Units::isFortControlled``: Account for agitated wildlife +-@ Fix right click sometimes closing both a DFHack window and a vanilla panel +-@ Fixed issue with scrollable lists having some data off-screen if they were scrolled before being made visible +-@ `channel-safely`: fixed bug resulting in marker mode never being set for any designation +-@ `automelt`: fixed bug related to lua stack smashing behavior in returned stockpile configs +-@ `autochop`: fixed bug related to lua stack smashing behavior in returned stockpile configs +-@ `nestboxes`: now cancels any in-progress hauling jobs when it protects a fertile egg +-@ Fix persisted data not being written on manual save +-@ `nestboxes`: now scans for eggs more frequently and cancels any in-progress hauling jobs when it protects a fertile egg + +## Misc Improvements +-@ `automelt`: is now more resistent to vanilla savegame corruption +-@ `hotkeys`: DFHack logo is now hidden on screens where it covers important information when in the default position (e.g. when choosing an embark site) +- `misery`: now persists state with the fort +-@ `autodump`: reinstate ``autodump-destroy-item``, hotkey: Ctrl-K +- `autodump`: new hotkey for ``autodump-destroy-here``: Ctrl-H +-@ `dig`: new hotkeys for vein designation on z-level (Ctrl-V) and vein designation across z-levels (Ctrl-Shift-V) +-@ `clean`: new hotkey for `spotclean`: Ctrl-C +- `autobutcher`: changed defaults from 5 females / 1 male to 4 females / 2 males so a single unfortunate accident doesn't leave players without a mating pair +- `autobutcher`: now immediately loads races available at game start into the watchlist +-@ replaced DFHack logo used for the hover hotspot with a crisper image +-@ `orders`: recipe for silver crossbows removed from ``library/military`` as it is not a vanilla recipe, but is available in ``library/military_include_artifact_materials`` +- `stonesense`: added an ``INVERT_MOUSE_Z`` option to invert the mouse wheel direction + +## Documentation + +## API + +## Lua +- `overlay`: overlay widgets can now specify focus paths for the viewscreens they attach to so they only appear in specific contexts. see `overlay-dev-guide` for details. +- ``widgets.CycleHotkeyLabel``: Added ``key_back`` optional parameter to cycle backwards. +- ``widgets.HotkeyLabel``: Added ``setLabel`` method to allow easily updating the label text without mangling the keyboard shortcut. +- ``widgets.HotkeyLabel``: Added ``setOnActivate`` method to allow easily updating the ``on_activate`` callback. +- ``widgets.FilteredList``: Added ``case_sensitive`` optional parameter to determine if filtering is case sensitive. + +# 50.05-alpha3.1 + +## Fixes +-@ `seedwatch`: fix parameter parsing when setting targets + +# 50.05-alpha3 + +## New Plugins +- `autoslab`: automatically create work orders to engrave slabs for ghostly dwarves + +## Fixes +-@ DF screens can no longer get "stuck" on transitions when DFHack tool windows are visible. Instead, those DF screens are force-paused while DFHack windows are visible so the player can close them first and not corrupt the screen sequence. The "PAUSE FORCED" indicator will appear on these DFHack windows to indicate what is happening. +-@ allow launcher tools to launch themselves without hanging the game +-@ fix issues with clicks "passing through" some DFHack window elements to the screen below +- `getplants`: trees are now designated correctly +- `autoclothing`: fixed a crash that can happen when units are holding invalid items. +-@ `orders`: fix orders in library/basic that create bags +- `orders`: library/military now sticks to vanilla rules and does not add orders for normally-mood-only platinum weapons. A new library orders file ``library/military_include_artifact_materials`` is now offered as an alternate ``library/military`` set of orders that still includes the platinum weapons. +- `autochop`: fixed a crash when processing trees with corrupt data structures (e.g. when a trunk tile fails to fall when the rest of the tree is chopped down) + +## Misc Improvements +-@ DFHack windows can now be "defocused" by clicking somewhere not over the tool window. This has the same effect as pinning previously did, but without the extra clicking. +- `getplants`: ID values will now be accepted regardless of case +-@ Windows now display "PAUSE FORCED" on the lower border if the tool is forcing the game to pause +-@ New borders for DFHack tool windows -- tell us what you think! +-@ `autoclothing`: merged the two separate reports into the same command. +- `automelt`: stockpile configuration can now be set from the commandline +- `channel-safely`: new monitoring for cave-in prevention +-@ `gui/control-panel`: you can now configure whether DFHack tool windows should pause the game by default +- `gui/control-panel`: new global hotkey for quick access: Ctrl-Shift-E +-@ `hotkeys`: clicking on the DFHack logo no longer closes the popup menu +- `nestboxes`: now saves enabled state in your savegame +- `gui/launcher`: sped up initialization time for faster window appearance +- `orders`: orders plugin functionality is now accessible via an `overlay` widget when the manager orders screen is open +- `gui/quickcmd`: now has its own global keybinding for your convenience: Ctrl-Shift-A +- `seedwatch`: now persists enabled state in the savegame, automatically loads useful defaults, and respects reachability when counting available seeds +-@ `quickfort`: planned buildings are now properly attached to any pertinent overlapping zones + +## Documentation +- `compile`: instructions added for cross-compiling DFHack for Windows from a Linux Docker builder +-@ Quickstart guide has been updated with info on new window behavior and how to use the control panel + +## API +- ``Buildings::containsTile()``: no longer takes a ``room`` parameter since that's not how rooms work anymore. If the building has extents, the extents will be checked. otherwise, the result just depends on whether the tile is within the building's bounding box. +- ``Units::getCitizens()``: gets a list of citizens, which otherwise you'd have to iterate over all units the world to discover +- ``Screen::Pen``: now accepts ``top_of_text`` and ``bottom_of_text`` properties to support offset text in graphics mode +- `overlay`: overlay widgets can now specify a default enabled state if they are not already set in the player's overlay config file +- ``Lua::Push``: now supports ``std::unordered_map`` + +## Lua +- `helpdb`: new function: ``helpdb.refresh()`` to force a refresh of the database. Call if you are a developer adding new scripts, loading new plugins, or changing help text during play +- `helpdb`: changed from auto-refreshing every 60 seconds to only refreshing on explicit call to ``helpdb.refresh()``. docs very rarely change during a play session, and the automatic database refreshes were slowing down the startup of `gui/launcher` and anything else that displays help text. +- ``widgets.Label``: ``label.scroll()`` now understands ``home`` and ``end`` keywords for scrolling to the top or bottom +- ``widgets.List``: new callbacks for double click and shift double click +- ``dfhack.units.getCitizens()``: gets a list of citizens +-@ ``gui.ZScreen``: new attribute: ``defocusable`` for controlling whether a window loses keyboard focus when the map is clicked +- ``widgets.Label``: token ``tile`` properties can now be either pens or numeric texture ids +- `tiletypes`: now has a Lua API! ``tiletypes_setTile`` + +## Removed +- `autohauler`: no plans to port to v50, as it just doesn't make sense with the new work detail system + +# 50.05-alpha2 + +## Fixes +-@ `autofarm`: don't duplicate status line entries for crops with no current supply +-@ `orders`: allow the orders library to be listed and imported properly (if you previously copied the orders library into your ``dfhack-config/orders`` directory to work around this bug, you can remove those files now) +- `tailor`: now respects the setting of the "used dyed clothing" standing order toggle + +# 50.05-alpha1 + +## Fixes +- ``widgets.WrappedLabel``: no longer resets scroll position when window is moved or resized + +## Misc Improvements +- Scrollable widgets now react to mouse wheel events when the mouse is over the widget +- the ``dfhack-config/scripts/`` folder is now searched for scripts by default +- `hotkeys`: overlay hotspot widget now shows the DFHack logo in graphics mode and "DFHack" in text mode +- `script-paths`: removed "raw" directories from default script paths. now the default locations to search for scripts are ``dfhack-config/scripts``, ``save/*/scripts``, and ``hack/scripts`` +- ``init.d``: directories have moved from the ``raw`` subfolder (which no longer exists) to the root of the main DF folder or a savegame folder + +## Documentation +- `overlay-dev-guide`: added troubleshooting tips and common development workflows +- added DFHack architecture diagrams to the dev intro +- added DFHack Quickstart guide + +## API +- ``Gui::getDwarfmodeDims``: now only returns map viewport dimensions; menu dimensions are obsolete +- ``Gui::getDFViewscreen``: returns the topmost underlying DF viewscreen +- ``Screen::Pen``: now accepts ``keep_lower`` and ``write_to_lower`` properties to support foreground and background textures in graphics mode + +## Lua +- Removed ``os.execute()`` and ``io.popen()`` built-in functions +- ``gui.View``: ``visible`` and ``active`` can now be functions that return a boolean +- ``widgets.Panel``: new attributes to control window dragging and resizing with mouse or keyboard +- ``widgets.Window``: Panel subclass with attributes preset for top-level windows +- ``widgets.CycleHotkeyLabel``: now supports rendering option labels in the color of your choice +- ``widgets.CycleHotkeyLabel``: new functions ``setOption()`` and ``getOptionPen()`` +- ``widgets.ToggleHotkeyLabel``: now renders the ``On`` option in green text +- ``widgets.Label``: tiles can now have an associated width +- `overlay`: ``OverlayWidget`` now inherits from ``Panel`` instead of ``Widget`` to get all the frame and mouse integration goodies +- ``dfhack.gui.getDFViewscreen()``: returns the topmost underlying DF viewscreen +- ``gui.ZScreen``: Screen subclass that implements window raising, multi-viewscreen input handling, and viewscreen event pass-through so the underlying map can be interacted with and dragged around while DFHack screens are visible +- ``gui.View``: new function ``view:getMouseFramePos()`` for detecting whether the mouse is within (or over) the exterior frame of a view +- ``gui.CLEAR_PEN``: now clears the background and foreground and writes to the background (before it would always write to the foreground) +- ``gui.KEEP_LOWER_PEN``: a general use pen that writes associated tiles to the foreground while keeping the existing background + +## Removed +- ``fix-job-postings`` from the `workflow` plugin is now obsolete since affected savegames can no longer be loaded +- Ruby is no longer a supported DFHack scripting language diff --git a/docs/dev/Binpatches.rst b/docs/dev/Binpatches.rst index a566576168..d59b1f8482 100644 --- a/docs/dev/Binpatches.rst +++ b/docs/dev/Binpatches.rst @@ -50,10 +50,20 @@ directly in memory at runtime:: If the name of the patch has no extension or directory separators, the script uses :file:`hack/patches//.dif`, thus auto-selecting -the version appropriate for the currently loaded executable. +the version appropriate for the currently loaded executable. The ``df-version`` +is the version string in the loaded symbol table. For example, if you want to +make a patch for all distributed verisons of DF 51.05, you'd provide a ``dif`` +file in each of the following directories: + +- :file:`hack/patches/v0.51.05 linux64 CLASSIC/mypatch.dif` +- :file:`hack/patches/v0.51.05 linux64 ITCH/mypatch.dif` +- :file:`hack/patches/v0.51.05 linux64 STEAM/mypatch.dif` +- :file:`hack/patches/v0.51.05 win64 CLASSIC/mypatch.dif` +- :file:`hack/patches/v0.51.05 win64 ITCH/mypatch.dif` +- :file:`hack/patches/v0.51.05 win64 STEAM/mypatch.dif` This is the preferred method; it's easier to debug, does not cause persistent -problems, and leaves file checksums alone. As with many other commands, users +problems, and leaves file checksums alone. As with many other commands, users can simply add it to `dfhack.init` to reapply the patch every time DF is run. diff --git a/docs/dev/Contributing.rst b/docs/dev/Contributing.rst index 5235b1c0f6..216d204969 100644 --- a/docs/dev/Contributing.rst +++ b/docs/dev/Contributing.rst @@ -44,7 +44,7 @@ General contribution guidelines * Update ``docs/changelog.txt`` and ``docs/about/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 or on Disord can easily get missed or forgotten. + Posts in the forum thread or on Discord can easily get missed or forgotten. * Work on :issue:`reported problems ` will take priority over ideas or suggestions. @@ -61,6 +61,19 @@ Code format * ``#include`` directives should be sorted: C++ libraries first, then DFHack modules, then ``df/`` headers, then local includes. Within each category they should be sorted alphabetically. +General C++ code guidelines +--------------------------- +* This project is currently built at the C++20 feature level, and C++20 features should be used when appropriate. C++23 features will be allowed once all of our build platforms support them. +* NEVER use ``using namespace`` in a header file. In source files, do not use ``using namespace std``; instead, import each STL identifier you need specifically (e.g. ``using std::string;``). +* Avoid platform specific code as much as possible. +* Avoid including ``Windows.h``; if you must, ensure that ``NOMINMAX`` and ``WIN32_LEAN_AND_MEAN`` are defined before including it. +* Do not include C headers (e.g. ````); use the C++ versions (e.g. ````) instead. +* Do not use ``std::string`` (or ``char *``) for path names; always use ``std::filesystem::path``. This avoids issues with encoding, especially on the Windows platform, which is roughly 80% of our user base. +* Do not use ``printf`` or similar functions for formatting strings; use C++ streams or ``fmt::format`` instead. We use the `fmt library `__ for formatting strings; this dependency is automatically fetched by our build system. +* Avoid out parameters; prefer returning a struct, pair, or tuple, or using ``std::optional`` instead. +* Prefer range for loops to traditional for loops when iterating over a container. +* Avoid macros when possible; prefer ``constexpr`` variables for constants and functions or templates for code generation. + .. _contributing-pr-guidelines: Pull request guidelines @@ -83,6 +96,15 @@ Pull request guidelines 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. +* Our continuous integration (CI) will perform certain automatic checks, + ensuring that your code conforms to the code format described above. It is + recommended to install `pre-commit `__ (e.g. using + your distribution's package manager, if on Linux, or using ``pip``) and enable + it by running ``pre-commit install`` from the top-level of any repository from + which you plan to create pull requests. This will perform those checks when + you create the commit locally, allowing you to fix any style issues before + creating the actual pull request. + * Try to keep pull requests relatively small so that they are easier to review and merge. @@ -98,6 +120,37 @@ Pull request guidelines or add "WIP" to the title. Otherwise, your pull request may be reviewed and/or merged prematurely. +* Avoid using force pushes to your pull request branch after it has been reviewed, + as this can make it difficult for reviewers to see what has changed since their + last review. If you need to make changes, consider creating a new commit instead + of amending or rebasing. We neither enforce nor recommend a "single commit" rule; if you do + choose to squash your commits, please ensure that the commit message is clear and descriptive of the changes made. + If your pull request has an unusually large number of commits, a maintainer may + request that you squash your commits into a smaller number of commits before merging. + +* All pull requests must be accompanied by a description of the changes made, and + any relevant information for reviewers. If your pull request addresses an + issue, please include a reference to that issue in the description (e.g. + "Fixes #1234"). If your pull request is related to another pull request, please + include a reference to that pull request in the description (e.g. "Related to + #1234"). + +* All pull requests which have user facing changes, including all new features, bug fixes, or + changes to existing functionality, must include an entry in the "Future" section of + the changelog for the relevant repository. If your pull request is merged, this entry + will be added to the appropriate changelog. These entries are used when preparing the release + notes for each release, so please be sure to include a clear and concise description + of the changes made. See `build-changelog` for more information on the changelog format. + Changes that do not require a changelog entry are mainly those that are purely internal, + such as refactoring not intended to change semantics, code cleanup, changes to CI implementation + or to documentation, or changes directly related to the release process. When in doubt, + assume a changelog entry will be required. + +* Pull requests that add or modify tools must include a corresponding update to the documentation + for that tool. Similarly, pull requests that add or modify either the C++ or Lua APIs + must include a corresponding update to the appropriate API documentation. + See `docs-standards` for details. + Other ways to help ================== DFHack is a software project, but there's a lot more to it than programming. diff --git a/docs/dev/Dev-intro.rst b/docs/dev/Dev-intro.rst index 9253795eb4..92967cf15e 100644 --- a/docs/dev/Dev-intro.rst +++ b/docs/dev/Dev-intro.rst @@ -2,9 +2,9 @@ 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. +This page provides an overview of DFHack components. 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: @@ -13,7 +13,6 @@ Other pages that may be relevant include: - `documentation` - `license` - .. contents:: Contents :local: @@ -22,33 +21,54 @@ Other pages that may be relevant include: Architecture diagrams --------------------- -These two diagrams give a very high level overview of where DFHack injects -itself in the DF call structure and how the pieces of DFHack itself fit -together: +These two diagrams give a very high level overview of where DFHack fits into +the DF call structure and how the pieces of DFHack itself fit together: -.. image:: https://drive.google.com/uc?export=download&id=1-2yeNMC7WHgMfZ9iQsDQ0dEbLukd_xyU +.. image:: https://lh3.googleusercontent.com/d/1-2yeNMC7WHgMfZ9iQsDQ0dEbLukd_xyU :alt: DFHack logic injection diagram :target: https://drive.google.com/file/d/1-2yeNMC7WHgMfZ9iQsDQ0dEbLukd_xyU :align: center -As seen in the diagram Dwarf Fortress utilizes the SDL library, this provides us with an easy to isolate -injection point for DFHack. +When DF loads, it looks for a "dfhooks" library file (named appropriately per +platform, e.g. ``libdfhooks.so`` on Linux). DFHack provides this library file, +and DF calls the API functions at specific points in its initialization code +and main event loop. + +In addition, DFHack can "interpose" the virtual methods of DF classes. In +particular, it intercepts calls to the interface functions of each DF +viewscreen class to provide `overlay` functionality. + +The dfhooks API is defined in DF's open source component ``g_src``: +https://github.com/Putnam3145/Dwarf-Fortress--libgraphics--/blob/master/g_src/dfhooks.h -.. image:: https://drive.google.com/uc?export=download&id=1--JoEQbzKpVUOkRKDD9HxvuCqtom780F +.. image:: https://lh3.googleusercontent.com/d/1--JoEQbzKpVUOkRKDD9HxvuCqtom780F :alt: DFHack tool call graph :target: https://drive.google.com/file/d/1--JoEQbzKpVUOkRKDD9HxvuCqtom780F :align: center +DF memory layout is encoded in the xml files of the +`df-structures `__ repository. These +XML files are converted into C++ header files during the build process. + +The functionality of the DFHack core library is grouped by `Modules`_ that +access DF memory according to the defined structures. + +The Lua API layer makes DFHack core facilities available to Lua scripts. Both +the C++ and Lua APIs have a library of convenience functions, though only the +Lua API is `well-documented `. Notably, the entire +`UI widget library` is Lua-only, though C++ plugins can easily +access it via the plugin-Lua interop layer. + 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 use to get started in the ``plugins/examples`` -folder, and the source code of existing plugins can also be helpful. +templates that you can use to get started in the :source:`plugins/examples` +folder, and the source code of existing plugins is also 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``. +call to ``DFHACK_PLUGIN`` in :source:`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`` @@ -57,7 +77,7 @@ 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 -example ``skeleton`` plugin or ``PluginManager.cpp``. +example :source:`skeleton ` plugin. 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 @@ -69,7 +89,7 @@ Scripts ------- DFHack scripts are written in Lua, with a `well-documented library `. -Referring to existing scripts as well as the API documentation can be helpful +Referring to existing scripts as well as the API documentation is very helpful when developing new scripts. Scripts included in DFHack live in a separate @@ -81,8 +101,9 @@ Core ---- The `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. +responsible for implementing the dfhooks API that DF calls, it provides a +console, and it provides an interface for plugins and scripts to interact with +DF. Modules ------- @@ -93,8 +114,8 @@ 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 `, although -some functions (and some entire modules) are currently only available in C++. +Most modules are also `exposed to Lua `, although some +functions (and some entire modules) are currently only available in C++. Remote access interface ----------------------- diff --git a/docs/dev/Documentation.rst b/docs/dev/Documentation.rst index 07242d698c..0ba61c404d 100644 --- a/docs/dev/Documentation.rst +++ b/docs/dev/Documentation.rst @@ -67,6 +67,8 @@ with relevant tags. These are used to compile indices and generate cross-links b commands, both in the HTML documents and in-game. See the list of available `tag-list` and think about which categories your new tool belongs in. +.. _docs-links: + Links ----- @@ -268,7 +270,7 @@ examples:: Show help text. ``-l``, ``--quality `` Set the quality of the architecture for built architected - builtings. + buildings. ``-q``, ``--quiet`` Suppress informational output (error messages are still printed). @@ -418,6 +420,8 @@ Once you have pip available, you can install Sphinx with the following command:: Note that this may require opening a new (admin) command prompt if you just installed pip from the same command prompt. +.. _docs-build: + Building the documentation ========================== @@ -427,16 +431,18 @@ Sphinx to build the docs: Using CMake ----------- -See our page on `build options ` +See our page on `build options `. -Running Sphinx manually ------------------------ +Using the documentation build script +------------------------------------ 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. The -``docs/build.py`` script will build the documentation in any specified formats -(HTML only by default) using the same command that CMake runs when building the -docs. Run the script with ``--help`` to see additional options. +you only want to rebuild the documentation regardless of any code changes. + +The recommended approach is the ``docs/build.py`` script. This is the same +script that CMake uses internally, which wraps Sphinx with a few additional +options to handle common cases and can build multiple documentation formats with +a single invocation. Examples: @@ -449,15 +455,43 @@ Examples: * ``docs/build.py --clean`` Build HTML and force a clean build (all source files are re-read) -The resulting documentation will be stored in ``docs/html`` and/or ``docs/text``. +* ``docs/build.py --help`` + Display a full list of available options + +The resulting documentation will be stored in ``docs/html`` and/or ``docs/text`` +(or generally, a subfolder of ``docs/`` named after the requested output format(s)). + +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 the ``pdflatex`` command, 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:: + + docs/build.py pdf + +Running Sphinx manually +----------------------- + +If ``docs/build.py`` does not support what you need, you can also run Sphinx +manually. This is primarily useful for low-level debugging. -Alternatively, you can run Sphinx manually with:: +For a good starting point, add the ``--debug`` argument to your call to +``docs/build.py``. This will cause the script to print out the Sphinx command(s) +that it is running. - sphinx-build . docs/html +Some examples: -or, to build plain-text output:: +* ``sphinx-build . docs/html`` + Build the HTML docs (equivalent to ``docs/build.py``) - sphinx-build -b text . docs/text +* ``sphinx-build -b text . docs/text`` + Build the plain text docs (equivalent to ``docs/build.py text``) + +* ``sphinx-build -M latexpdf . docs/pdf`` + Build the PDF docs Sphinx has many options to enable clean builds, parallel builds, logging, and more - run ``sphinx-build --help`` for details. If you specify a different @@ -466,20 +500,47 @@ folder. Also be aware that when running ``sphinx-build`` directly, the ``docs/html`` folder may be polluted with intermediate build files that normally get written in the cmake ``build`` directory. -Building a PDF version ----------------------- +Troubleshooting +=============== -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 errors are typically printed by Sphinx, so ensure that you are not silencing Sphinx output. - docs/build.py pdf +When built with ``docs/build.py`` or CMake, errors are also logged to +``build/docs//sphinx-warnings.txt`` (for instance, if you are building +the HTML docs, ``build/docs/html/sphinx-warnings.txt``). + + +"undefined label" +----------------- + +Typical causes: + +* You have used single backticks for an inline code snippet, where double backticks should be used instead (see `docs-links`):: + + `this is an invalid inline code snippet (actually a link)` + ``this is a valid inline code snippet`` + +* You are attempting to link to a section/label, but either it does not have a label defined or you have spelled it incorrectly:: + + .. my-label: + + This is where the link should go to. + + ... + + This is `a valid link to the earlier label `. So is `my-label`. + +"toctree contains reference to document that doesn't have a title" +------------------------------------------------------------------ + +Due to the nature of our autogenerated documentation, this can sometimes occur +when switching between branches that have different autogenerated files, and can +result in autogenerated documentation (e.g. for individual tools) being missing +from the table of contents, or links failing to generate. -Alternatively, you can run Sphinx manually with:: +The quickest resolution is a clean docs build:: - sphinx-build -M latexpdf . docs/pdf + docs/build.py --clean .. _build-changelog: @@ -498,6 +559,8 @@ 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 +* ``plugins/stonesense/changelog.txt`` for changes made in the ``stonesense`` + repo Building the changelogs generates two files: ``docs/changelogs/news.rst`` and ``docs/changelogs/news-dev.rst``. These correspond to `changelog` and @@ -513,8 +576,8 @@ Changelog syntax ---------------- .. include:: /docs/changelog.txt - :start-after: ===help - :end-before: ===end + :start-after: ===syntax-reference-start + :end-before: ===syntax-reference-end .. _docs-ci: diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 9f23866604..e8a1cd9f67 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -25,6 +25,13 @@ It does not describe all of the utility functions implemented by Lua files located in :file:`hack/lua/*` (:file:`library/lua/*` in the git repo). +.. admonition:: Is this the DF or DFHack Lua API? + :class: warning + + This document describes the Lua API provided by DFHack, not + the Lua API provided by Dwarf Fortress. For information about DF's Lua API, see + :wiki:`Lua scripting` + on the Dwarf Fortress Wiki. .. contents:: Contents :local: @@ -48,7 +55,7 @@ also broadly maps to the ``df`` namespace in the headers generated for C++. The wrapper provides almost raw access to the memory of the game, so mistakes in manipulating objects are as likely to crash the game as - equivalent plain C++ code would be - e.g. null pointer access is safely + equivalent plain C++ code would be - e.g., null pointer access is safely detected, but dangling pointers aren't. Objects managed by the wrapper can be broadly classified into the following groups: @@ -182,7 +189,7 @@ They implement the following features: Valid fields of the structure may be accessed by subscript. - Primitive typed fields, i.e. numbers & strings, are converted + Primitive typed fields, i.e., numbers & strings, are converted to/from matching lua values. The value of a pointer is a reference to the target, or ``nil``/NULL. Complex types are represented by a reference to the field within the structure; unless recursive @@ -197,11 +204,12 @@ They implement the following features: are automatically exposed in their exact type, and the reverse rule would make access to superclass fields unreliable. -* ``ref._field(field)`` +* ``ref:_field(field)`` Returns a reference to a valid field. That is, unlike regular subscript, it returns a reference to the field within the structure - even for primitive typed fields and pointers. + even for primitive typed fields and pointers. Fails with an error + if the field is not found. * ``ref:vmethod(args...)`` @@ -246,7 +254,7 @@ Implemented features: may return a default value, or auto-resize instead for convenience. Currently this relaxed mode is implemented by df-flagarray aka BitArray. -* ``ref._field(index)`` +* ``ref:_field(index)`` Like with structs, returns a pointer to the array element, if possible. Flag and bit arrays cannot return such pointer, so it fails with an error. @@ -283,11 +291,15 @@ Numerical indices correspond to the shift value, and if a subfield occupies multiple bits, the ``ipairs`` order would have a gap. +Additionally, bitfields have a ``whole`` property, +which returns the value of the bitfield as an +integer. + Since currently there is no API to allocate a bitfield object fully in GC-managed lua heap, consider using the lua table assignment feature outlined below in order to pass bitfield values to dfhack API functions that need -them, e.g. ``matinfo:matches{metal=true}``. +them, e.g., ``matinfo:matches{metal=true}``. Named types @@ -306,7 +318,36 @@ All types and the global object have the following features: * ``type._identity`` Contains a lightuserdata pointing to the underlying - ``DFHack::type_instance`` object. + ``DFHack::type_identity`` object. + +All compound types (structs, classes, unions, and the global object) support: + +* ``type._union`` + + ``true`` if the type represents a union, otherwise ``nil``. + +* ``type._fields`` + + Contains a table mapping field names to descriptions of the type's fields, + including data members and functions. Iterating with ``pairs()`` returns data + fields in the order they are defined in the type. Functions and globals may + appear in an arbitrary order. + + Each entry contains the following fields: + + * ``name``: the name of the field (matches the ``_fields`` table key) + * ``offset``: for data members, the position of the field relative to the start of the type, in bytes + * ``count``: for arrays, the number of elements + * ``mode``: implementation detail. See ``struct_field_info::Mode`` in ``DataDefs.h``. + + Each entry may also contain the following fields, depending on its type: + + * ``type_name``: present for most fields; a string representation of the field's type + * ``type``: the type object matching the field's type; present if such an object exists + (e.g., present for DF types, absent for primitive types) + * ``type_identity``: present for most fields; a lightuserdata pointing to the field's underlying ``DFHack::type_identity`` object + * ``index_enum``, ``ref_target``: the type object corresponding to the field's similarly-named XML attribute, if present + * ``union_tag_field``, ``union_tag_attr``, ``original_name``: the string value of the field's similarly-named XML attribute, if present Types excluding the global object also support: @@ -325,14 +366,40 @@ Types excluding the global object also support: ``nil``, NULL or non-wrapper value as object; in this case the method returns ``nil``. +Enum types support the following: + +* ``type.next_item(index)`` + + Returns the next valid numeric value of the enum. It returns the + first enum value if ``index`` is greater than or equal to the max + enum value. + +* ``type.attrs`` + + A mapping of enum keys (usually integers) and values (usually strings) to + their attributes. e.g ``df.goal_type.attrs.STAY_ALIVE`` returns + ``{ short_name: "Stay Alive", achieved_short_name: "Stayed Alive" } }`` + +* ``type._attr_entry_type`` + + Returns the named ``struct-type`` type representing the table returned + by ``type.attrs``. + In addition to this, enum and bitfield types contain a bi-directional mapping between key strings and values, and also map ``_first_item`` and ``_last_item`` to the min and max values. -Struct and class types with instance-vector attribute in the -xml have a ``type.find(key)`` function that wraps the find -method provided in C++. +Struct and class types with an instance-vector attribute in the XML also support: + +* ``type.find(key)`` + + Returns an object from the instance vector that matches the key, where the + field is determined by the 'key-field' specified in the XML. + +* ``type.get_vector()`` + + Returns the instance vector e.g ``df.item.get_vector() == df.global.world.items.all`` Global functions ================ @@ -396,7 +463,7 @@ Recursive table assignment ========================== Recursive assignment is invoked when a lua table is assigned -to a C++ object or field, i.e. one of: +to a C++ object or field, i.e., one of: * ``ref:assign{...}`` * ``ref.field = {...}`` @@ -611,7 +678,7 @@ Miscellaneous * ``dfhack.curry(func,args...)``, or ``curry(func,args...)`` Returns a closure that invokes the function with args combined - both from the curry call and the closure call itself. I.e. + both from the curry call and the closure call itself. I.e., ``curry(func,a,b)(c,d)`` equals ``func(a,b,c,d)``. @@ -654,66 +721,69 @@ Locking and finalization Calls ``fn(obj,args...)``, then finalizes with ``obj:delete()``. +.. _persistent-api: Persistent configuration storage -------------------------------- -This api is intended for storing configuration options in the world itself. -It probably should be restricted to data that is world-dependent. - -Entries are identified by a string ``key``, but it is also possible to manage -multiple entries with the same key; their identity is determined by ``entry_id``. -Every entry has a mutable string ``value``, and an array of 7 mutable ``ints``. +This api is intended for storing tool state in the world savegame directory. It +is intended for data that is world-dependent. Global state that is independent +of the loaded world should be saved into a separate file named after the tool +in the ``dfhack-config/`` directory. -* ``dfhack.persistent.get(key)``, ``entry:get()`` +Entries are associated with the current loaded site (fortress) and are +identified by a string ``key``. The data will still be associated with a fort +if the fort is retired and then later unretired. Entries are stored as +serialized strings, but there are convenience functions for working with +arbitrary Lua tables. - Retrieves a persistent config record with the given string key, - or refreshes an already retrieved entry. If there are multiple - entries with the same key, it is undefined which one is retrieved - by the first version of the call. +* ``dfhack.persistent.getSiteData(key[, default])`` - Returns entry, or *nil* if not found. + Retrieves the Lua table associated with the current site and the given string + ``key``. If ``default`` is supplied, then it is returned if the key isn't + found in the current site's persistent data. -* ``dfhack.persistent.delete(key)``, ``entry:delete()`` + Example usage:: - Removes an existing entry. Returns *true* if succeeded. + local state = dfhack.persistent.getSiteData('my-script-name', {somedata={}}) -* ``dfhack.persistent.get_all(key[,match_prefix])`` +* ``dfhack.persistent.getSiteDataString(key)`` - Retrieves all entries with the same key, or starting with key..'/'. - Calling ``get_all('',true)`` will match all entries. + Retrieves the underlying serialized string associated with the current site + and the given string ``key``. Returns *nil* if the key isn't found in the + current site's persistent data. Most scripts will want to use ``getSiteData`` + instead. - If none found, returns nil; otherwise returns an array of entries. +* ``dfhack.persistent.saveSiteData(key, data)`` -* ``dfhack.persistent.save({key=str1, ...}[,new])``, ``entry:save([new])`` + Persists the given ``data`` (usually a table; can be of arbitrary complexity and depth) + in the world save, associated with the current site and the given ``key``. - Saves changes in an entry, or creates a new one. Passing true as - new forces creation of a new entry even if one already exists; - otherwise the existing one is simply updated. - Returns *entry, did_create_new* +* ``dfhack.persistent.saveSiteDataString(key, data_str)`` -Since the data is hidden in data structures owned by the DF world, -and automatically stored in the save game, these save and retrieval -functions can just copy values in memory without doing any actual I/O. -However, currently every entry has a 180+-byte dead-weight overhead. + Persists the given string in the world save, associated with the current site + and the given ``key``. -It is also possible to associate one bit per map tile with an entry, -using these two methods: +* ``dfhack.persistent.deleteSiteData(key)`` -* ``entry:getTilemask(block[, create])`` + Removes the existing entry associated with the current site and the given + ``key``. Returns *true* if succeeded. - Retrieves the tile bitmask associated with this entry in the given map - block. If ``create`` is *true*, an empty mask is created if none exists; - otherwise the function returns *nil*, which must be assumed to be the same - as an all-zero mask. +* ``dfhack.persistent.getWorldData(key[, default])`` +* ``dfhack.persistent.getWorldDataString(key)`` +* ``dfhack.persistent.saveWorldData(key, data)`` +* ``dfhack.persistent.saveWorldDataString(key, data_str)`` +* ``dfhack.persistent.deleteWorldData(key)`` -* ``entry:deleteTilemask(block)`` + Same semantics as for the ``Site`` functions, but will associated the data + with the global world context. - Deletes the associated tile mask from the given map block. +* ``dfhack.persistent.getUnsavedSeconds()`` -Note that these masks are only saved in fortress mode, and also that deleting -the persistent entry will **NOT** delete the associated masks. + Returns the number of seconds since last save or load of a save. +The data is kept in memory, so no I/O occurs when getting or saving keys. It is +all written to a json file in the game save directory when the game is saved. Material info lookup -------------------- @@ -742,10 +812,9 @@ Functions: Looks up material info for the given number pair; if not found, returns *nil*. -* ``....decode(matinfo)``, ``....decode(item)``, ``....decode(obj)`` +* ``....decode(matinfo|item|plant|obj)`` - Uses ``matinfo.type``/``matinfo.index``, item getter vmethods, - or ``obj.mat_type``/``obj.mat_index`` to get the code pair. + Uses type-specific methods for retrieving the code pair. * ``dfhack.matinfo.find(token[,token...])`` @@ -869,7 +938,17 @@ can be omitted. * ``dfhack.getHackPath()`` - Returns the dfhack directory path, i.e. ``".../df/hack/"``. + Returns the DFHack installation directory path (the folder where DFHack is installed). + This may be the ``hack`` folder within the DF installation, but you should not rely on this. + Specifically, the installation folder is extremely likely to be somewhere else when DFHack is installed from Steam. + Always use this function to get the DFHack installation directory path instead of hardcoding it. + +* ``dfhack.getConfigPath()`` + + Returns the DFHack config directory path (the folder where user-specific configuration files are stored). + This is currently the ``dfhack-config`` folder within the DF installation, but you should not rely on this as it is likely to change in the future. + Always use this function to get the DFHack config directory path instead of hardcoding it. + Avoid storing this value in a long-lived variable, as it's possible that in future versions of DFHack, it may be possible for the config directory to be changed at runtime. * ``dfhack.getSavePath()`` @@ -887,9 +966,9 @@ can be omitted. Checks if the world and map are loaded. -* ``dfhack.TranslateName(name[,in_english,only_last_name])`` +* ``dfhack.isSiteLoaded()`` - Convert a language_name or only the last name part to string. + Checks if a site (e.g., a player fort) is loaded. * ``dfhack.df2utf(string)`` @@ -903,13 +982,25 @@ can be omitted. .. warning:: When printing CP437-encoded text to the console (for example, names returned - from ``dfhack.TranslateName()``), use ``print(dfhack.df2console(text))`` to - ensure proper display on all platforms. + from ``dfhack.units.getReadableName()``), use + ``print(dfhack.df2console(text))`` to ensure proper display on all platforms. * ``dfhack.utf2df(string)`` Convert a string from UTF-8 to DF's CP437 encoding. +* ``dfhack.upperCp437(string)`` + + Return a version of the string with all letters capitalized. + Non-ASCII CP437 characters are capitalized if a CP437 version exists. + For example, ``ä`` is replaced by ``Ä``, but ``â`` is never capitalized. + + +* ``dfhack.lowerCp437(string)`` + + Return a version of the string with all letters in lower case. + Non-ASCII CP437 characters are downcased. For example, ``Ä`` is replaced by ``ä``. + * ``dfhack.toSearchNormalized(string)`` Replace non-ASCII alphabetic characters in a CP437-encoded string with their @@ -917,6 +1008,27 @@ can be omitted. Note that the returned string may be longer than the input string. For example, ``ä`` is replaced with ``a``, and ``æ`` is replaced with ``ae``. +* ``dfhack.capitalizeStringWords(string)`` + + Return a version of the string with the first letter of each word capitalized. + The beginning of a word is determined by a space or quote ``"``. It is also + determined by an apostrophe ``'`` when preceded by a space or comma. + Non-ASCII CP437 characters will be capitalized if a CP437 version exists. + This function does not downcase characters. Use ``dfhack.lowerCp437`` + first, if desired. + +* ``dfhack.formatInt(num)`` + + Formats an integer value as a string according to the current system locale. + E.g., for American English, it would transform like: ``12345`` -> + ``'12,345'`` + +* ``dfhack.formatFloat(num)`` + + Formats a floating point value as a string according to the current system + locale. E.g., for American English, it would transform like: ``-12345.6789`` + -> ``'-12,345.678711'`` (because float imprecision). + * ``dfhack.run_command(command[, ...])`` Run an arbitrary DFHack command, with the core suspended, and send output to @@ -939,6 +1051,17 @@ can be omitted. returns an ``output, command_result`` pair. ``output`` is a single string - see ``dfhack.internal.runCommand()`` to obtain colors as well. +Translation module +------------------ + +* ``dfhack.translation.translateName(name[,in_english[,only_last_name]])`` + + Convert a ``df.language_name`` (or only the last name part) to string. + +* ``dfhack.translation.generateName(name,language,type,major_selector,minor_selector)`` + + Dynamically generate a name using the same logic the game itself uses. + Gui module ---------- @@ -953,10 +1076,10 @@ Screens * ``dfhack.gui.getFocusStrings(viewscreen)`` Returns a table of string representations of the current UI focuses. - The strings have a "screen/foo/bar/baz..." format e.g..:: + The strings have a "screen/foo/bar/baz..." format e.g.:: [1] = "dwarfmode/Info/CREATURES/CITIZEN" - [2] = "dwardmode/Squads" + [2] = "dwarfmode/Squads" * ``dfhack.gui.matchFocusString(focus_string[, viewscreen])`` @@ -967,12 +1090,13 @@ Screens * ``dfhack.gui.getCurFocus([skip_dismissed])`` - Returns the focus string of the current viewscreen. + Returns a list of focus strings for the current viewscreen. Equivalent to + ``dfhack.gui.getFocusStrings(dfhack.gui.getCurViewscreen(skip_dismissed))``. * ``dfhack.gui.getViewscreenByType(type[, depth])`` Returns the topmost viewscreen out of the top ``depth`` viewscreens with - the specified type (e.g. ``df.viewscreen_titlest``), or ``nil`` if none match. + the specified type (e.g., ``df.viewscreen_titlest``), or ``nil`` if none match. If ``depth`` is not specified or is less than 1, all viewscreens are checked. * ``dfhack.gui.getDFViewscreen([skip_dismissed[, viewscreen]])`` @@ -981,49 +1105,47 @@ Screens ``true``, ignores screens already marked to be removed. If ``viewscreen`` is specified, starts the scan at the given viewscreen. -General-purpose selections -~~~~~~~~~~~~~~~~~~~~~~~~~~ +* ``dfhack.gui.getWidget(container, [, ...])`` -* ``dfhack.gui.getSelectedWorkshopJob([silent])`` + Returns the DF widget in the given widget container with the given name or + (zero-based) numeric index. You can follow a chain of widget containers by + passing additional names or indices. For example: + ``:lua ~dfhack.gui.getWidget(game.main_interface.info.labor, "Tabs", 0)`` - When a job is selected in :kbd:`q` mode, returns the job, else - prints error unless silent and returns *nil*. +* ``dfhack.gui.getWidgetChildren(container)`` -* ``dfhack.gui.getSelectedJob([silent])`` + Returns all the DF widgets in the given widget container. - Returns the job selected in a workshop or unit/jobs screen. +General-purpose selections +~~~~~~~~~~~~~~~~~~~~~~~~~~ +* ``dfhack.gui.getSelectedWorkshopJob([silent])`` +* ``dfhack.gui.getSelectedJob([silent])`` * ``dfhack.gui.getSelectedUnit([silent])`` - - Returns the unit selected via :kbd:`v`, :kbd:`k`, unit/jobs, or - a full-screen item view of a cage or suchlike. - * ``dfhack.gui.getSelectedItem([silent])`` - - Returns the item selected via :kbd:`v` ->inventory, :kbd:`k`, :kbd:`t`, or - a full-screen item view of a container. Note that in the - last case, the highlighted *contained item* is returned, not - the container itself. - * ``dfhack.gui.getSelectedBuilding([silent])`` - - Returns the building selected via :kbd:`q`, :kbd:`t`, :kbd:`k` or :kbd:`i`. - * ``dfhack.gui.getSelectedCivZone([silent])`` - - Returns the zone currently selected via :kbd:`z` - +* ``dfhack.gui.getSelectedStockpile([silent])`` * ``dfhack.gui.getSelectedPlant([silent])`` - Returns the plant selected via :kbd:`k`. + Returns the currently selected in-game object or the indicated thing + associated with the selected in-game object. For example, Calling + ``getSelectedJob`` when a building is selected will return the job associated + with the building (e.g., the ``ConstructBuilding`` job). If ``silent`` is + omitted or set to ``false`` and a selected object cannot be found, then an + error is printed to the console. +* ``dfhack.gui.getAnyWorkshopJob(screen)`` +* ``dfhack.gui.getAnyJob(screen)`` * ``dfhack.gui.getAnyUnit(screen)`` * ``dfhack.gui.getAnyItem(screen)`` * ``dfhack.gui.getAnyBuilding(screen)`` +* ``dfhack.gui.getAnyCivZone(screen)`` +* ``dfhack.gui.getAnyStockpile(screen)`` * ``dfhack.gui.getAnyPlant(screen)`` Similar to the corresponding ``getSelected`` functions, but operate on the - screen given instead of the current screen and always return ``nil`` silently + given screen instead of the current screen and always return ``nil`` silently on failure. Fortress mode @@ -1042,23 +1164,29 @@ Fortress mode * ``dfhack.gui.pauseRecenter(pos[,pause])`` ``dfhack.gui.pauseRecenter(x,y,z[,pause])`` - Same as ``resetDwarfmodeView``, but also recenter if position is valid. If ``pause`` is false, skip pausing. Respects - ``RECENTER_INTERFACE_SHUTDOWN_MS`` in DF's ``init.txt`` (the delay before input is recognized when a recenter occurs.) + Same as ``resetDwarfmodeView``, but also recenter if position is valid. If + ``pause`` is false, skip pausing. Respects ``RECENTER_INTERFACE_SHUTDOWN_MS`` + in DF's ``init.txt`` (the delay before input is recognized when a recenter + occurs.) -* ``dfhack.gui.revealInDwarfmodeMap(pos[,center])`` - ``dfhack.gui.revealInDwarfmodeMap(x,y,z[,center])`` +* ``dfhack.gui.revealInDwarfmodeMap(pos[,center[,highlight]])`` + ``dfhack.gui.revealInDwarfmodeMap(x,y,z[,center[,highlight]])`` - Centers the view on the given coordinates. If ``center`` is true, make sure the - position is in the exact center of the view, else just bring it on screen. + Centers the view on the given coordinates. If ``center`` is true, make sure + the position is in the exact center of the view, else just bring it on screen. + If ``highlight`` is true, then mark the target tile with a pulsing highlight + until the player clicks somewhere else. - ``pos`` can be a ``df.coord`` instance or a table assignable to a ``df.coord`` (see `lua-api-table-assignment`), + ``pos`` can be a ``df.coord`` instance or a table assignable to a ``df.coord`` + (see `lua-api-table-assignment`), e.g.:: {x = 5, y = 7, z = 11} getSelectedUnit().pos copyall(df.global.cursor) - If the position is invalid, the function will simply ensure the current window position is clamped between valid values. + If the position is invalid, the function will simply ensure the current + window position is clamped between valid values. * ``dfhack.gui.refreshSidebar()`` @@ -1077,10 +1205,9 @@ Announcements Writes a string to :file:`gamelog.txt` without doing an announcement. -* ``dfhack.gui.makeAnnouncement(type,flags,pos,text,color[,is_bright])`` +* ``dfhack.gui.makeAnnouncement(type,flags,pos,text[,color[,is_bright]])`` Adds an announcement with given announcement_type, text, color, and brightness. - The is_bright boolean actually seems to invert the brightness. The announcement is written to :file:`gamelog.txt`. The announcement_flags argument provides a custom set of :file:`announcements.txt` options, @@ -1089,51 +1216,103 @@ Announcements Returns the index of the new announcement in ``df.global.world.status.reports``, or -1. -* ``dfhack.gui.addCombatReport(unit,slot,report_index)`` +* ``dfhack.gui.addCombatReport(unit,slot,report_index[,update_alert])`` Adds the report with the given index (returned by makeAnnouncement) - to the specified group of the given unit. Returns *true* on success. + to the specified group of the given unit. If ``update_alert`` is ``true``, + an alert badge will appear on the left side of the screen if not already visible. + Returns ``true`` on success. * ``dfhack.gui.addCombatReportAuto(unit,flags,report_index)`` - Adds the report with the given index to the appropriate group(s) - of the given unit, as requested by the flags. + Adds the report with the given index to the appropriate group(s) of the given unit + based on the unit's current job and as requested by the flags. + Always updates alert badges. Returns ``true`` on any success. -* ``dfhack.gui.showAnnouncement(text,color[,is_bright])`` +* ``dfhack.gui.showAnnouncement(text[,color[,is_bright]])`` Adds a regular announcement with given text, color, and brightness. - The is_bright boolean actually seems to invert the brightness. + The announcement type is always ``df.announcement_type.REACHED_PEAK``, + which uses the alert badge for ``df.announcement_alert_type.GENERAL``. + +* ``dfhack.gui.showZoomAnnouncement(type,pos,text[,color[,is_bright]])`` + + Like above, but also specifies a position you can zoom to from the announcement menu, + as well as being able to set the announcement type. + +* ``dfhack.gui.showPopupAnnouncement(text[,color[,is_bright]])`` + + Displays a megabeast-style modal announcement window. + DF is currently ignoring the color and brightness settings + (see: `bug report `_.) + Add ``[C:`` color ``:0:`` bright ``]`` (where color is 0-7 and bright is 0-1) + in front of your text string to force the popup text to be colored. + + Text is run through a parser as it is converted into a markup text box. + The parser accepts tokens in square brackets (``[`` ``]``.) + Use ``[[`` and ``]]`` to include actual square brackets in text. + + The following tokens are accepted: + + ``[R]``: (NEW_LINE) Ends the current line and begins on the next. + + ``[B]``: (BLANK_LINE) Ends the current line and adds an additional blank line, + beginning on the line after that. + + ``[P]``: (INDENT) Ends the current line and begins four spaces indented on the next. -* ``dfhack.gui.showZoomAnnouncement(type,pos,text,color[,is_bright])`` + ``[CHAR:`` n ``]``, ``[CHAR:~`` ch ``]``: Add a single character. First version + takes a base-10 integer ``n`` representing a CP437 character. + Second version accepts a character ``ch`` instead. ``"[CHAR:154]"`` and + ``"[CHAR:~"..string.char(154).."]"`` both result in ``Ü``. Use ``[CHAR:32]`` or + ``[CHAR:~ ]`` to add extra spaces, which would normally be trimmed by the parser. - Like above, but also specifies a position you can zoom to from the announcement menu. + ``[LPAGE:`` link_type ``:`` id ``]``, ``[LPAGE:`` link_type ``:`` id ``:`` subid ``]``: + Start a ``markup_text_linkst``. These are intended for Legends mode page links and + don't work in popups. The text will just be colored based on ``link_type``. + Valid link types are: ``HF`` (``HIST_FIG``,) ``SITE``, ``ARTIFACT``, ``BOOK``, + ``SR`` (``SUBREGION``,) ``FL`` (``FEATURE_LAYER``,) ``ENT`` (``ENTITY``,) + ``AB`` (``ABSTRACT_BUILDING``,) ``EPOP`` (``ENTITY_POPULATION``,) ``ART_IMAGE``, + ``ERA``, ``HEC``. + ``subid`` is only used for ``AB`` and ``ART_IMAGE``. ``[/LPAGE]`` ends the link text. -* ``dfhack.gui.showPopupAnnouncement(text,color[,is_bright])`` + ``[C:`` screenf ``:`` screenb ``:`` screenbright ``]``: Color text. Sets the + respective values in ``df.global.gps`` and then sets text color. + ``color`` = ``screenf``, ``bright`` = ``screenbright``, ``screenb`` does nothing + since popup backgrounds are always black. + Example: ``"Light gray, [C:4:0:0]red, [C:4:0:1]orange, [C:7:0:0]light gray."`` - Pops up a titan-style modal announcement window. + ``[KEY:`` n ``]``: Keybinding. Shows the (first) keybinding for the + ``df.interface_key`` ``n``. The keybinding will be displayed in light green, but + the previous text color will be restored afterwards. -* ``dfhack.gui.showAutoAnnouncement(type,pos,text,color[,is_bright,unit1,unit2])`` +* ``dfhack.gui.showAutoAnnouncement(type,pos,text[,color[,is_bright[,unit_a[,unit_d]]]])`` Uses the type to look up options from announcements.txt, and calls the above operations accordingly. The units are used to call ``addCombatReportAuto``. * ``dfhack.gui.autoDFAnnouncement(report,text)`` - ``dfhack.gui.autoDFAnnouncement(type,pos,text,color[,is_bright,unit1,unit2,is_sparring])`` + ``dfhack.gui.autoDFAnnouncement(type,pos,text[,color[,is_bright[,unit_a[,unit_d[,is_sparring]]]]])`` - Takes a ``df.report_init`` (see: `structure definition `_) - and a string and processes them just like DF does. Can also be built from parameters instead of a ``report_init``. - Setting ``is_sparring`` to *true* means the report will be added to sparring logs (if applicable) rather than hunting or combat. + Takes a ``df.announcement_infost`` (see: + `structure definition `_) + and a string and processes them just like DF does. Can also be built from parameters instead of + an ``announcement_infost``. Setting ``is_sparring`` to ``true`` means the report will be added + to sparring logs (if applicable) rather than hunting or combat. - The announcement will not display if units are involved and the player can't see them (or hear, for adventure mode sound announcement types.) - Text is parsed using ``&`` as an escape character, with ``&r`` adding a blank line (equivalent to ``\n \n``,) - ``&&`` being just ``&``, and any other combination causing neither character to display. + The announcement will not display if units are involved and the player can't see + them (or hear, for adventure mode sound announcement types.) + Returns ``true`` if a report was created or repeated. + For detailed info on why an announcement failed to display, enable + ``debugfilter set Debug core gui`` in the DFHack console. + If you want a guaranteed announcement, use ``dfhack.gui.showAutoAnnouncement`` instead. - If you want a guaranteed announcement without parsing, use ``dfhack.gui.showAutoAnnouncement`` instead. - -* ``dfhack.gui.getMousePos()`` +* ``dfhack.gui.getMousePos([allow_out_of_bounds])`` Returns the map coordinates of the map tile the mouse is over as a table of - ``{x, y, z}``. If the cursor is not over the map, returns ``nil``. + ``{x, y, z}``. If the cursor is not over a valid tile, returns ``nil``. To + allow the function to return coordinates outside of the map, set + ``allow_out_of_bounds`` to ``true``. Other ~~~~~ @@ -1151,6 +1330,10 @@ Job module Creates a deep copy of the given job. +* ``dfhack.job.createLinked()`` + + Create a job and immediately link it into the global job list. + * ``dfhack.job.printJobDetails(job)`` Prints info about the job. @@ -1163,6 +1346,11 @@ Job module Cancels a job, cleans up all references to it, and removes it from the world. +* ``dfhack.job.addGeneralRef(job, type, id)`` + + Create a general reference of the given type, pointing to the object with the + specified id, and add the created general reference to the provided job. + * ``dfhack.job.getGeneralRef(job, type)`` Searches for a general_ref with the given type. @@ -1171,6 +1359,12 @@ Job module Searches for a specific_ref with the given type. +* ``dfhack.job.assignToWorkshop(job, workshop)`` + + Assign job to workshop (i.e. establish the bidirectional link between the job + and the workshop). Does nothing and returns ``false`` if the workshop already + has the maximum of ten jobs. + * ``dfhack.job.getHolder(job)`` Returns the building holding the job. @@ -1185,6 +1379,11 @@ Job module specified cooldown period (in ticks). This doesn't decrease the cooldown period in any circumstances. +* ``dfhack.job.addWorker(job, unit)`` + + Assign the specified job to the provided unit, unless the unit already has an + active job. Also cleans up a potential job posting for the provided job. + * ``dfhack.job.removeWorker(job,cooldown)`` Removes the worker from the specified workshop job, and sets the cooldown @@ -1224,9 +1423,9 @@ Job module Attach a real item to this job. If the item is intended to satisfy a job_item filter, the index of that filter should be passed in ``filter_idx``; otherwise, pass ``-1``. Similarly, if you don't care where the item is inserted, pass - ``-1`` for ``insert_idx``. The ``role`` param is a ``df.job_item_ref.T_role``. + ``-1`` for ``insert_idx``. The ``role`` param is a ``df.job_role_type``. If the item needs to be brought to the job site, then the value should be - ``df.job_item_ref.T_role.Hauled``. + ``df.job_role_type.Hauled``. * ``dfhack.job.isSuitableItem(job_item, item_type, item_subtype)`` @@ -1241,29 +1440,81 @@ Job module Returns the job's description, as seen in the Units and Jobs screens. -Units module ------------- +* ``dfhack.job.getManagerOrderName(manager_order)`` -* ``dfhack.units.isUnitInBox(unit,x1,y1,z1,x2,y2,z2)`` + Returns the manager order's description, as seen in the Work orders screen. + +Hotkey module +------------- + +* ``dfhack.hotkey.addKeybind(keyspec, command)`` + + Creates a new keybind with the provided keyspec (see the `keybinding` documentation + for details on format). + Returns false on failure to create keybind. + +* ``dfhack.hotkey.removeKeybind(keyspec, [match_focus=true, command])`` + + Removes keybinds matching the provided keyspec. + If match_focus is set, the focus portion of the keyspec is matched against. + If command is provided and not an empty string, the command is matched against. + Returns false if no keybinds were removed. + +* ``dfhack.hotkey.listActiveKeybinds()`` + + Returns a list of keybinds active within the current context. + The items are tables with the following attributes: + :spec: The keyspec for the hotkey + :command: The command the hotkey runs when pressed + +* ``dfhack.hotkey.listAllKeybinds()`` + + Returns a list of all keybinds currently registered. + The items are tables with the following attributes: + :spec: The keyspec for the hotkey + :command: The command the hotkey runs when pressed - The unit is within the specified coordinates. +* ``dfhack.hotkey.requestKeybindingInput([cancel=false])`` + + Enqueues or cancels a request that the next hotkey-compatible input is saved + and not processed, retrievable with ``dfhack.hotkey.getKeybindingInput()``. + If cancel is true, any current request is cancelled. + +* ``dfhack.hotkey.getKeybindingInput()`` + + Reads the latest saved keybind input that was requested. + Returns a keyspec string for the input, or nil if no input has been saved. + +* ``dfhack.hotkey.isDisruptiveKeybind(keyspec)`` + + Determines if the provided keyspec could be disruptive to the game experience. + This includes the majority of standard characters and special keys such as escape, + backspace, and return when lacking modifiers other than Shift. + +Units module +------------ * ``dfhack.units.isActive(unit)`` - The unit is active (alive and on the map). + The unit is active (non-dead and on the map). * ``dfhack.units.isVisible(unit)`` - The unit is visible on the map. + The unit is on a visible map tile. Doesn't account for sneaking. -* ``dfhack.units.isCitizen(unit[,ignore_sanity])`` +* ``dfhack.units.isCitizen(unit[,include_insane])`` - The unit is an alive sane citizen of the fortress; wraps the + The unit is a non-dead sane citizen of the fortress; wraps the same checks the game uses to decide game-over by extinction, with an additional sanity check. You can identify citizens, regardless of their sanity, by passing ``true`` as the optional second parameter. +* ``dfhack.units.isResident(unit[,include_insane])`` + + The unit is a resident of the fortress. Same ``include_insane`` semantics as + ``isCitizen``. + * ``dfhack.units.isFortControlled(unit)`` Similar to ``dfhack.units.isCitizen(unit)``, but is based on checks @@ -1284,7 +1535,7 @@ Units module * ``dfhack.units.isAlive(unit)`` - The unit isn't dead or undead. + The unit isn't dead or undead. Naturally inorganic is okay. * ``dfhack.units.isDead(unit)`` @@ -1297,12 +1548,13 @@ Units module * ``dfhack.units.isSane(unit)`` - The unit is capable of rational action, i.e. not dead, insane, zombie, or active werewolf. + The unit is normally capable of rational action. I.e., not dead, insane, zombie, + nor crazed (unless active werebeast). -* ``dfhack.units.isCrazed`` +* ``dfhack.units.isCrazed(unit)`` - The unit is berserk and will attack all other creatures except members of its own species - that are also crazed. (can be modified by curses) + The unit is berserk and will attack all other creatures except crazed members of + its own species. (Can be modified by curses.) * ``dfhack.units.isGhost(unit)`` @@ -1314,23 +1566,28 @@ Units module * ``dfhack.units.isHidingCurse(unit)`` - The unit is hiding a curse. - + The unit is currently hiding a curse (i.e., vampire). * ``dfhack.units.isMale(unit)`` * ``dfhack.units.isFemale(unit)`` * ``dfhack.units.isBaby(unit)`` * ``dfhack.units.isChild(unit)`` * ``dfhack.units.isAdult(unit)`` -* ``dfhack.units.isGay(unit)`` -* ``dfhack.units.isNaked(unit)`` Simple unit property checks -* ``dfhack.units.isVisiting(unit)`` +* ``dfhack.units.isGay(unit)`` + + Not willing to breed. Also includes any creature caste without a gender. - The unit is visiting. eg. Merchants, Diplomatics, travelers. +* ``dfhack.units.isNaked(unit[,no_items])`` + + Not wearing anything (including rings, etc.). Can optionally check for + empty inventory. + +* ``dfhack.units.isVisiting(unit)`` + The unit is visiting. E.g., merchants, diplomats, and travelers. * ``dfhack.units.isTrainableHunting(unit)`` @@ -1342,7 +1599,7 @@ Units module * ``dfhack.units.isTrained(unit)`` - The unit is trained. + The unit is trained for hunting or war, or is non-wild and non-domesticated. * ``dfhack.units.isHunter(unit)`` @@ -1355,11 +1612,16 @@ Units module * ``dfhack.units.isTame(unit)`` * ``dfhack.units.isTamable(unit)`` * ``dfhack.units.isDomesticated(unit)`` +* ``dfhack.units.isMarkedForTraining(unit)`` +* ``dfhack.units.isMarkedForTaming(unit)`` +* ``dfhack.units.isMarkedForWarTraining(unit)`` +* ``dfhack.units.isMarkedForHuntTraining(unit)`` * ``dfhack.units.isMarkedForSlaughter(unit)`` * ``dfhack.units.isMarkedForGelding(unit)`` * ``dfhack.units.isGeldable(unit)`` * ``dfhack.units.isGelded(unit)`` * ``dfhack.units.isEggLayer(unit)`` +* ``dfhack.units.isEggLayerRace(unit)`` * ``dfhack.units.isGrazer(unit)`` * ``dfhack.units.isMilkable(unit)`` @@ -1371,23 +1633,25 @@ Units module * ``dfhack.units.isMischievous(unit)`` - The unit is mischievous. + The unit is mischievous and will randomly pull levers, etc. * ``dfhack.units.isAvailableForAdoption(unit)`` The unit is available for adoption. * ``dfhack.units.isPet(unit)`` -* ``dfhack.units.isOpposedToLife(unit)`` + + Unit has pet owner. + * ``dfhack.units.hasExtravision(unit)`` +* ``dfhack.units.isOpposedToLife(unit)`` * ``dfhack.units.isBloodsucker(unit)`` Simple checks of caste attributes that can be modified by curses. - * ``dfhack.units.isDwarf(unit)`` - The unit is of the correct race for the fortress. + The unit is of the same race for the fortress. (Includes active werebeasts.) * ``dfhack.units.isAnimal(unit)`` * ``dfhack.units.isMerchant(unit)`` @@ -1397,51 +1661,83 @@ Units module * ``dfhack.units.isVisitor(unit)`` - The unit is a regular visitor with no special purpose (eg. merchant). + The unit is a regular visitor with no special purpose (e.g., merchant). + +* ``dfhack.units.isWildlife(unit)`` + + The unit is surface or cavern wildlife. + +* ``dfhack.units.isAgitated(unit)`` + + The unit is an agitated creature. * ``dfhack.units.isInvader(unit)`` The unit is an active invader or marauder. -* ``dfhack.units.isUndead(unit[,include_vamps])`` +* ``dfhack.units.isUndead(unit[,hiding_curse])`` The unit is undead. Pass ``true`` as the optional second parameter to - count vampires as undead. + count undead hiding their curse (i.e., vampires). * ``dfhack.units.isNightCreature(unit)`` * ``dfhack.units.isSemiMegabeast(unit)`` * ``dfhack.units.isMegabeast(unit)`` * ``dfhack.units.isTitan(unit)`` +* ``dfhack.units.isForgottenBeast(unit)`` * ``dfhack.units.isDemon(unit)`` Simple enemy type checks. * ``dfhack.units.isDanger(unit)`` - The unit is dangerous, and probably hostile. This includes - Great Dangers (see below), semi-megabeasts, night creatures, - undead, invaders, and crazed units. + The unit is dangerous and probably hostile. This includes night creatures, + semi-megabeasts, invaders, agitated wildlife, crazed units, and Great Dangers + (see below). * ``dfhack.units.isGreatDanger(unit)`` - The unit is of Great Danger. This include demons, titans, and megabeasts. - + The unit is of Great Danger. This includes megabeasts, titans, + forgotten beasts, and demons. -* ``dfhack.units.getPosition(unit)`` +* ``dfhack.units.isUnitInBox(unit, pos1, pos2)`` +* ``dfhack.units.isUnitInBox(unit,x1,y1,z1,x2,y2,z2)`` - Returns true *x,y,z* of the unit, or *nil* if invalid; may be not equal to unit.pos if caged. + Returns true if the unit is within a box defined by the + specified coordinates. +* ``dfhack.units.getUnitsInBox(pos1, pos2[, filter])`` * ``dfhack.units.getUnitsInBox(x1,y1,z1,x2,y2,z2[,filter])`` - Returns a table of all units within the specified coordinates. If the ``filter`` - argument is given, only units where ``filter(unit)`` returns true will be included. - Note that ``pos2xyz()`` cannot currently be used to convert coordinate objects to - the arguments required by this function. + Returns a table of all units within the specified coordinates. + If the ``filter`` argument is given, only units where ``filter(unit)`` + returns true will be included. + +* ``dfhack.units.getUnitByNobleRole(role_name)`` + + Returns the unit assigned to the given noble role, if any. + ``role_name`` must be one of the position codes associated with the + active fort or civilization government. For example: + ``CAPTAIN_OF_THE_GUARD``, ``MAYOR``, or ``BARON``. + Note that if more than one unit has the role, only the first will be + returned. See ``getUnitsByNobleRole`` below for retrieving all units + with a particular role. + +* ``dfhack.units.getUnitsByNobleRole(role_name)`` + + Returns a list of units (possibly empty) assigned to the given noble role. -* ``dfhack.units.getCitizens([ignore_sanity])`` +* ``dfhack.units.getCitizens([exclude_residents[,include_insane]])`` - Returns a table (list) of all citizens, which you would otherwise have to loop over all - units in world and test against ``isCitizen()`` to discover. + Returns a list of all living, sane citizens and residents that are + currently on the map. Can ``exclude_residents`` or ``include_insane`` + (both default to ``false``). + +* ``dfhack.units.getPosition(unit)`` + + Returns the true *x,y,z* of the unit, or *nil* if invalid. You should + generally use this method instead of reading *unit.pos* directly since + that field can be inaccurate when the unit is caged. * ``dfhack.units.teleport(unit, pos)`` @@ -1450,29 +1746,24 @@ Units module * ``dfhack.units.getGeneralRef(unit, type)`` - Searches for a general_ref with the given type. + Searches for a ``general_ref`` with the given type. * ``dfhack.units.getSpecificRef(unit, type)`` - Searches for a specific_ref with the given type. + Searches for a ``specific_ref`` with the given type. * ``dfhack.units.getContainer(unit)`` - Returns the container (cage) item or *nil*. - -* ``dfhack.units.setNickname(unit,nick)`` - - Sets the unit's nickname properly. + Returns the container (i.e., cage) holding the unit or *nil*. * ``dfhack.units.getOuterContainerRef(unit)`` - Returns a table (in the style of a ``specific_ref`` struct) of the outermost object that contains the unit (or one of the unit itself.) - The ``type`` field contains a ``specific_ref_type`` of ``UNIT``, ``ITEM_GENERAL``, or ``VERMIN_EVENT``. - The ``object`` field contains a pointer to a unit, item, or vermin, respectively. - -* ``dfhack.units.getVisibleName(unit)`` - - Returns the language_name object visible in game, accounting for false identities. + Returns a table (in the style of a ``specific_ref`` struct) of the + outermost object that contains the unit (or one of the unit itself). + The ``type`` field contains a + ``specific_ref_type`` of ``UNIT``, ``ITEM_GENERAL``, or ``VERMIN_EVENT``. + The ``object`` field contains a pointer to a unit, item, or vermin, + respectively. * ``dfhack.units.getIdentity(unit)`` @@ -1482,30 +1773,103 @@ Units module Returns the nemesis record of the unit if it has one, or *nil*. +* ``dfhack.units.setNickname(unit, nick)`` + + Sets the unit's nickname properly. + +* ``dfhack.units.getVisibleName(unit)`` + + Returns the ``language_name`` object visible in game, accounting for + false identities. + +* ``dfhack.units.assignTrainer(unit[,trainer_id])`` +* ``dfhack.units.unassignTrainer(unit)`` + + Assigns (or unassigns) a trainer for the specified trainable unit. The + trainer ID can be omitted if "any trainer" is desired. Returns a boolean + indicating whether the operation was successful. + +* ``dfhack.units.makeown(unit)`` + + Makes the selected unit a member of the current fortress and site. + Note that this operation may silently fail for any of several reasons, + so it may be prudent to check if the operation has succeeded by using + ``dfhack.units.isOwnCiv`` or another appropriate predicate on the unit + in question. + +* ``dfhack.units.setPathGoal(unit, pos, goal)`` + + Set target coordinates and goal (of type ``df.unit_path_goal``) for the given + unit. In case of a change, also clears the unit's current path. + +* ``dfhack.units.create(race, caste)`` + + Creates a new unit from scratch. The unit will be added to the + ``world.units.all`` vector, but not to the ``world.units.active`` vector. + The unit will not have an associated historical figure, nemesis record, + map position, labors, or any group associations. The unit *will* have a + race, caste, name, soul, and initialized body and mind (including + personality). The unit must be configured further as needed and put into + play by the client. + +* ``dfhack.units.getCasteRaw(unit)`` +* ``dfhack.units.getCasteRaw(race, caste)`` + + Returns the relevant ``caste_raw`` or *nil*. + * ``dfhack.units.getPhysicalAttrValue(unit, attr_type)`` * ``dfhack.units.getMentalAttrValue(unit, attr_type)`` Computes the effective attribute value, including curse effect. +* ``dfhack.units.casteFlagSet(race, caste, flag)`` + + Returns whether the given ``df.caste_raw_flags`` flag is set for the given + race and caste. + * ``dfhack.units.getMiscTrait(unit, type[, create])`` Finds (or creates if requested) a misc trait object with the given id. -* ``dfhack.units.getAge(unit[,true_age])`` +* ``dfhack.units.getRaceNameById(race)`` +* ``dfhack.units.getRaceName(unit)`` - Returns the age of the unit in years as a floating-point value. - If ``true_age`` is true, ignores false identities. + Get raw token name (e.g., "DWARF"). -* ``dfhack.units.isValidLabor(unit, unit_labor)`` +* ``dfhack.units.getRaceReadableNameById(race)`` +* ``dfhack.units.getRaceReadableName(unit)`` +* ``dfhack.units.getRaceNamePluralById(race)`` +* ``dfhack.units.getRaceNamePlural(unit)`` - Returns whether the indicated labor is settable for the given unit. + Get human-readable name (e.g., "dwarf" or "dwarves"). -* ``dfhack.units.setLaborValidity(unit_labor, isValid)`` +* ``dfhack.units.getRaceBabyNameById(race[,plural])`` +* ``dfhack.units.getRaceBabyName(unit[,plural])`` +* ``dfhack.units.getRaceChildNameById(race[,plural])`` +* ``dfhack.units.getRaceChildName(unit[,plural])`` - Sets the given labor to the given (boolean) validity for all units that are - part of your fortress civilization. Valid labors are allowed to be toggled - in the in-game labor management screens (including DFHack's `labor manipulator - screen `). + Get human-readable baby or child name (e.g., "dwarven baby" or + "dwarven child"). + +* ``dfhack.units.getReadableName(unit or historical_figure[, skip_english])`` + + Returns a string that includes the native and english language name (if + ``skip_english`` is not ``true``) of the unit (if any), the race of the unit + (if different from fort), whether it is trained for war or hunting, any + syndrome-given descriptions (such as "necromancer"), the training level (if + tame), and profession or noble role. If a ``historical_figure`` is passed + instead of a unit, some information (e.g., agitation status) is not + available, and the profession may be different (e.g., "Monk") from what is + displayed in fort mode. + +* ``dfhack.units.getAge(unit[, true_age])`` + + Returns the age of the unit in years as a floating-point value. + If ``true_age`` is true, ignores false identities. + +* ``dfhack.units.getKillCount(unit)`` + + Returns the number of units the unit has killed. * ``dfhack.units.getNominalSkill(unit, skill[, use_rust])`` @@ -1514,162 +1878,263 @@ Units module * ``dfhack.units.getEffectiveSkill(unit, skill)`` - Computes the effective rating for the given skill, taking into account exhaustion, pain etc. + Computes the effective rating for the given skill, taking into account + skill rust, exhaustion, pain, etc. * ``dfhack.units.getExperience(unit, skill[, total])`` - Returns the experience value for the given skill. If ``total`` is true, adds experience implied by the current rating. + Returns the experience value for the given skill. If ``total`` is true, + adds experience implied by the current skill level. + +* ``dfhack.units.isValidLabor(unit, unit_labor)`` + + Returns whether the indicated labor is settable for the given unit. + +* ``dfhack.units.setLaborValidity(unit_labor, isValid)`` + + Sets the given labor to the given (boolean) validity for all units that are + part of your fortress civilization. Valid labors are allowed to be toggled + in the in-game labor management screens (including DFHack's `labor + manipulator screen `). + +* ``dfhack.units.setAutomaticProfessions(unit)`` + + Set appropriate labors on a unit based on current work detail settings. * ``dfhack.units.computeMovementSpeed(unit)`` - Computes number of frames * 100 it takes the unit to move in its current state of mind and body. + Computes number of frames * 100 it takes the unit to move in its current + state of mind and body. **Currently broken due to move speed changes, + will always return 0!** * ``dfhack.units.computeSlowdownFactor(unit)`` - Meandering and floundering in liquid introduces additional slowdown. It is - random, but the function computes and returns the expected mean factor as a float. + Meandering and floundering in liquid introduces additional slowdown. + It is random, but the function computes and returns the expected mean + factor as a float. -* ``dfhack.units.getNoblePositions(unit)`` +* ``dfhack.units.getNoblePositions(unit or historical_figure)`` Returns a list of tables describing noble position assignments, or *nil*. - Every table has fields ``entity``, ``assignment`` and ``position``. + Every table has fields ``entity``, ``assignment``, and ``position``. -* ``dfhack.units.getProfessionName(unit[,ignore_noble,plural])`` +* ``dfhack.units.getProfession(unit)`` - Retrieves the profession name using custom profession, noble assignments - or raws. The ``ignore_noble`` boolean disables the use of noble positions. + Returns unit's profession ID (``df.profession``), accounting for + false identity. + +* ``dfhack.units.getProfessionName(unit[,ignore_noble[,plural[,land_title]]])`` +* ``dfhack.units.getProfessionName(historical_figure[,ignore_noble[,plural[,land_title]]])`` + + Retrieves the profession name using custom profession, noble assignments, + or raws. The ``ignore_noble`` boolean disables the use of noble positions + ("Prisoner", "Slave", and noble spouse titles included). The ``land_title`` + boolean causes ``of Sitename`` to be appended when applicable. If a + ``historical_figure`` is passed instead of a unit, some information (e.g., + agitation status) is not available, and the profession may be different + (e.g., "Monk") from what is displayed in fort mode. -* ``dfhack.units.getCasteProfessionName(race,caste,prof_id[,plural])`` +* ``dfhack.units.getCasteProfessionName(race, caste, prof_id[, plural])`` - Retrieves the profession name for the given race/caste using raws. + Retrieves the profession name for the given race and caste using raws. * ``dfhack.units.getProfessionColor(unit[,ignore_noble])`` Retrieves the color associated with the profession, using noble assignments or raws. The ``ignore_noble`` boolean disables the use of noble positions. -* ``dfhack.units.getCasteProfessionColor(race,caste,prof_id)`` +* ``dfhack.units.getCasteProfessionColor(race, caste, prof_id)`` - Retrieves the profession color for the given race/caste using raws. + Retrieves the profession color for the given race and caste using raws. * ``dfhack.units.getGoalType(unit[,goalIndex])`` Retrieves the goal type of the dream that the given unit has. By default the goal of the first dream is returned. - The goalIndex parameter may be used to retrieve additional dream goals. + The ``goalIndex`` parameter may be used to retrieve additional dream goals. Currently only one dream per unit is supported by Dwarf Fortress. - Support for multiple dreams may be added in future versions of Dwarf Fortress. + Support for multiple dreams may be added in future versions of + Dwarf Fortress. * ``dfhack.units.getGoalName(unit[,goalIndex])`` - Retrieves the short name describing the goal of the dream that the given unit has. - By default the goal of the first dream is returned. - The goalIndex parameter may be used to retrieve additional dream goals. - Currently only one dream per unit is supported by Dwarf Fortress. - Support for multiple dreams may be added in future versions of Dwarf Fortress. + Retrieves the short name describing the goal of the dream that the given + unit has. By default the goal of the first dream is returned (see above). * ``dfhack.units.isGoalAchieved(unit[,goalIndex])`` Checks if given unit has achieved the goal of the dream. - By default the status of the goal of the first dream is returned. - The goalIndex parameter may be used to check additional dream goals. - Currently only one dream per unit is supported by Dwarf Fortress. - Support for multiple dreams may be added in future versions of Dwarf Fortress. + By default the status of the goal of the first dream is returned (see above). -* ``dfhack.units.getStressCategory(unit)`` +* ``dfhack.units.getMainSocialActivity(unit)`` +* ``dfhack.units.getMainSocialEvent(unit)`` - Returns a number from 0-6 indicating stress. 0 is most stressed; 6 is least. - Note that 0 is guaranteed to remain the most stressed but 6 could change in the future. + Return the ``df.activity_entry`` or ``df.activity_event`` representing the + unit's current social activity. -* ``dfhack.units.getStressCategoryRaw(stress_level)`` +* ``dfhack.units.hasUnbailableSocialActivity(unit)`` - Identical to ``getStressCategory`` but takes a raw stress level instead of a unit. + Unit has an uninterruptible social activity (e.g. a purple "Socialize!"). -* ``dfhack.units.getStressCutoffs()`` +* ``dfhack.units.isJobAvailable(unit [, preserve_social])`` - Returns a table of the cutoffs used by the above stress level functions. + Check whether a unit can be assigned to (i.e. is looking for) a job. Will + return ``true`` if the unit is engaged in "green" social activities, unless + the boolean ``preserve_social`` is true. Will never interrupt uninterruptible + social activities (e.g. a purple "Socialize!"). -Military module -~~~~~~~~~~~~~~~~~~~ +* ``dfhack.units.getFocusPenalty(unit, need_type [, need_type, ...])`` -* ``dfhack.military.makeSquad(assignment_id)`` + Get largest (i.e. most negative) focus penalty associated to a collection of + ``df.need_type`` arguments. Returns a number strictly greater than 400 if the + unit does not have any of the requested needs. - Creates a new squad associated with the assignment (ie ``df::entity_position_assignment``, via ``id``) and returns it. - Fails if a squad already exists that is associated with that assignment, or if the assignment is not a fort mode player controlled squad. - Note: This function does not name the squad: consider setting a nickname (under ``squad.name.nickname``), and/or filling out the ``language_name`` object at ``squad.name``. - The returned squad is otherwise complete and requires no more setup to work correctly. +* ``dfhack.units.getStressCategory(unit)`` -* ``dfhack.military.updateRoomAssignments(squad_id, assignment_id, squad_use_flags)`` + Returns a number from 0-6 indicating stress. 0 is most stressed; 6 is least. + Note that 0 is guaranteed to remain the most stressed but 6 could change in + the future. - Sets the sleep, train, indiv_eq, and squad_eq flags when training at a barracks. +* ``dfhack.units.getStressCategoryRaw(stress_level)`` -* ``dfhack.military.getSquadName(squad_id)`` + Identical to ``getStressCategory`` but takes a raw stress level instead + of a unit. - Returns the name of a squad as a string. +* ``dfhack.units.getStressCutoffs()`` + + Returns a table of the cutoffs used by the above stress level functions. Action Timer API ~~~~~~~~~~~~~~~~ -This is an API to allow manipulation of unit action timers, to speed them up or slow them down. -All functions in this API have overflow/underflow protection when modifying action timers (the value will cap out). -Actions with a timer of 0 (or less) will not be modified as they are completed (or invalid in the case of negatives). +This is an API to allow manipulation of unit action timers, to speed them up or slow +them down. All functions in this API have overflow/underflow protection when modifying +action timers (the value will cap out). Actions with a timer of 0 (or less) will not +be modified as they are completed (or invalid in the case of negatives). Timers will be capped to go no lower than 1. -``affectedActionType`` parameters are integers from the DF enum ``unit_action_type``. E.g. ``df.unit_action_type.Move``. -``affectedActionTypeGroup`` parameters are integers from the (custom) DF enum ``unit_action_type_group``. They are as follows: - - * ``All`` (does not include unknown unit action types) +``affectedActionType`` parameters are values from the DF enum ``unit_action_type`` +(e.g., ``df.unit_action_type.Move``). +``affectedActionTypeGroup`` parameters are values from the (custom) DF enum +``unit_action_type_group`` (see +`unit_action_type definition `_ +for which action types each group contains). They are as follows: + + * ``All`` * ``Movement`` - * ``MovementFeet`` (affects only walking and crawling speed. if you need to differentiate between walking and crawling, check the unit's ``flags1.on_ground`` flag, like the Pegasus boots do in the `modding-guide`) - * ``MovementFeet`` (for walking speed, such as with pegasus boots from the `modding-guide`) - * ``Combat`` (includes bloodsucking) + * ``MovementFeet`` (affects only walking and crawling speed. If you need to + differentiate between walking and crawling, check the unit's ``flags1.on_ground`` flag, + like the Pegasus boots do in the `modding-guide`). + * ``MovementFeet`` (for walking speed, such as with pegasus boots from the `modding-guide`). + * ``Combat`` (includes bloodsucking). * ``Work`` API functions: -* ``subtractActionTimers(unit, amount, affectedActionType)`` +* ``dfhack.units.subtractActionTimers(unit, amount, affectedActionType)`` + + Subtract ``amount`` (32-bit integer) from the timers of any actions the unit is performing + of ``affectedActionType`` (usually one or zero actions in normal gameplay). Negative + amount adds to timers. + +* ``dfhack.units.subtractGroupActionTimers(unit, amount, affectedActionTypeGroup)`` + + Subtract ``amount`` (32-bit integer) from the timers of any actions the unit is performing + that match the ``affectedActionTypeGroup`` category. Negative amount adds to timers. + +* ``dfhack.units.multiplyActionTimers(unit, amount, affectedActionType)`` + + Multiply the timers of any actions of ``affectedActionType`` the unit is performing by + ``amount`` (float) (usually one or zero actions in normal gameplay). + +* ``dfhack.units.multiplyGroupActionTimers(unit, amount, affectedActionTypeGroup)`` + + Multiply the timers of any actions that match the ``affectedActionTypeGroup`` category + the unit is performing by ``amount`` (float). + +* ``dfhack.units.setActionTimers(unit, amount, affectedActionType)`` + + Set the timers of any action the unit is performing of ``affectedActionType`` to ``amount`` + (32-bit integer) (usually one or zero actions in normal gameplay). - Subtract ``amount`` (32-bit integer) from the timers of any actions the unit is performing of ``affectedActionType`` - (usually one or zero actions in normal gameplay). +* ``dfhack.units.setGroupActionTimers(unit, amount, affectedActionTypeGroup)`` -* ``subtractGroupActionTimers(unit, amount, affectedActionTypeGroup)`` + Set the timers of any action the unit is performing that match the + ``affectedActionTypeGroup`` category to ``amount`` (32-bit integer). - Subtract ``amount`` (32-bit integer) from the timers of any actions the unit is performing that match the ``affectedActionTypeGroup`` category. +Military module +--------------- -* ``multiplyActionTimers(unit, amount, affectedActionType)`` +* ``dfhack.military.makeSquad(assignment_id)`` - Multiply the timers of any actions of ``affectedActionType`` the unit is performing by ``amount`` (float) - (usually one or zero actions in normal gameplay). + Creates a new squad associated with the assignment (i.e., + ``df::entity_position_assignment``, via ``id``) and returns it. + Fails if a squad already exists that is associated with that assignment, or if + the assignment is not a fort mode player controlled squad. + Note: This function does not name the squad. Consider setting a nickname + (under ``squad.name.nickname``), and/or filling out the ``language_name`` object + at ``squad.name``. The returned squad is otherwise complete and requires no more + setup to work correctly. -* ``multiplyGroupActionTimers(unit, amount, affectedActionTypeGroup)`` +* ``dfhack.military.updateRoomAssignments(squad_id, assignment_id, squad_use_flags)`` - Multiply the timers of any actions that match the ``affectedActionTypeGroup`` category the unit is performing by ``amount`` (float). + Sets the sleep, train, indiv_eq, and squad_eq flags when training at a barracks. -* ``setActionTimers(unit, amount, affectedActionType)`` +* ``dfhack.military.getSquadName(squad_id)`` - Set the timers of any action the unit is performing of ``affectedActionType`` to ``amount`` (32-bit integer) - (usually one or zero actions in normal gameplay). + Returns the name of a squad as a string. + +* ``dfhack.military.removeFromSquad(unit_id)`` + + Removes a unit from its squad. Unsets the unit's + military information (i.e., ``unit.military.squad_id`` and + ``unit.military.squad_pos``), the squad's position information (i.e., + ``squad.positions[squad_pos].occupant``), modifies the unit's entity links + to indicate former squad membership or command, and creates a corresponding + world history event. -* ``setGroupActionTimers(unit, amount, affectedActionTypeGroup)`` + * ``dfhack.military.addToSquad(unit_id, squad_id, squad_pos)`` - Set the timers of any action the unit is performing that match the ``affectedActionTypeGroup`` category to ``amount`` (32-bit integer). + Adds a unit to a squad. Sets the unit's + military information (i.e., ``unit.military.squad_id`` and + ``unit.military.squad_pos``), the squad's position information (i.e., + ``squad.positions[squad_pos].occupant``), adds a unit's entity links to + indicate squad membership. Does not currently add world history events. + If ``squad_pos`` is -1, the unit will be added to the first open slot in + the squad. + + This API cannot be used to set or change the leader of a squad and will fail + if ``squad_pos`` is specified as 0 or if ``squad_pos`` is specified as -1 and + the squad leader position is currently vacant. It will also fail if + the requested squad position is already occupied, the squad does not exist, + the unit does not exist, or the requested unit is already a member of another + squad. Items module ------------ -* ``dfhack.items.getPosition(item)`` +* ``dfhack.items.findType(string)`` - Returns true *x,y,z* of the item, or *nil* if invalid; may be not equal to item.pos if in inventory. + Finds an item type by string and returns the ``df.item_type``. String is + case-sensitive (e.g., "TOOL"). -* ``dfhack.items.getBookTitle(item)`` +* ``dfhack.items.findSubtype(string)`` - Returns the title of the "book" item, or an empty string if the item isn't a "book" or it doesn't - have a title. A "book" is a codex or a tool item that has page or writings improvements, such as - scrolls and quires. + Finds an item subtype by string and returns the subtype or *-1*. String is + case-sensitive (e.g., "TOOL:ITEM_TOOL_HIVE"). -* ``dfhack.items.getDescription(item, type[, decorate])`` +* ``dfhack.items.isCasteMaterial(item_type)`` - Returns the string description of the item, as produced by the ``getItemDescription`` - method. If decorate is true, also adds markings for quality and improvements. + Returns *true* if this item type uses a creature/caste pair as its material. + +* ``dfhack.items.getSubtypeCount(item_type)`` + + Returns the number of raw-defined subtypes of the given item type, or *-1* + if not applicable. + +* ``dfhack.items.getSubtypeDef(item_type, subtype)`` + + Returns the raw definition for the given item type and subtype, or *nil* + if invalid. * ``dfhack.items.getGeneralRef(item, type)`` @@ -1690,12 +2155,13 @@ Items module * ``dfhack.items.getContainer(item)`` - Returns the container item or *nil*. + Returns the item's container item or *nil*. * ``dfhack.items.getOuterContainerRef(item)`` - Returns a table (in the style of a ``specific_ref`` struct) of the outermost object that contains the item (or one of the item itself.) - The ``type`` field contains a ``specific_ref_type`` of ``UNIT``, ``ITEM_GENERAL``, or ``VERMIN_EVENT``. + Returns a table (in the style of a ``specific_ref`` struct) of the outermost object + that contains the item (or one of the item itself.) The ``type`` field contains a + ``specific_ref_type`` of ``UNIT``, ``ITEM_GENERAL``, or ``VERMIN_EVENT``. The ``object`` field contains a pointer to a unit, item, or vermin, respectively. * ``dfhack.items.getContainedItems(item)`` @@ -1710,62 +2176,86 @@ Items module Returns the holder unit or *nil*. -* ``dfhack.items.moveToGround(item,pos)`` +* ``dfhack.items.getPosition(item)`` - Move the item to the ground at position. Returns *false* if impossible. + Returns the true *x,y,z* of the item, or *nil* if invalid. You should generally + use this method instead of reading *item.pos* directly since that field only stores + the last position where the item was on the ground. -* ``dfhack.items.moveToContainer(item,container)`` +* ``dfhack.items.getBookTitle(item)`` - Move the item to the container. Returns *false* if impossible. + Returns the title of the "book" item, or an empty string if the item isn't a "book" + or it doesn't have a title. A "book" is a codex or a tool item that has page or + writing improvements, such as scrolls and quires. -* ``dfhack.items.moveToBuilding(item,building[,use_mode[,force_in_building])`` +* ``dfhack.items.getDescription(item, type[, decorate])`` - Move the item to the building. Returns *false* if impossible. + Returns the string description of the item, as produced by the ``getItemDescription`` + method. A ``type`` of ``0`` results in a string like ``prickle berries [2]``. ``1`` + results in the singular ``prickle berry``, and ``2`` results in the plural + ``prickle berries``. If decorate is *true*, also adds markings for quality and + improvements, as well as ``(foreign)`` indicator (when applicable). - ``use_mode`` defaults to 0. If set to 2, the item will be treated as part of the building. +* ``dfhack.items.getReadableDescription(item)`` - If ``force_in_building`` is true, the item will be considered to be stored by the building - (used for items temporarily used in traps in vanilla DF) + Returns a string generally fit to usefully describe the item to the player. + When the item description appears anywhere in a script output or in the UI, + this is usually the string you should use. -* ``dfhack.items.moveToInventory(item,unit,use_mode,body_part)`` +* ``dfhack.items.moveToGround(item,pos)`` - Move the item to the unit inventory. Returns *false* if impossible. + Move the item to the ground at position. Returns *false* if impossible. -* ``dfhack.items.remove(item[, no_uncat])`` +* ``dfhack.items.moveToContainer(item,container)`` - Removes the item, and marks it for garbage collection unless ``no_uncat`` is true. + Move the item to the container. Returns *false* if impossible. -* ``dfhack.items.makeProjectile(item)`` +* ``dfhack.items.moveToBuilding(item,building[,use_mode[,force_in_building])`` - Turns the item into a projectile, and returns the new object, or *nil* if impossible. + Move the item to the building. Returns *false* if impossible. + ``use_mode`` defaults to ``df.building_item_role_type.TEMP``. + If set to ``df.building_item_role_type.PERM``, the item will be treated as part + of the building. If ``force_in_building`` is true, the item will be considered + to be stored by the building (used for items temporarily used in traps in + vanilla DF). -* ``dfhack.items.isCasteMaterial(item_type)`` +* ``dfhack.items.moveToInventory(item,unit[,use_mode[,body_part]])`` - Returns *true* if this item type uses a creature/caste pair as its material. + Move the item to the unit inventory. Returns *false* if impossible. + ``use_mode`` defaults to ``df.inv_item_role_type.Hauled``. + ``body_part`` defaults to ``-1``. -* ``dfhack.items.getSubtypeCount(item_type)`` +* ``dfhack.items.remove(item[,no_uncat])`` - Returns the number of raw-defined subtypes of the given item type, or *-1* if not applicable. + Cancels any jobs associated with the item, removes the item from containers + and inventories, hides the item from the UI, and, unless ``no_uncat`` is + true, marks it for garbage collection. -* ``dfhack.items.getSubtypeDef(item_type, subtype)`` +* ``dfhack.items.makeProjectile(item)`` - Returns the raw definition for the given item type and subtype, or *nil* if invalid. + Turns the item into a projectile, and returns the new object, or *nil* + if impossible. * ``dfhack.items.getItemBaseValue(item_type, subtype, material, mat_index)`` Calculates the base value for an item of the specified type and material. -* ``dfhack.items.getValue(item)`` +* ``dfhack.items.getValue(item[,caravan_state])`` - Calculates the Basic Value of an item, as seen in the View Item screen. + Calculates the value of an item. If a ``df.caravan_state`` object is given + (from ``df.global.plotinfo.caravans`` or + ``df.global.game.main_interface.trade.mer``), then the value is modified by civ + properties and any trade agreements that might be in effect. -* ``dfhack.items.createItem(item_type, item_subtype, mat_type, mat_index, unit)`` +* ``dfhack.items.createItem(unit, item_type, item_subtype, mat_type, mat_index, no_floor)`` - Creates an item, similar to the `createitem` plugin. + Creates an item, similar to the `createitem` plugin. Returns a list of created + ``df.item`` objects. * ``dfhack.items.checkMandates(item)`` - Returns true if the item is free from mandates, or false if mandates prevent trading the item. + Returns true if the item is free from mandates, or false if mandates prevent + trading the item. * ``dfhack.items.canTrade(item)`` @@ -1773,7 +2263,38 @@ Items module * ``dfhack.items.canTradeWithContents(item)`` - Checks whether the item and all items it contains, if any, can be traded. + Returns false if the item or any contained items cannot be traded. + +* ``canTradeAnyWithContents(item)`` + + Returns true if the item is empty and can be traded or if the item contains + any item that can be traded. + +* ``dfhack.items.markForTrade(item, depot)`` + + Marks the given item for trade at the given depot. + +* ``dfhack.items.isRequestedTradeGood(item[,caravan_state])`` + + Returns whether a caravan will pay extra for the given item. If caravan_state + is not given, checks all active caravans. + +* ``dfhack.items.canMelt(item[,game_ui])`` + + Returns true if the item can be melted (at a smelter). Unless ``game_ui`` is + given and true, bars, non-empty metal containers, and items in unit + inventories are not considered meltable, even though they can be designated + for melting using the game UI. + +* ``dfhack.items.markForMelting(item)`` + + Marks the given item for melting, unless already marked. Returns true if the + melting status was changed. + +* ``dfhack.items.cancelMelting(item)`` + + Removes melting designation, if present, from the given item. Returns true if + the melting status was changed. * ``dfhack.items.isRouteVehicle(item)`` @@ -1783,6 +2304,71 @@ Items module Checks whether the item is assigned to a squad. +* ``dfhack.items.getCapacity(item)`` + + Returns the capacity volume of an item that can serve as a container for + other items. Return value will be ``0`` for items that cannot serve as a + container. + +.. _lua-world: + +World module +------------ + +* ``dfhack.world.ReadPauseState()`` + + Returns *true* if the game is paused. + +* ``dfhack.world.SetPauseState(paused)`` + + Sets the pause state of the game. + +* ``dfhack.world.ReadCurrentYear()`` + + Returns the current game year. + +* ``dfhack.world.ReadCurrentTick()`` + + Returns the number of game ticks (``df.global.world.frame_counter``) since the + start of the current game year. + +* ``dfhack.world.ReadCurrentMonth()`` + + Returns the current game month, ranging from 0-11. The Dwarven year has 12 months. + +* ``dfhack.world.ReadCurrentDay()`` + + Returns the current game day, ranging from 1-28. Each Dwarven month has 28 days. + +* ``dfhack.world.ReadCurrentWeather()`` + + Returns the current game weather (``df.weather_type``). + +* ``dfhack.world.SetCurrentWeather(weather)`` + + Sets the current game weather to ``weather``. + +* ``dfhack.world.ReadWorldFolder()`` + + Returns the name of the directory/folder the current saved game is under, or an + empty string if no game was loaded this session. + +* ``dfhack.world.isFortressMode([gametype])`` +* ``dfhack.world.isAdventureMode([gametype])`` +* ``dfhack.world.isArena([gametype])`` +* ``dfhack.world.isLegends([gametype])`` + + Without any arguments, returns *true* if the current gametype matches. + Optionally accepts a ``gametype`` id to match against. + +* ``dfhack.world.getCurrentSite()`` + + Returns the currently loaded ``df.world_site`` or ``nil`` if no site is loaded. + +* ``dfhack.world.getAdventurer()`` + + Returns the current adventurer unit (if in adventure mode). + .. _lua-maps: Maps module @@ -1810,7 +2396,8 @@ Maps module * ``dfhack.maps.getTileBlock(coords)``, or ``getTileBlock(x,y,z)`` - Returns a map block object for given df::coord or x,y,z in local tile coordinates. + Returns a map block object for given df::coord or x,y,z in local + tile coordinates. * ``dfhack.maps.ensureTileBlock(coords)``, or ``ensureTileBlock(x,y,z)`` @@ -1822,7 +2409,8 @@ Maps module * ``dfhack.maps.getTileFlags(coords)``, or ``getTileFlags(x,y,z)`` - Returns designation and occupancy references for the given coordinates, or *nil, nil* if invalid. + Returns designation and occupancy references for the given coordinates, or + *nil, nil* if invalid. * ``dfhack.maps.getRegionBiome(region_coord2d)``, or ``getRegionBiome(x,y)`` @@ -1832,13 +2420,13 @@ Maps module Returns the biome_type for the given global map region. -* ``dfhack.maps.enableBlockUpdates(block[,flow,temperature])`` +* ``dfhack.maps.enableBlockUpdates(block[,flow[,temperature]])`` Enables updates for liquid flow or temperature, unless already active. * ``dfhack.maps.spawnFlow(pos,type,mat_type,mat_index,dimension)`` - Spawns a new flow (i.e. steam/mist/dust/etc) at the given pos, and with + Spawns a new flow (i.e., steam/mist/dust/etc) at the given pos, and with the given parameters. Returns it, or *nil* if unsuccessful. * ``dfhack.maps.getGlobalInitFeature(index)`` @@ -1857,10 +2445,11 @@ Maps module Returns the plant struct that owns the tile at the specified position. -* ``dfhack.maps.canWalkBetween(pos1, pos2)`` +* ``dfhack.maps.getWalkableGroup(pos)`` - Checks if a dwarf may be able to walk between the two tiles, - using a pathfinding cache maintained by the game. + Returns the walkability group for the given tile position. A return value + of ``0`` indicates that the tile is not walkable. The data comes from a + pathfinding cache maintained by DF. .. note:: This cache is only updated when the game is unpaused, and thus @@ -1869,13 +2458,19 @@ Maps module take into account anything that depends on the actual units, like burrows, or the presence of invaders. +* ``dfhack.maps.canWalkBetween(pos1, pos2)`` + + Checks if both positions are walkable and also share a walkability group. + * ``dfhack.maps.hasTileAssignment(tilemask)`` - Checks if the tile_bitmask object is not *nil* and contains any set bits; returns *true* or *false*. + Checks if the tile_bitmask object is not *nil* and contains any set bits. + Returns *true* or *false*. * ``dfhack.maps.getTileAssignment(tilemask,x,y)`` - Checks if the tile_bitmask object is not *nil* and has the relevant bit set; returns *true* or *false*. + Checks if the tile_bitmask object is not *nil* and has the relevant bit set. + Returns *true* or *false*. * ``dfhack.maps.setTileAssignment(tilemask,x,y,enable)`` @@ -1885,13 +2480,55 @@ Maps module Sets all bits in the mask to the *enable* argument. +* ``dfhack.maps.isTileAquifer(pos)``, or ``isTileAquifer(x,y,z)`` + + Checks if there's an aquifer on the given tile position. + Returns *true* or *false*. + +* ``dfhack.maps.isTileHeavyAquifer(pos)``, or ``isTileHeavyAquifer(x,y,z)`` + + Checks if there's a heavy aquifer on the given tile position. + Returns *true* or *false*. + +* ``dfhack.maps.setTileAquifer(pos[,heavy])``, or ``setTileAquifer(x,y,z[,heavy])`` + + Adds a light aquifer on the given tile position, or a heavy aquifer if the + *heavy* argument is *true*. Returns *true* or *false* depending on success. + +* ``dfhack.maps.removeTileAquifer(pos)``, or ``removeTileAquifer(x,y,z)`` + + Removes an aquifer from the given tile position. + Returns *true* or *false* depending on success. + +* ``dfhack.maps.addMaterialSpatter(pos, mat, matg, state, amount)`` + + Adds a material spatter to the specified map tile. If the tile is already + full of that spatter, returns the amount left over. + + Specifying a state of -1 (None) will automatically choose either Solid, + Liquid, or Gas based on the material properties and the tile temperature. + +* ``dfhack.maps.addItemSpatter(pos, i_type, i_subtype, subcat1, subcat2, print_variant, amount)`` + + Adds an item spatter to the specified map tile. If the tile is already + full of that spatter, returns the amount left over. + + For plant growths, specifying a print_variant of -1 will automatically + choose an appropriate value. For other item types, this field is ignored. Burrows module -------------- -* ``dfhack.burrows.findByName(name)`` +* ``dfhack.burrows.getName(burrow)`` - Returns the burrow pointer or *nil*. + Returns the name of the burrow. + If the burrow has no set name, returns the same placeholder name that DF would show in the UI. + +* ``dfhack.burrows.findByName(name[, ignore_final_plus])`` + + Returns the burrow pointer or *nil*. if ``ignore_final_plus`` is ``true``, + then ``+`` characters at the end of the names are ignored, both for the + specified ``name`` and the names of the burrows that it matches against. * ``dfhack.burrows.clearUnits(burrow)`` @@ -1919,7 +2556,8 @@ Burrows module * ``dfhack.burrows.setAssignedTile(burrow,tile_coord,enable)`` - Adds or removes the tile from the burrow. Returns *false* if invalid coords. + Adds or removes the tile from the burrow. + Returns *false* if invalid coords. * ``dfhack.burrows.isAssignedBlockTile(burrow,block,x,y)`` @@ -1927,8 +2565,8 @@ Burrows module * ``dfhack.burrows.setAssignedBlockTile(burrow,block,x,y,enable)`` - Adds or removes the tile from the burrow. Returns *false* if invalid coords. - + Adds or removes the tile from the burrow. + Returns *false* if invalid coords. Buildings module ---------------- @@ -1944,11 +2582,19 @@ General Searches for a specific_ref with the given type. -* ``dfhack.buildings.setOwner(item,unit)`` +* ``dfhack.buildings.getOwner(civzone)`` - Replaces the owner of the building. If unit is *nil*, removes ownership. + Returns the owner of the zone or *nil* if there isn't one. + +* ``dfhack.buildings.setOwner(civzone,unit)`` + + Replaces the owner of the civzone. If unit is *nil*, removes ownership. Returns *false* in case of error. + ``dfhack.buildings.getName(building)`` + + Returns the name of the building as it would appear in game. + * ``dfhack.buildings.getSize(building)`` Returns *width, height, centerx, centery*. @@ -1970,13 +2616,15 @@ General using width and height for flexible dimensions. Returns *is_flexible, width, height, center_x, center_y*. -* ``dfhack.buildings.checkFreeTiles(pos,size[,extents,change_extents,allow_occupied,allow_wall])`` +* ``dfhack.buildings.checkFreeTiles(pos,size[,bld[,change_extents[,allow_occupied[,allow_wall[,allow_flow]]]]])`` - Checks if the rectangle defined by ``pos`` and ``size``, and possibly extents, - can be used for placing a building. If ``change_extents`` is true, bad tiles - are removed from extents. If ``allow_occupied``, the occupancy test is skipped. - Set ``allow_wall`` to true if the building is unhindered by walls (such as an - activity zone). + Checks if the rectangle defined by ``pos`` and ``size``, and possibly the + extents associated with bld, can be used for placing a building. If + ``change_extents`` is true, bad tiles are removed from extents. If + ``allow_occupied``, the occupancy test is skipped. Set ``allow_wall`` to true + if the building is unhindered by walls (such as an activity zone). Set + ``allow_flow`` to true if the building can be built even if there is deep + water or any magma on the tile (such as abstract buildings). * ``dfhack.buildings.countExtentTiles(extents,defval)`` @@ -1984,9 +2632,9 @@ General * ``dfhack.buildings.containsTile(building, x, y)`` - Checks if the building contains the specified tile. If the building contains extents, - then the extents are checked. Otherwise, returns whether the x and y map coordinates - are within the building's bounding box. + Checks if the building contains the specified tile. If the building contains + extents, then the extents are checked. Otherwise, returns whether the x and y + map coordinates are within the building's bounding box. * ``dfhack.buildings.hasSupport(pos,size)`` @@ -1996,7 +2644,8 @@ General * ``dfhack.buildings.getStockpileContents(stockpile)`` Returns a list of items stored on the given stockpile. - Ignores empty bins, barrels, and wheelbarrows assigned as storage and transport for that stockpile. + Ignores empty bins, barrels, and wheelbarrows assigned as storage and + transport for that stockpile. * ``dfhack.buildings.getCageOccupants(cage)`` @@ -2030,7 +2679,7 @@ Low-level building creation functions: * ``dfhack.buildings.constructAbstract(building)`` Links a fully configured object created by ``allocInstance`` into the - world. The object must be an abstract building, i.e. a stockpile or civzone. + world. The object must be an abstract building, i.e., a stockpile or civzone. Returns *true*, or *false* if impossible. * ``dfhack.buildings.constructWithItems(building, items)`` @@ -2065,10 +2714,16 @@ Low-level building creation functions: * ``dfhack.buildings.getRoomDescription(building[, unit])`` - If the building is a room, returns a description including quality modifiers, e.g. "Royal Bedroom". - Otherwise, returns an empty string. + If the building is a room, returns a description including quality modifiers, + e.g., "Royal Bedroom". Otherwise, returns an empty string. + + The unit argument is passed through to DF and may modify the room's value + depending on the unit given. - The unit argument is passed through to DF and may modify the room's value depending on the unit given. +* ``dfhack.buildings.completeBuild(building)`` + + Complete an unconstructed or partially-constructed building and link it into + the world. High-level ~~~~~~~~~~ @@ -2086,12 +2741,13 @@ Among them are: Uses tables defined in ``buildings.lua``. Argtable members ``material`` (the default name), ``bucket``, ``barrel``, - ``chain``, ``mechanism``, ``screw``, ``pipe``, ``anvil``, ``weapon`` are used to - augment the basic attributes with more detailed information if the - building has input items with the matching name (see the tables for naming details). - Note that it is impossible to *override* any properties this way, only supply those that - are not mentioned otherwise; one exception is that flags2.non_economic - is automatically cleared if an explicit material is specified. + ``chain``, ``mechanism``, ``screw``, ``pipe``, ``anvil``, ``weapon`` are used + to augment the basic attributes with more detailed information if the + building has input items with the matching name (see the tables for naming + details). Note that it is impossible to *override* any properties this way, + only supply those that are not mentioned otherwise. One exception is that + ``flags2.non_economic`` is automatically cleared if an explicit material + is specified. * ``dfhack.buildings.constructBuilding{...}`` @@ -2101,7 +2757,7 @@ Among them are: .. note:: Despite the name, unless the building is abstract, the function creates it in an 'unconstructed' stage, with - a queued in-game job that will actually construct it. I.e. + a queued in-game job that will actually construct it. I.e., the function replicates programmatically what can be done through the construct building menu in the game ui, except that it does less environment constraint checking. @@ -2174,8 +2830,8 @@ Constructions module * ``dfhack.constructions.insert(construction)`` - Properly inserts the given construction into the game. Returns false and fails to - insert if there was already a construction at the position. + Properly inserts the given construction into the game. Returns false and fails + to insert if there was already a construction at the position. Kitchen module -------------- @@ -2185,8 +2841,8 @@ Kitchen module Finds a kitchen exclusion in the vectors in ``df.global.ui.kitchen``. Returns -1 if not found. - * ``type`` is a ``df.kitchen_exc_type``, i.e. ``df.kitchen_exc_type.Cook`` or - ``df.kitchen_exc_type.Brew``. + * ``type`` is a ``df.kitchen_exc_type`` with exactly one flag set, i.e + ``{Cook=true}`` or ``{Brew=true}``. * ``item_type`` is a ``df.item_type`` * ``item_subtype``, ``mat_type``, and ``mat_index`` are all numeric @@ -2195,7 +2851,7 @@ Kitchen module Adds or removes a kitchen exclusion, using the same parameters as ``findExclusion``. Both return ``true`` on success and ``false`` on failure, - e.g. when adding an exclusion that already exists or removing one that does + e.g., when adding an exclusion that already exists or removing one that does not. Screen API @@ -2216,12 +2872,9 @@ Common parameters to these functions include: * ``x``, ``y``: screen coordinates in tiles; the upper left corner of the screen is ``x = 0, y = 0`` * ``pen``: a `pen object ` -* ``map``: a boolean indicating whether to draw to a separate map buffer - (defaults to false, which is suitable for off-map text or a screen that hides - the map entirely). Note that only third-party plugins like TWBT currently - implement a separate map buffer. If no such plugins are enabled, passing - ``true`` has no effect. However, this parameter should still be used to ensure - that scripts work properly with such plugins. +* ``map``: a boolean (defaults to false) indicating whether to draw to a + separate map buffer. The Steam version uses separate map buffers with square + tiles for for all types of maps (i.e. fort, region, and world). Functions: @@ -2244,17 +2897,34 @@ Functions: Checks if [GRAPHICS:YES] was specified in init. -* ``dfhack.screen.paintTile(pen,x,y[,char,tile,map])`` +* ``dfhack.screen.paintTile(pen,x,y[,char[,tile[,map]]])`` + + Paints a tile using given parameters. `See below ` for a + description of ``pen``. The map argument is only supported for local maps + (i.e. fort mode and adventure mode outside of fast travel). The ``char`` and + ``tile`` arguments allow overriding the respective parts of the ``pen`` + without constructing a new pen beforehand. + + Returns *false* on error, e.g., if coordinates are out of bounds - Paints a tile using given parameters. `See below ` for a description of ``pen``. +* ``dfhack.screen.paintMapPortTile(pen,x,y[,char[,tile]])`` - Returns *false* on error, e.g. if coordinates are out of bounds + Paints a tile using given parameters onto the interface texpos layer of a map + port (e.g., the world map or the zoomed-in map for embark selection). The + ``char`` and ``tile`` arguments work as above. * ``dfhack.screen.readTile(x,y[,map])`` Retrieves the contents of the specified tile from the screen buffers. Returns a `pen object `, or *nil* if invalid or TrueType. +* ``dfhack.screen.readMapPortTile(x,y)`` + + Retrieves the contents of the specified tile from the screen buffers. Returns + a `pen object `, or *nil* if invalid. + + For now only looks at the ``sites`` textpos layer. + * ``dfhack.screen.paintString(pen,x,y,text[,map])`` Paints the string starting at *x,y*. Uses the string characters @@ -2264,12 +2934,13 @@ Functions: * ``dfhack.screen.fillRect(pen,x1,y1,x2,y2[,map])`` - Fills the rectangle specified by the coordinates with the given `pen `. - Returns *true* if painting at least one character succeeded. + Fills the rectangle specified by the coordinates with the given + `pen `. Returns *true* if painting at least one + character succeeded. * ``dfhack.screen.findGraphicsTile(pagename,x,y)`` - Finds a tile from a graphics set (i.e. the raws used for creatures), + Finds a tile from a graphics set (i.e., the raws used for creatures), if in graphics mode and loaded. Returns: *tile, tile_grayscale*, or *nil* if not found. @@ -2277,9 +2948,9 @@ Functions: * ``dfhack.screen.hideGuard(screen,callback[,args...])`` - Removes screen from the viewscreen stack, calls the callback (with optional - supplied arguments), and then restores the screen on the top of the viewscreen - stack. + Removes screen from the viewscreen stack, calls the callback + (with optional supplied arguments), and then restores the screen on + the top of the viewscreen stack. * ``dfhack.screen.clear()`` @@ -2311,8 +2982,8 @@ Functions: Pen API ~~~~~~~ -The ``pen`` argument used by ``dfhack.screen`` functions may be represented by -a table with the following possible fields: +The ``pen`` argument used by ``dfhack.screen`` functions may be represented +by a table with the following possible fields: ``ch`` Provides the ordinary tile character, as either a 1-character string or a number. @@ -2345,7 +3016,7 @@ a table with the following possible fields: Alternatively, it may be a pre-parsed native object with the following API: -* ``dfhack.pen.make(base[,pen_or_fg,bg,bold])`` +* ``dfhack.pen.make(base[,pen_or_fg[,bg[,bold]]])`` Creates a new pre-parsed pen by combining its arguments according to the following rules: @@ -2366,7 +3037,7 @@ Alternatively, it may be a pre-parsed native object with the following API: This function always returns a new pre-parsed pen, or *nil*. -* ``dfhack.pen.parse(base[,pen_or_fg,bg,bold])`` +* ``dfhack.pen.parse(base[,pen_or_fg[,bg[,bold]]])`` Exactly like the above function, but returns ``base`` or ``pen_or_fg`` directly if they are already a pre-parsed native object. @@ -2471,22 +3142,27 @@ Supported callbacks and fields are: The table also may contain special keys: ``_STRING`` - Maps to an integer in range 0-255. Duplicates a separate "STRING_A???" code for convenience. + Maps to an integer in range 0-255. Duplicates a separate "STRING_A???" code + for convenience. ``_MOUSE_L, _MOUSE_R, _MOUSE_M`` - If the left, right, and/or middle mouse button is being pressed. + If the left, right, and/or middle mouse button was just pressed. ``_MOUSE_L_DOWN, _MOUSE_R_DOWN, _MOUSE_M_DOWN`` - If the left, right, and/or middle mouse button was just pressed. + If the left, right, and/or middle mouse button is being held down. - If this method is omitted, the screen is dismissed on reception of the ``LEAVESCREEN`` key. + If this method is omitted, the screen is dismissed on reception of the + ``LEAVESCREEN`` key. * ``function screen:onGetSelectedUnit()`` * ``function screen:onGetSelectedItem()`` * ``function screen:onGetSelectedJob()`` * ``function screen:onGetSelectedBuilding()`` +* ``function screen:onGetSelectedStockpile()`` +* ``function screen:onGetSelectedCivZone()`` +* ``function screen:onGetSelectedPlant()`` - Implement these to provide a return value for the matching + Override these if you want to provide a custom return value for the matching ``dfhack.gui.getSelected...`` function. @@ -2514,18 +3190,79 @@ a ``dfhack.penarray`` instance to cache their output. Returns a pen corresponding to the tile at (``x``, ``y``) in the internal buffer. Note that indices are 0-based. -* ``penarray:set_tile(x, y, pen)`` +* ``penarray:set_tile(x, y, pen)`` + + Sets the tile at (``x``, ``y``) in the internal buffer to the pen given. + +* ``penarray:draw(x, y, w, h, bufferx, buffery)`` + + Draws the contents of the internal buffer, beginning at + (``bufferx``, ``buffery``) and spanning ``w`` columns and ``h`` rows, to the + screen starting at (``x``, ``y``). Any invalid screen and buffer coordinates + are skipped. + + ``bufferx`` and ``buffery`` default to 0. + + +Textures module +--------------- + +In order for the game to render a particular tile (graphic), it needs to know the +``texpos`` - the position in the vector of the registered game textures (also the +graphical tile id passed as the ``tile`` field in a `Pen `). +Adding new textures to the vector is not difficult, but the game periodically +deletes textures that are in the vector, and that's a problem since it +invalidates the ``texpos`` value that used to point to that texture. +The ``textures`` module solves this problem by providing a stable handle instead of a +raw ``texpos``. When we need to draw a particular tile, we can look up the current +``texpos`` value via the handle. +Texture module can register textures in two ways: to reserved and dynamic ranges. +Reserved range is a limit buffer in a game texture vector, that will never be wiped. +It is good for static assets, which need to be loaded at the very beginning and will +be used during the process running. In other cases, it is better to use dynamic range. +If reserved range buffer limit has been reached, dynamic range will be used by default. + +* ``loadTileset(file, tile_px_w, tile_px_h[, reserved])`` + + Loads a tileset from the image ``file`` with give tile dimensions in pixels. The + image will be sliced in row major order. Returns an array of ``TexposHandle``. + ``reserved`` is optional boolean argument, which indicates texpos range. + ``true`` - reserved, ``false`` - dynamic (default). + + Example usage:: + + local logo_textures = dfhack.textures.loadTileset('hack/data/art/dfhack.png', 8, 12) + local first_texposhandle = logo_textures[1] + +* ``getTexposByHandle(handle)`` + + Get the current ``texpos`` for the given ``TexposHandle``. Always use this method to + get the ``texpos`` for your texture. ``texpos`` can change when game textures are + reset, but the handle will be the same. + +* ``createTile(pixels, tile_px_w, tile_px_h[, reserved])`` + + Create and register a new texture with the given tile dimensions and an array of + ``pixels`` in row major order. Each pixel is an integer representing color in packed + RBGA format (for example, #0022FF11). Returns a ``TexposHandle``. + ``reserved`` is optional boolean argument, which indicates texpos range. + ``true`` - reserved, ``false`` - dynamic (default). + +* ``createTileset(pixels, texture_px_w, texture_px_h, tile_px_w, tile_px_h[, reserved])`` - Sets the tile at (``x``, ``y``) in the internal buffer to the pen given. + Create and register a new texture with the given texture dimensions and an array of + ``pixels`` in row major order. Then slice it into tiles with the given tile + dimensions. Each pixel is an integer representing color in packed RBGA format (for + example #0022FF11). Returns an array of ``TexposHandle``. + ``reserved`` is optional boolean argument, which indicates texpos range. + ``true`` - reserved, ``false`` - dynamic (default). -* ``penarray:draw(x, y, w, h, bufferx, buffery)`` +* ``deleteHandle(handle)`` - Draws the contents of the internal buffer, beginning at - (``bufferx``, ``buffery``) and spanning ``w`` columns and ``h`` rows, to the - screen starting at (``x``, ``y``). Any invalid screen and buffer coordinates - are skipped. + ``handle`` here can be single ``TexposHandle`` or an array of ``TexposHandle``. + Deletes all metadata and texture(s) related to the given handle(s). The handles + become invalid after this call. - ``bufferx`` and ``buffery`` default to 0. Filesystem module ----------------- @@ -2547,7 +3284,8 @@ unless otherwise noted. * ``dfhack.filesystem.getcwd()`` - Returns the current working directory. To retrieve the DF path, use ``dfhack.getDFPath()`` instead. + Returns the current working directory. To retrieve the DF path, use + ``dfhack.getDFPath()`` instead. * ``dfhack.filesystem.chdir(path)`` @@ -2563,12 +3301,14 @@ unless otherwise noted. * ``dfhack.filesystem.mkdir(path)`` - Creates a new directory. Returns ``false`` if unsuccessful, including if ``path`` already exists. + Creates a new directory. Returns ``false`` if unsuccessful, including if + ``path`` already exists. * ``dfhack.filesystem.mkdir_recursive(path)`` - Creates a new directory, including any intermediate directories that don't exist yet. - Returns ``true`` if the folder was created or already existed, or ``false`` if unsuccessful. + Creates a new directory, including any intermediate directories that + don't exist yet. Returns ``true`` if the folder was created or already + existed, or ``false`` if unsuccessful. * ``dfhack.filesystem.rmdir(path)`` @@ -2576,14 +3316,9 @@ unless otherwise noted. * ``dfhack.filesystem.mtime(path)`` - Returns the modification time (in seconds) of the file or directory specified by ``path``, - or -1 if ``path`` does not exist. This depends on the system clock and should only be used locally. - -* ``dfhack.filesystem.atime(path)`` -* ``dfhack.filesystem.ctime(path)`` - - Return values vary across operating systems - return the ``st_atime`` and ``st_ctime`` - fields of a C++ stat struct, respectively. + Returns the modification time (in seconds) of the file or directory + specified by ``path``, or -1 if ``path`` does not exist. + This depends on the system clock and should only be used locally. * ``dfhack.filesystem.listdir(path)`` @@ -2591,15 +3326,24 @@ unless otherwise noted. * ``dfhack.filesystem.listdir_recursive(path [, depth = 10[, include_prefix = true]])`` - Lists all files/directories in a directory and its subdirectories. All directories - are listed before their contents. Returns a table with subtables of the format:: + Lists all files/directories in a directory and its subdirectories. All + directories are listed before their contents. Returns a table with subtables + of the format: ``{path: 'path to file', isdir: true|false}`` + + Note that ``listdir()`` returns only the base name of each directory entry, + while ``listdir_recursive()`` returns the initial path and all components + following it for each entry. Set ``include_prefix`` to false if you don't + want the ``path`` string prepended to the returned filenames. + +* ``dfhack.filesystem.getBaseDir()`` - {path: 'path to file', isdir: true|false} + Returns a directory to which DF (and thus DFHack) can save files. This will either + be DF's install directory, or the path returned by ``SDLGetPrefDir``, depending on whether + DF is in "portable mode" or not. - Note that ``listdir()`` returns only the base name of each directory entry, while - ``listdir_recursive()`` returns the initial path and all components following it - for each entry. Set ``include_prefix`` to false if you don't want the ``path`` - string prepended to the returned filenames. +* ``dfhack.filesystem.getInstallDir()`` + + Returns the the directory in which DF is installed. Console API ----------- @@ -2635,7 +3379,8 @@ and are only documented here for completeness: * ``dfhack.internal.setAddress(name, value)`` - Sets the global address ``name``. Returns the value of ``getAddress`` before the change. + Sets the global address ``name``. Returns the value of ``getAddress`` + before the change. * ``dfhack.internal.getVTable(name)`` @@ -2661,7 +3406,7 @@ and are only documented here for completeness: * ``dfhack.internal.patchMemory(dest,src,count)`` - Like memmove below, but works even if dest is read-only memory, e.g. code. + Like memmove below, but works even if dest is read-only memory, e.g., code. If destination overlaps a completely invalid memory region, or another error occurs, returns false. @@ -2691,12 +3436,17 @@ and are only documented here for completeness: using ``count`` steps of ``step`` bytes. Returns: *step_idx, sum_idx, found_ptr*, or *nil* if not found. -* ``dfhack.internal.diffscan(old_data, new_data, start_idx, end_idx, eltsize[, oldval, newval, delta])`` +* ``dfhack.internal.diffscan(old_data, new_data, start_idx, end_idx, eltsize[, oldval[, newval[, delta]]])`` Searches for differences between buffers at ptr1 and ptr2, as integers of size eltsize. The oldval, newval or delta arguments may be used to specify additional constraints. Returns: *found_index*, or *nil* if end reached. +* ``dfhack.internal.cxxDemangle(mangled_name)`` + + Decodes a mangled C++ symbol name. Returns the demangled name on success, or + ``nil, error_message`` on failure. + * ``dfhack.internal.getDir(path)`` Lists files/directories in a directory. @@ -2710,10 +3460,10 @@ and are only documented here for completeness: Registers ``path`` as a `script path `. If ``search_before`` is passed and ``true``, the path will be searched before - the default paths (e.g. ``dfhack-config/scripts``, ``hack/scripts``); otherwise, + the default paths (e.g., ``dfhack-config/scripts``, ``hack/scripts``); otherwise, it will be searched after. - Returns ``true`` if successful or ``false`` otherwise (e.g. if the path does + Returns ``true`` if successful or ``false`` otherwise (e.g., if the path does not exist or has already been registered). * ``dfhack.internal.removeScriptPath(path)`` @@ -2728,12 +3478,14 @@ and are only documented here for completeness: * ``dfhack.internal.findScript(name)`` - Searches `script paths ` for the script ``name`` and returns the - path of the first file found, or ``nil`` on failure. + Searches `script paths ` for the script ``name`` (which + includes the ``.lua`` extension) and returns the absolute path of the first + file found, or ``nil`` on failure. Slashes in the path are canonicalized to + forward slashes. .. note:: - This requires an extension to be specified (``.lua`` or ``.rb``) - use - ``dfhack.findScript()`` to include the ``.lua`` extension automatically. + You can use the ``dfhack.findScript()`` wrapper if you want to specify the + script name without the ``.lua`` extension. * ``dfhack.internal.runCommand(command[, use_console])`` @@ -2747,7 +3499,7 @@ and are only documented here for completeness: Returns a table with a ``status`` key set to a ``command_result`` constant (``status = CR_OK`` indicates success). Additionally, if ``use_console`` is not true, enumerated table entries of the form ``{color, text}`` are included, - e.g. ``result[1][0]`` is the color of the first piece of text printed (a + e.g., ``result[1][0]`` is the color of the first piece of text printed (a ``COLOR_`` constant). These entries can be iterated over with ``ipairs()``. * ``dfhack.internal.md5(string)`` @@ -2768,6 +3520,102 @@ and are only documented here for completeness: Returns a numeric identifier of the current thread. +* ``dfhack.internal.msizeAddress(address)`` + + Returns the allocation size of an address. + Does not require a heap snapshot. This function will crash on an invalid pointer. + Windows only. + +* ``dfhack.internal.getHeapState()`` + + Returns the state of the heap. 0 == ok or empty, 1 == heap bad ptr, 2 == heap bad begin, + 3 == heap bad node. Does not require a heap snapshot. This may be unsafe to use directly + from lua if the heap is corrupt. Windows only. + +* ``dfhack.internal.heapTakeSnapshot()`` + + Clears any existing heap snapshot, and takes an internal heap snapshot for later + consumption. Windows only. Returns the same values as getHeapState() + +* ``dfhack.internal.isAddressInHeap(address)`` + + Checks if an address is a member of the heap. It may be dangling. + Requires a heap snapshot. + +* ``dfhack.internal.isAddressActiveInHeap(address)`` + + Checks if an address is a member of the heap, and actively in use (i.e., valid). + Requires a heap snapshot. + +* ``dfhack.internal.isAddressUsedAfterFreeInHeap(address)`` + + Checks if an address is a member of the heap, but is not currently allocated + (i.e., use after free). Requires a heap snapshot. + Note that Windows eagerly removes freed pointers from the heap, + so this is unlikely to trigger. + +* ``dfhack.internal.getAddressSizeInHeap(address)`` + + Gets the allocated size of a member of the heap. Useful for detecting misaligns, + as this does not return block size. Requires a heap snapshot. + +* ``dfhack.internal.getRootAddressOfHeapObject(address)`` + + Gets the base heap allocation address of a address that lies internally within + a piece of allocated memory. E.g., if you have a heap allocated struct and call + this function on the address of the second member, it will return the address + of the struct. Returns 0 if the address is not found. Requires a heap snapshot. + +* ``dfhack.internal.getClipboardTextCp437()`` + + Gets the system clipboard text (and converts text to CP437 encoding). + +* ``dfhack.internal.setClipboardTextCp437(text)`` + + Sets the system clipboard text from a CP437 string. + +* ``dfhack.internal.getClipboardTextCp437Multiline()`` + + Gets the system clipboard text (and converts text to CP437 encoding). + Character 0x10 is interpreted as a newline instead of the usual CP437 glyph. + The text is returned as a list of strings, one for each line of text on the + clipboard. + +* ``dfhack.internal.setClipboardTextCp437Multiline(text)`` + + Sets the system clipboard text from a CP437 string. Character 0x10 is + interpreted as a newline instead of the usual CP437 glyph. + +* ``dfhack.internal.getModifiers()`` + + Returns the state of the keyboard modifier keys in a table of string -> + boolean. The keys are ``ctrl``, ``shift``, ``super``, and ``alt``. + +* ``dfhack.internal.getSuppressDuplicateKeyboardEvents()`` +* ``dfhack.internal.setSuppressDuplicateKeyboardEvents(suppress)`` + + Gets and sets the flag for whether to suppress DF key events when a DFHack + keybinding is matched and a command is launched. + +* ``dfhack.internal.setMortalMode(value)`` +* ``dfhack.internal.setArmokTools(tool_names)`` + + Used to sync mortal mode state to DFHack Core memory for use in keybinding + checks. + +* ``dfhack.internal.setPreferredNumberFormat(value)`` +* ``dfhack.internal.getPreferredNumberFormat()`` + + Sets (gets) the preferred numeric format. ``0`` means no formatting (e.g., + ``1234567``), ``1`` means English formatting (e.g., ``1,234,567``), ``2`` + means system locale formatting (e.g., ``12.345`` on German systems, + ``12,34,567`` on Indian systems, etc.), ``3`` means SI suffix formatting + (e.g., ``12.3M``), and ``4`` means scientific notation (e.g., ``1.23457e+06``). + +For the internal preference values, be aware that setting the values via these +functions will not persist the choice across program invocations. You must set +preferences via the `control-panel` or `gui/control-panel` interfaces for that. + .. _lua-core-context: Core interpreter context @@ -2870,7 +3718,8 @@ The following module management functions are provided: ... return _ENV - If called the second time, returns the same table; thus providing reload support. + If called the second time, returns the same table, + thus providing reload support. * ``reload(name)`` @@ -2902,6 +3751,12 @@ environment by the mandatory init file dfhack.lua: COLOR_LIGHTBLUE, COLOR_LIGHTGREEN, COLOR_LIGHTCYAN, COLOR_LIGHTRED, COLOR_LIGHTMAGENTA, COLOR_YELLOW, COLOR_WHITE + ``COLOR_GREY`` and ``COLOR_DARKGREY`` can also be spelled ``COLOR_GRAY`` and + ``COLOR_DARKGRAY``. + + Note: ``COLOR_RESET`` is not valid in a `Pen `, and using it in a Pen color field + will result in runtime warnings and may result in color flashing or other unexpected results. + * State change event codes, used by ``dfhack.onStateChange`` Available only in the `core context `, as is the event itself: @@ -2963,7 +3818,8 @@ environment by the mandatory init file dfhack.lua: * ``safe_index(obj,index...)`` Walks a sequence of dereferences, which may be represented by numbers or strings. - Returns *nil* if any of obj or indices is *nil*, or a numeric index is out of array bounds. + Returns *nil* if any of obj or indices is *nil*, obj isn't indexable, or a numeric + index is out of array bounds. * ``ensure_key(t, key[, default_value])`` @@ -2971,6 +3827,11 @@ environment by the mandatory init file dfhack.lua: set to the value of ``default_value``, which defaults to ``{}`` if not set. The new or existing value of ``t[key]`` is then returned. +* ``ensure_keys(t, key...)`` + + Walks a series of keys, creating any missing keys as empty tables. The new or + existing table from the last specified key is returned from the function. + .. _lua-string: String class extensions @@ -2996,25 +3857,99 @@ functions. These are invoked just like standard string functions, e.g.:: Split a string by the given delimiter. If no delimiter is specified, space (``' '``) is used. The delimiter is treated as a pattern unless a ``plain`` is specified and set to ``true``. To treat multiple successive delimiter - characters as a single delimiter, e.g. to avoid getting empty string elements, + characters as a single delimiter, e.g., to avoid getting empty string elements, pass a pattern like ``' +'``. Be aware that passing patterns that match empty strings (like ``' *'``) will result in improper string splits. * ``string:trim()`` - Removes spaces (i.e. everything that matches ``'%s'``) from the start and end + Removes spaces (i.e., everything that matches ``'%s'``) from the start and end of a string. Spaces between non-space characters are left untouched. -* ``string:wrap([width])`` +* ``string:wrap([width[, opts]])`` Inserts newlines into a string so no individual line exceeds the given width. Lines are split at space-separated word boundaries. Any existing newlines are kept in place. If a single word is longer than width, it is split over - multiple lines. If width is not specified, 72 is used. + multiple lines. If ``width`` is not specified, 72 is used. The ``opts`` + parameter can be a table with the following boolean fields specified: + + :return_as_table: if ``true``, then the function will return a table of + strings, with each string representing one wrapped line. Otherwise, a + single multi-line string is returned. + :keep_trailing_spaces: if ``true``, then spaces at the end of a wrapped + line will be kept. Normally, spaces at the end of a wrapped line are + elided. + :keep_original_newlines: if ``true`` (and ``return_as_table`` is also + ``true``), then if a newline was encountered in the original string, it + will be included in the relevant table entry. * ``string:escape_pattern()`` - Escapes regex special chars in a string. E.g. ``'a+b'`` -> ``'a%+b'``. + Escapes regex special chars in a string. E.g., ``'a+b'`` -> ``'a%+b'``. + +.. _script-manager: + +script-manager +============== + +This module contains functions useful for mods that contain DFHack scripts to +retrieve source and state paths. The value to pass as ``mod_id`` must be the +same as the mod ID in the mod's :file:`info.txt` metadata file. The returned +paths will be relative to the top level game directory and will end in a slash +(``/``). + +* ``scriptmanager.getModSourcePath(mod_id)`` + + Retrieve the source directory path for the mod with the given ID or ``nil`` + if the mod cannot be found. If multiple versions of a mod are found, the path + for the version loaded by the current world is used. If the current world + does not have the mod loaded (or if a world is not currently loaded) then the + path for the most recent version of the mod is returned. Example:: + + local scriptmanager = require('script-manager') + local path = scriptmanager.getModSourcePath('my_awesome_mod') + print(path) + + Which would print something like: ``mods/2945575779/`` or + ``data/installed_mods/my_awesome_mod (108)/``, depending on where the mod is + being loaded from. + +* ``scriptmanager.getModStatePath(mod_id)`` + + Retrieve the directory path where a mod with the given ID should store its + persistent state. Example:: + + local json = require('json') + local scriptmanager = require('script-manager') + local path = scriptmanager.getModStatePath('my_awesome_mod') + config = config or json.open(path .. 'settings.json') + + Which would open ``dfhack-config/mods/my_awesome_mod/settings.json``. After + calling ``getModStatePath``, the returned directory is guaranteed to exist. + +* ``get_active_mods()`` + + Returns a list of all active mods in the current world. The list elements are + tables containing the following fields: + + - id: mod id + - name: mod display name + - version: mod display version + - numeric_version: numeric mod version + - path: path to the mod directory + - vanilla: true if this is a vanilla mod + +* ``get_mod_info_metadata(mod_path, tags)`` + + Returns a table with the values of the given tags from the ``info.txt`` file + in the given mod directory. The ``mod_path`` argument must be a path to a mod + directory (retrieved, say, from ``get_active_mods()``). The ``tags`` argument + is a string or a list of strings representing the tags to retrieve. The + function will return a table with the tag names as keys and their values as + values. If a requested tag includes the string ``NUMERIC_``, it will return + the numeric value for that tag (e.g., ``NUMERIC_VERSION`` will return the + numeric version of the mod as a number instead of a string). utils ===== @@ -3035,6 +3970,16 @@ utils Returns a lua sequence of numbers in start..end. +* ``utils.invert(table)`` + + Returns a table where keys and values are reversed (i.e., a table containing a + ``value = key`` entry for every ``key = value`` entry in the argument). + +* ``utils.tabulate(fun, start, stop[, step])`` + + For numbers ``start``, ``stop`` and ``step``, with ``step`` defaulting to 1, + returns a lua sequence ``{ fun(start), fun(start+step), ... , fun(stop) }``. + * ``utils.make_sort_order(data, ordering)`` Computes a sorted permutation of objects in data, as a table of integer @@ -3147,11 +4092,27 @@ utils * ``utils.erase_sorted_key(vector,key,field,cmpfun)`` - Removes the item with the given key from the list. Returns: *did_erase, vector[idx], idx*. + Removes the item with the given key from the list. + Returns: *did_erase, vector[idx], idx*. * ``utils.erase_sorted(vector,item,field,cmpfun)`` - Exactly like ``erase_sorted_key``, but if field is specified, takes the key from ``item[field]``. + Exactly like ``erase_sorted_key``, but if field is specified, + takes the key from ``item[field]``. + +* ``utils.search_text(text,search_tokens)`` + + Returns true if all the search tokens are found within ``text``. The text and + search tokens are normalized to lower case and special characters (e.g., ``A`` + with a circle on it) are converted to their "basic" forms (e.g., ``a``). + ``search_tokens`` can be a string or a table of strings. If it is a string, + it is split into space-separated tokens before matching. The search tokens + are treated literally, so any special regular expression characters do not + need to be escaped. If ``utils.FILTER_FULL_TEXT`` is ``true``, then the + search tokens can match any part of ``text``. If it is ``false``, then the + matches must happen at the beginning of words within ``text``. You can change + the value of ``utils.FILTER_FULL_TEXT`` in `gui/control-panel` on the + "Preferences" tab. * ``utils.call_with_string(obj,methodname,...)`` @@ -3237,13 +4198,13 @@ parameters. popular ``getopt`` library. You would use this instead of the simpler ``processArgs`` function if any of the following are true: - * You want both short (e.g. ``-f``) and aliased long-form (e.g. + * You want both short (e.g., ``-f``) and aliased long-form (e.g., ``--filename``) options - * You have commandline components that are not arguments to options (e.g. you + * You have commandline components that are not arguments to options (e.g., you want to run your script like ``yourscript command --verbose arg1 arg2 arg3`` instead of ``yourscript command --verbose --opt1 arg1 --opt2 arg2 --opt3 arg3)``. - * You want the convenience of combining options into shorter strings (e.g. + * You want the convenience of combining options into shorter strings (e.g., ``'-abcarg'`` instead of ``'-a -b -c arg``) * You want to be able to parse and validate the option arguments as the commandline is being processed, as opposed to validating everything after @@ -3255,20 +4216,20 @@ parameters. make them very easy to type quickly by users who are familiar with your script options. Long options, on the other hand, are easily understandable by everyone and are useful in places where clarity is more important than - brevity, e.g. in example commands. Each option can be configured to take an + brevity, e.g., in example commands. Each option can be configured to take an argument, which will be the string token that follows the option name on the commandline. Short options are a single letter long and are specified on a commandline by - prefixing them with a single dash (e.g. the short option ``a`` would appear + prefixing them with a single dash (e.g., the short option ``a`` would appear on the commandline as ``-a``). Multiple successive short options that do not - take arguments can be combined into a single option string (e.g. ``'-abc'`` + take arguments can be combined into a single option string (e.g., ``'-abc'`` instead of ``'-a -b -c'``). Moreover, the argument for a short option can be appended directly to the single-letter option without an intervening space - (e.g. ``-d param`` can be written as ``-dparam``). These two convenience + (e.g., ``-d param`` can be written as ``-dparam``). These two convenience shorthand forms can be combined, allowing groups of short parameters to be written together, as long as at most the last short option takes an argument - (e.g. combining the previous two examples into ``-abcdparam``) + (e.g., combining the previous two examples into ``-abcdparam``) Long options focus on clarity. They are usually entire words, or several words combined with hyphens (``-``) or underscores (``_``). If they take an @@ -3287,7 +4248,7 @@ parameters. optionActions: list of option specifications and returns a list of positional parameters -- that is, all strings that are - neither options nor argruments to options. Options and positional parameters + neither options nor arguments to options. Options and positional parameters can appear in any order on the commandline, as long as arguments to options immediately follow the option itself. @@ -3296,7 +4257,7 @@ parameters. * ``shortOptionName`` is a one-character string (or ``''`` or ``nil`` if the parameter only has a long form). Numbers cannot be short options, and - negative numbers (e.g. ``'-10'``) will be interpreted as positional + negative numbers (e.g., ``'-10'``) will be interpreted as positional parameters and returned in the positional parameters list. * ``longOptionAlias`` is an optional longer form of the short option name. If no short option name is specified, then this element is required. @@ -3363,6 +4324,13 @@ parameters. ``tonumber(arg)``. If ``arg_name`` is specified, it is used to make error messages more useful. +* ``argparse.boolean(arg, arg_name)`` + + Converts ``string.lower(arg)`` from "yes/no/on/off/true/false/etc..." to a lua + boolean. Throws if the value can't be converted, otherwise returns + ``true``/``false``. If ``arg_name`` is specified, it is used to make error + messages more useful. + dumper ====== @@ -3433,6 +4401,10 @@ Each entry has several properties associated with it: Returns the set of tag names for the given entry. +* ``helpdb.has_tag(entry, tag)`` + + Returns whether the given entry exists and has the specified tag. + * ``helpdb.is_tag(str)``, ``helpdb.is_tag(list)`` Returns whether the given string (or list of strings) is a (are all) valid tag @@ -3451,7 +4423,7 @@ Each entry has several properties associated with it: Returns a list of names for entries that match the given filters. The list is alphabetized by their last path component, with populated path components - coming before null path components (e.g. ``autobutcher`` will immediately + coming before null path components (e.g., ``autobutcher`` will immediately follow ``gui/autobutcher``). The optional ``include`` and ``exclude`` filter params are maps (or lists of maps) with the following elements: @@ -3463,12 +4435,12 @@ Each entry has several properties associated with it: :entry_type: if a string, matches entries of the given type. if a table of strings, includes entries that match any of the given types. - Elements in a map are ANDed together (e.g. if both ``str`` and ``tag`` are + Elements in a map are ANDed together (e.g., if both ``str`` and ``tag`` are specified, the match is on any of the ``str`` elements AND any of the ``tag`` elements). - If lists of filters are passed instead of a single map, the maps are ORed - (that is, the match succeeds if any of the filters match). + If lists of filters are passed instead of a single map, the match succeeds if + all of the filters match. If ``include`` is ``nil`` or empty, then all entries are included. If ``exclude`` is ``nil`` or empty, then no entries are filtered out. @@ -3551,13 +4523,14 @@ Implements a trivial single-inheritance class system. * ``Class.ATTRS { foo = xxx, bar = yyy }`` - Declares certain instance fields to be attributes, i.e. auto-initialized + Declares certain instance fields to be attributes, i.e., auto-initialized from fields in the table used as the constructor argument. If omitted, they are initialized with the default values specified in this declaration. If the default value should be *nil*, use ``ATTRS { foo = DEFAULT_NIL }``. - Declaring an attribute is mostly the same as defining your ``init`` method like this:: + Declaring an attribute is mostly the same as defining your ``init`` method + like this:: function Class.init(args) self.attr1 = args.attr1 or default1 @@ -3621,7 +4594,7 @@ Predefined instance methods: * ``instance:invoke_after(method_name, args...)`` Like invoke_before, only the method is called after the recursive call to super, - i.e. invocations happen in the parent to child order. + i.e., invocations happen in the parent to child order. These two methods are inspired by the Common Lisp before and after methods, and are intended for implementing similar protocols for certain things. The class @@ -3638,42 +4611,45 @@ A module for reading custom tokens added to the raws by mods. * ``customRawTokens.getToken(typeDefinition, token)`` - Where ``typeDefinition`` is a type definition struct as seen in ``df.global.world.raws`` - (e.g.: ``dfhack.gui.getSelectedItem().subtype``) and ``token`` is the name of the custom token - you want read. The arguments from the token will then be returned as strings using single or - multiple return values. If the token is not present, the result is false; if it is present - but has no arguments, the result is true. For ``creature_raw``, it checks against no caste. - For ``plant_raw``, it checks against no growth. + Where ``typeDefinition`` is a type definition struct as seen in + ``df.global.world.raws`` (e.g.: ``dfhack.gui.getSelectedItem().subtype``) + and ``token`` is the name of the custom token you want read. The arguments + from the token will then be returned as strings using single or multiple + return values. If the token is not present, the result is false; if it is present + but has no arguments, the result is true. For ``creature_raw``, it checks against + no caste. For ``plant_raw``, it checks against no growth. * ``customRawTokens.getToken(typeInstance, token)`` - Where ``typeInstance`` is a unit, entity, item, job, projectile, building, plant, or interaction - instance. Gets ``typeDefinition`` and then returns the same as ``getToken(typeDefinition, token)``. - For units, it gets the token from the race or caste instead if applicable. For plant growth items, - it gets the token from the plant or plant growth instead if applicable. For plants it does the same - but with growth number -1. + Where ``typeInstance`` is a unit, entity, item, job, projectile, building, + plant, or interaction instance. Gets ``typeDefinition`` and then returns the same + as ``getToken(typeDefinition, token)``. For units, it gets the token from the race + or caste instead if applicable. For plant growth items, it gets the token from the + plant or plant growth instead if applicable. For plants it does the same but with + growth number -1. * ``customRawTokens.getToken(raceDefinition, casteNumber, token)`` - The same as ``getToken(unit, token)`` but with a specified race and caste. Caste number -1 is no caste. + The same as ``getToken(unit, token)`` but with a specified race and caste. + Caste number -1 is no caste. * ``customRawTokens.getToken(raceDefinition, casteName, token)`` - The same as ``getToken(unit, token)`` but with a specified race and caste, using caste name (e.g. "FEMALE") - instead of number. + The same as ``getToken(unit, token)`` but with a specified race and caste, using + caste name (e.g., "FEMALE") instead of number. * ``customRawTokens.getToken(plantDefinition, growthNumber, token)`` - The same as ``getToken(plantGrowthItem, token)`` but with a specified plant and growth. Growth number -1 - is no growth. + The same as ``getToken(plantGrowthItem, token)`` but with a specified plant and + growth. Growth number -1 is no growth. * ``customRawTokens.getToken(plantDefinition, growthName, token)`` - The same as ``getToken(plantGrowthItem, token)`` but with a specified plant and growth, using growth name - (e.g. "LEAVES") instead of number. + The same as ``getToken(plantGrowthItem, token)`` but with a specified plant and + growth, using growth name (e.g., "LEAVES") instead of number. -It is recommended to prefix custom raw tokens with the name of your mod to avoid duplicate behaviour where -two mods make callbacks that work on the same tag. +It is recommended to prefix custom raw tokens with the name of your mod to avoid +duplicate behaviour where two mods make callbacks that work on the same tag. Examples: @@ -3708,6 +4684,8 @@ Examples: end unit.body.blood_count = math.min(unit.body.blood_max, unit.body.blood_count + healAmount) +.. _lua-ui-library: + ================== In-game UI Library ================== @@ -3757,7 +4735,18 @@ Misc Every argument after the initial screen may be *nil*, a numeric keycode, a string keycode, a sequence of numeric or string keycodes, or a mapping of keycodes to *true* or *false*. For instance, it is possible to use the - table passed as argument to ``onInput``. + table passed as argument to ``onInput``. The ``_STRING`` convenience field of + an ``onInput`` keys table will be ignored; the presence (or absence) of a + ``STRING_A???`` keycode will determine the text content of the simulated + input. + + You can send mouse clicks as well by setting the ``_MOUSE_L`` key or other + mouse-related pseudo-keys documented with the ``screen:onInput(keys)`` + function above. Note that if you are simulating a click at a specific spot on + the screen, you must set ``df.global.gps.mouse_x`` and + ``df.global.gps.mouse_y`` if you are clicking on the interface layer or + ``df.global.gps.precise_mouse_x`` and ``df.global.gps.precise_mouse_y`` if + you are clicking on the map. * ``mkdims_xy(x1,y1,x2,y2)`` @@ -3769,6 +4758,16 @@ Misc Returns the same kind of table as ``mkdims_xy``, only this time it computes ``x2`` and ``y2``. +* ``get_interface_rect()`` + + Returns the table rect (as per ``mkdims_xy``) for the interface area of the + screen, respecting the player's setting for ``max_interface_percentage``. + +* ``get_interface_frame()`` + + Returns the frame (as per `Widget class`_) for configuring a ``Widget`` with + a body that represents the interface area. + * ``is_in_rect(rect,x,y)`` Checks if the given point is within a rectangle, represented by a table produced @@ -3781,7 +4780,8 @@ Misc * ``getKeyDisplay(keycode)`` - Wraps ``dfhack.screen.getKeyDisplay`` in order to allow using strings for the keycode argument. + Wraps ``dfhack.screen.getKeyDisplay`` in order to allow using strings for + the keycode argument. * ``invert_color(color, bold)`` @@ -3809,7 +4809,7 @@ clip area rectangle. It is the base of the ``Painter`` class, and is used by * ``rect:isDefunct()`` - Returns *true* if the clip area is empty, i.e. no painting is possible. + Returns *true* if the clip area is empty, i.e., no painting is possible. * ``rect:inClipGlobalXY(x,y)`` @@ -3817,7 +4817,8 @@ clip area rectangle. It is the base of the ``Painter`` class, and is used by * ``rect:inClipLocalXY(x,y)`` - Checks if these coordinates (specified relative to ``x1,y1``) are within the clip rectangle. + Checks if these coordinates (specified relative to ``x1,y1``) are within the + clip rectangle. * ``rect:localXY(x,y)`` @@ -3892,7 +4893,8 @@ for details). * ``painter:newline([dx])`` - Advances the cursor to the start of the next line plus the given x offset, and returns *self*. + Advances the cursor to the start of the next line plus the given x offset, + and returns *self*. * ``painter:pen(...)`` @@ -3904,7 +4906,8 @@ for details). * ``painter:key_pen(...)`` - Sets the current keybinding pen to ``dfhack.pen.parse(old_pen,...)``, and returns *self*. + Sets the current keybinding pen to ``dfhack.pen.parse(old_pen,...)``, + and returns *self*. * ``painter:map(to_map)`` @@ -3920,17 +4923,19 @@ for details). * ``painter:fill(x1,y1,x2,y2[,...])`` or ``painter:fill(rect[,...])`` - Fills the specified local coordinate rectangle with ``dfhack.pen.parse(cur_pen,...)``, - and returns *self*. + Fills the specified local coordinate rectangle with + ``dfhack.pen.parse(cur_pen,...)``, and returns *self*. * ``painter:char([char[, ...]])`` - Paints one character using ``char`` and ``dfhack.pen.parse(cur_pen,...)``; returns *self*. - The ``char`` argument, if not nil, is used to override the ``ch`` property of the pen. + Paints one character using ``char`` and ``dfhack.pen.parse(cur_pen,...)``. + Returns *self*. The ``char`` argument, if not nil, is used to override the + ``ch`` property of the pen. * ``painter:tile([char, tile[, ...]])`` - Like ``char()`` above, but also allows overriding the ``tile`` property on ad-hoc basis. + Like ``char()`` above, but also allows overriding the ``tile`` property on + ad-hoc basis. * ``painter:string(text[, ...])`` @@ -3938,7 +4943,8 @@ for details). * ``painter:key(keycode[, ...])`` - Paints the description of the keycode using ``dfhack.pen.parse(cur_key_pen,...)``; returns *self*. + Paints the description of the keycode using ``dfhack.pen.parse(cur_key_pen,...)``. + Returns *self*. * ``painter:key_string(keycode, text, ...)`` @@ -3946,7 +4952,8 @@ for details). the specified keycode description and text, separated by ``:``. Any extra arguments are passed directly to ``string()``. Returns *self*. -Unless specified otherwise above, all Painter methods return *self*, in order to allow chaining them like this:: +Unless specified otherwise above, all Painter methods return *self*, in order to +allow chaining them like this:: painter:pen(foo):seek(x,y):char(1):advance(1):string('bar')... @@ -4132,7 +5139,8 @@ It adds the following methods: * ``screen:renderParent()`` - Asks the parent native screen to render itself, or clears the screen if impossible. + Asks the parent native screen to render itself, or clears the screen + if impossible. * ``screen:sendInputToParent(...)`` @@ -4144,10 +5152,10 @@ It adds the following methods: if parent is not specified, places this one one topmost. Before calling ``dfhack.screen.show``, calls ``self:onAboutToShow(parent)``. Note that ``onAboutToShow()`` can dismiss active screens, and therefore change the - potential parent. If parent is not specified, this function will re-detect the - current topmost window after ``self:onAboutToShow(parent)`` returns. This - function returns ``self`` as a convenience so you can write such code as - ``local view = MyScreen{params=val}:show()``. + potential parent. If parent is not specified, this function will re-detect + the current topmost window after ``self:onAboutToShow(parent)`` returns. + This function returns ``self`` as a convenience so you can write such code + as ``local view = MyScreen{params=val}:show()``. * ``screen:onAboutToShow(parent)`` *(for overriding)* @@ -4192,11 +5200,11 @@ input skips all unfocused ZScreens under that ZScreen and is passed directly to the first non-ZScreen viewscreen. There are class attributes that can be set to control what kind of unhandled input is passed to the lower layers. -If multiple ZScreens are visible and the player left or right clicks on a -visible element of a non-focused ZScreen, that ZScreen will be given focus. This -allows multiple DFHack GUI tools to be usable at the same time. If the mouse is -clicked away from the ZScreen widgets, that ZScreen loses focus. If no ZScreen -has focus, all input is passed directly through to the first underlying +If multiple ZScreens are visible and the player scrolls or left/right clicks on +a visible element of a non-focused ZScreen, that ZScreen will be given focus. +This allows multiple DFHack GUI tools to be usable at the same time. If the +mouse is clicked away from the ZScreen widgets, that ZScreen loses focus. If no +ZScreen has focus, all input is passed directly through to the first underlying non-ZScreen viewscreen. For a ZScreen with keyboard focus, if :kbd:`Esc` or the right mouse button is @@ -4224,8 +5232,8 @@ ZScreen provides the following functions: * ``zscreen:raise()`` Raises the ZScreen to the top of the viewscreen stack, gives it keyboard - focus, and returns a reference to ``self``. A common pattern is to check if a - tool dialog is already active when the tool command is run and raise the + focus, and returns a reference to ``self``. A common pattern is to check if + a tool dialog is already active when the tool command is run and raise the existing dialog if it exists or show a new dialog if it doesn't. See the sample code below for an example. @@ -4250,6 +5258,10 @@ ZScreen subclasses can set the following attributes: of the screen other than the tool window. If the player clicks on a different ZScreen window, focus still transfers to that other ZScreen. +* ``defocused`` (default: ``false``) + + Whether the ZScreen starts in a defocused state. + * ``initial_pause`` (default: ``DEFAULT_INITIAL_PAUSE or not pass_mouse_clicks``) Whether to pause the game when the ZScreen is shown. If not explicitly set, @@ -4298,13 +5310,14 @@ Here is an example skeleton for a ZScreen tool window:: function MyWindow:init() self:addviews{ - -- add subview widgets here + -- add subview widgets here } end - function MyWindow:onInput(keys) - -- if required - end + -- implement if you need to handle custom input + --function MyWindow:onInput(keys) + -- return MyWindow.super.onInput(self, keys) + --end MyScreen = defclass(MyScreen, gui.ZScreen) MyScreen.ATTRS { @@ -4323,40 +5336,12 @@ Here is an example skeleton for a ZScreen tool window:: view = view and view:raise() or MyScreen{}:show() -FramedScreen class +ZScreenModal class ------------------ -A Screen subclass that paints a visible frame around its body. -Most dialogs should inherit from this class. - -A framed screen has the following attributes: - -:frame_style: A table that defines a set of pens to draw various parts of the frame. -:frame_title: A string to display in the middle of the top of the frame. -:frame_width: Desired width of the client area. If *nil*, the screen will occupy the whole width. -:frame_height: Likewise, for height. -:frame_inset: The gap between the frame and the client area. Defaults to 0. -:frame_background: The pen to fill in the frame with. Defaults to CLEAR_PEN. - -There are the following predefined frame style tables: - -* ``WINDOW_FRAME`` - - A frame suitable for a draggable, optionally resizable window. - -* ``PANEL_FRAME`` - - A frame suitable for a static (non-draggable, non-resizable) panel. - -* ``MEDIUM_FRAME`` - - A frame suitable for overlay widget panels. - -* ``INTERIOR_FRAME`` - - A frame suitable for light interior accent elements. This frame does *not* have - a visible ``DFHack`` signature on it, so it must not be used as the most external - frame for a DFHack-owned UI. +A ZScreen convenience subclass that sets the attributes to something +appropriate for modal dialogs. The game is force paused, and no input is passed +through to the underlying viewscreens. gui.widgets =========== @@ -4418,9 +5403,9 @@ Base of all the widgets. Inherits from View and has the following attributes: Panel class ----------- -Inherits from Widget, and intended for framing and/or grouping subviews. It is -a good class to choose for your "main screen" since it supports window dragging -and frames. +Inherits from Widget, and intended for framing and/or grouping subviews. Though +this can be used for your "main window", see the `Window class`_ below for a +more conveniently configured ``Panel`` subclass. Has attributes: @@ -4437,30 +5422,33 @@ Has attributes: Called from ``postComputeFrame``. * ``draggable = bool`` (default: ``false``) -* ``drag_anchors = {}`` (default: ``{title=true, frame=false, body=false}``) +* ``drag_anchors = {}`` (default: ``{title=true, frame=false/true, body=true}``) * ``drag_bound = 'frame' or 'body'`` (default: ``'frame'``) * ``on_drag_begin = function()`` (default: ``nil``) -* ``on_drag_end = function(bool)`` (default: ``nil``) +* ``on_drag_end = function(success, new_frame)`` (default: ``nil``) If ``draggable`` is set to ``true``, then the above attributes come into play when the panel is dragged around the screen, either with the mouse or the keyboard. ``drag_anchors`` sets which parts of the panel can be clicked on - with the left mouse button to start dragging. ``drag_bound`` configures + with the left mouse button to start dragging. The frame is a drag anchor by + default only if ``resizable`` (below) is ``false``. ``drag_bound`` configures whether the frame of the panel (if any) can be dragged outside the containing parent's boundary. The body will never be draggable outside of the parent, but you can allow the frame to cross the boundary by setting ``drag_bound`` to ``'body'``. The boolean passed to the ``on_drag_end`` callback will be - ``true`` if the drag was "successful" (i.e. not canceled) and ``false`` + ``true`` if the drag was "successful" (i.e., not canceled) and ``false`` otherwise. Dragging can be canceled by right clicking while dragging with the mouse, hitting :kbd:`Esc` (while dragging with the mouse or keyboard), or by - calling ``Panel:setKeyboaredDragEnabled(false)`` (while dragging with the - keyboard). + calling ``Panel:setKeyboardDragEnabled(false)`` (while dragging with the + keyboard). If it is more convenient to do so, you can choose to override the + ``panel:onDragBegin`` and/or the ``panel:onDragEnd`` methods instead of + setting the ``on_drag_begin`` and/or ``on_drag_end`` attributes. * ``resizable = bool`` (default: ``false``) * ``resize_anchors = {}`` (default: ``{t=false, l=true, r=true, b=true}`` * ``resize_min = {}`` (default: w and h from the ``frame``, or ``{w=5, h=5}``) * ``on_resize_begin = function()`` (default: ``nil``) -* ``on_resize_end = function(bool)`` (default: ``nil``) +* ``on_resize_end = function(success, new_frame)`` (default: ``nil``) If ``resizable`` is set to ``true``, then the player can click the mouse on any edge specified in ``resize_anchors`` and drag the border to resize the @@ -4470,10 +5458,13 @@ Has attributes: resizing. The panel is also prevented from resizing beyond the boundaries of its parent. When the player clicks on a valid anchor, ``on_resize_begin()`` is called. The boolean passed to the ``on_resize_end`` callback will be ``true`` - if the drag was "successful" (i.e. not canceled) and ``false`` otherwise. + if the drag was "successful" (i.e., not canceled) and ``false`` otherwise. Dragging can be canceled by right clicking while resizing with the mouse, hitting :kbd:`Esc` (while resizing with the mouse or keyboard), or by calling ``Panel:setKeyboardResizeEnabled(false)`` (while resizing with the keyboard). + If it is more convenient to do so, you can choose to override the + ``panel:onResizeBegin`` and/or the ``panel:onResizeEnd`` methods instead of + setting the ``on_resize_begin`` and/or ``on_resize_end`` attributes. * ``autoarrange_subviews = bool`` (default: ``false``) * ``autoarrange_gap = int`` (default: ``0``) @@ -4487,11 +5478,50 @@ Has attributes: * ``frame_style``, ``frame_title`` (default: ``nil``) - If defined, a frame will be drawn around the panel and subviews will be inset - by 1. The attributes are identical to what is defined in the - `FramedScreen class`_. When using the predefined frame styles in the ``gui`` - module, remember to ``require`` the gui module and prefix the identifier with - ``gui.``, e.g. ``gui.GREY_LINE_FRAME``. + If defined, a frame will be drawn around the panel and subviews will be + inset by 1. The following predefined frame styles are defined: + + * ``FRAME_WINDOW`` + + A frame suitable for a draggable, optionally resizable window. + + * ``FRAME_PANEL`` + + A frame suitable for a static (non-resizable) panel. + + * ``FRAME_MEDIUM`` + + A frame suitable for overlay widget panels. + + * ``FRAME_THIN`` + + A frame suitable for floating tooltip panels that need the DFHack signature. + + * ``FRAME_BOLD`` + + A frame suitable for a non-draggable panel meant to capture the user's + focus, like an important notification, confirmation dialog or error message. + + * ``FRAME_INTERIOR`` + + A frame suitable for light interior accent elements. This frame does *not* + have a visible ``DFHack`` signature on it, so it must not be used as the + external frame for a DFHack-owned UI. + + * ``FRAME_INTERIOR_MEDIUM`` + + A copy of ``FRAME_MEDIUM`` that lacks the ``DFHack`` signature. Suitable for + panels that are part of a larger widget cluster. Must *not* be used as the + external frame for a DFHack-owned UI. + + When using the predefined frame styles in the ``gui`` module, remember to + ``require`` the gui module and prefix the identifier with ``gui.``, e.g., + ``gui.FRAME_THIN``. + +* ``no_force_pause_badge`` (default: ``false``) + + If true, then don't display the PAUSE FORCED badge on the frame even if the + game has been force paused. Has functions: @@ -4499,7 +5529,7 @@ Has functions: If called with ``true`` and the panel is not already in keyboard drag mode, then any current drag or resize operations are halted where they are (not - canceled), the panel siezes input focus (see `View class`_ above for + canceled), the panel seizes input focus (see `View class`_ above for information on the DFHack focus subsystem), and further keyboard cursor keys move the window as if it were being dragged. Shift-cursor keys move by larger amounts. Hit :kbd:`Enter` to commit the new window position or :kbd:`Esc` to @@ -4510,7 +5540,7 @@ Has functions: If called with ``true`` and the panel is not already in keyboard resize mode, then any current drag or resize operations are halted where they are (not - canceled), the panel siezes input focus (see `View class`_ above for + canceled), the panel seizes input focus (see `View class`_ above for information on the DFHack focus subsystem), and further keyboard cursor keys resize the window as if it were being dragged from the lower right corner. If neither the bottom or right edge is a valid anchor, an appropriate corner will @@ -4518,6 +5548,15 @@ Has functions: commit the new window size or :kbd:`Esc` to cancel. If resizing is canceled, then the window size from before the resize operation is restored. +* ``panel:onDragBegin()`` +* ``panel:onDragEnd(success, new_frame)`` +* ``panel:onResizeBegin()`` +* ``panel:onResizeEnd(success, new_frame)`` + +The default implementations of these methods call the associated attribute (if +set). You can override them in a subclass if that is more convenient than +setting the attributes. + Double clicking: If the panel is resizable and the user double-clicks on the top edge (the frame @@ -4526,11 +5565,9 @@ If the panel has already been maximized in this fashion, then it will jump to its minimum size. Both jumps respect the resizable edges defined by the ``resize_anchors`` attribute. -The time duration that a double click can span is defined by the global variable -``DOUBLE_CLICK_MS``. The default value is ``500`` and can be changed by the end -user with a command like:: - - :lua require('gui.widgets').DOUBLE_CLICK_MS=1000 +The time duration that a double click can span can be controlled via the +`control-panel` or `gui/control-panel` interfaces (``Mouse double click speed`` +option). It defaults to 500 ms. Window class ------------ @@ -4570,6 +5607,55 @@ Subclass of Panel; keeps exactly one child visible. Selects the specified child, hiding the previous selected one. It is permitted to use the subview object, or its ``view_id`` as index. +Divider class +------------- + +Subclass of Widget; implements a divider line that can optionally connect to +existing frames via T-junction edges. A ``Divider`` instance is required to +have a ``frame`` that is either 1 unit tall or 1 unit wide. + +``Divider`` widgets should be a sibling with the framed ``Panel`` that they +are dividing, and they should be added to the common parent widget **after** +the ``Panel`` so that the ``Divider`` can overwrite the ``Panel`` frame with +the appropriate T-junction graphic. If the ``Divider`` will not have +T-junction edges, then it could potentially be a child of the ``Panel`` since +the ``Divider`` won't need to overwrite the ``Panel``'s frame. + +If two ``Divider`` widgets are set to cross, then you must have a third 1x1 +``Divider`` widget for the crossing tile so the other two ``Divider``\s can +be seamlessly connected. + +Attributes: + +* ``frame_style`` + + The ``gui`` ``FRAME`` instance to use for the graphical tiles. Defaults to + ``gui.FRAME_THIN``. + +* ``interior`` + + Whether the edge T-junction tiles should connect to interior lines (e.g., the + vertical or horizontal segment of another ``Divider`` instance) or the + exterior border of a ``Panel`` frame. Defaults to ``false``, meaning + exterior T-junctions will be chosen. + +* ``frame_style_t`` +* ``frame_style_b`` +* ``frame_style_l`` +* ``frame_style_r`` + + Overrides for the frame style for specific T-junctions. Note that there are + not currently any frame styles that allow borders of different weights to be + seamlessly connected. If set to ``false``, then the indicated edge will end + in a straight segment instead of a T-junction. + +* ``interior_t`` +* ``interior_b`` +* ``interior_l`` +* ``interior_r`` + + Overrides for the interior/exterior specification for specific T-junctions. + EditField class --------------- @@ -4613,9 +5699,15 @@ The ``EditField`` cursor can be moved to where you want to insert/remove text. You can click where you want the cursor to move or you can use any of the following keyboard hotkeys: -- Left/Right arrow: move the cursor one character to the left or right. -- Ctrl-B/Ctrl-F: move the cursor one word back or forward. -- Ctrl-A/Ctrl-E: move the cursor to the beginning/end of the text. +- Left/Right arrow: move the cursor one character to the left or right +- Ctrl-Left/Ctrl-Right: move the cursor one word back or forward +- Home/End: move the cursor to the beginning/end of the text + +The widget also supports integration with the system clipboard: + +- Ctrl-C: copy current text to the system clipboard +- Ctrl-X: copy current text to the system clipboard and clear text in widget +- Ctrl-V: paste text from the system clipboard (text is converted to cp437) The ``EditField`` class also provides the following functions: @@ -4634,6 +5726,155 @@ The ``EditField`` class also provides the following functions: Inserts the given text at the current cursor position. +TextArea class +-------------- + +Subclass of Panel; implements a multi-line text field with features such as +text wrapping, mouse control, text selection, clipboard support, history, +and typical text editor shortcuts. + +Cursor Behavior +~~~~~~~~~~~~~~~ + +The cursor in the ``TextArea`` class is index-based, starting from 1, +consistent with Lua's text indexing conventions. + +Each character, including newlines (``string.char(10)``), +occupies a single index in the text content. + +Cursor movement and position are fully aware of line breaks, +meaning they count as one unit in the offset. + +The cursor always points to the position between characters, +with 1 being the position before the first character and +``#text + 1`` representing the position after the last character. + +Cursor positions are preserved during text operations like insertion, +deletion, or replacement. If changes affect the cursor's position, +it will be adjusted to the nearest valid index. + +TextArea Attributes: + +* ``init_text``: The initial text content for the text area. + +* ``init_cursor``: The initial cursor position within the text content. + If not specified, defaults to end of the text (length of ``init_text`` + 1). + +* ``text_pen``: Optional pen used to draw the text. Default is ``COLOR_LIGHTCYAN``. + +* ``select_pen``: Optional pen used for text selection. Default is ``COLOR_CYAN``. + +* ``ignore_keys``: List of input keys to ignore. + Functions similarly to the ``ignore_keys`` attribute in the ``EditField`` class. + +* ``on_text_change``: Callback function called whenever the text changes. + The function signature should be ``on_text_change(new_text, old_text)``. + +* ``on_cursor_change``: Callback function called whenever the cursor position changes. + Expected function signature is ``on_cursor_change(new_cursor, old_cursor)``. + +* ``one_line_mode``: If set to ``true``, disables multi-line text features. + In this mode the :kbd:`Enter` key is not handled by the widget + as if it were included in ``ignore_keys``. + If multiline text (including ``\n`` chars) is pasted into the widget, newlines are removed. + +TextArea Functions: + +* ``textarea:getText()`` + + Returns the current text content of the ``TextArea`` widget as a string. + ``\n`` characters (``string.char(10)``) should be interpreted as new lines + +* ``textarea:setText(text)`` + + Sets the content of the ``TextArea`` to the specified string ``text``. + The cursor position will not be adjusted, so should be set separately. + +* ``textarea:getCursor()`` + + Returns the current cursor position within the text content. + The position is represented as a single integer, starting from 1. + +* ``textarea:setCursor(cursor)`` + + Sets the cursor position within the text content. + +* ``textarea:scrollToCursor()`` + + Scrolls the text area view to ensure that the current cursor position is visible. + This happens automatically when the user interactively moves the cursor or + pastes text into the widget, but may need to be called when ``setCursor`` is + called programmatically. + +* ``textarea:clearHistory()`` + + Clears undo/redo history of the widget. + +Functionality +~~~~~~~~~~~~~ + +The TextArea widget provides a familiar and intuitive text editing experience with baseline features such as: + +- Text Wrapping: Automatically fits text within the display area. +- Mouse and Keyboard Support: Standard keys like :kbd:`Home`, :kbd:`End`, :kbd:`Backspace`, and :kbd:`Delete` are supported, + along with gestures like double-click to select a word or triple-click to select a line. +- Clipboard Operations: copy, cut, and paste, + with intuitive defaults when no text is selected. +- Undo/Redo: :kbd:`Ctrl` + :kbd:`Z` and :kbd:`Ctrl` + :kbd:`Y` for quick changes. +- Additional features include advanced navigation, line management, + and smooth scrolling for handling long text efficiently. + +Detailed list: + +- Cursor Control: Navigate through text using arrow keys (Left, Right, Up, + and Down) for precise cursor placement. +- Mouse Control: Use the mouse to position the cursor within the text, + providing an alternative to keyboard navigation. +- Text Selection: Select text with the mouse, with support for replacing or + removing selected text. +- Select Word/Line: Use double click to select current word, or triple click to + select current line. +- Move By Word: Use :kbd:`Ctrl` + :kbd:`Left` and :kbd:`Ctrl` + :kbd:`Right` to + move the cursor one word back or forward. +- Line Navigation: :kbd:`Home` moves the cursor to the beginning of the current + line, and :kbd:`End` moves it to the end. +- Jump to Beginning/End: Quickly move the cursor to the beginning or end of the + text using :kbd:`Ctrl` + :kbd:`Home` and :kbd:`Ctrl` + :kbd:`End`. +- Longest X Position Memory: The cursor remembers the longest x position when + moving up or down, making vertical navigation more intuitive. +- New Lines: Easily insert new lines using the :kbd:`Enter` key, supporting + multiline text input. +- Text Wrapping: Text automatically wraps within the editor, ensuring lines fit + within the display without manual adjustments. +- Scrolling for long text entries. +- Backspace Support: Use the backspace key to delete characters to the left of + the cursor. +- Delete Character: :kbd:`Delete` deletes the character under the cursor. +- Delete Current Line: :kbd:`Ctrl` + :kbd:`U` deletes the entire current line + where the cursor is located. +- Delete Rest of Line: :kbd:`Ctrl` + :kbd:`K` deletes text from the cursor to + the end of the line. +- Delete Last Word: :kbd:`Ctrl` + :kbd:`W` removes the word immediately before + the cursor. +- Select All: Select entire text by :kbd:`Ctrl` + :kbd:`A`. +- Undo/Redo: Undo/Redo changes by :kbd:`Ctrl` + :kbd:`Z` / :kbd:`Ctrl` + + :kbd:`Y`. +- Clipboard Operations: Perform OS clipboard cut, copy, and paste operations on + selected text, allowing you to paste the copied content into other + applications. +- Copy Text: Use :kbd:`Ctrl` + :kbd:`C` to copy selected text. + - copy selected text, if available + - if no text is selected it copy the entire current line, including the + terminating newline if present +- Cut Text: Use :kbd:`Ctrl` + :kbd:`X` to cut selected text. + - cut selected text, if available + - if no text is selected it will cut the entire current line, including the + terminating newline if present +- Paste Text: Use :kbd:`Ctrl` + :kbd:`V` to paste text from the clipboard into + the editor. + - replace selected text, if available + - If no text is selected, paste text in the cursor position + Scrollbar class --------------- @@ -4644,11 +5885,11 @@ used in vanilla DF. Scrollbars have the following attributes: -:on_scroll: A callback called when the scrollbar is scrolled. If the scrollbar is clicked, - the callback will be called with one of the following string parameters: "up_large", - "down_large", "up_small", or "down_small". If the scrollbar is dragged, the callback will - be called with the value that ``top_elem`` should be set to on the next call to - ``update()`` (see below). +:on_scroll: A callback called when the scrollbar is scrolled. If the scrollbar + is clicked, the callback will be called with one of the following string parameters: + "up_large", "down_large", "up_small", or "down_small". If the scrollbar is dragged, + the callback will be called with the value that ``top_elem`` should be set to on + the next call to ``update()`` (see below). The Scrollbar widget implements the following methods: @@ -4658,7 +5899,7 @@ The Scrollbar widget implements the following methods: The ``top_elem`` param is the (one-based) index of the first visible element. The ``elems_per_page`` param is the maximum number of elements that can be shown at one time. The ``num_elems`` param is the total number of elements - that the paried widget can scroll through. If ``elems_per_page`` or + that the paired widget can scroll through. If ``elems_per_page`` or ``num_elems`` is not specified, the most recently specified value for these parameters is used. The scrollbar will adjust its scrollbar size and position according to the values passed to this function. @@ -4677,16 +5918,14 @@ while scrolling will result in faster movement. You can click and drag the scrollbar to scroll to a specific spot, or you can click and hold on the end arrows or in the unfilled portion of the scrollbar to scroll multiple times, just like in a normal browser scrollbar. The speed of -scroll events when the mouse button is held down is controlled by two global -variables: - -:``SCROLL_INITIAL_DELAY_MS``: The delay before the second scroll event. -:``SCROLL_DELAY_MS``: The delay between further scroll events. +scroll events when the mouse button is held down can be controlled +via the `control-panel` or `gui/control-panel` interfaces: -The defaults are 300 and 20, respectively, but they can be overridden by the -user in their :file:`dfhack-config/init/dfhack.init` file, for example:: +1. The delay before the second scroll event is the ``Mouse initial scroll repeat + delay`` setting (default is 300 ms) - :lua require('gui.widgets').SCROLL_DELAY_MS = 100 +2. The delay between further scroll events is the ``Mouse scroll repeat delay`` option + (default is 20 ms) Label class ----------- @@ -4698,19 +5937,23 @@ It has the following attributes: :text_pen: Specifies the pen for active text. :text_dpen: Specifies the pen for disabled text. :text_hpen: Specifies the pen for text hovered over by the mouse, if a click - handler is registered. By default, this will invert the foreground - and background colors. + handler is registered. By default, this will invert the foreground and + background colors. :disabled: Boolean or a callback; if true, the label is disabled. :enabled: Boolean or a callback; if false, the label is disabled. :auto_height: Sets self.frame.h from the text height. :auto_width: Sets self.frame.w from the text width. :on_click: A callback called when the label is clicked (optional) :on_rclick: A callback called when the label is right-clicked (optional) -:scroll_keys: Specifies which keys the label should react to as a table. The table should map - keys to the number of lines to scroll as positive or negative integers or one of the keywords - supported by the ``scroll`` method. The default is up/down arrows scrolling by one line and page +:scroll_keys: Specifies which keys the label should react to as a table. The + table should map keys to the number of lines to scroll as positive or + negative integers or one of the keywords supported by the ``scroll`` + method. The default is up/down arrows scrolling by one line and page up/down scrolling by one page. +``text_pen``, ``text_dpen``, and ``text_hpen`` can either be a pen or a +function that dynamically returns a pen. + The text itself is represented as a complex structure, and passed to the object via the ``text`` argument of the constructor, or via the ``setText`` method, as one of: @@ -4719,7 +5962,8 @@ the ``setText`` method, as one of: * A sequence of tokens. Every token in the sequence in turn may be either a string, possibly -containing newlines, or a table with the following possible fields: +containing newlines (or equal to ``NEWLINE``), or a table with the following +possible fields: * ``token.text = ...`` @@ -4731,10 +5975,12 @@ containing newlines, or a table with the following possible fields: Specifies the number of character positions to advance on the line before rendering the token. -* ``token.tile = pen`` +* ``token.tile``, ``token.htile`` Specifies a pen or texture index (or a function that returns a pen or texture - index) to paint as one tile before the main part of the token. + index) to paint as one tile before the main part of the token. If ``htile`` + is specified, that is used instead of ``tile`` when the Label is hovered over + with the mouse. * ``token.width = ...`` @@ -4762,10 +6008,10 @@ containing newlines, or a table with the following possible fields: Same as the attributes of the label itself, but applies only to the token. -* ``token.pen``, ``token.dpen`` +* ``token.pen``, ``token.dpen``, ``token.hpen`` - Specify the pen and disabled pen to be used for the token's text. - The field may be either the pen itself, or a callback that returns it. + Specify the pen, disabled pen, and hover pen to be used for the token's text. + The fields may be either the pen itself, or a callback that returns it. * ``token.on_activate`` @@ -4817,6 +6063,167 @@ The Label widget implements the following methods: return HotkeyLabel.super.shouldHover(self) or self.on_activate end +The widgets module also provides the following methods for help in constructing +common text token lists that you can then pass as ``text`` to a ``Label``: + +* ``makeButtonLabelText(spec)`` + + Returns a list of ``Label`` text tokens that represent a button according + to the given ``spec``, which is a table with the following fields. Fields + that contain ``_hover`` are optional and specify alternate values to be + used when the mouse cursor is hovering over the button. + + - ``chars``, ``chars_hover``: A list of strings or a list of lists of + characters. These strings (or lists of characters) make up the ASCII + representation of the button. If a list of strings is passed, each + string must be the same length. ``chars`` is the only required element + in the spec. If ``chars_hover`` is not specified, it defaults to the + value of ``chars``. + + - ``pens``, ``pens_hover``: A color or a pen or a list of lists of colors + or pens. This controls what color and other pen properties should be + applied to the corresponding button tile position. If a single color or + pen is passed, then that color or pen will apply to all tiles of the + button. If not specified, ``pens`` defaults to ``COLOR_GRAY`` and + ``pens_hover`` defaults to ``COLOR_WHITE`` + + - ``tileset``, ``tileset_hover``: If specified, must be a tileset that was + returned from ``dfhack.textures.loadTileset``. + + - ``tileset_offset``, ``tileset_hover_offset``: The 1-based offset within + the tileset to the tile that represents the upper left corner of the + button. If not specified, defaults to ``1``. + + - ``tileset_stride``, ``tileset_hover_stride``: The number of tiles in one + row of the tileset. This is used to find the start position of + subsequent rows of tiles for the button. If not specified, defaults to + the width of a button row specified in ``chars``, which is appropriate + for a tileset that has only a single button image per logical row. + + - ``asset``, ``asset_hover``: If specified, must be a table defining a + graphic asset loaded by DF from the vanilla sprite sheets or a mod. The + table must indicate which sprite page to read and the x and y offsets + of the upper left corner of the target asset in the following format: + ``{page=pagename, x=x_offset, y=y_offset}``. + + - ``tiles_override``, ``tiles_hover_override``: A list of lists of integers + representing raw tile texpos values to be displayed at the + corresponding button position. Tiles specified here will override + corresponding tiles from ``tileset`` and ``asset``. The lists can be + sparse, so any unspecified values in the override array will fall + through to other specifiers. + + If no tile is set for a particular button position, the corresponding + pen is used without setting a ``tile`` value. + + Example 1: The civ-alert button - a text-only (no graphic tiles) button + that highlights the text on hover:: + + widgets.Label{ + text=widgets.makeButtonLabelText{ + chars={ + ' Activate ', + ' civilian ', + ' alert ', + }, + pens={fg=COLOR_BLACK, bg=COLOR_LIGHTRED}, + pens_hover={fg=COLOR_WHITE, bg=COLOR_RED}, + }, + on_click=sound_alarm, + }, + + Example 2: The DFHack logo - a graphical button in graphics mode and a text + button in ASCII mode. The ASCII colors use the default for hovering:: + + local logo_textures=dfhack.textures.loadTileset( + 'hack/data/art/logo.png', 8, 12, true), + widgets.Label{ + text=widgets.makeButtonLabelText{ + chars={ + {179, 'D', 'F', 179}, + {179, 'H', 'a', 179}, + {179, 'c', 'k', 179}, + }, + tileset=logo_textures, + tileset_offset=1, + tileset_stride=8, + tileset_hover=logo_textures, + tileset_hover_offset=5, + tileset_hover_stride=8, + }, + on_click=function() + dfhack.run_command{'hotkeys', 'menu', self.name} + end, + }, + + Example 3: One of the warm/damp toolbar buttons - similar to example 2, but + with custom colors throughout the button when in ASCII mode:: + + widgets.Label{ + text=widgets.makeButtonLabelText{ + chars={ + {218, 196, 196, 191}, + {179, '~', '~', 179}, + {192, 196, 196, 217}, + }, + pens={ + {COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE}, + {COLOR_WHITE, COLOR_RED, COLOR_GRAY, COLOR_WHITE}, + {COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE}, + }, + tileset=toolbar_textures, + tileset_offset=25, + tileset_stride=8, + }, + on_click=launch_warm_damp_dig_config, + }, + + Example 4: A copy of the mining toolbar button (except that it has a + highlight on hover), loaded from the DF assets:: + + widgets.Label{ + text=widgets.makeButtonLabelText{ + chars={ + {218, 196, 196, 191}, + {179, '-', ')', 179}, + {192, 196, 196, 217}, + }, + pens={ + {COLOR_GRAY, COLOR_GRAY, COLOR_GRAY, COLOR_GRAY}, + {COLOR_GRAY, COLOR_BROWN, COLOR_GRAY, COLOR_GRAY}, + {COLOR_GRAY, COLOR_GRAY, COLOR_GRAY, COLOR_GRAY}, + }, + pens_hover={ + {COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE}, + {COLOR_WHITE, COLOR_BROWN, COLOR_GRAY, COLOR_WHITE}, + {COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE}, + }, + asset={page='INTERFACE_BITS', x=0, y=22}, + }, + on_click=self:callback('mining_menu'), + }, + + Example 5: A copy of the mining toolbar button (except that it has a + custom hotkey hint in the upper corner), loaded from the DF assets and with + one tile overridden:: + + widgets.Label{ + text=widgets.makeButtonLabelText{ + chars={ + {218, 196, 196, self.hint_char}, + {179, '-', ')', 179}, + {192, 196, 196, 217}, + }, + pens={ + {COLOR_GRAY, COLOR_GRAY, COLOR_GRAY, COLOR_RED}, + {COLOR_GRAY, COLOR_BROWN, COLOR_GRAY, COLOR_GRAY}, + {COLOR_GRAY, COLOR_GRAY, COLOR_GRAY, COLOR_GRAY}, + }, + asset={page='INTERFACE_BITS', x=0, y=22}, + tiles_override={{[4]=string.byte(self.hint_char)}}, + }, + on_click=self:callback('mining_menu'), + }, WrappedLabel class ------------------ @@ -4864,7 +6271,7 @@ a hotkey or mouse click. It has the following attributes: -:key: The hotkey keycode to display, e.g. ``'CUSTOM_A'``. +:key: The hotkey keycode to display, e.g., ``'CUSTOM_A'``. :key_sep: If specified, will be used to customize how the activation key is displayed. See ``token.key_sep`` in the ``Label`` documentation. :label: The string (or a function that returns a string) to display after the @@ -4890,17 +6297,22 @@ cycle through by pressing a specified hotkey or clicking on the text. It has the following attributes: -:key: The hotkey keycode to display, e.g. ``'CUSTOM_A'``. +:key: The hotkey keycode to display, e.g., ``'CUSTOM_A'``. :key_back: Similar to ``key``, but will cycle backwards (optional) +:key_sep: If specified, will be used to customize how the activation key is + displayed. See ``token.key_sep`` in the ``Label`` documentation. :label: The string (or a function that returns a string) to display after the hotkey. :label_width: The number of spaces to allocate to the ``label`` (for use in aligning a column of ``CycleHotkeyLabel`` labels). -:label_below: If ``true``, then the option value will apear below the label +:label_below: If ``true``, then the option value will appear below the label instead of to the right of it. Defaults to ``false``. +:option_gap: The size of the gap between the label text and the option value. + Default is ``1``. If set to ``0``, there'll be no gap between the strings. + If ``label_below`` == ``true``, negative values will shift the value leftwards. :options: A list of strings or tables of - ``{label=string, value=string[, pen=pen]}``. String options use the same - string for the label and value and the default pen. The optional ``pen`` + ``{label=string or fn, value=val[, pen=pen]}``. String options use the same + string for the label and value and use the default pen. The optional ``pen`` element could be a color like ``COLOR_RED``. :initial_option: The value or numeric index of the initial option. :on_change: The callback to call when the selected option changes. It is called @@ -4938,13 +6350,92 @@ The CycleHotkeyLabel widget implements the following methods: selected option if no index is given. If an option was defined as just a string, then this function will return ``nil`` for that option. -ToggleHotkeyLabel +ButtonGroup class ----------------- +This is a specialized subclass of CycleHotkeyLabel that, in addition to the +regular clickable widget, displays a corresponding row of clickable graphical +buttons and synchronizes their selection state with the currently selected +option. + +It takes two additional required parameters to define the buttons: + +:button_specs: A list of specs to pass to ``makeButtonLabelText`` (defined in + `Label class`_ above). +:button_specs_selected: A list of specs that represent the buttons in their + selected state. + +ToggleHotkeyLabel class +----------------------- + This is a specialized subclass of CycleHotkeyLabel that has two options: ``On`` (with a value of ``true``) and ``Off`` (with a value of ``false``). The ``On`` option is rendered in green. +ConfigureButton class +--------------------- + +A 3x1 tile button with a gear symbol on it, intended to represent a configure +icon. Clicking on the icon will run the given callback. The graphics can also +be overridden to create custom buttons. + +It has the following attributes: + +:on_click: The function to run when the icon is clicked. +:pen_left: Pen or function returning a pen to overwrite the left tile of the button. +:pen_center: As above, but for the center tile (gear symbol). +:pen_right: As above, but for the right tile. + +HelpButton class +---------------- + +Subclass of ConfigureButton; a 3x1 tile button with a question mark on it, +intended to represent a help icon. Clicking on the icon will launch +`gui/launcher` with a given command string, showing the help text for that +command. + +It has the following attributes: + +:command: The command to load in `gui/launcher`. + +It also sets the ``frame`` attribute so the button appears in the upper right +corner of the parent, but you can override this to your liking if you want a +different position. + +RadioButton class +----------------- + +Subclass of ConfigureButton; a 3x1 tile button that resembles a radio button +(or check box in ASCII mode), identical to the ones found in +`gui/control-panel`. Clicking on the button will toggle its enabled state. + +It has the following attributes: + +:initial_state: Whether to start in the ``true`` or ``false`` state. Defaults to ``true``. +:on_change: Callback to call when state changes, including initialization. Called as ``on_change(val)``. + +It implements the following method: + +* ``RadioButton:setState(val)`` + + Sets the state to boolean ``val`` and calls ``on_change`` (if defined). + +BannerPanel class +----------------- + +This is a Panel subclass that prints a distinctive banner along the far left +and right columns of the widget frame. Note that this is not a "proper" frame +since it doesn't have top or bottom borders. Subviews of this panel should +inset their frames one tile from the left and right edges. + +TextButton class +---------------- + +This is a BannerPanel subclass that wraps a HotkeyLabel with some decorators on +the sides to make it look more like a button, suitable for both graphics and +ASCII modes. All HotkeyLabel parameters passed to the constructor are passed +through to the wrapped HotkeyLabel. + List class ---------- @@ -4968,8 +6459,8 @@ It has the following attributes: calls the callback as ``on_submit2(index,choice)``. :on_double_click: Mouse double click callback; if specified, the list reacts to the click and calls the callback as ``on_double_click(index,choice)``. -:on_double_click2: Shift-double click callback; if specified, the list reacts to the click and - calls the callback as ``on_double_click2(index,choice)``. +:on_double_click2: Shift-double click callback; if specified, the list reacts to the + click and calls the callback as ``on_double_click2(index,choice)``. :row_height: Height of every row in text lines. :icon_width: If not *nil*, the specified number of character columns are reserved to the left of the list item for the icons. @@ -5031,12 +6522,11 @@ FilteredList class ------------------ This widget combines List, EditField and Label into a combo-box like -construction that allows filtering the list by subwords of its items. +construction that allows filtering the list. In addition to passing through all attributes supported by List, it supports: -:case_sensitive: If ``true``, matching is case sensitive. Defaults to ``false``. :edit_pen: If specified, used instead of ``cursor_pen`` for the edit field. :edit_below: If true, the edit field is placed below the list instead of above. :edit_key: If specified, the edit field is disabled until this key is pressed. @@ -5048,7 +6538,7 @@ supports: The list choices may include the following attributes: :search_key: If specified, used instead of **text** to match against the filter. - This is required for any entries where **text** is not a string. + Can be a string or a function that returns a string. The widget implements: @@ -5081,41 +6571,161 @@ The widget implements: Same as with an ordinary list. +Filter behavior: + +By default, the filter matches substrings that start at the beginning of a word +(or after any punctuation). You can instead configure filters to match any +substring across the full text by setting ``FILTER_FULL_TEXT`` in `gui/control-panel` +or set it for the session by running a command like:: + + :lua require('utils').FILTER_FULL_TEXT=true + TabBar class ------------ -This widget implements a set of one or more tabs to allow navigation between groups of content. Tabs automatically wrap on -the width of the window and will continue rendering on the next line(s) if all tabs cannot fit on a single line. - +This widget implements a set of one or more tabs to allow navigation between groups +of content. + +:wrap: If true, tabs automatically wrap on the width of the window and will + continue rendering on the next line(s) if all tabs cannot fit on a single line. + If false, tabs will be truncated and can be scrolled using ``scroll_key`` + and ``scroll_key_back``, mouse wheel or by clicking on the scroll labels + that will automatically appear on the left and right sides of the tab bar + as needed. When clicking on a tab or using ``key`` or ``key_back`` to switch tabs, + the selected tab will be scrolled into view if it is not already visible. + Defaults to true. :key: Specifies a keybinding that can be used to switch to the next tab. -:key_back: Specifies a keybinding that can be used to switch to the previous tab. -:labels: A table of strings; entry representing the label text for a single tab. The order of the entries - determines the order the tabs will appear in. -:on_select: Callback executed when a tab is selected. It receives the selected tab index as an argument. The provided function - should update the value of whichever variable your script uses to keep track of the currently selected tab. -:get_cur_page: The function used by the TabBar to determine which Tab is currently selected. The function you provide should - return an integer that corresponds to the non-zero index of the currently selected Tab (i.e. whatever variable - you update in your ``on_select`` callback) -:active_tab_pens: A table of pens used to render active tabs. See the default implementation in widgets.lua for an example - of how to construct the table. Leave unspecified to use the default pens. -:inactive_tab_pens: A table of pens used to render inactive tabs. See the default implementation in widgets.lua for an example - of how to construct the table. Leave unspecified to use the default pens. -:get_pens: A function used to determine which pens should be used to render a tab. Receives the index of the tab as the first - argument and the TabBar widget itself as the second. The default implementation, which will handle most situations, - returns ``self.active_tab_pens``, if ``self.get_cur_page() == idx``, otherwise returns ``self.inactive_tab_pens``. + Defaults to ``CUSTOM_CTRL_T``. +:key_back: Specifies a keybinding that can be used to switch to the previous + tab. Defaults to ``CUSTOM_CTRL_Y``. +:labels: A table of strings; entry representing the label text for a single tab. + The order of the entries determines the order the tabs will appear in. +:on_select: Callback executed when a tab is selected. It receives the selected tab + index as an argument. The provided function should update the value of + whichever variable your script uses to keep track of the currently + selected tab. +:get_cur_page: The function used by the TabBar to determine which Tab is currently + selected. The function you provide should return an integer that + corresponds to the non-zero index of the currently selected Tab + (i.e., whatever variable you update in your ``on_select`` callback). +:active_tab_pens: A table of pens used to render active tabs. See the default + implementation in widgets.lua for an example of how to construct + the table. Leave unspecified to use the default pens. +:inactive_tab_pens: A table of pens used to render inactive tabs. See the default + implementation in widgets.lua for an example of how to + construct the table. Leave unspecified to use the default pens. +:get_pens: A function used to determine which pens should be used to render a tab. + Receives the index of the tab as the first argument and the TabBar widget + itself as the second. The default implementation, which will handle most + situations, returns ``self.active_tab_pens``, if ``self.get_cur_page() == idx``, + otherwise returns ``self.inactive_tab_pens``. +:scroll_key: Specifies a keybinding that can be used to scroll the tabs to the right. + Defaults to ``CUSTOM_ALT_T``. +:scroll_key_back: Specifies a keybinding that can be used to scroll the tabs to the left. + Defaults to ``CUSTOM_ALT_Y``. +:scroll_left_text: The text to display on the left scroll label. + Defaults to "<<<". +:scroll_right_text: The text to display on the right scroll label. + Defaults to ">>>". +:scroll_label_text_pen: The pen to use for the scroll label text. + Defaults to ``Label`` default. +:scroll_label_text_hpen: The pen to use for the scroll label text when hovered. + Defaults to ``scroll_label_text_pen`` with the background + and foreground colors swapped. +:scroll_step: The number of units to scroll tabs by. + Defaults to 10. +:fast_scroll_multiplier: The multiplier for fast scrolling (holding shift). + Defaults to 3. +:scroll_into_view_offset: After a selected tab is scrolled into view, this offset + is added to the scroll position to ensure the tab is + not flush against the edge of the tab bar, allowing + some space for the user to see the next tab. + Defaults to 5. Tab class --------- -This widget implements a single clickable tab and is the main component of the TabBar widget. Usage of the ``TabBar`` -widget does not require direct usage of ``Tab``. +This widget implements a single clickable tab and is the main component of the TabBar +widget. Usage of the ``TabBar`` widget does not require direct usage of ``Tab``. :id: The id of the tab. :label: The text displayed on the tab. :on_select: Callback executed when the tab is selected. -:get_pens: A function that is used during ``Tab:onRenderBody`` to determine the pens that should be used for drawing. See the - usage of ``Tab`` in ``TabBar:init()`` for an example. See the default value of ``active_tab_pens`` or ``inactive_tab_pens`` - in ``TabBar`` for an example of how to construct pens. +:get_pens: A function that is used during ``Tab:onRenderBody`` to determine the pens + that should be used for drawing. See the usage of ``Tab`` in + ``TabBar:init()`` for an example. See the default value of + ``active_tab_pens`` or ``inactive_tab_pens`` in ``TabBar`` + for an example of how to construct pens. + +RangeSlider class +----------------- + +This widget implements a mouse-interactable range-slider. The player can move its two +handles to set minimum and maximum values to define a range, or they can drag the bar +itself to move both handles at once. The parent widget owns the range values, and can +control them independently (e.g., with ``CycleHotkeyLabels``). If the range values +change, the ``RangeSlider`` appearance will adjust automatically. + +:num_stops: Used to specify the number of "notches" in the range slider, the places + where handles can stop. (This should match the parents' number of options.) +:get_left_idx_fn: The function used by the RangeSlider to get the notch index on which + to display the left handle. +:get_right_idx_fn: The function used by the RangeSlider to get the notch index on which + to display the right handle. +:on_left_change: Callback executed when moving the left handle. +:on_right_change: Callback executed when moving the right handle. + +Slider class +----------------- + +This widget implements a mouse-interactable slider. The player can move the handle to +set the value of the slider. The parent widget owns the slider value, and can control +it independently (e.g., with a ``CycleHotkeyLabel``). If the value changes, the ``Slider`` +appearance will adjust automatically. + +:num_stops: Used to specify the number of "notches" in the slider, the places + where the handle can stop. (This should match the parents' number of options.) +:get_idx_fn: The function used by the Slider to get the notch index on which + to display the handle. +:on_change: Callback executed when moving the handle. + +DimensionsTooltip class +----------------------- + +This widget follows the mouse cursor around and displays a string that +indicates selected 3d dimensions. It is intended to be a child widget of a +full-screen ``View``, such as a ``ZScreen``. + +:display_offset: the offset from the mouse cursor where the tooltip is + displayed. Positive offsets are down and to the right. Defaults to + ``{x=3, y=3}``. +:get_anchor_pos_fn: function that provides the other corner of the selected + area as a ``df.coord``-style table, that is, a table with ``x``, ``y``, and + ``z`` fields. Must return ``nil`` if there is no current selection. + +gui.textures +============ + +This module contains convenience methods for accessing default DFHack graphic assets. +Pass the ``offset`` in tiles (in row major position) to get a particular tile from the +asset. ``offset`` 0 is the first tile. + +* ``tp_green_pin(offset)`` tileset: ``hack/data/art/green-pin.png`` +* ``tp_red_pin(offset)`` tileset: ``hack/data/art/red-pin.png`` +* ``tp_icons(offset)`` tileset: ``hack/data/art/icons.png`` +* ``tp_on_off(offset)`` tileset: ``hack/data/art/on-off.png`` +* ``tp_control_panel(offset)`` tileset: ``hack/data/art/control-panel.png`` +* ``tp_border_thin(offset)`` tileset: ``hack/data/art/border-thin.png`` +* ``tp_border_medium(offset)`` tileset: ``hack/data/art/border-medium.png`` +* ``tp_border_bold(offset)`` tileset: ``hack/data/art/border-bold.png`` +* ``tp_border_panel(offset)`` tileset: ``hack/data/art/border-panel.png`` +* ``tp_border_window(offset)`` tileset: ``hack/data/art/order-window.png`` + +Example usage:: + + local textures = require('gui.textures') + local first_border_texpos = textures.tp_border_thin(1) + .. _lua-plugins: @@ -5165,8 +6775,8 @@ The names of the functions are also available as the keys of the building-hacks ============== -This plugin overwrites some methods in workshop df class so that mechanical workshops are possible. Although -plugin export a function it's recommended to use lua decorated function. +This plugin overwrites some methods in workshop df class so that mechanical workshops are +possible. Although plugin export a function it's recommended to use lua decorated function. .. contents:: :local: @@ -5174,10 +6784,11 @@ plugin export a function it's recommended to use lua decorated function. Functions --------- -``registerBuilding(table)`` where table must contain name, as a workshop raw name, the rest are optional: +``registerBuilding(table)`` where table must contain name, as a workshop raw name, +the rest are optional: :name: - custom workshop id e.g. ``SOAPMAKER`` + custom workshop id e.g., ``SOAPMAKER`` .. note:: this is the only mandatory field. @@ -5204,20 +6815,24 @@ Functions this generates full frame useful for animations that change little (1-2 tiles) :canBeRoomSubset: - a flag if this building can be counted in room. 1 means it can, 0 means it can't and -1 default building behaviour + a flag if this building can be counted in room. 1 means it can, + 0 means it can't and -1 default building behaviour :auto_gears: - a flag that automatically fills up gears and animations. It looks over the building definition for gear icons and maps them. + a flag that automatically fills up gears and animations. + It looks over the building definition for gear icons and maps them. Animate table also might contain: :frameLength: how many ticks does one frame take OR :isMechanical: - a bool that says to try to match to mechanical system (i.e. how gears are turning) + a bool that says to try to match to mechanical system (i.e., how gears are turning) -``getPower(building)`` returns two number - produced and consumed power if building can be modified and returns nothing otherwise +``getPower(building)`` returns two number - produced and consumed power if building can be +modified and returns nothing otherwise -``setPower(building,produced,consumed)`` sets current power production and consumption for a building. +``setPower(building,produced,consumed)`` sets current power production and +consumption for a building. Examples -------- @@ -5247,57 +6862,34 @@ buildingplan Native functions provided by the `buildingplan` plugin: -* ``bool isPlannableBuilding(df::building_type type, int16_t subtype, int32_t custom)`` returns whether the building type is handled by buildingplan. -* ``bool isPlanModeEnabled(df::building_type type, int16_t subtype, int32_t custom)`` returns whether the buildingplan UI is enabled for the specified building type. -* ``bool isPlannedBuilding(df::building *bld)`` returns whether the given building is managed by buildingplan. -* ``void addPlannedBuilding(df::building *bld)`` suspends the building jobs and adds the building to the monitor list. -* ``void doCycle()`` runs a check for whether buildings in the monitor list can be assigned items and unsuspended. This method runs automatically twice a game day, so you only need to call it directly if you want buildingplan to do a check right now. -* ``void scheduleCycle()`` schedules a cycle to be run during the next non-paused game frame. Can be called multiple times while the game is paused and only one cycle will be scheduled. - -burrows -======= - -The `burrows` plugin implements extended burrow manipulations. - -Events: - -* ``onBurrowRename.foo = function(burrow)`` - - Emitted when a burrow might have been renamed either through - the game UI, or ``renameBurrow()``. - -* ``onDigComplete.foo = function(job_type,pos,old_tiletype,new_tiletype,worker)`` - - Emitted when a tile might have been dug out. Only tracked if the - auto-growing burrows feature is enabled. - -Native functions: +* ``bool isPlannableBuilding(df::building_type type, int16_t subtype, int32_t custom)`` -* ``renameBurrow(burrow,name)`` + Returns whether the building type is handled by buildingplan. - Renames the burrow, emitting ``onBurrowRename`` and updating auto-grow state properly. +* ``bool isPlanModeEnabled(df::building_type type, int16_t subtype, int32_t custom)`` -* ``findByName(burrow,name)`` + Returns whether the buildingplan UI is enabled for the specified building type. - Finds a burrow by name, using the same rules as the plugin command line interface. - Namely, trailing ``'+'`` characters marking auto-grow burrows are ignored. +* ``bool isPlannedBuilding(df::building *bld)`` -* ``copyUnits(target,source,enable)`` + Returns whether the given building is managed by buildingplan. - Applies units from ``source`` burrow to ``target``. The ``enable`` - parameter specifies if they are to be added or removed. +* ``void addPlannedBuilding(df::building *bld)`` -* ``copyTiles(target,source,enable)`` + Suspends the building jobs and adds the building to the monitor list. - Applies tiles from ``source`` burrow to ``target``. The ``enable`` - parameter specifies if they are to be added or removed. +* ``void doCycle()`` -* ``setTilesByKeyword(target,keyword,enable)`` + Runs a check for whether buildings in the monitor list can be assigned + items and unsuspended. This method runs automatically twice a game day, + so you only need to call it directly if you want buildingplan to do a + check right now. - Adds or removes tiles matching a predefined keyword. The keyword - set is the same as used by the command line. +* ``void scheduleCycle()`` -The lua module file also re-exports functions from ``dfhack.burrows``. + Schedules a cycle to be run during the next non-paused game frame. + Can be called multiple times while the game is paused and only one + cycle will be scheduled. .. _cxxrandom-api: @@ -5334,7 +6926,7 @@ Native functions (exported to Lua) - ``rollNormal(rngID, avg, stddev)`` - generates random normal[gaus.] + generates random double drawn from a normal (Gaussian) distribution - ``rollBool(rngID, chance)`` @@ -5367,57 +6959,58 @@ Lua plugin functions Lua plugin classes ------------------ -``crng`` -~~~~~~~~ +crng +~~~~ - ``init(id, df, dist)``: constructor - - ``id``: Reference ID of engine to use in RNGenerations - - ``df`` (optional): bool indicating whether to destroy the Engine when the crng object is garbage collected - - ``dist`` (optional): lua number distribution to use + - ``id``: Reference ID of engine to use in RNGenerations. + - ``df`` (optional): bool indicating whether to destroy the Engine + when the crng object is garbage collected. + - ``dist`` (optional): lua number distribution to use. - ``changeSeed(seed)``: alters engine's seed value -- ``setNumDistrib(distrib)``: sets the number distribution crng object should use +- ``setNumDistrib(distrib)``: sets the number distribution crng object should use. - - ``distrib``: number distribution object to use in RNGenerations + - ``distrib``: number distribution object to use in RNGenerations. -- ``next()``: returns the next number in the distribution -- ``shuffle()``: effectively shuffles the number distribution +- ``next()``: returns the next number in the distribution. +- ``shuffle()``: effectively shuffles the number distribution. -``normal_distribution`` -~~~~~~~~~~~~~~~~~~~~~~~ +normal_distribution +~~~~~~~~~~~~~~~~~~~ - ``init(avg, stddev)``: constructor - ``next(id)``: returns next number in the distribution - ``id``: engine ID to pass to native function -``real_distribution`` -~~~~~~~~~~~~~~~~~~~~~ +real_distribution +~~~~~~~~~~~~~~~~~ - ``init(min, max)``: constructor - ``next(id)``: returns next number in the distribution - ``id``: engine ID to pass to native function -``int_distribution`` -~~~~~~~~~~~~~~~~~~~~ +int_distribution +~~~~~~~~~~~~~~~~ - ``init(min, max)``: constructor - ``next(id)``: returns next number in the distribution - ``id``: engine ID to pass to native function -``bool_distribution`` -~~~~~~~~~~~~~~~~~~~~~ +bool_distribution +~~~~~~~~~~~~~~~~~ - ``init(chance)``: constructor - ``next(id)``: returns next boolean in the distribution - ``id``: engine ID to pass to native function -``num_sequence`` -~~~~~~~~~~~~~~~~ +num_sequence +~~~~~~~~~~~~ - ``init(a, b)``: constructor - ``add(num)``: adds num to the end of the number sequence @@ -5427,32 +7020,33 @@ Lua plugin classes Usage ----- -The basic idea is you create a number distribution which you generate random numbers along. The C++ relies -on engines keeping state information to determine the next number along the distribution. -You're welcome to try and (ab)use this knowledge for your RNG purposes. +The randomization state is kept in an "engine". The distribution class turns +that engine state into random numbers. Example:: local rng = require('plugins.cxxrandom') - local norm_dist = rng.normal_distribution(6820,116) // avg, stddev + local norm_dist = rng.normal_distribution(6820, 116) -- avg, stddev local engID = rng.MakeNewEngine(0) - -- somewhat reminiscent of the C++ syntax print(norm_dist:next(engID)) - -- a bit more streamlined - local cleanup = true --delete engine on cleanup + -- alternate syntax + local cleanup = true -- delete engine on cleanup local number_generator = rng.crng:new(engID, cleanup, norm_dist) print(number_generator:next()) -- simplified - print(rng.rollNormal(engID,6820,116)) + print(rng.rollNormal(engID, 6820, 116)) -The number sequences are much simpler. They're intended for where you need to randomly generate an index, perhaps in a loop for an array. You technically don't need an engine to use it, if you don't mind never shuffling. +The number sequences are much simpler. They're intended for where you need to +randomly generate an index, perhaps in a loop for an array. You technically +don't need an engine to use it, if you don't mind never shuffling. Example:: local rng = require('plugins.cxxrandom') - local g = rng.crng:new(rng.MakeNewEngine(0), true, rng.num_sequence:new(0,table_size)) + local engID = rng.MakeNewEngine(0) + local g = rng.crng:new(engId, true, rng.num_sequence:new(0, table_size)) g:shuffle() for _ = 1, table_size do func(array[g:next()]) @@ -5485,123 +7079,148 @@ List of events 1. ``onReactionCompleting(reaction,reaction_product,unit,input_items,input_reagents,output_items,call_native)`` - Is called once per reaction product, before the reaction has a chance to call native code for item creation. - Setting ``call_native.value=false`` cancels further processing: no items are created and ``onReactionComplete`` is not called. + Is called once per reaction product, before the reaction has a chance to + call native code for item creation. Setting ``call_native.value=false`` + cancels further processing: no items are created and ``onReactionComplete`` + is not called. 2. ``onReactionComplete(reaction,reaction_product,unit,input_items,input_reagents,output_items)`` - Is called once per reaction product, when reaction finishes and has at least one product. + Is called once per reaction product, when reaction finishes and has + at least one product. 3. ``onItemContaminateWound(item,unit,wound,number1,number2)`` - Is called when item tries to contaminate wound (e.g. stuck in). + Is called when item tries to contaminate wound (e.g., stuck in). 4. ``onProjItemCheckMovement(projectile)`` - Is called when projectile moves. + Is called when projectile moves. 5. ``onProjItemCheckImpact(projectile,somebool)`` - Is called when projectile hits something. + Is called when projectile hits something. 6. ``onProjUnitCheckMovement(projectile)`` - Is called when projectile moves. + Is called when projectile moves. 7. ``onProjUnitCheckImpact(projectile,somebool)`` - Is called when projectile hits something. + Is called when projectile hits something. 8. ``onWorkshopFillSidebarMenu(workshop,callnative)`` - Is called when viewing a workshop in 'q' mode, to populate reactions, useful for custom viewscreens for shops. + Is called when viewing a workshop in 'q' mode, to populate + reactions, useful for custom viewscreens for shops. 9. ``postWorkshopFillSidebarMenu(workshop)`` - Is called after calling (or not) native fillSidebarMenu(). Useful for job button - tweaking (e.g. adding custom reactions) + Is called after calling (or not) native fillSidebarMenu(). + Useful for job button tweaking (e.g., adding custom reactions) .. _EventManager: Events from EventManager ------------------------ -These events are straight from EventManager module. Each of them first needs to be enabled. See functions for more info. If you register a listener before the game is loaded, be aware that no events will be triggered immediately after loading, so you might need to add another event listener for when the game first loads in some cases. +These events are straight from EventManager module. Each of them first needs +to be enabled. See functions for more info. If you register a listener before +the game is loaded, be aware that no events will be triggered immediately +after loading, so you might need to add another event listener for when the +game first loads in some cases. 1. ``onBuildingCreatedDestroyed(building_id)`` - Gets called when building is created or destroyed. + Gets called when building is created or destroyed. 2. ``onConstructionCreatedDestroyed(building_id)`` - Gets called when construction is created or destroyed. + Gets called when construction is created or destroyed. 3. ``onJobInitiated(job)`` - Gets called when job is issued. + Gets called when job is issued. 4. ``onJobCompleted(job)`` - Gets called when job is finished. The job that is passed to this function is a copy. Requires a frequency of 0 in order to distinguish between workshop jobs that were canceled by the user and workshop jobs that completed successfully. + Gets called when job is finished. The job that is passed to this function + is a copy. Requires a frequency of 0 in order to distinguish between + workshop jobs that were canceled by the user and workshop jobs that + completed successfully. 5. ``onUnitDeath(unit_id)`` - Gets called on unit death. + Gets called on unit death. 6. ``onItemCreated(item_id)`` - Gets called when item is created (except due to traders, migrants, invaders and spider webs). + Gets called when item is created (except due to traders, migrants, + invaders, and spider webs). 7. ``onSyndrome(unit_id,syndrome_index)`` - Gets called when new syndrome appears on a unit. + Gets called when new syndrome appears on a unit. 8. ``onInvasion(invasion_id)`` - Gets called when new invasion happens. + Gets called when new invasion happens. 9. ``onInventoryChange(unit_id,item_id,old_equip,new_equip)`` - Gets called when someone picks up an item, puts one down, or changes the way they are holding it. If an item is picked up, old_equip will be null. If an item is dropped, new_equip will be null. If an item is re-equipped in a new way, then neither will be null. You absolutely must NOT alter either old_equip or new_equip or you might break other plugins. + Gets called when someone picks up an item, puts one down, + or changes the way they are holding it. If an item is picked up, + old_equip will be null. If an item is dropped, new_equip will be null. + If an item is re-equipped in a new way, then neither will be null. + You absolutely must NOT alter either old_equip or new_equip or you + might break other plugins. 10. ``onReport(reportId)`` - Gets called when a report happens. This happens more often than you probably think, even if it doesn't show up in the announcements. + Gets called when a report happens. This happens more often than + you probably think, even if it doesn't show up in the announcements. 11. ``onUnitAttack(attackerId, defenderId, woundId)`` - Called when a unit wounds another with a weapon. Is NOT called if blocked, dodged, deflected, or parried. + Called when a unit wounds another with a weapon. + Is NOT called if blocked, dodged, deflected, or parried. 12. ``onUnload()`` - A convenience event in case you don't want to register for every onStateChange event. + A convenience event in case you don't want to register for every onStateChange event. 13. ``onInteraction(attackVerb, defendVerb, attackerId, defenderId, attackReportId, defendReportId)`` - Called when a unit uses an interaction on another. + Called when a unit uses an interaction on another. Functions --------- 1. ``registerReaction(reaction_name,callback)`` - Simplified way of using onReactionCompleting; the callback is function (same params as event). + Simplified way of using onReactionCompleting; the callback is function (same params as event). 2. ``removeNative(shop_name)`` - Removes native choice list from the building. + Removes native choice list from the building. 3. ``addReactionToShop(reaction_name,shop_name)`` - Add a custom reaction to the building. + Add a custom reaction to the building. 4. ``enableEvent(evType,frequency)`` - Enable event checking for EventManager events. For event types use ``eventType`` table. Note that different types of events require different frequencies to be effective. The frequency is how many ticks EventManager will wait before checking if that type of event has happened. If multiple scripts or plugins use the same event type, the smallest frequency is the one that is used, so you might get events triggered more often than the frequency you use here. + Enable event checking for EventManager events. For event types use ``eventType`` table. + Note that different types of events require different frequencies to be effective. The + frequency is how many ticks EventManager will wait before checking if that type of event + has happened. If multiple scripts or plugins use the same event type, the smallest frequency + is the one that is used, so you might get events triggered more often than the frequency + you use here. 5. ``registerSidebar(shop_name,callback)`` - Enable callback when sidebar for ``shop_name`` is drawn. Useful for custom workshop views e.g. using gui.dwarfmode lib. Also accepts a ``class`` instead of function - as callback. Best used with ``gui.dwarfmode`` class ``WorkshopOverlay``. + Enable callback when sidebar for ``shop_name`` is drawn. Useful for custom workshop views, + e.g., using gui.dwarfmode lib. Also accepts a ``class`` instead of function as callback. + Best used with ``gui.dwarfmode`` class ``WorkshopOverlay``. Examples -------- @@ -5628,7 +7247,7 @@ Grenade example:: b=require "plugins.eventful" b.onProjItemCheckImpact.one=function(projectile) - -- you can check if projectile.item e.g. has correct material + -- you can check if projectile.item e.g., has correct material dfhack.maps.spawnFlow(projectile.cur_pos,6,0,0,50000) end @@ -5642,8 +7261,9 @@ Integrated tannery:: luasocket ========= -A way to access csocket from lua. The usage is made similar to luasocket in vanilla lua distributions. Currently -only a subset of the functions exist and only tcp mode is implemented. +A way to access csocket from lua. The usage is made similar to luasocket in +vanilla lua distributions. Currently only a subset of the functions exist +and only TCP mode is implemented. .. contents:: :local: @@ -5651,9 +7271,8 @@ only a subset of the functions exist and only tcp mode is implemented. Socket class ------------ -This is a base class for ``client`` and ``server`` sockets. You can not create it - it's like a virtual -base class in c++. - +This is a base class for ``client`` and ``server`` sockets. You can not create +it - it's like a virtual base class in c++. * ``socket:close()`` @@ -5661,14 +7280,15 @@ base class in c++. * ``socket:setTimeout(sec,msec)`` - Sets the operation timeout for this socket. It's possible to set timeout to 0. Then it performs like - a non-blocking socket. + Sets the operation timeout for this socket. It's possible to set timeout to 0. + Then it performs like a non-blocking socket. Client class ------------ -Client is a connection socket to a server. You can get this object either from ``tcp:connect(address,port)`` or -from ``server:accept()``. It's a subclass of ``socket``. +Client is a connection socket to a server. You can get this object either from +``tcp:connect(address,port)`` or from ``server:accept()``. +It's a subclass of ``socket``. * ``client:receive(pattern)`` @@ -5701,7 +7321,8 @@ A class with all the tcp functionality. * ``tcp:bind(address,port)`` - Starts listening on that port for incoming connections. Returns ``server`` object. + Starts listening on that port for incoming connections. + Returns ``server`` object. * ``tcp:connect(address,port)`` @@ -5713,16 +7334,17 @@ A class with all the tcp functionality. map-render ========== -A way to ask DF to render a section of the fortress mode map. This uses a native -DF rendering function so it's highly dependent on DF settings (e.g. tileset, -colors, etc.) +A way to ask DF to render a section of the fortress mode map. +This uses a native DF rendering function so it's highly dependent +on DF settings (e.g., tileset, colors, etc.) Functions --------- - ``render_map_rect(x,y,z,w,h)`` - returns a table with w*h*4 entries of rendered tiles. The format is the same as ``df.global.gps.screen`` (tile,foreground,bright,background). + Returns a table with w*h*4 entries of rendered tiles. The format is + the same as ``df.global.gps.screen`` (tile,foreground,bright,background). .. _pathable-api: @@ -5765,6 +7387,23 @@ tiletypes the parameters are enum values from ``df.tiletype_shape``, ``df.tiletype_material``, etc. Returns whether the conversion succeeded. +* ``bool tiletypes_setTile(pos, tiletype_options)`` where + the ``tiletype_options`` parameter takes in a table, with any fields matching + the available tiletypes options. Any unspecified fields default to keeping + the value of the original tile. Returns whether the conversion succeeded. + - ``shape``: ``df.tiletype_shape`` + - ``material``: ``df.tiletype_material`` + - ``special``: ``df.tiletype_special`` + - ``variant``: ``df.tiletype_variant`` + - ``hidden``: -1, 0, or 1 + - ``light``: -1, 0, or 1 + - ``subterranean``: -1, 0, or 1 + - ``skyview``: -1, 0, or 1 + - ``aquifer``: -1, 0, 1, or 2 + - ``autocorrect``: 0 or 1 + - ``stone_material``: integer material id + - ``vein_type``: ``df.inclusion_type`` + .. _xlsxreader-api: xlsxreader @@ -5910,7 +7549,7 @@ General script API Note that the ``dfhack.run_script()`` function allows Lua errors to propagate to the caller. - To run other types of commands (i.e. built-in commands or commands provided by plugins), + To run other types of commands (i.e., built-in commands or commands provided by plugins), see ``dfhack.run_command()``. Note that this is slightly slower than ``dfhack.run_script()`` when running Lua scripts. @@ -5934,7 +7573,7 @@ Importing scripts * ``dfhack.reqscript(name)`` or ``reqscript(name)`` - Loads a Lua script and returns its environment (i.e. a table of all global + Loads a Lua script and returns its environment (i.e., a table of all global functions and variables). This is similar to the built-in ``require()``, but searches all `script-paths` for the first matching ``name.lua`` file instead of searching the Lua library paths (like ``hack/lua/``). @@ -5951,6 +7590,15 @@ Importing scripts --@ module = true + In order to be recognized, this line **must** begin with ``--@`` with no + whitespace characters before it:: + + --@ module = true OK + --@module = true OK + -- @module = true NOT OK (no --@ found due to space after --) + --@module = true NOT OK (leading space, --@ is not at the beginning of the line) + ---@module = true NOT OK (leading dash, --@ is not at the beginning of the line) + 2. Include a check for ``dfhack_flags.module``, and avoid running any code that has side-effects if this flag is true. For instance:: @@ -5985,7 +7633,7 @@ Importing scripts a local variable as in the example above. ``reqscript()`` is fast for scripts that have previously been loaded and haven't changed. If you retain a reference to a table returned by an old ``reqscript()`` call, this may - lead to unintended behavior if the location of the script changes (e.g. if a + lead to unintended behavior if the location of the script changes (e.g., if a save is loaded or unloaded, or if a `script path ` is added in some other way). @@ -6061,18 +7709,32 @@ If the state of your script can be tied to an active savegame, then your script should hook the appropriate events to load persisted state when a savegame is loaded. For example:: - local json = require('json') - local persist = require('persist-table') + local utils = require('utils') local GLOBAL_KEY = 'my-script-name' - g_state = g_state or {} + + local function get_default_state() + return { + -- add default config here, e.g., + -- enabled=false, + } + end + + state = state or get_default_state() dfhack.onStateChange[GLOBAL_KEY] = function(sc) if sc ~= SC_MAP_LOADED or df.global.gamemode ~= df.game_mode.DWARF then return end - local state = json.decode(persist.GlobalTable[GLOBAL_KEY] or '') - g_state = state or {} + -- retrieve state saved in game. merge with default state so config + -- saved from previous versions can pick up newer defaults. + state = get_default_state() + utils.assign(state, dfhack.persistent.getSiteData(GLOBAL_KEY, state)) + end + + -- to be called when global state changes that needs to be persisted + local function persist_state() + dfhack.persistent.saveSiteData(GLOBAL_KEY, state) end The attachment to ``dfhack.onStateChange`` should appear in your script code diff --git a/docs/dev/Remote.rst b/docs/dev/Remote.rst index 6f276cdb6e..c98d6ae520 100644 --- a/docs/dev/Remote.rst +++ b/docs/dev/Remote.rst @@ -55,7 +55,6 @@ Plugins that implement RPC methods include: - `rename` - `remotefortressreader` -- `isoworldremote` Plugins that use the RPC API include: diff --git a/docs/dev/Structures-intro.rst b/docs/dev/Structures-intro.rst index 9d304949fe..8fe8d6e99b 100644 --- a/docs/dev/Structures-intro.rst +++ b/docs/dev/Structures-intro.rst @@ -23,11 +23,10 @@ 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: +Please see the following page for detailed information about the syntax of the +df-structures XML files: .. toctree:: :titlesonly: /library/xml/SYNTAX - /library/xml/how-to-update diff --git a/docs/dev/compile/Compile.rst b/docs/dev/compile/Compile.rst index 22b9a7b1a0..2ad2c52efb 100644 --- a/docs/dev/compile/Compile.rst +++ b/docs/dev/compile/Compile.rst @@ -88,9 +88,9 @@ assistance. All Platforms ============= -Before you can compile the code you'll need to configure your build with cmake. Some IDEs can do this, -but from command line is the usual way to do this; thought the Windows section below points out some -Windows batch files that can be used to avoid opening a terminal/command-prompt. +Before you can compile the code you'll need to configure your build with cmake. Some IDEs can do this +for you, but it's more common to do it from the command line. Windows developers can refer to the +Windows section below for batch files that can be used to avoid opening a terminal/command-prompt. You should seek cmake's documentation online or via ``cmake --help`` to see how the command works. See the `build-options` page for help finding the DFHack build options relevant to you. @@ -102,10 +102,7 @@ be sure you've read the section about getting the code. Linux ===== -On Linux, DFHack acts as a library that shadows parts of the SDL API using LD_PRELOAD. -Build ------ Building is fairly straightforward. Enter the ``build`` folder (or create an empty folder in the DFHack directory to use instead) and start the build like this:: @@ -165,8 +162,8 @@ or VC2022_32, depending on the architecture you specified. Open the file ``dfhack.sln`` inside that folder. If you have multiple versions of Visual Studio installed, make sure you open with Visual Studio 2022. -The first thing you must then do is change the build type. It defaults to Debug, -but this cannot be used on Windows. Debug is not binary-compatible with DF. +The first thing you must then do is ensure the build type is not Debug, which +cannot be used on Windows. Debug is not binary-compatible with DF. If you try to use a debug build with DF, you'll only get crashes and for this reason the Windows "debug" scripts actually do RelWithDebInfo builds. After loading the Solution, change the Build Type to either ``Release`` @@ -191,6 +188,10 @@ experience by providing more scrollback and larger window sizes. macOS ===== + +NOTE: this section is currently outdated. Once DF itself can build on macOS +again, we will match DF's build environment and update the instructions here. + DFHack functions similarly on macOS and Linux, and the majority of the information above regarding the build process (CMake and Ninja) applies here as well. @@ -302,7 +303,7 @@ Step 1: prepare a build container On your Linux host, install and run the docker daemon and then run these commands:: xhost +local:root - docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume=/tmp/.X11-unix:/tmp/.X11-unix --user buildmaster --name dfhack-win ghcr.io/dfhack/build-env:msvc + docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume=/tmp/.X11-unix:/tmp/.X11-unix --user buildmaster --name dfhack-win ghcr.io/dfhack/build-env:master The ``xhost`` command and ``--env`` parameters are there so you can eventually run Dwarf Fortress from the container and have it display on your host. @@ -441,3 +442,14 @@ a command starting with ``cmake .. -G Ninja`` on Linux and macOS, following the instructions in the sections above. CMake should automatically locate files that you placed in ``CMake/downloads``, and use them instead of attempting to download them. + +In addition, some packages used by DFHack are managed using CMake's ``FetchContent`` +feature, which requires an online connection during builds. The simplest way to address +this is to have a connection during the first build (during which CMake will download the +dependencies), and then to use CMake's ``FETCHCONTENT_FULLY_DISCONNECTED`` or +``FETCHCONTENT_UPDATES_DISCONNECTED`` defines to control how CMake manages cached +dependencies. If you need even the first-time build be an offline build, you will need +to provide a CMake dependency provider. We do not provide one, but CMake's own documentation +includes a simple provider. For more information about CMake's ``FetchContent`` feature +and how to use it in offline builds, see the +`CMake documentation `_. diff --git a/docs/dev/compile/Dependencies.rst b/docs/dev/compile/Dependencies.rst index da8728b9b8..b42a833785 100644 --- a/docs/dev/compile/Dependencies.rst +++ b/docs/dev/compile/Dependencies.rst @@ -4,55 +4,57 @@ Dependencies ############ -The most immediate consideration is of course that DFHack is meant to be installed into an **existing DF folder**. -So it is prudent that one is ready. +DFHack is meant to be installed into an **existing DF folder**, so ensure that +one is ready. .. contents:: Contents :local: :depth: 2 -Build Dependencies ------------------- +Overview of Dependencies +======================== -.. - DFHack is quite large, so I've attempted to - leave some sort of bread crumbs for each - mentionable aspect. +This section provides an overview of system dependencies that DFHack relies on. +See the platform-specific sections later in this document for specifics on how +to install these dependencies. -Many of DFHack's build dependencies are included in the repository as git submodules, -however there are some system dependencies as well. They are as follows: +DFHack also has several dependencies on libraries that are included in the +repository as Git submodules, which require no further action to install. -System packages: +System dependencies +------------------- -* SDL (libsdl 1.2, not sdl2). -* cmake -* Perl -* Python +* CMake (v3.21 or newer is recommended) +* build system (e.g. gcc & ninja, or Visual Studio) +* Perl 5 (for code generation) + * XML::LibXML + * XML::LibXSLT +* Python 3 (for `documentation `) * Sphinx -* git (required for `contributions `_) -* ccache (**optional**, but recommended to improve build times) +* Git (required for `contributions `_) +* ccache (**optional**, but strongly recommended to improve build times) * OpenGL headers (**optional**: to build `stonesense`) * zlib (compression library used for `xlsxreader-api` -> `quickfort`) -* build system (e.g. gcc & ninja, or Visual Studio) - -.. - maybe the below should be talked about next to the bullet point?? - -**SDL** is used as an injection point which you can see more about in DFHack's `architectural ` documentation & diagrams. -Perl packages: +Perl packages +------------- * XML::LibXML * XML::LibXSLT -These perl packages are used in code generation. DFHack has many structures that are reverse engineered, we use xml -files to define and update these structures. Then during the configuration process [running cmake] these xml files are -used to generate C++ source code to define these structures for use in plugins and scripts. +The Perl packages are used in code generation. DF memory structures are +represented as XML in DFHack's source tree. During the configuration process +(cmake) the xml files are converted into C++ headers and Lua wrappers for use +by plugins and scripts. +Python packages +--------------- -Installing ----------- +* Sphinx (required to build the `documentation `) + +Installing Dependencies +======================= .. contents:: :local: @@ -61,39 +63,41 @@ Installing .. _linux-dependency-instructions: Linux -===== +----- Here are some package install commands for various distributions: -* On Arch linux:: +* On Arch Linux:: - pacman -Sy gcc cmake ccmake ninja git dwarffortress zlib perl-xml-libxml perl-xml-libxslt + pacman -Sy gcc cmake ccache ninja git dwarffortress zlib perl-xml-libxml perl-xml-libxslt * The ``dwarffortress`` package provides the necessary SDL packages. * For the required Perl modules: ``perl-xml-libxml`` and ``perl-xml-libxslt`` (or through ``cpan``) * On Ubuntu:: - apt-get install gcc cmake ninja-build git zlib1g-dev libsdl1.2-dev libxml-libxml-perl libxml-libxslt-perl + apt-get install gcc cmake ccache ninja-build git zlib1g-dev libsdl2-dev libxml-libxml-perl libxml-libxslt-perl * Other Debian-based distributions should have similar requirements. * On Fedora:: - yum install gcc-c++ cmake ninja-build git zlib-devel SDL-devel perl-core perl-XML-LibXML perl-XML-LibXSLT ruby + yum install gcc-c++ cmake ccache ninja-build git zlib-devel SDL2-devel perl-core perl-XML-LibXML perl-XML-LibXSLT ruby + +To build DFHack, you need GCC 10 or newer. Note that extremely new GCC versions +may not have been used to build DFHack yet, so if you run into issues with +these, please let us know (e.g. by opening a GitHub issue). -To build DFHack, you need GCC 4.8 or newer. GCC 4.8 has the benefit of avoiding -`libstdc++ compatibility issues `, but can be hard -to obtain on modern distributions, and working around these issues is done -automatically by the ``dfhack`` launcher script. As long as your system-provided -GCC is new enough, it should work. Note that extremely new GCC versions may not -have been used to build DFHack yet, so if you run into issues with these, please -let us know (e.g. by opening a GitHub issue). +Distributing binaries compiled with newer GCC versions may result in +compatibility issues for players with older GCC versions. This is why DFHack +builds distributables with GCC 10, which is the same GCC version that DF itself +is compiled with. Before you can build anything, you'll also need ``cmake``. It is advisable to -also get ``ccmake`` on distributions that split the cmake package into multiple -parts. As mentioned above, ``ninja`` is recommended (many distributions call -this package ``ninja-build``). +also get ``ccmake`` (the interactive configuration interface) on distributions +that split the cmake package into multiple parts. As mentioned above, ``ninja`` +is recommended as the build system (many distributions call this package +``ninja-build``), but ``make`` also works. You will need pthread; most systems should have this already. Note that older CMake versions may have trouble detecting pthread, so if you run into @@ -101,66 +105,20 @@ pthread-related errors and pthread is installed, you may need to upgrade CMake, either by downloading it from `cmake.org `_ or through your package manager, if possible. -Building 32-bit Binaries -~~~~~~~~~~~~~~~~~~~~~~~~ -If you want to compile 32-bit DFHack on 64-bit distributions, you'll need the -multilib development tools and libraries: - -* ``gcc-multilib`` and ``g++-multilib`` -* If you have installed a non-default version of GCC - for example, GCC 4.8 on a - distribution that defaults to 5.x - you may need to add the version number to - the multilib packages. - - * For example, ``gcc-4.8-multilib`` and ``g++-4.8-multilib`` if installing for GCC 4.8 - on a system that uses a later GCC version. - * This is definitely required on Ubuntu/Debian, check if using a different distribution. - -* ``zlib1g-dev:i386`` (or a similar i386 zlib-dev package) - -Note that installing a 32-bit GCC on 64-bit systems (e.g. ``gcc:i386`` on -Debian) will typically *not* work, as it depends on several other 32-bit -libraries that conflict with system libraries. Alternatively, you might be able -to use ``lxc`` to -:forums:`create a virtual 32-bit environment <139553.msg5435310#msg5435310>`. - -.. _linux-incompatible-libstdcxx: - -Incompatible libstdc++ -~~~~~~~~~~~~~~~~~~~~~~ -When compiling DFHack yourself, it builds against your system libstdc++. When -Dwarf Fortress runs, it uses a libstdc++ shipped in the ``libs`` folder, which -comes from GCC 4.8 and is incompatible with code compiled with newer GCC -versions. As of DFHack 0.42.05-alpha1, the ``dfhack`` launcher script attempts -to fix this by automatically removing the DF-provided libstdc++ on startup. -In rare cases, this may fail and cause errors such as: - -.. code-block:: text - - ./libs/Dwarf_Fortress: /pathToDF/libs/libstdc++.so.6: version - `GLIBCXX_3.4.18' not found (required by ./hack/libdfhack.so) - -The easiest way to fix this is generally removing the libstdc++ shipped with -DF, which causes DF to use your system libstdc++ instead:: - - cd /path/to/DF/ - rm libs/libstdc++.so.6 - -Note that distributing binaries compiled with newer GCC versions may result in -the opposite compatibility issue: users with *older* GCC versions may encounter -similar errors. This is why DFHack distributes both GCC 4.8 and GCC 7 builds. If -you are planning on distributing binaries to other users, we recommend using an -older GCC (but still at least 4.8) version if possible. - .. _windows-dependency-instructions: Windows -======= +------- DFHack must be built with the Microsoft Visual C++ 2022 toolchain (aka MSVC v143) for ABI compatibility with Dwarf Fortress v50. -With Choco -~~~~~~~~~~ +.. contents:: + :local: + :depth: 1 + +With Chocolatey +~~~~~~~~~~~~~~~ Many of the dependencies are simple enough to download and install via the `chocolatey`_ package manager on the command line. @@ -188,8 +146,10 @@ the existing install. Manually ~~~~~~~~ If you prefer to install manually rather than using Chocolatey, details and -requirements are as below. If you do install manually, please ensure you -have all **executables searchable in your PATH variable**. +requirements are as below. If you do install manually, **ensure that your PATH +variable is updated** to include the install locations for all tools. This can +be edited from ``Control Panel -> System -> Advanced System Settings -> +Environment Variables``. .. contents:: :local: @@ -197,22 +157,18 @@ have all **executables searchable in your PATH variable**. CMake ^^^^^ -You can get the win32 installer version from -`the official site `_. +You can get the Windows installer from `the official site `_. It has the usual installer wizard. Make sure you let it add its binary folder to your binary search PATH so the tool can be later run from anywhere. Perl / Strawberry Perl ^^^^^^^^^^^^^^^^^^^^^^ -For the code generation stage of the build process, you'll need Perl 5 with -**XML::LibXML** and **XML::LibXSLT**. `Strawberry Perl `_ is -recommended as it includes all of the required packages in a single easy -install. - -After install, ensure Perl is in your user's PATH. This can be edited from -``Control Panel -> System -> Advanced System Settings -> Environment Variables``. +For the code generation stage of the build process, you'll need Perl 5 with the +``XML::LibXML`` and ``XML::LibXSLT`` packages installed. +`Strawberry Perl `_ is recommended as it includes all +of the required packages in a single easy install. -The following directories must be in your PATH, in this order: +After install, ensure Perl is in your user's PATH. The following directories must be in your PATH, in this order: * ``\c\bin`` * ``\perl\site\bin`` @@ -228,7 +184,7 @@ install XML::LibXML and XML::LibXSLT for it using CPAN. Python ^^^^^^ -See the `Python`_ website. +See the `Python`_ website. Any supported version of Python 3 will work. .. _Python: https://www.python.org/downloads/ @@ -271,9 +227,12 @@ When installing, select the "Desktop Development with C++" workload and ensure t .. _mac-dependency-instructions: macOS -===== +----- + +NOTE: this section is currently outdated. Once DF itself can build on macOS +again, we will match DF's build environment and update the instructions here. -DFHack can officially be built on macOS only with GCC 4.8 or 7. Anything newer than 7 +DFHack is easiest to build on macOS with exactly GCC 4.8 or 7. Anything newer than 7 will require you to perform extra steps to get DFHack to run (see `osx-new-gcc-notes`), and your build will likely not be redistributable. @@ -309,29 +268,36 @@ and your build will likely not be redistributable. #. Install Perl dependencies - * Using system Perl + * Using system Perl + + * ``sudo cpan`` + + If this is the first time you've run cpan, you will need to go through the setup + process. Just stick with the defaults for everything and you'll be fine. + + If you are running OS X 10.6 (Snow Leopard) or earlier, good luck! + You'll need to open a separate Terminal window and run:: - * ``sudo cpan`` + sudo ln -s /usr/include/libxml2/libxml /usr/include/libxml - If this is the first time you've run cpan, you will need to go through the setup - process. Just stick with the defaults for everything and you'll be fine. + * ``install XML::LibXML`` + * ``install XML::LibXSLT`` - If you are running OS X 10.6 (Snow Leopard) or earlier, good luck! - You'll need to open a separate Terminal window and run:: + * In a separate, local Perl install - sudo ln -s /usr/include/libxml2/libxml /usr/include/libxml + Rather than using system Perl, you might also want to consider + the Perl manager, `Perlbrew `_. - * ``install XML::LibXML`` - * ``install XML::LibXSLT`` + This manages Perl 5 locally under ``~/perl5/``, providing an easy + way to install Perl and run CPAN against it without ``sudo``. + It can maintain multiple Perl installs and being local has the + benefit of easy migration and insulation from OS issues and upgrades. - * In a separate, local Perl install + See https://perlbrew.pl/ for more details. - Rather than using system Perl, you might also want to consider - the Perl manager, `Perlbrew `_. +#. Install Python dependencies - This manages Perl 5 locally under ``~/perl5/``, providing an easy - way to install Perl and run CPAN against it without ``sudo``. - It can maintain multiple Perl installs and being local has the - benefit of easy migration and insulation from OS issues and upgrades. + * You can choose to use a system Python 3 installation or any supported + version of Python 3 from `python.org `__. - See https://perlbrew.pl/ for more details. + * Install `Sphinx`_ diff --git a/docs/dev/compile/Options.rst b/docs/dev/compile/Options.rst index b314e9db27..462fd1f1ca 100644 --- a/docs/dev/compile/Options.rst +++ b/docs/dev/compile/Options.rst @@ -136,16 +136,26 @@ Usage:: Documentation ============= -If you need to build documentation. Documentation can be built as HTML, and PDF, -but there are also plain text files generated for in-game. +If you need to build `documentation `. -Variable: ``BUILD_DOCS`` +.. note:: + + These options are primarily useful for verifying that the end-to-end process + for building and packaging the documentation is working as expected. For + iterating on documentation changes, `faster alternatives ` are + available. + +Variables: + +* ``BUILD_DOCS``: enables the default documentation build +* ``BUILD_DOCS_NO_HTML``: disables the HTML documentation build (only builds the text documentation used in-game) Usage:: cmake .. -DBUILD_DOCS:bool=ON cmake .. -DBUILD_DOCS=1 - + cmake .. -DBUILD_DOCS_NO_HTML:bool=ON + cmake .. -DBUILD_DOCS_NO_HTML=1 The generated documentation is stored in ``docs/html`` and ``docs/text`` (respectively) in the root DFHack folder, and they will both be installed to ``hack/docs`` when you diff --git a/docs/dev/compile/index.rst b/docs/dev/compile/index.rst index 0504bd8fbc..f9f6105ff6 100644 --- a/docs/dev/compile/index.rst +++ b/docs/dev/compile/index.rst @@ -4,7 +4,8 @@ Building DFHack =============== -Those seeking to compile the source code for DFHack, and or plugins, can refer to the following help pages. +Those seeking to compile the source code for DFHack, including core and plugins, +can refer to the following help pages. .. toctree:: :maxdepth: 2 diff --git a/docs/dev/data-identity.rst b/docs/dev/data-identity.rst new file mode 100644 index 0000000000..ae7076941d --- /dev/null +++ b/docs/dev/data-identity.rst @@ -0,0 +1,246 @@ +.. _data_identity: + +########################### +DFHack Data Identity System +########################### + +This article is an attempt to describe DFHack's data identity system. +DFHack internally has a collection of C++ classes that provide metadata about the data in DF itself as well as data used +by various components of DFHack. This metadata is used primarily to enable the Lua scripting system to access data +held by Dwarf Fortress in a transparent manner, but is also used for several other purposes within DFHack, such as rerouting virtual method calls. + +The base class of the identity system is the class ``type_identity``, defined in :source:`DataDefs.h `. A ``type_identity`` object +provides information about one *type* of data object, in either Dwarf Fortress or DFHack, that can be manipulated as a discrete entity in Lua. +With one specific exception (``global_identity``, covered below), there is a one-to-one relationship between C++ types and ``type_identity`` objects. +In Lua, objects that are being managed via the data identity system are represented as a Lua userdata object. The userdata object +contains both a pointer to the C++ object itself and a pointer to a ``type_identity`` object that describes the data pointed +by that pointer. Note that the userdata object does not own the objects pointed to by these pointers, and the Lua engine is +never responsible for managing their lifetimes. + +``type_identity`` defines the following public methods: + +- ``byte_size``: returns the size, in bytes, of the object held + +- ``type``: returns an enum (of type ``identity_type``) classifying the object held. + +- ``getFullName``: returns a string that describes the type. This will usually be similar to a C++ ``typedef``, although this is not guaranteed. + +- ``lua_read``: Used by the Lua engine to "read" the data from a C++ object into the Lua state. + +- ``lua_write``: Used by the Lua engine to "write" a value from the Lua state into a C++ data object. + +- ``build_metatable``: Create a Lua metatable in the specified Lua state corresponding to this type identity. + +- ``is_primitive``: indicates that ``lua_read`` will store a *copy* of the object on the Lua stack instead of a non-owning reference to it. Used for types that have direct representations in Lua: numbers, booleans, simple strings + +- ``is_constructed``: indicates that creating a C++ instance of this type requires the use of a possibly nontrivial constructor. A type identity that is both primitive and constructed cannot be inserted into a container. At the moment the only type identity that is both primitive and constructed is ``stl_string_identity``, which wraps the C++ ``std::string`` type. + +- ``is_container``: indicates that the type is a container and thus implements the methods specific to ``container_identity`` + +- ``allocate``: allocate, and construct if necessary, a C++ instance of this type. This may fail if the type does not support construction. + +- ``copy``: copy the object at ``src`` onto ``tgt``. This uses ``memmove`` for primitive types, and C++ copy-assignment (when possible) for other types + +There are plethora of subclasses of ``type_identity``: + +* ``type_identity`` the abstract base class of all type identities + + * ``constructed_identity`` anything with an internal structure (not primitive) + + * ``compound_identity`` anything with fields + + * ``bitfield_identity`` a structure defined with fields at bit rather than byte boundaries + + * ``enum_identity`` C++ ``enum`` + + * ``struct_identity`` C++ ``class`` or ``structure`` + + * ``global_identity`` holds, as a quasiobject, handles for all of the known Dwarf Fortress program-scope static objects as if they were fields of an object called ``global`` + + * ``union_identity`` C++ ``union`` + + * ``other_vectors_identity`` special-case identity for the categorized subvectors of objects that appears in many of Dwarf Fortress's "handler" classes + + * ``virtual_identity`` polymorphic C++ ``class`` or ``structure`` having a virtual table to handle virtual dispatch + + * ``stl_string_identity`` ``std::string`` + + * ``xlsx_file_handle_identity`` special case + + * ``xlsx_sheet_handle_identity`` special case + + * ``container_identity`` "containers" generally. note that all container types are homogeneous (that is, the elements of the container must all be of the same type). abstract base class + + * ``bit_container_identity`` for containers that contain bools stored one element per *bit* (rather than per byte) + + * ``bit_array_identity`` Dwarf Fortress's ``BitArray`` type + + * ``stl_bit_vector_identity`` ``std::vector`` + + * ``buffer_container_identity`` C++ static arrays and raw C++ pointers acting as arrays of unspecified bound + + * ``enum_list_attr_identity`` (template) metaobject with metadata about a C++ enumeration; may also include additional metadata + + * ``ptr_container_identity`` containers that contain pointers + + * ``stl_ptr_container_identity`` containers that are of the form ``std::vector`` for some ``T`` + + * ``ro_stl_container_identity`` (template) "read only containers" + + * ``ro_stl_assoc_container_identity`` (template) ``std::map`` and ``std::unordered_map`` + + * ``stl_container_identity`` (template) ``std::vector`` where ``T`` is *not* a pointer (and not ``bool``) + + * ``opaque_identity`` opaque wrapper around any type, provides no functionality + + * ``stl_string_identity`` ``std::string`` + + * ``function_identity_base`` abstract base class for ``function_identity`` + + * ``function_identity`` (template) wrapper around a C++ function that can be invoked from Lua + + * ``primitive_identity`` wrapper around a primitive type. primitive types are fixed-length objects with no internal structure + + * ``bool_identity`` ``bool`` + + * ``number_identity_base`` abstract base for numeric types + + * ``float_identity_base`` abstract base for floating point types + + * ``float_identity`` (template) ``double`` and ``float`` + + * ``integer_identity_base`` abstract base for integral types + + * ``integer_identity`` (template) ``int8_t``, ``int16_t``, ``int32_t``, ``size_t``, etc. lots of these + + * ``pointer_identity`` any arbitrary C++ pointer (other than ``char*``) + + * ``ptr_string_identity`` C-style (``char *``) string + +Types marked with "(template)" are C++ template types, all parameterized by a single typename. + +Type identity object lifetime and mutability +============================================ + +*Most* instances of ``type_identity`` are statically constructed and immutable and are thus ``const static`` when constructed. +All ``type_identity`` pointers should be declared ``const``. Due to ``virtual_identity``'s role in implementing +DFHack's vmethod interpose system, it is important that there be at most one ``virtual_identity`` object per virtual class. +Having more than one ``struct_identity`` object for the same type might also potentially lead to misoperation. + +In general, there should be a one to one correspondence between ``type_identity`` objects and C++ types +(with the special case that ``global_identity`` has no corresponding type). As far as we know, for any type other than ``virtual_identity``, +violations of this constraint will not lead to misoperation, but this constraint should not be lightly violated. +The Lua/C++ interface does, in a handful of places, assume that it can compare ``type_identity`` +pointers to determine if they reference the same type, but as far as we know all of these instances will fall +back to correct behavior as long as the shadow copies are indistinguishable from one another; +that is, two copies having the same values will compare equal in all known such comparisons. +Therefore, if two ``type_identity`` objects do exist (for any reason) for the same underlying C++ type, +those objects must be indistinguishable from one another by anything other than their address. + +The ``type_identity`` object for a given C++ type can be obtained by using the ``get`` method of the ``df::identity_trait`` +trait class. +More specifically, ``identity_traits::get()`` will return a pointer to a ``type_identity`` object for the type ``T``. +Developers who create new type identities must *either* provide an specialization of ``identity_traits`` that implements +a ``get`` method that returns the correct ``type_identity`` +*or* ensure that a static instance of ``T::_identity`` exists for the type ``T`` +(which will result in a template in :source:`DataDefs.h ` providing +an implementation of ``get`` for that type). +Note that this is only possible for compound types, and is the way that the *vast* majority of +compound types have their identities specified (including all of those defined via codegen). + +Because objects in the Lua environment are constructed as a pointer to the data and +a pointer to the data's ``type_identity`` object, it is necessary for ``type_identity`` objects to have a lifetime +that exceeds the lifetime in the Lua environment of any object that exists anywhere in the Lua environment. +It is therefore advised to avoid creating ``type_identity`` objects that do *not* have program lifetime, since +predicting the lifetime of objects in the Lua environment can be difficult. +If it is necessary to create a ``type_identity`` object that will not have program lifetime, +it is incumbent on the developer to ensure that no references to that type identity object persist beyond its lifetime. + +Due to the way template types are implemented in the C++ compilers we use for Dwarf Fortress, any specialization of one +of the type identity classes noted above as a template must at present be statically constructed in the DFHack core. +This is because we export the statically constructed instances from the core library to plugins, which then imports them +from the core library instead of instantiating them locally. As a result, referencing an instance in a plugin that has +not been instantiated in the core will result in linkage errors when linking the plugin to the core library. + +We could instead *not* export the templated types, and thus their statically constructed identity objects, +and instead allow the compiler to instantiate a local copy of these instances while compiling a plugin, +but this would definitely result in a violation of the current requirement that there be at most one instance of the +type identity object for a given C++ type across the entire program (including plugins loaded as a shared library). + +For primitive and opaque types the static constructors of the identity types +are generally found in :source:`DataIdentity.h ` +or :source:`DataIdentity.cpp `. +Types defined by Dwarf Fortress are constructed in the header files and the related ``static*.inc`` files created by codegen, +which are included into DFHack via :source:`DataStatics.cpp `. + +Some plugins (e.g. :source:`blueprint `) also define their own type identities. Type identities in plugins should be used with caution, +because the DFHack plugin model allows plugins to be unloaded on request. +Since the ``type_identity`` object is constructed within the the plugin's address space, and Lua objects that reference +this ``type_identity`` object will hold a (borrowed) pointer to that object, +unloading the plugin will result in a dangling pointer reference within the Lua environment. +It is, at present, incumbent on plugin authors to ensure that they do not use plugin defined type identities on objects +that may persist in the Lua environment beyond the lifetime of the plugin. +Declaring a ``struct_identity`` in a plugin that is the child of another ``struct_identity`` will also result in +a potentially dangling reference to that identity in the ``child`` vector of the parent identity, which means this +must also be approached with caution. + +A final note: because most instances of ``type_identity`` are statically constructed +and their construction is scattered across multiple translation units, it is, in general, *not* safe to cross-reference +the contents of one statically-defined ``type_identity`` instance during the static instantiation of another, +because the order in which statically constructed objects are instantiated in C++ is unspecified for objects defined in different translation units. +Specifically, this means that the constructor for a ``type_identity`` instance must use care in using +``df::identity_traits::get`` to use values from the identity object +of some other type, because that type's identity object may not have been constructed yet. +The ``get`` operation itself is safe, but the pointer returned by ``get`` may point to not-yet-initialized data +until at-start static data initialization is fully complete. + +Namespaces +========== + +The type identity system formally lives in the ``DFHack`` namespace. +However, because the types created by the codegen process live in the ``df`` namespace, +the identities needed to describe types coming from Dwarf Fortress are also imported into the ``df`` namespace. +When defining a new ``type_identity`` class for the purposes of supporting a new category of types coming from codegen, +remember to add an appropriate ``using`` clause to the list in :source:`DataDefs.h `. + +The ``identity_traits``, ``enum_traits``, ``bitfield_traits``, and ``enum_fields`` type traits +are defined in the ``df`` namespace. + +Type traits +=========== + +``identity_traits`` +------------------- +This type trait has two members: + +* ``static const type_identity * get()``: This function returns a pointer to the ``type_identity`` for the type ``T``. +* ``is_primitive``: true if the type is a "primitive type" (except false for enums) + +While not a type trait *per se*, the ``allocate`` template function is defined for all types +as ``return (T*)identity_traits::get()->allocate()`` and provides a convenient way to +reference the allocator in a type's ``type_identity``. + +An additional note: Conceptually, ``Lua::Push`` and ``identity_traits::get->lua_read`` are equivalent, but this is aspirational rather than actual. +There are several types for which ``Lua::Push`` has specializations that do something different than what ``type_identity::lua_read`` does for the same type. + + +``enum_traits`` +--------------- +This type trait has the following members: + +* ``is_complex``: enum is a "complex enum" +* ``enum_type`` (type): the type of the enum +* ``base_type`` (type): the underlying integral type of the enum +* ``complex``: (complex enums only) an ``DFHack::enum_identity::ComplexData`` that describes the enum +* ``is_valid(base_type value)``: (simple enums only) a function that returns a bool indicating whether ``value`` is "in range" for the enum +* ``first_item``: (simple enums only) the least valid value of the enum +* ``last_item``: (simple enums only) the greatest valid value of the enum +* ``key_table``: (simple enums only) a static array of ``const char *`` strings that correspond to the possible values of the enum + +``bitfield_traits`` +------------------- +(TODO) + +``enum_fields`` +--------------- +(TODO) diff --git a/docs/dev/github-workflows.rst b/docs/dev/github-workflows.rst new file mode 100644 index 0000000000..ea71e1a2b6 --- /dev/null +++ b/docs/dev/github-workflows.rst @@ -0,0 +1,204 @@ +GitHub workflows +================ + +We run our continuous integration (CI) validation and our release automation +via GitHub workflows. This allows us to merge PRs with confidence that they +won't catastrophically break DFHack functionality. GitHub workflows also allow +us to quickly produce stable release builds with fewer manual steps. Reducing +manual steps for releases is important since it is easy for a person to forget +a small but impactful step and therefore produce a bad release that causes +trouble for our users. + +Background +---------- + +`GitHub workflows `_ run +on provisioned VMs in the cloud with stable environments that we specify. They +are free to use since DFHack is an open source project. They have proven to be +reliably available within a few seconds when our workflows are triggered. The +logic for the workflows is written in yaml, and the files that control our +workflows are stored in the :file:`.github/workflows/` directory in each of our +repos. Example: :source:`.github/workflows`. + +Each workflow contains metadata that specifies: +- when it `triggers `_ +- what `base environment `_ it uses (OS, pre-installed dependencies, etc.) +- what additional dependencies should be installed (if any) +- custom business logic + +Workflows run in the context of a single repo, but workflows defined in one +repo can inherit logic from workflows in other repos. All our common CI logic +is in the main DFHack/dfhack repo, but our submodules, like our ``scripts`` and +``df-structures`` repos, have CI workflows defined that inherit from the logic +in DFHack/dfhack. That way we can fix bugs and extend functionality in one +place and have it benefit the entire org tree. + +Caches +~~~~~~ + +GitHub also provides 10GB per repository for `caches `_. +We utilize the cache system to keep state between workflow runs, cache +downloads, and keep compiler output to speed up subsequent builds. Efficient +use of the cache system is a critical part of our workflow design. It allows us +to iterate on test failures in PRs in one minute instead of 20. It allows us to +put out an entire emergency release build in 5 minutes instead of 45. We have +tuned our build and test workflows to minimize spurious cache misses and keep +the fast path fast. + +Caches are namespaced by key prefixes, and we have one key prefix per build +context. For example, release builds on gcc-11 are kept in one cache namespace, +whereas test builds on gcc-11 are kept separate. MSVC release and test builds +similarly have their own namespaces. Each cache has a maximum size that is +enforced by the business logic that writes the cache data. + +In order to maintain consistency in a distributed environment, caches are +versioned. A workflow will read the latest version of the cache with its key +prefix, maybe modify the cache with new data, then write back a new version. +Caches that are not used for 2 weeks are purged from GitHub storage, but if a +repo goes over the 10GB limit, caches are deleted in LRU order until the repo +is under the storage limit again. + +CI workflows +------------ + +Build +~~~~~ + +The Build workflow is the main CI workflow. It runs on every PR and push to a +branch. The ``build.yml`` file is essentially an orchestration layer for the +logic in several other .yml files: + +- ``test.yml`` builds DFHack with the test suite enabled (but stonesense and + windows pdb files disabled) and runs the test suite. It is optimized for + speed and is intended to give PR authors quick feedback on their changes. + The test suite is executed in a real running DF game on both Linux and + Windows. The ``test`` job populates the ``test`` cache, which is used by many + other workflows for non-distributed builds. +- ``package.yml`` builds DFHack as it would be released: test suite disabled + but stonesense and windows pdb files enabled. The ``package`` job populates the ``release`` cache, which is used to build all distributed binaries. +- The ``docs`` target does a docs-only build of DFHack and reports any errors. + Doc errors would show up in the ``test`` and ``package`` builds anyway, but + the ``docs`` target runs very fast and can identify doc errors in less than + 1m. +- ``lint.yml`` runs the verification scripts in the ``ci`` directory. These + scripts check for common errors in the codebase that are not caught by the + compiler. The lint scripts are written in Python and shell script and are + intended to be run quickly and catch common errors. + +Check type sizes +~~~~~~~~~~~~~~~~ + +``check-type-sizes.yml`` is a df-structures-only workflow that checks for +changes in the sizes of types in the xml structures. It builds the +``xml-dump-type-sizes`` binary on both Linux and Windows for both the +structures in this PR and for the structures in the target merge branch. It +then runs the built binary on its native OS and compares the output. If any +type sizes have changed, the workflow generates a PR comment (via the +``comment-pr.yml`` workflow) with details. + +.. _workflows-release-automation: + +Release automation workflows +---------------------------- + +Watch DF Releases +~~~~~~~~~~~~~~~~~ + +This workflow runs every 8 minutes and checks the Steam metadata, the Itch +website, and the Bay 12 website for evidence of new releases. If a new release +is found, it generates an announcement in a private channel on the DFHack +Discord server. + +Inside the ``watch-df-releases.yml`` workflow, there are separate jobs for +watching Steam branches and watching the websites. For the Steam watcher, it +takes configuration for: + +- which branches to watch +- whether to kick off the Generate symbols workflow when a new release is found +- whether to autodeploy to Steam when the Generate symbols workflow completes + +The workflow has protections against concurrent runs, so if you suspect a new +release is out, you can manually trigger the workflow to check. If the cron +trigger happens to run the workflow at the same time, the second run will be +paused while the first run completes. + +Generate symbols +~~~~~~~~~~~~~~~~ + +This workflow can be triggered manually or by the Watch DF Releases workflow. +It downloads the specified DF version for the selected distribution platform(s) +and OS target(s), then updates the ``symbol-table`` entries in ``symbols.xml``. +If the distribution platform is Steam, it can also autodetect the DF version by +extracting the version string from the DF title screen data. + +For Linux, it always builds DFHack -- just the core library (no plugins) -- and +generates symbols via the `devel/dump-offsets` and `devel/scan-vtables` scripts. + +For Windows, we extract symbol data via static analysis, so the workflow only +builds DFHack if it needs to autodetect the DF version. + +Once the symbols.xml file is updated, the workflow commits the changes to the +specified df-structures branch and updates the xml submodule ref in the +specified DFHack/dfhack branch. If a deploy Steam branch is specified, it also +launches the Deploy to Steam workflow. + +Deploy to GitHub +~~~~~~~~~~~~~~~~ + +`github-release.yml `_ +can be triggered manually or automatically by creating a new release version +tag in git. It builds DFHack with the release configuration, packages the +aritifacts for GitHub, creates a new GitHub release, and uploads the packages +to the GitHub release page. + +It uses text in :source:`.github/release_template.md` to generate the release +notes, and appends the changelog contents for the tagged version. + +If you need to re-tag the release to fix a mistake, it will automatically run +again and replace the binaries attached to the GitHub release for the tagged +version. It will not overwrite the release notes, though, to preserve any edits +you may have made in the GitHub UI. If you *want* it to completely regenerate +the release notes, you can delete the release before you re-tag the version. + +GitHub releases end up here: https://github.com/DFHack/dfhack/releases. + +Deploy to Steam +~~~~~~~~~~~~~~~ + +`steam-deploy.yml `_ +can be triggered manually or automatically by creating a new release version +tag in git. It builds DFHack with the release configuration, packages the +aritifacts for Steam, and uploads them to the specified Steam branch. + +The workflow caches steamcmd to speed the deployment up by 30s or so. +Otherwise, steamcmd would have to be downloaded and updated every time the +workflow runs. + +Steam releases end up here: +https://partner.steamgames.com/apps/builds/2346660. The "version" you +specified for the workflow is used as the "description" for the build. + +Maintenance workflows +--------------------- + +Update submodules +~~~~~~~~~~~~~~~~~ + +`update-submodules.yml `_ +runs daily, or can be run manually as needed. It checks DFHack submodules for +new commits on the main branches and updates the submodule refs in the DFHack +develop branch. + +You generally should not run this workflow for anything other than the develop +branch, as it will overwrite any changes you have made to the submodule refs in +other branches. + +Clean up PR caches +~~~~~~~~~~~~~~~~~~ + +This workflow runs automatically whenever a PR is closed or merged. It removes +caches created for the PR so they don't take up quota. + +Note that if you merge a PR before all the workflows have completed, the caches +may be created after this workflow runs. In that case, the caches will be +orphaned and will be purged by GitHub's cache eviction policy after 2 weeks. diff --git a/docs/dev/index.rst b/docs/dev/index.rst index 01436033c2..931b9bb006 100644 --- a/docs/dev/index.rst +++ b/docs/dev/index.rst @@ -17,6 +17,9 @@ These are pages relevant to people developing for DFHack. /docs/dev/Lua API /docs/dev/overlay-dev-guide /docs/dev/Structures-intro + /docs/dev/data-identity + /docs/dev/github-workflows + /docs/dev/release-process /docs/dev/Memory-research /docs/dev/Binpatches /docs/dev/Remote diff --git a/docs/dev/overlay-dev-guide.rst b/docs/dev/overlay-dev-guide.rst index 1a53e7f658..d87178bfff 100644 --- a/docs/dev/overlay-dev-guide.rst +++ b/docs/dev/overlay-dev-guide.rst @@ -31,8 +31,8 @@ In general, if you are writing a plugin or script and have anything you'd like to add to an existing screen (including live updates of map tiles while the game is unpaused), an overlay widget is probably your easiest path to get it done. If your plugin or script doesn't otherwise need to be enabled to function, using -the overlay allows you to avoid writing any of the enable management code that -would normally be required for you to show info in the UI. +the overlay allows you to avoid writing any of the enable or lifecycle +management code that would normally be required for you to show info in the UI. Overlay widget API ------------------ @@ -49,7 +49,7 @@ Overlay widgets can contain other Widgets and be as simple or complex as you need them to be, just like you're building a regular UI element. There are a few extra capabilities that overlay widgets have that take them -beyond your everyday ``Widget``: +beyond your everyday `widgets.Widget `: - If an ``overlay_onupdate(viewscreen)`` function is defined, it will be called just after the associated viewscreen's ``logic()`` function is called (i.e. @@ -70,7 +70,27 @@ beyond your everyday ``Widget``: function if they want to react to the ``onInput()`` feed or be rendered. The widgets owned by the overlay framework must not be attached to that new screen, but the returned screen can instantiate and configure any new views - that it wants to. + that it wants to. See the `hotkeys` DFHack logo widget for an example. + + The ``overlay_trigger()`` function enables the activation of overlay widgets + via the command line interface (CLI) or keybindings. + For example, executing ``overlay trigger notes.map_notes add Kitchen``:: + + function MyOverlayWidget:overlay_trigger(arg1, arg2) + if arg1 == 'add' then + -- Add a new note to the map + self:addSomething(arg2) + elseif arg1 == 'delete' then + self:deleteSomething(arg2) + end + end + + This allows for dynamic updates to UI overlays directly from the CLI. +- If an ``overlay_onenable()`` function is defined, it is called when the + overlay is enabled (including when the persisted state is reloaded at DF + startup). +- If an ``overlay_ondisable()`` function is defined, it is called when the + overlay is disabled. If the widget can take up a variable amount of space on the screen, and you want the widget to adjust its position according to the size of its contents, you can @@ -79,7 +99,10 @@ any of the callbacks -- to indicate a new size. The overlay framework will detect the size change and adjust the widget position and layout. If you don't need to dynamically resize, just set ``self.frame.w`` and -``self.frame.h`` once in ``init()``. +``self.frame.h`` once in ``init()`` (or just leave them at the defaults). If +you don't need to render a widget on the screen at all, set your frame width +and/or height to 0. Your ``render`` function will still be called, but no +repositioning frame will be shown for the overlay in `gui/overlay`. Widget attributes ***************** @@ -89,7 +112,14 @@ The ``overlay.OverlayWidget`` superclass defines the following class attributes: - ``name`` This will be filled in with the display name of your widget, in case you have multiple widgets with the same implementation but different - configurations. + configurations. You should not set this property yourself. +- ``version`` + You can set this to any string. If the version string of a loaded widget + does not match the saved settings for that widget, then the configuration + for the widget (position, enabled status) will be reset to defaults. +- ``desc`` + A short (<100 character) description of what the overlay does. This text + will be displayed in `gui/control-panel` on the "Overlays" tab. - ``default_pos`` (default: ``{x=-2, y=-2}``) Override this attribute with your desired default widget position. See the `overlay` docs for information on what positive and negative numbers @@ -121,17 +151,32 @@ The ``overlay.OverlayWidget`` superclass defines the following class attributes: viewscreen's ``logic()`` function). This call to ``overlay_onupdate`` is in addition to any calls initiated from associated interposed viewscreens and will come after calls from associated viewscreens. -- ``overlay_only`` (default: ``false``) +- ``fullscreen`` (default: ``false``) + If set to ``true``, no widget frame will be drawn in `gui/overlay` for drag + and drop repositioning. Overlay widgets that need their frame positioned + relative to the screen and not just the scaled interface area should set + this to ``true``. +- ``full_interface`` (default: ``false``) If set to ``true``, no widget frame will be drawn in `gui/overlay` for drag - and drop repositioning. Overlay widgets that don't have a "widget" to - reposition should set this to ``true``. + and drop repositioning. Overlay widgets that need access to the whole + scaled interface area should set this to ``true``. - ``overlay_onupdate_max_freq_seconds`` (default: ``5``) This throttles how often a widget's ``overlay_onupdate`` function can be called (from any source). Set this to the largest amount of time (in seconds) that your widget can take to react to changes in information and not annoy the player. Set to 0 to be called at the maximum rate. Be aware that running more often than you really need to will impact game FPS, - especially if your widget can run while the game is unpaused. + especially if your widget can run while the game is unpaused. If you change + the value of this attribute dynamically, it may not be noticed until the + previous timeout expires. However, if you need a burst of high-frequency + updates, set it to ``0`` and it will be noticed immediately. + +Common widget attributes such as ``active`` and ``visible`` are also respected. +Note that those properties are checked *after* matching ``viewscreens`` focus +string(s), so you can assume they are evaluated in an consistent context. For +example, if your widget has ``viewscreens='dwarfmode/Trade/Default'``, then you +can assume your ``visible=function() ... end`` function will be executing while +the trade screen is active. Registering a widget with the overlay framework *********************************************** @@ -153,15 +198,58 @@ this table and registers the widgets on your behalf. Plugin lua code is loaded with ``require()`` and script lua code is loaded with ``reqscript()``. If your widget is in a script, ensure your script can be `loaded as a module `, or else the widget will not be discoverable. -The widget is enabled on load if it was enabled the last time the `overlay` -plugin was loaded, and the widget's position is restored according to the state -saved in the :file:`dfhack-config/overlay.json` file. +Whether the widget is enabled and the widget's position is restored according +to the state saved in the :file:`dfhack-config/overlay.json` file. The overlay framework will instantiate widgets from the named classes and own the resulting objects. The instantiated widgets must not be added as subviews to any other View, including the Screen views that can be returned from the ``overlay_trigger()`` function. +Performance considerations +************************** + +Overlays that do any processing or rendering during unpaused gameplay (that is, +nearly all of them) must be developed with performance in mind. DFHack has an +overall service level objective of no more than 10% performance impact during +unpaused gameplay with all overlays and background tools enabled. A single +overlay should seek to take up no more than a fraction of 1% of elapsed +gameplay time. + +Please see the Core `performance-monitoring` section for details on how to get +a perf report while testing your overlay. The metric that you will be +interested in is the percentage of elapsed time that your overlay accounts for. + +If you need to improve performance, here are some potential options: + +1. Shard scanning over multiple passes. For example, instead of checking every + item on the map in every update in your overlay, only check every Nth item + and change the start offset every time you scan. + +2. Reduce the frequency of state updates by moving calcuations to + ``overlay_onupdate`` and setting the value of the + ``overlay_onupdate_max_freq_seconds`` attribute appropriately + +3. Move hotspots into C++ code, either in a new core library function or in a + dedicated plugin + +Overlay framework API +--------------------- + +The overlay plugin Lua interface provides a few functions for interacting with +the framework. You can get a reference to the API via:: + + local overlay = require('plugins.overlay') + +* ``overlay.rescan()`` + + Rescans all module-loadable Lua scripts for registered overlays and loads + updated widget definitions. + +* ``overlay.isOverlayEnabled(name)`` + + Returns whether the overlay with the given name is enabled. + Development workflows --------------------- @@ -183,7 +271,7 @@ Scripts #. If the script is not in your `script-paths`, install your script (see the `modding-guide` for help setting up a dev environment so that you don't need to reinstall your scripts after every edit). -#. Call ``:lua require('plugins.overlay').reload()`` to reload your overlay +#. Call ``:lua require('plugins.overlay').rescan()`` to reload your overlay widget Plugins @@ -194,17 +282,20 @@ Plugins :file:`hack/lua/plugins/` #. If you have changed the compiled plugin, `reload` it #. If you have changed the lua code, run ``:lua reload('plugins.mypluginname')`` -#. Call ``:lua require('plugins.overlay').reload()`` to reload your overlay +#. Call ``:lua require('plugins.overlay').rescan()`` to reload your overlay widget Troubleshooting --------------- -**If your widget is not getting discovered by the overlay framework, double -check that:** +You can check that your widget is getting discovered by the overlay framework +by running ``overlay list`` or by launching `gui/control-panel` and checking +the ``Overlays`` tab. + +**If your widget is not listed, double check that:** -#. ``OVERLAY_WIDGETS`` is declared, is global (not ``local``), and contains your - widget class +#. ``OVERLAY_WIDGETS`` is declared, is global (not ``local``), and references + your widget class #. (if a script) your script is `declared as a module ` (``--@ module = true``) and it does not have side effects when loaded as a module (i.e. you check ``dfhack_flags.module`` and return before executing @@ -218,7 +309,7 @@ check that:** `gui/overlay` when on the target screen and check to see if your widget is listed when showing overlays for the current screen. If it's not there, verify that this screen is included in the ``viewscreens`` list in the widget class -attributes. +attributes. Also, load `gui/control-panel` and make sure your widget is enabled. Widget example 1: adding text to a DF screen -------------------------------------------- @@ -232,7 +323,9 @@ the :kbd:`Alt`:kbd:`Z` hotkey is hit:: MessageWidget = defclass(MessageWidget, overlay.OverlayWidget) MessageWidget.ATTRS{ + desc='Sample widget that displays a message on the screen.', default_pos={x=5,y=-2}, + default_enabled=true, viewscreens={'dwarfmode', 'dungeonmode'}, overlay_onupdate_max_freq_seconds=20, } @@ -257,6 +350,7 @@ the :kbd:`Alt`:kbd:`Z` hotkey is hit:: self:overlay_onupdate() return true end + return MessageWidget.super.onInput(self, keys) end OVERLAY_WIDGETS = {message=MessageWidget} @@ -276,7 +370,10 @@ seconds to avoid slowing down the entire game on every frame. ArtifactRadarWidget = defclass(ArtifactRadarWidget, overlay.OverlayWidget) ArtifactRadarWidget.ATTRS{ + desc='Sample widget that highlights artifacts on the game map.', + default_enabled=true, viewscreens={'dwarfmode', 'dungeonmode'}, + frame={w=0, h=0}, overlay_onupdate_max_freq_seconds=10, } @@ -306,7 +403,9 @@ screen (by default, but the player can move it wherever). HotspotMenuWidget = defclass(HotspotMenuWidget, overlay.OverlayWidget) HotspotMenuWidget.ATTRS{ + desc='Sample widget that reacts to mouse hover.', default_pos={x=-3,y=-3}, + default_enabled=true, frame={w=2, h=2}, hotspot=true, viewscreens='dwarfmode', @@ -344,7 +443,7 @@ screen (by default, but the player can move it wherever). function MenuScreen:init() self.mouseover = false - -- derrive the menu frame from the hotspot frame so it + -- derive the menu frame from the hotspot frame so it -- can appear in a nearby location local frame = copyall(self.hotspot_frame) -- ... diff --git a/docs/dev/release-process.rst b/docs/dev/release-process.rst new file mode 100644 index 0000000000..bef09be412 --- /dev/null +++ b/docs/dev/release-process.rst @@ -0,0 +1,209 @@ +Release process +=============== + +This page details the process we follow for beta and stable releases. + +For documentation on the related GitHub workflows, see +`workflows-release-automation`. + +Beta release +------------ + +This process pushes a pre-release build to GitHub and Steam. It is intended to +be lower-toil than the stable release process and allows us to facilitate +frequent public testing and feedback without compromising the stability of our +"stable" releases. + +1. Run the `Update submodules `_ GitHub action on the ``develop`` branch to ensure that all submodules are up to date. + +2. Update version strings in :source:`CMakeLists.txt` as appropriate. Set ``DFHACK_RELEASE`` to the *next* stable release version with an "rc#" suffix. For example, if the last stable release was "r1" then set the string to "r2rc1". If we do a second beta release before the final stable "r2" then the string would be "r2rc2". + + - Ensure the ``DFHACK_PRERELEASE`` flag is set to ``TRUE``. + - Commit and push to ``develop`` + - Set ``RELEASE`` in your environment for the commands below (e.g. ``RELEASE=51.07-r2rc1`` for bash) + +3. Tag ``develop`` (no need to tag the submodules) and push: ``git tag -a $RELEASE -m "Bump to $RELEASE"; git push --tags origin`` + + - This will automatically trigger `Deploy to Steam `_ and `Deploy to GitHub `_ build workflows. + +4. Write release notes highlights and any requests for feedback in the `draft GitHub release `_ and publish the draft. + +5. Associate release notes with the build on Steam + + - Go to the `announcement creation page `_ + - Select "A game update" + - Select "Small update / Patch notes" + - Set the "Event title" to the release version (e.g. "DFHack 51.07-r2rc1") + - Set the "Subtitle" to "DFHack pre-release (beta channel)" + - Mention release highlights in the "Summary" field + - Transcode release notes from the GitHub release into the "Event description" field + - patch notes must be in BBcode; see `converting-markdown-to-bbcode` below for how to convert our release notes to BBcode + - Click "Link to build" and select the staging branch (be sure the build has been deployed to the branch first. By the time you're done with the patch notes the build will likely be ready for you) + - Go to the Artwork tab, select "Previously uploaded images", and search for and double-click on dfhack_logo.png. Click "Upload" (even though it has already been uploaded). + - Switch to the "Publish" tab and publish! + - `Promote `_ the build to the "beta" branch (and the "testing" branch if it's newer than what is on the "testing" branch) + +6. Monitor for beta channel subscriber feedback on the Steam `community page `_ + +7. *Maybe* also post to Reddit and other announcement channels if we feel like we need to recruit more beta testers into the pool, but we should avoid posting so often that it is annoying for those who don't use Steam or just want announcements for stable releases. + +Stable release +-------------- + +This process creates a stable DFHack release meant for widespread distribution. +Stable releases come in two forms: straight from ``develop`` or from a point +release branch. + +During "normal" times, we will test out new features in beta releases until we +reach a point of stability. Then, after the ``develop`` branch is feature frozen +while we polish and fix bugs, we tag a release directly from ``develop`` +``HEAD``. + +However, if we have already started committing beta features to ``develop`` and +it becomes necessary to put out a bugfix release for a problem in an +already-released stable release, then we will create a new branch from the +stable tag, cherry-pick fixes from ``develop`` onto that branch, and spin a +release from there. After the point release is published, we'll merge the +branch back into ``develop`` and remove the release branch to clean up. + +1. Triage remaining issues/PRs in the `release project `_ + + - Don't feel pressure to merge anything risky just before a stable release. That's what beta releases are for. + +2. In your local clone of the ``DFHack/develop`` branch, make sure your checkout and all submodules (listed in :source:`.gitmodules`) are up to date with their latest public commits and have no uncommitted/unpushed local changes. + +3. Ensure that CI has not failed unexpectedly on the latest online changes: + + - https://github.com/DFHack/dfhack/commits/develop + - https://github.com/DFHack/scripts/commits/master + - https://github.com/DFHack/df-structures/commits/master + +4. Update version strings in :source:`CMakeLists.txt` as appropriate + + - Ensure the ``DFHACK_PRERELEASE`` flag is set to ``FALSE``. + - Set ``RELEASE`` in your environment for the commands below (e.g. ``RELEASE=51.07-r1``) + +5. Replace "Future" with the version number and clean up changelog entries; add new "Future" section (with headers pre-populated from the template at the top of the file): + + - ``docs/changelog.txt`` + - ``scripts/changelog.txt`` + - ``library/xml/changelog.txt`` + - ``plugins/stonesense/docs/changelog.txt`` + +6. Do a top-level build to ensure the docs build cleanly + +7. Commit/push changes to submodules and tag (``git tag -a $RELEASE -m "Bump to $RELEASE"; git push --tags origin master``) + + - ``scripts`` + - ``library/xml`` + - ``plugins/stonesense`` + +8. Commit and push changes to ``develop`` + + - Ensure that any updates you pushed to submodules are tracked in the commit to ``DFHack/develop`` + +9. Tag ``dfhack``: ``git tag -a $RELEASE -m "Bump to $RELEASE"; git push --tags origin develop`` + + - This will automatically trigger a `Deploy to Steam `_ GitHub action to the "staging" Steam branch and a `Deploy to GitHub `_ GitHub action to create a draft `release `_ from a template and attach the built artifacts. + +10. Switch to the Steam ``staging`` release channel in the Steam client (password: ``stagingstagingstaging``) and download/test the update. + + - Ensure DFHack starts DF when run from the Steam client + - Ensure the DFHack version string is accurate on the title page (should just be the release number, e.g. ``DFHack 51.07-r1``, with no git hash or warnings) + - Run `devel/check-release` + - If something goes wrong with this step, fix it, delete the tag (both from `GitHub `_ and locally (``git tag -d $RELEASE``)), re-tag, re-push, and re-test. Note that you do *not* need to remove the GitHub draft release -- the existing one will just get updated with the new tag and binaries. You *can* remove the draft release, though, if you want the release notes to get regenerated. + +11. Prep release on GitHub + + - Go to the draft `release `_ on GitHub + - Add announcements, highlights (with demo videos), etc. to the description + +12. Push develop to master (``git push origin develop:master``) + + - This will start the documentation build process and update the published "stable" docs + - Note that if this is a -r1 release, you won't be able to complete this step until a classic build is available on the Bay 12 website so the DFHack Test workflow can pass, which is a prerequisite for being able to push to ``master``. + +13. Post release notes on Steam + + - Go to the `announcement creation page `_ + - Select "A game update" + - Select "Regular update" + - Set the "Event title" to the release version (e.g. "DFHack 51.07-r1") + - Set the "Subtitle" to "DFHack stable release" + - Add list of highlights (and maybe announcements, if significant) to the "Summary" field + - Upload screenshots and demo videos via the button at the bottom of the "Previously uploaded videos" area + - Add release notes to the "Event description" field (must be in BBcode; see `converting-markdown-to-bbcode` below for how to convert our release notes to BBcode) + - Drag uploaded images/videos into their appropriate places in the announcement text (replace the GitHub URL tags, which won't work from Steam) + - If the generated release notes exceed the announcement length limits, add a link to the GitHub release page at the bottom of the announcement instead + - Click "Link to build" and select the staging branch (be sure the build has been deployed to the branch first. by the time you're done with the patch notes the build will likely be ready for you) + - the release notes will travel with the build when we promote it to other branches + - Go to the Artwork tab, select "Previously uploaded images", and search for and double-click on STABLEannouncement6.png. Click "Upload" (even though it has already been uploaded). + - Switch to the "Publish" tab and publish! + +14. Go to the `Steam builds page `_ and promote the build to the "default" branch + + - For the build that you just pushed to "staging", click the "-- Select an app branch --" drop-down and select "default" + - Click on "Preview Change" + - Commit the change (you may need to verify with 2FA) + - If the release is newer than what's on the ``beta`` and/or ``testing`` branches, set it live on those branches as well + +15. Publish the prepped GitHub release + +16. Send out release announcements + + - Announce new version in r/dwarffortress. Example: https://www.reddit.com/r/dwarffortress/comments/1i3l5xl/dfhack_5015r2_released_highlights_stonesense/ + - Create the post in the Reddit web interface; the mobile app is extremely painful to use for posting + - Do an "Images & Video" post, sample title: "DFHack 51.07-r1 released! Hilights: Open legends mode directly from an active fort, Dig through warm or damp tiles without interruption, Unlink buildings from levers" + - Add the animated gifs to the post (with appropriate captions naming the relevant tool and what is being demonstrated) + - Add the "DFHack Official" flair to the post. If you're not a r/dwarffortress mod, ask Myk to do this after posting. + - After posting, add each section of the release notes as its own comment, splitting out individual announcements and highlights. This gives people the opportunity to respond directly to the portion of the release notes that interests them; it also helps us avoid size limits for comments. You can include a single still shot (.png file) per comment, but you have to switch to "Fancy Pants Editor" to do it. You can only switch editors once, or the image will get messed up (that is, the image will turn into a hyperlink to an image). Suggested procedure is to prepare the comment in markdown, switch to Fancy Pants Editor, and add images just before submitting the comment. + - Announce new version in forum thread. Example: http://www.bay12forums.com/smf/index.php?topic=164123.msg8567134#msg8567134 + - Update latest version text and link in `first post `_ (if you are not Lethosor, ping Lethosor for this) + - Announce in `#announcements `_ on DFHack Discord + - Announce in `#mod-releases `_ on Kitfox Discord + - Change the name of the release thread on Kitfox Discord to match the release version (if you are not Myk, ping Myk for this) + +17. Monitor all announcement channels for feedback and respond to questions/complaints + +18. Create a `project `_ on GitHub in the DFHack org for the next release + + - Open the `project template `_ + - Click "Use this template" + - Name the project according to the version, e.g. "51.07-r2" and click "Use template" + - In the new project, select settings and set the visibility to Public + - Move any remaining To Do or In Progress items from last release project to next release project + - Close project for last release + +19. If this is a -r2 release or later, go to https://readthedocs.org/projects/dfhack/versions/ and "Edit" previous DFHack releases for the same DF version and mark them "Hidden" (keep the "Active" flag set) so they no longer appear on the docs version selector. + +.. _converting-markdown-to-bbcode: + +Converting Markdown to BBcode +----------------------------- + +Hopefully we can `automate `_ this in the future, but for now, here is the procedure: + +1. Get the markdown that you want to convert into some field on GitHub (can be a temporary text field that you then preview without saving) + +2. View the rendered release notes in your browser (these instructions are for Chrome, but other browsers probably have similar capabilities) + +3. Right click on the rendered text and inspect the DOM + +4. Copy the HTML element that contains the release notes + +5. Click on the "Import HTML" button on the Steam announcement form; paste in the HTML and click "Overwrite" + +6. Copy the generated BBCode out from the description field and into a text editor + +7. Fix it up: + + - Remove the "How do I download DFHack?" section -- people on Steam don't need it + - Some ``

`` elements aren't converted properly and need to be rewritten with square brackets + - Any monospaced text gets HTML tags instead of BBCode ``[code]`` tags, but you can't use them either since they force newlines. ``[tt]`` isn't supported. Any ```` tags just need to be removed entirely. + - Any ``
`` and ```` tags need to be removed + +8. Copy it all back into the description field for the announcement + +9. Click on "Preview event" to double check that it renders sanely + +10. You're done. diff --git a/docs/guides/examples-guide.rst b/docs/guides/examples-guide.rst deleted file mode 100644 index d2581cf810..0000000000 --- a/docs/guides/examples-guide.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. _config-examples-guide: -.. _dfhack-examples-guide: - -DFHack config file examples -=========================== - -The :source:`hack/examples ` folder contains ready-to-use -examples of various DFHack configuration files. You can use them by copying them -to appropriate folders where DFHack and its plugins can find them (details -below). You can use them unmodified, or you can customize them to better suit -your preferences. - -The ``init/`` subfolder ------------------------ - -The :source:`init/ ` subfolder contains useful -DFHack `init-files` that you can copy into your :file:`dfhack-config/init` -folder -- the same directory as ``dfhack.init``. - -.. _onMapLoad-dreamfort-init: - -:source:`onMapLoad_dreamfort.init ` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This is the config file that designed for the `dreamfort` set of blueprints, but -it is useful (and customizable) for any fort. It includes the following config: - -- Calls `ban-cooking` for items that have important alternate uses and should - not be cooked. This configuration is only set when a fortress is first - started, so later manual changes will not be overridden. -- Automates calling of various fort maintenance scripts, like `cleanowned` and - `fix/stuckdoors`. -- Keeps your manager orders intelligently ordered with `orders` ``sort`` so no - orders block other orders from ever getting completed. -- Periodically enqueues orders to shear and milk shearable and milkable pets. -- Sets up `autofarm` to grow 30 units of every crop, except for pig tails, which - is set to 150 units to support the textile industry. -- Sets up `seedwatch` to protect 30 of every type of seed. -- Configures `prioritize` to automatically boost the priority of important and - time-sensitive tasks that could otherwise get ignored in busy forts, like - hauling food, tanning hides, storing items in vehicles, pulling levers, and - removing constructions. -- Optimizes `autobutcher` settings for raising geese, alpacas, sheep, llamas, - and pigs. Adds sensible defaults for all other animals, including dogs and - cats. There are instructions in the file for customizing the settings for - other combinations of animals. These settings are also only set when a - fortress is first started, so any later changes you make to autobutcher - settings won't be overridden. -- Enables `automelt`, `tailor`, `zone`, `nestboxes`, and `autonestbox`. diff --git a/docs/guides/index.rst b/docs/guides/index.rst index 95f9ff32a1..f47f9565ce 100644 --- a/docs/guides/index.rst +++ b/docs/guides/index.rst @@ -8,7 +8,6 @@ These pages are detailed guides covering DFHack tools. :maxdepth: 1 /docs/guides/modding-guide - /docs/guides/examples-guide /docs/guides/quickfort-library-guide /docs/guides/quickfort-user-guide - /docs/guides/quickfort-alias-guide + /docs/guides/stonesense-art-guide diff --git a/docs/guides/modding-guide.rst b/docs/guides/modding-guide.rst index 73d9407d64..e93051d41a 100644 --- a/docs/guides/modding-guide.rst +++ b/docs/guides/modding-guide.rst @@ -8,83 +8,185 @@ DFHack modding guide What is the difference between a script and a mod? -------------------------------------------------- -A script is a single file that can be run as a command in DFHack, like something -that modifies or displays game data on request. A mod is something you install -to get persistent behavioural changes in the game and/or add new content. Mods -can contain and use scripts in addition to (or instead of) modifications to the -DF game raws. - -DFHack scripts are written in Lua. If you don't already know Lua, there's a -great primer at `lua.org `__. +Well, sometimes there is no difference. A mod is anything you add to the game, +which can be graphics overrides, content in the raws, DFHack scripts, or all of +the above. There are already resources out there for +`raws modding `__, so this +guide will focus more on scripts, both standalone and as an extension to +raws-based mods. + +A DFHack script is a Lua file that can be run as a command in +DFHack. Scripts can do pretty much anything, from displaying information to +enforcing new game mechanics. If you don't already know Lua, there's a great +primer at `lua.org `__. Why not just mod the raws? -------------------------- It depends on what you want to do. Some mods *are* better to do in just the -raws. You don't need DFHack to add a new race or modify attributes, for example. -However, DFHack scripts can do many things that you just can't do in the raws, -like make a creature that trails smoke. Some things *could* be done in the raws, -but writing a script is less hacky, easier to maintain, easier to extend, and is -not prone to side-effects. A great example is adding a syndrome when a reaction -is performed. If done in the raws, you have to create an exploding boulder to -apply the syndrome. DFHack scripts can add the syndrome directly and with much -more flexibility. In the end, complex mods will likely require a mix of raw -modding and DFHack scripting. +raws. You don't need DFHack to add a new race or modify attributes. However, +DFHack scripts can do many things that you just can't do in the raws, like make +a creature that trails smoke or launch a unit into the air when they are hit +with a certain type of projectile. Some things *could* be done in the raws, but +a script is better (e.g. easier to maintain, easier to extend, and/or not prone +to side-effects). A great example is adding a syndrome when a reaction +is performed. If done in the raws, you have to create an exploding boulder as +an intermediary to apply the syndrome. DFHack scripts can add the syndrome +directly and with much more flexibility. In the end, complex mods will likely +require a mix of raw modding and DFHack scripting. + +The structure of a mod +---------------------- + +In the example below, we'll use a mod name of ``example-mod``. I'm sure your +mods will have more creative names! Mods have a basic structure that looks like +this:: + + info.txt + graphics/... + objects/... + blueprints/... + scripts_modactive/example-mod.lua + scripts_modactive/internal/example-mod/... + scripts_modinstalled/... + README.md (optional) + +Let's go through that line by line. + +- The :file:`info.txt` file contains metadata about your mod that DF will + display in-game. You can read more about this file in the + `Official DF Modding Guide `__. + It would be a good idea to give your mod a ``dfhack`` tag so players can + indentify it as requiring DFHack when they subscribe to it on the DF Steam + workshop. +- Modifications to the game raws (potentially with + `custom raw tokens `) go in the :file:`graphics/` and + :file:`objects/` folders. You can read more about the files that go in + these directories on the :wiki:`Modding` wiki page. +- Any `quickfort` blueprints included with your mod go in the + :file:`blueprints` folder. Note that your mod can *just* be blueprints and + the :file:`info.txt` file if you like. See the next section for an example. +- A control script in :file:`scripts_modactive/` directory that handles + system-level event hooks (e.g. reloading state when a world is loaded), + registering `overlays `, and + `enabling/disabling ` your mod. You can put other + scripts in this directory as well if you want them to appear as runnable + DFHack commands when your mod is active for the current world. Lua modules + that your main scripts use, but which don't need to be directly runnable by + the player, should go in a subdirectory under + :file:`scripts_modactive/internal/` so they don't show up in the DFHack + `launcher ` command autocomplete lists. +- Scripts that you want to be available before a world is loaded (i.e. on the + DF title screen) or that you want to be runnable in any world, regardless + of whether your mod is active, should go in the + :file:`scripts_modinstalled/` folder. You can also have an :file:`internal/` + subfolder in here for private modules if you like. +- Finally, a :file:`README.md` file that has more information about your mod. + If you develop your mod using version control (recommended!), that + :file:`README.md` file can also serve as your git repository documentation. + +These files end up in a subdirectory under :file:`mods/` when players copy them +in or install them from the +`Steam Workshop `__, and in +:file:`data/installed_mods/` when the mod is selected as "active" for the first +time. + +DFHack will discover scripts in your mod's ``scripts_modinstalled/`` directory +and other DFHack-relevant data files (like blueprints) regardless of whether +the mod has been marked "active" for any player world. + +What if I just want to distribute quickfort blueprints? +------------------------------------------------------- + +For this, all you need is :file:`info.txt` and your blueprints. + +.. highlight:: none + +Your :file:`info.txt` could look something like this:: + + [ID:drooble_blueprints] + [NUMERIC_VERSION:1] + [DISPLAYED_VERSION:1.0.0] + [EARLIEST_COMPATIBLE_NUMERIC_VERSION:1] + [EARLIEST_COMPATIBLE_DISPLAYED_VERSION:1.0.0] + [AUTHOR:Drooble] + [NAME:Drooble's blueprints] + [DESCRIPTION:Useful quickfort blueprints for any occasion.] + [STEAM_TITLE:Drooble's blueprints] + [STEAM_DESCRIPTION:Useful quickfort blueprints for any occasion.] + [STEAM_TAG:dfhack] + [STEAM_TAG:quickfort] + [STEAM_TAG:blueprints] + +and your blueprints, which could be .csv or .xlsx files, would go in the +``blueprints/`` subdirectory. If you add blueprint file named +``blueprints/bedrooms.csv``, then it will be shown to players as +``drooble_blueprints/bedrooms.csv`` in `quickfort` and `gui/quickfort`. The +"drooble_blueprints" prefix comes from the mod ID specified in ``info.txt``. + +What if I just want to distribute a simple standalone script? +------------------------------------------------------------- + +If your mod is just a script with no raws modifications, all you need is:: + + info.txt + scripts_modinstalled/yourscript.lua + README.md (optional) + +Adding your script to the :file:`scripts_modinstalled/` folder will allow +DFHack to find it and add your mod to the `script-paths`. Your script will be +runnable from the title screen and in any loaded world, regardless of whether +your mod is explicitly "active". A mod-maker's development environment ------------------------------------- -While you're writing your mod, you need a place to store your in-development -scripts that will: - -- be directly runnable by DFHack -- not get lost when you upgrade DFHack +Create a folder for development somewhere outside your Dwarf Fortress +installation directory (e.g. ``/path/to/mymods/``). If you work on multiple +mods, you might want to make a subdirectory for each mod. -The recommended approach is to create a directory somewhere outside of your DF -installation (let's call it "/path/to/own-scripts") and do all your script -development in there. +If you have changes to the raws, you'll still have to copy them into DF's +``data/installed_mods/`` folder to have them take effect, but you can set +things up so that scripts are run directly from your dev directory. You can +edit your scripts in your dev directory and have the changes available in the +game immediately: no copying, no restarting. -Inside your DF installation folder, there is a file named -:file:`dfhack-config/script-paths.txt`. If you add a line like this to that -file:: +How does this magic work? Just add a line like this to your +``dfhack-config/script-paths.txt`` file:: - +/path/to/own-scripts + +/path/to/mymods/example-mod/scripts_modinstalled Then that directory will be searched when you run DFHack commands from inside the game. The ``+`` at the front of the path means to search that directory -first, before any other script directory (like :file:`hack/scripts` or -:file:`raw/scripts`). That way, your latest changes will always be used instead -of older copies that you may have installed in a DF directory. - -For scripts with the same name, the `order of precedence ` will -be: - -1. ``own-scripts/`` -2. ``dfhack-config/scripts/`` -3. ``save/*/scripts/`` -4. ``hack/scripts/`` +first, before any other script directory (like :file:`hack/scripts` or other +versions of your mod in the DF mod folders). The structure of the game ------------------------- -"The game" is in the global variable `df `. The game's memory can be -found in ``df.global``, containing things like the list of all items, whether to -reindex pathfinding, et cetera. Also relevant to us in ``df`` are the various -types found in the game, e.g. ``df.pronoun_type`` which we will be using in this -guide. We'll explore more of the game structures below. +"The game", that is, all the Dwarf Fortress state, is in the global variable +`df `. Most of the information relevant to a script is found in +``df.global.world``, which contains data like the lists of active items and +units, whether to reindex pathfinding, et cetera. Also relevant to us are the +various data types found in the game, e.g. ``df.pronoun_type`` which we will be +using in this guide. We'll explore more of the game structures below. Your first script ----------------- So! It's time to write your first script. This section will walk you through how to make a script that will get the pronoun type of the currently selected unit. +If you're not familiar with Lua script syntax, maybe skim through some topics +in the `manual `__ first. + +.. highlight:: lua -First line, we get the unit:: +First line, we get a reference to an in-game unit:: local unit = dfhack.gui.getSelectedUnit() -If no unit is selected, an error message will be printed (which can be silenced -by passing ``true`` to ``getSelectedUnit``) and ``unit`` will be ``nil``. +If no unit is selected by the player in the DF UI, ``unit`` will be ``nil`` and +an error message will be printed. If ``unit`` is ``nil``, we don't want the script to run anymore:: @@ -92,35 +194,153 @@ If ``unit`` is ``nil``, we don't want the script to run anymore:: return end -Now, the field ``sex`` in a unit is an integer, but each integer corresponds to -a string value ("it", "she", or "he"). We get this value by indexing the -bidirectional map ``df.pronoun_type``. Indexing the other way, incidentally, -with one of the strings, will yield its corresponding number. So:: +Now, the field ``unit.sex`` is an integer, but each integer corresponds to a +string value ("it", "she", or "he"). We get this value by indexing the +bidirectional map ``df.pronoun_type``. Indexing the other way, with one of the +strings, will yield its corresponding number. So:: local pronounTypeString = df.pronoun_type[unit.sex] print(pronounTypeString) -Simple. Save this as a Lua file in your own scripts directory and run it as -shown before when a unit is selected in the Dwarf Fortress UI. +Simple. The entire script altogether looks like this:: -Exploring DF structures ------------------------ + local unit = dfhack.gui.getSelectedUnit() + if not unit then + return + end + local pronounTypeString = df.pronoun_type[unit.sex] + print(pronounTypeString) + +Save the text as a ``.lua`` file in your own scripts directory and run it from +`gui/launcher` when a unit is selected in the Dwarf Fortress UI. + +DFHack provides a vast library of functionality that make it easier to interact +with the game state. When you start asking yourself "How do I get/do X", search +through the `lua-api` for relevant functions and look through existing scripts +for examples. + +Exploring DF state +------------------ So how could you have known about the field and type we just used? Well, there are two main tools for discovering the various fields in the game's data structures. The first is the ``df-structures`` `repository `__ that contains XML files -describing the contents of the game's structures. These are complete, but +describing the layouts of the game's structures. These are complete, but difficult to read (for a human). The second option is the `gui/gm-editor` -script, an interactive data explorer. You can run the script while objects like -units are selected to view the data within them. You can also run -``gui/gm-editor scr`` to view the data for the current screen. Press :kbd:`?` -while the script is active to view help. +interface, an interactive data explorer. You can run the script while objects +like units are selected to view the data within them. Press :kbd:`?` while the +script is active to view help. Familiarising yourself with the many structs of the game will help with ideas immensely, and you can always ask for help in the `right places `. -Detecting triggers +Reading and writing files and other persistent state +---------------------------------------------------- + +There are several locations and APIs that a mod might need to read or store +data: + +Global state that is not world-specific should be stored in the directory +returned by the ``scriptmanager.getModStatePath()`` function. JSON is a +convenient format for this kind of stored state, and DFHack provides facilities +for reading and writing JSON data. For example:: + + local json = require('json') + local scriptmanager = require('script-manager') + local path = scriptmanager.getModStatePath('mymodname') + config = config or json.open(path .. 'settings.json') + + -- modify state in the config.data table and persist it when it changes with + -- config:write() + +State that should be saved with a world or a specific fort within that world +should use `persistent-api` API. You can attach a state change hook for new +world loaded where you can load the state, which often includes whether the mod +itself is enabled (if the mod can be dynamically enabled/disabled -- see the +`script-enable-api` for more details). For example:: + + --@ enable=true + --@ module=true + + local utils = require('utils') + + local GLOBAL_KEY = 'mymodname' + + local function get_default_state() + return { + enabled=false, + somevar=0, + somesubtable={ + someothervar=0, + }, + } + end + state = state or get_default_state() + + -- implement the enabled API so DFHack can read this script's status + function isEnabled() + return state.enabled + end + + local function persist_state() + dfhack.persistent.saveSiteData(GLOBAL_KEY, state) + end + + local function do_enable() + -- initialization tasks, such as hooking events + end + + local function do_disable() + -- cleanup tasks, such as removing event hooks + end + + dfhack.onStateChange[GLOBAL_KEY] = function(sc) + if sc == SC_MAP_UNLOADED then + do_disable() + + -- ensure our mod doesn't run when a different + -- world is loaded where we are *not* active + dfhack.onStateChange[GLOBAL_KEY] = nil + + return + end + + if sc ~= SC_MAP_LOADED or not dfhack.world.isFortressMode() then + return + end + + -- retrieve state saved in game. merge with default state so config + -- saved from previous versions can pick up newer defaults. + state = get_default_state() + utils.assign(state, dfhack.persistent.getSiteData(GLOBAL_KEY, state)) + if state.enabled then + do_enable() + end + end + +Finally, you may have distributed data files with your mod that you need to +read at runtime. Your mod directory should be treated as read-only since data +there is not backed up. Use the `script-manager` API to get the path to your +mod data and the ``json`` (or any other file I/O) API as needed. For example:: + + local scriptmanager = require('script-manager') + + local GLOBAL_KEY = 'mymodname' + + local function read_bulk_data_db() + local mod_source_path = scriptmanager.getModSourcePath(GLOBAL_KEY) + -- read data from files in the mod directory + return ... + end + + bulk_data_db = bulk_data_db or read_bulk_data_db() + +If you want to store state in the savegame so that it is associated with the +current world/fort/adventure, use the `persistent-api` API. or in the fuller example later in this +guide. + +Reacting to events ------------------ The common method for injecting new behaviour into the game is to define a @@ -130,26 +350,26 @@ provides two libraries for this, ``repeat-util`` and `eventful `. frames (paused or unpaused), ticks (unpaused), in-game days, months, or years. If you need to be aware the instant something happens, you'll need to run a check once a tick. Be careful not to do this gratuitously, though, since -running that often can slow down the game! +running callbacks too often can significantly slow down the game! ``eventful``, on the other hand, is much more performance-friendly since it will -only call your callback when a relevant event happens, like a reaction or job -being completed or a projectile moving. +only call your callback when a relevant event happens, like a reaction +occuring, a job being completed, or a projectile moving to a new tile. -To get something to run once per tick, we can call +To get something to run once every 1000 ticks, we can call ``repeat-util.scheduleEvery()``. First, we load the module:: local repeatUtil = require('repeat-util') Both ``repeat-util`` and ``eventful`` require keys for registered callbacks. You -should use something unique, like your mod name:: +should use something unique, like your mod id:: - local modId = "callback-example-mod" + local GLOBAL_KEY = 'mymodname' Then, we pass the key, amount of time units between function calls, what the time units are, and finally the callback function itself:: - repeatUtil.scheduleEvery(modId, 1, "ticks", function() + repeatUtil.scheduleEvery(GLOBAL_KEY, 1000, 'ticks', function() -- Do something like iterating over all active units and -- check for something interesting for _, unit in ipairs(df.global.world.units.active) do @@ -166,7 +386,7 @@ Each function in the table is then called with the appropriate arguments when the event occurs. So, for example, to print the position of a moving (item) projectile:: - eventful.onProjItemCheckMovement[modId] = function(projectile) + eventful.onProjItemCheckMovement[GLOBAL_KEY] = function(projectile) print(projectile.cur_pos.x, projectile.cur_pos.y, projectile.cur_pos.z) end @@ -188,10 +408,10 @@ Custom raw tokens In this section, we are going to use `custom raw tokens ` applied to a reaction to transfer the material of a reagent to a product as a -handle improvement (like on artifact buckets), and then we are going to see how -you could make boots that make units go faster when worn. +handle improvement (like on artifact buckets). As a second example, we are +going to make boots that make units go faster when worn. -First, let's define a custom crossbow with its own custom reaction. The +First, let's define raws for a custom crossbow with its own custom reaction. The crossbow:: [ITEM_WEAPON:ITEM_WEAPON_CROSSBOW_SIEGE] @@ -226,56 +446,55 @@ entity raw):: another custom token [PRODUCT:100:1:WEAPON:ITEM_WEAPON_CROSSBOW_SIEGE:GET_MATERIAL_FROM_REAGENT:bar:NONE] -So, we are going to use the ``eventful`` module to make it so that (after the -script is run) when this crossbow is crafted, it will have two handles, each -with the material given by the block reagents. +So, we are going to use the ``eventful`` module to react when this crossbow is +crafted, allowing us to inject the logic that will add the handle improvement. .. highlight:: lua First, require the modules we are going to use:: - local eventful = require("plugins.eventful") - local customRawTokens = require("custom-raw-tokens") + local eventful = require('plugins.eventful') + local customRawTokens = require('custom-raw-tokens') + +and attach a callback to the event:: -Now, let's make a callback (we'll be defining the body of this function soon):: + local GLOBAL_KEY = 'mymodname' + + local function reaction_handler(reaction, reactionProduct, unit, + inputItems, inputReagents, outputItems) + -- we'll be defining the body of this function below + end - local modId = "siege-crossbow-mod" - eventful.onReactionComplete[modId] = function(reaction, - reactionProduct, unit, inputItems, inputReagents, - outputItems) + eventful.onReactionComplete[GLOBAL_KEY] = reaction_handler +Now let's look at the ``reaction_handler`` function and give it some logic. First, we check to see if it the reaction that just happened is relevant to this callback:: if not customRawTokens.getToken(reaction, - "SIEGE_CROSSBOW_MOD_TRANSFER_HANDLE_MATERIAL_TO_PRODUCT_IMPROVEMENT") + 'SIEGE_CROSSBOW_MOD_TRANSFER_HANDLE_MATERIAL_TO_PRODUCT_IMPROVEMENT') then return end -Then, we get the product number listed. Next, for every reagent, if the reagent -name starts with "handle" then we get the corresponding item, and... - -:: +Then, we check the reagents for names that start with "handle". For those +reagents, we get the corresponding item and add a handle improvement:: for i, reagent in ipairs(inputReagents) do if reagent.code:startswith('handle') then -- Found handle reagent local item = inputItems[i] + local improv = df.itemimprovement_itemspecificst:new() + improv.mat_type, improv.mat_index = item.mat_type, item.mat_index + improv.type = df.itemimprovement_specific_type.HANDLE + outputItems[1].improvements:insert('#', improv) + end + end -...We then add a handle improvement to the listed product within our loop:: - - local new = df.itemimprovement_itemspecificst:new() - new.mat_type, new.mat_index = item.mat_type, item.mat_index - new.type = df.itemimprovement_specific_type.HANDLE - outputItems[productNumber - 1].improvements:insert('#', new) - -This works well as long as you don't have multiple stacks filling up one -reagent. - -Let's also make some code to modify the fire rate of our siege crossbow:: +Let's also modify the fire rate of our siege crossbow according to the custom +token we added to the item definition in the raws:: - eventful.onProjItemCheckMovement[modId] = function(projectile) + eventful.onProjItemCheckMovement[GLOBAL_KEY] = function(projectile) if projectile.distance_flown > 0 then -- don't make this adjustment more than once return @@ -293,7 +512,7 @@ Let's also make some code to modify the fire rate of our siege crossbow:: local multiplier = tonumber(customRawTokens.getToken( weapon.subtype, - "SIEGE_CROSSBOW_MOD_FIRE_RATE_MULTIPLIER")) or 1 + 'SIEGE_CROSSBOW_MOD_FIRE_RATE_MULTIPLIER')) or 1 firer.counters.think_counter = math.floor( firer.counters.think_counter * multiplier) end @@ -322,183 +541,203 @@ item in the raws:: .. highlight:: lua -Then, let's make a ``repeat-util`` callback for once a tick:: - - repeatUtil.scheduleEvery(modId, 1, "ticks", function() - -Let's iterate over every active unit, and for every unit, iterate over their -worn items to calculate how much we are going to take from their on-foot movement timers:: - - for _, unit in ipairs(df.global.world.units.active) do - local amount = 0 - for _, entry in ipairs(unit.inventory) do - if entry.mode == df.unit_inventory_item.T_mode.Worn then - local reduction = customRawTokens.getToken( - entry.item, - 'PEGASUS_BOOTS_MOD_FOOT_MOVEMENT_TIMER_REDUCTION_PER_TICK') - amount = amount + (tonumber(reduction) or 0) +Then, let's define a function that will implement the logic associated with the +boots:: + + local function do_pegasus() + for _,unit in ipairs(df.global.world.units.active) do + local amount = 0 + for _,inv_entry in ipairs(unit.inventory) do + if inv_entry.mode == df.unit_inventory_item.T_mode.Worn then + local reduction = customRawTokens.getToken( + inv_entry.item, + 'PEGASUS_BOOTS_MOD_FOOT_MOVEMENT_TIMER_REDUCTION_PER_TICK') + amount = amount + (tonumber(reduction) or 0) + end + end + -- Subtract amount from on-foot movement timers if not on ground + if not unit.flags1.on_ground then + dfhack.units.subtractActionTimers(unit, amount, + df.unit_action_type_group.MovementFeet) end - end - -- Subtract amount from on-foot movement timers if not on ground - if not unit.flags1.on_ground then - dfhack.units.subtractActionTimers(unit, amount, df.unit_action_type_group.MovementFeet) end end -The structure of a full mod ---------------------------- +Finally, we can schedule the callback to be run once a tick using the +``repeat-util`` module:: -For reference, `Tachy Guns `__ is a -full mod that conforms to this guide. + repeatUtil.scheduleEvery(GLOBAL_KEY, 1, 'ticks', do_pegasus) -Create a folder for mod projects somewhere outside your Dwarf Fortress -installation directory (e.g. ``/path/to/mymods/``) and use your mod IDs as the -names for the mod folders within it. In the example below, we'll use a mod ID of -``example-mod``. I'm sure your mods will have more creative names! The -``example-mod`` mod will be developed in the ``/path/to/mymods/example-mod/`` -directory and has a basic structure that looks like this:: +Note that the ``do_pegasus`` function as written here is **extremely +inefficient**. In a real mod, you would likely want to cache which units are +equipping pegasus boots so you don't have to scan every inventory item of every +active unit on every tick. - init.d/example-mod.lua - raw/objects/... - raw/scripts/example-mod.lua - raw/scripts/example-mod/... - README.md +Putting it all together +----------------------- -Let's go through that line by line. +Ok, you're all set up! Now, let's take a look at an example +``scripts_modinstalled/example-mod.lua`` file:: -* A short (one-line) script in ``init.d/`` to initialise your - mod when a save is loaded. -* Modifications to the game raws (potentially with custom raw tokens) go in - ``raw/objects/``. -* A control script in ``scripts/`` that handles enabling and disabling your - mod. -* A subfolder for your mod under ``scripts/`` will contain all the internal - scripts and/or modules used by your mod. + -- main file for the example-mod mod -It is a good idea to use a version control system to organize changes to your -mod code. You can create a separate Git repository for each of your mods. The -``README.md`` file will be your mod help text when people browse to your online -repository. + -- these lines indicate that the script supports the "enable" + -- API so you can start it by running "enable example-mod" and + -- stop it by running "disable example-mod" + --@ module=true + --@ enable=true -Unless you want to install your ``raw/`` folder into your DF game folder every -time you make a change to your scripts, you should add your development scripts -directory to your script paths in ``dfhack-config/script-paths.txt``:: + -- this is the help text that will appear in `help` and + -- `gui/launcher`. see possible tags here: + -- https://docs.dfhack.org/en/stable/docs/Tags.html + --[====[ + example-mod + =========== - +/path/to/mymods/example-mod/scripts/ + Tags: fort | gameplay -Ok, you're all set up! Now, let's take a look at an example -``scripts/example-mod.lua`` file:: + Short one-sentence description. - -- main setup and teardown for example-mod - -- this next line indicates that the script supports the "enable" - -- API so you can start it by running "enable example-mod" and stop - -- it by running "disable example-mod" - --@ enable = true + Longer description ... - local usage = [[ Usage ----- enable example-mod disable example-mod - ]] - local repeatUtil = require('repeat-util') + ]====] + local eventful = require('plugins.eventful') + local repeatUtil = require('repeat-util') + local utils = require('utils') -- you can reference global values or functions declared in any of - -- your internal scripts - local moduleA = reqscript('example-mod/module-a') - local moduleB = reqscript('example-mod/module-b') - local moduleC = reqscript('example-mod/module-c') - local moduleD = reqscript('example-mod/module-d') + -- your internal modules + local moduleA = reqscript('internal/example-mod/module-a') + local moduleB = reqscript('internal/example-mod/module-b') + + local GLOBAL_KEY = 'example-mod' + + local function get_default_state() + return { + enabled=false, + somevar=0, + somesubtable={ + someothervar=0, + }, + } + end + state = state or get_default_state() - enabled = enabled or false - local modId = 'example-mod' + -- implement the enabled API so DFHack can read this script's status + function isEnabled() + return state.enabled + end - if not dfhack_flags.enable then - print(usage) - print() - print(('Example mod is currently '):format( - enabled and 'enabled' or 'disabled')) - return + -- call this whenever the contents of the state table changes + local function persist_state() + dfhack.persistent.saveSiteData(GLOBAL_KEY, state) end - if dfhack_flags.enable_state then + local function do_enable() -- do any initialization your internal scripts might require - moduleA.onLoad() - moduleB.onLoad() + moduleA.onEnable() + moduleB.onEnable() - -- multiple functions in the same repeat callback - repeatUtil.scheduleEvery(modId .. ' every tick', 1, 'ticks', function() - moduleA.every1Tick() - moduleB.every1Tick() + repeatUtil.scheduleEvery(GLOBAL_KEY, 1000, 'ticks', function() + moduleA.cycle() + moduleB.cycle() end) - -- one function per repeat callback (you can put them in the - -- above format if you prefer) - repeatUtil.scheduleEvery(modId .. ' 100 frames', 1, 'frames', - moduleD.every100Frames) - - -- multiple functions in the same eventful callback - eventful.onReactionComplete[modId] = function(reaction, - reaction_product, unit, input_items, input_reagents, - output_items) - -- pass the event's parameters to the listeners - moduleB.onReactionComplete(reaction, reaction_product, - unit, input_items, input_reagents, output_items) - moduleC.onReactionComplete(reaction, reaction_product, - unit, input_items, input_reagents, output_items) + eventful.onProjItemCheckMovement[GLOBAL_KEY] = + moduleB.onProjItemCheckMovement + eventful.onProjUnitCheckImpact[GLOBAL_KEY] = + moduleB.onProjUnitCheckImpact + end + + local function do_disable() + -- call any shutdown functions your internal scripts might require + moduleA.onDisable() + moduleB.onDisable() + + repeatUtil.cancel(GLOBAL_KEY) + + eventful.onProjItemCheckMovement[GLOBAL_KEY] = nil + eventful.onProjUnitCheckImpact[GLOBAL_KEY] = nil + end + + dfhack.onStateChange[GLOBAL_KEY] = function(sc) + if sc == SC_MAP_UNLOADED then + do_disable() + + -- ensure our mod doesn't run when a different + -- world is loaded where we are *not* active + dfhack.onStateChange[GLOBAL_KEY] = nil + + return end - -- one function per eventful callback (you can put them in the - -- above format if you prefer) - eventful.onProjItemCheckMovement[modId] = moduleD.onProjItemCheckMovement - eventful.onProjUnitCheckMovement[modId] = moduleD.onProjUnitCheckMovement + if sc ~= SC_MAP_LOADED or not dfhack.world.isFortressMode() then + return + end - print('Example mod enabled') - enabled = true - else - -- call any shutdown functions your internal scripts might require - moduleA.onUnload() + -- retrieve state saved in game. merge with default state so config + -- saved from previous versions can pick up newer defaults. + state = get_default_state() + utils.assign(state, dfhack.persistent.getSiteData(GLOBAL_KEY, state)) + if state.enabled then + do_enable() + end + end - repeatUtil.cancel(modId .. ' every ticks') - repeatUtil.cancel(modId .. ' 100 frames') + if dfhack_flags.module then + return + end - eventful.onReactionComplete[modId] = nil - eventful.onProjItemCheckMovement[modId] = nil - eventful.onProjUnitCheckMovement[modId] = nil + if not dfhack_flags.enable then + print(dfhack.script_help()) + print() + print(('Example mod is currently '):format( + enabled and 'enabled' or 'disabled')) + return + end - print('Example mod disabled') - enabled = false + if dfhack_flags.enable_state then + state.enabled = true + do_enable() + else + state.enabled = false + do_disable() end -You can call ``enable example-mod`` and ``disable example-mod`` yourself while -developing, but for end users you can start your mod automatically from -``init.d/example-mod.lua``:: + persist_state() - dfhack.run_command('enable example-mod') +The ``scripts_modinstalled/internal/example-mod/module-a.lua`` file could look +something like this:: -Inside ``raw/scripts/example-mod/module-a.lua`` you could have code like this:: + --@ module=true - --@ module = true - -- The above line is required for reqscript to work + -- global (non-local) variables and functions are exported + function onEnable() + -- ... + end - function onLoad() -- global variables are exported - -- do initialization here + function onDisable() + -- ... end - -- this is an internal function: local functions/variables - -- are not exported - local function usedByOnTick(unit) + -- this is a local function: local functions/variables + -- are not accessible to other scripts. + local function usedByCycle(unit) -- ... end - function onTick() -- exported - for _,unit in ipairs(df.global.world.units.all) do - usedByOnTick(unit) + function cycle() -- exported + for _,unit in ipairs(df.global.world.units.active) do + usedByCycle(unit) end end -The `reqscript ` function reloads scripts that have changed, so you can modify -your scripts while DF is running and just disable/enable your mod to load the -changes into your ongoing game! +The `reqscript ` function reloads scripts that have changed, so you +can modify your scripts while DF is running and just disable/enable your mod to +load the changes into your running game! diff --git a/docs/guides/quickfort-alias-guide.rst b/docs/guides/quickfort-alias-guide.rst deleted file mode 100644 index a89e6f3386..0000000000 --- a/docs/guides/quickfort-alias-guide.rst +++ /dev/null @@ -1,875 +0,0 @@ -.. _quickfort-alias-guide: - -Quickfort keystroke alias reference -=================================== - -Aliases allow you to use simple words to represent complicated key sequences -when configuring buildings and stockpiles in quickfort ``#query`` and -``#config`` 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 `. - -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 ` -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 necessary. 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 `. - -+----------------------+------------------+ -| 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 `. - -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 ` 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 configuration 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 -forbidsearch search -permitsearch search -togglesearch search -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}^ - -``forbidsearch``, ``permitsearch``, and ``togglesearch`` use the DFHack -`search-plugin` plugin to forbid or permit a filtered list, or toggle the first -(or only) item in the list. Specify the search string in the ``search`` -sub-alias. Be sure to move the cursor over to the right column before invoking -these aliases. The search filter will be cleared before this alias completes. - -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 everything 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 -wax forbidwax permitwax -=============== ==================== ==================== - -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 -usablehair forbidusablehair permitusablehair -craftrefuse forbidcraftrefuse permitcraftrefuse -=========== ================== ================== - -Notes: - -* ``usablehair`` Only hair and wool that can make usable clothing is included, - i.e. from sheep, llamas, alpacas, and trolls. -* ``craftrefuse`` includes everything a craftsdwarf or tailor can use: skulls, - bones, shells, teeth, horns, and "usable" hair/wool (defined above). - -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 -======================= ============================= ============================= -stonetools -woodentools -crafts forbidcrafts permitcrafts -goblets forbidgoblets permitgoblets -masterworkfinishedgoods forbidmasterworkfinishedgoods permitmasterworkfinishedgoods -artifactfinishedgoods forbidartifactfinishedgoods permitartifactfinishedgoods -======================= ============================= ============================= - -Cloth stockpile adjustments -``````````````````````````` - -================ ====================== ====================== -Exclusive Forbid Permit -================ ====================== ====================== -thread forbidthread permitthread -adamantinethread forbidadamantinethread permitadamantinethread -cloth forbidcloth permitcloth -adamantinecloth forbidadamantinecloth permitadamantinecloth -================ ====================== ====================== - -Notes: - -* ``thread`` and ``cloth`` refers to all materials that are not adamantine. - -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 -=============== ====================== ===================== diff --git a/docs/guides/quickfort-library-guide.rst b/docs/guides/quickfort-library-guide.rst index 47d86cd4f9..e363fe0987 100644 --- a/docs/guides/quickfort-library-guide.rst +++ b/docs/guides/quickfort-library-guide.rst @@ -19,7 +19,6 @@ 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 ` -- :source:`library/quickfortress.csv ` .. _dreamfort: @@ -28,115 +27,112 @@ 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, noble suites, -and bedrooms for hundreds of dwarves. It also comes with manager work orders to -automate basic fort needs, such as food, booze, and item 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 notes`` or ``gui/quickfort dreamfort notes``. +dining hall, hospital (werecreature-ready), library, temple, jail, fresh water +well system, guildhalls, noble suites, and bedrooms for hundreds of dwarves. It +also comes with manager work orders to automate basic fort needs, such as food, +booze, and item production. It can function by itself or as the core of a +larger, more ambitious fortress. Read the walkthrough by running +`gui/quickfort`, searching for ``dreamfort help``, and selecting the blueprints. Dreamfort blueprints are available for easy viewing and copying `online -`__. +`__. The online spreadsheets also include `embark profile suggestions -`__, +`__, a complete `example embark profile -`__, +`__, and a convenient `checklist -`__ -from which you can copy the ``quickfort`` commands. +`__ +that you can use to track your progress. -If you like, you can download a fully built Dreamfort-based fort from +If you'd like a visual demonstration, there is a `series of videos on YouTube `__ +that walk you through the entire process of building a Dreamfort-based +fortress. You can also download a fully built Dreamfort-based fort from :dffd:`dffd <15434>`, load it, and explore it interactively. -Visual overview -``````````````` - Here are annotated screenshots of the major Dreamfort levels (or click `here -`__ +`__ for a slideshow). Surface level -\\\\\\\\\\\\\ +````````````` -.. image:: https://drive.google.com/uc?export=download&id=1YL_vQJLB2YnUEFrAg9y3HEdFq3Wpw9WP +.. image:: https://lh3.googleusercontent.com/d/1dlu3nmwQszav-ZaTx-ac28wrcaYBQc_t :alt: Annotated screenshot of the dreamfort surface level - :target: https://drive.google.com/file/d/1YL_vQJLB2YnUEFrAg9y3HEdFq3Wpw9WP + :target: https://drive.google.com/file/d/1dlu3nmwQszav-ZaTx-ac28wrcaYBQc_t :align: center Farming level -\\\\\\\\\\\\\ +````````````` -.. image:: https://drive.google.com/uc?export=download&id=1fBC3G5Y888l4tVe5REAyAd_zeojADVme +.. image:: https://lh3.googleusercontent.com/d/1vDaedLcgoexUdKREUz75ZXQi0ZSdwWwj :alt: Annotated screenshot of the dreamfort farming level - :target: https://drive.google.com/file/d/1fBC3G5Y888l4tVe5REAyAd_zeojADVme + :target: https://drive.google.com/file/d/1vDaedLcgoexUdKREUz75ZXQi0ZSdwWwj :align: center Industry level -\\\\\\\\\\\\\\ +`````````````` -.. image:: https://drive.google.com/uc?export=download&id=1emMaHHCaUPcdRbkLQqvr-0ZCs2tdM5X7 +.. image:: https://lh3.googleusercontent.com/d/1c8YTHxTgJY5tUII-BOWdLhmDFAHwIOEs :alt: Annotated screenshot of the dreamfort industry level - :target: https://drive.google.com/file/d/1emMaHHCaUPcdRbkLQqvr-0ZCs2tdM5X7 + :target: https://drive.google.com/file/d/1c8YTHxTgJY5tUII-BOWdLhmDFAHwIOEs :align: center -Services level -\\\\\\\\\\\\\\ +Services levels (4 deep) +```````````````````````` -.. image:: https://drive.google.com/uc?export=download&id=13vDIkTVOZGkM84tYf4O5nmRs4VZdE1gh +.. image:: https://lh3.googleusercontent.com/d/1RQMy_zYQWM5GN7-zjn6LoLWmnrJjkxPM :alt: Annotated screenshot of the dreamfort services level - :target: https://drive.google.com/file/d/13vDIkTVOZGkM84tYf4O5nmRs4VZdE1gh - :align: center -.. image:: https://drive.google.com/uc?export=download&id=1jlGr6tAhS8i-XFTz8gowTZBhXcfjfL_L - :alt: Annotated screenshot of the dreamfort cistern - :target: https://drive.google.com/file/d/1jlGr6tAhS8i-XFTz8gowTZBhXcfjfL_L + :target: https://drive.google.com/file/d/1RQMy_zYQWM5GN7-zjn6LoLWmnrJjkxPM :align: center -.. _example-plumbing-to-fill-cisterns: +**Example plumbing to fill cisterns** + +If you are routing water to fill the cisterns, you can do it like this: + +.. image:: https://lh3.googleusercontent.com/d/1paXqPJ-7h9_jG_eNXU1z5GGvR0J8C0uJ + :alt: Annotated screenshot of an example plumbing for the dreamfort cisterns + :target: https://drive.google.com/file/d/1paXqPJ-7h9_jG_eNXU1z5GGvR0J8C0uJ + :align: center -Example plumbing to fill cisterns -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Cistern drain (keep open while you're digging out the aquifer tap): -.. image:: https://drive.google.com/uc?export=download&id=1GvhX_pVDOlmqTi2OujoBqCG_qX36ExAv - :alt: Annotated screenshot of an example aqueduct addition to the dreamfort cistern - :target: https://drive.google.com/file/d/1GvhX_pVDOlmqTi2OujoBqCG_qX36ExAv +.. image:: https://lh3.googleusercontent.com/d/1SwSluJcN_kOrCYPdcFOfJ13wEDvZGcJe + :alt: Annotated screenshot of an example drainage for the dreamfort cisterns + :target: https://drive.google.com/file/d/1SwSluJcN_kOrCYPdcFOfJ13wEDvZGcJe :align: center Guildhall level -\\\\\\\\\\\\\\\ +``````````````` -.. image:: https://drive.google.com/uc?export=download&id=17jHiCKeZm6FSS-CI4V0r0GJZh09nzcO_ +.. image:: https://lh3.googleusercontent.com/d/1mt66QOkfBqFLtw6AJKU6GNYmhB72XSJG :alt: Annotated screenshot of the dreamfort guildhall level - :target: https://drive.google.com/file/d/17jHiCKeZm6FSS-CI4V0r0GJZh09nzcO_ + :target: https://drive.google.com/file/d/1mt66QOkfBqFLtw6AJKU6GNYmhB72XSJG :align: center Noble suites -\\\\\\\\\\\\ +```````````` -.. image:: https://drive.google.com/uc?export=download&id=1IBqCf6fF3lw7sHiBE_15Euubysl5AAiS +.. image:: https://lh3.googleusercontent.com/d/16XRb1w5zFoyVq2LBMx_aCwOyjFq7GULc :alt: Annotated screenshot of the dreamfort noble suites - :target: https://drive.google.com/file/d/1IBqCf6fF3lw7sHiBE_15Euubysl5AAiS + :target: https://drive.google.com/file/d/16XRb1w5zFoyVq2LBMx_aCwOyjFq7GULc :align: center Apartments -\\\\\\\\\\ +`````````` -.. image:: https://drive.google.com/uc?export=download&id=1mDQQXG8BnXqasRGFC9R5N6xNALiswEyr +.. image:: https://lh3.googleusercontent.com/d/16-NXlodLIQjeZUMSmsWRafeytwU2dXQo :alt: Annotated screenshot of the dreamfort apartments - :target: https://drive.google.com/file/d/1mDQQXG8BnXqasRGFC9R5N6xNALiswEyr + :target: https://drive.google.com/file/d/16-NXlodLIQjeZUMSmsWRafeytwU2dXQo :align: center -The Quick Fortress -~~~~~~~~~~~~~~~~~~ +Crypt +````` -The Quick Fortress is an updated version of the example fortress that came with -`Python Quickfort 2.0 `__ (the utility that -inspired DFHack quickfort). 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`` or view the blueprints `online -`__. +.. image:: https://lh3.googleusercontent.com/d/16iT_ho7BIRPD_eofuxdlVQ4FunR1Li23 + :alt: Annotated screenshot of the dreamfort crypt + :target: https://drive.google.com/file/d/16iT_ho7BIRPD_eofuxdlVQ4FunR1Li23 + :align: center Layout helpers -------------- @@ -158,8 +154,8 @@ 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. +wiki. Each file has blueprints to dig the rooms, zone them as bedrooms, and +build the furniture. - :source:`library/bedrooms/48-4-Raynard_Whirlpool_Housing.csv ` - :source:`library/bedrooms/95-9-Hactar1_3_Branch_Tree.csv ` @@ -178,8 +174,8 @@ Exploratory mining ------------------ Several mining patterns to choose from when searching for gems or ores. The -patterns can be repeated up or down z-levels (via quickfort's ``--repeat`` -commandline option) for exploring through the depths. +patterns can be repeated up or down z-levels (via `gui/quickfort`\'s +:kbd:`r`\epeat functionality) for exploring through the depths. - :source:`library/exploratory-mining/tunnels.csv ` - :source:`library/exploratory-mining/vertical-mineshafts.csv ` @@ -200,10 +196,15 @@ Light aquifer tap The aquifer tap helps you create a safe, everlasting source of fresh water from a light aquifer. See the step-by-step guide, including information on how to create a drainage system so your dwarves don't drown when digging the tap, by -running ``quickfort run library/aquifer_tap.csv -n /help``. +running the ``library/aquifer_tap.csv`` ``/help`` blueprint. Alternately, view +the demo video below. You can see how to nullify the water pressure (so you don't flood your fort) in -the `Dreamfort screenshot above `. +the Dreamfort cistern screenshot above: `Services levels (4 deep)`_. + +.. raw:: html + + The blueprint spreadsheet is also available `online `__. @@ -220,8 +221,12 @@ Pump stack ~~~~~~~~~~ The pump stack blueprints help you move water and magma up to more convenient -locations in your fort. See the step-by-step guide for using it by running -``quickfort run library/pump_stack.csv -n /help``. +locations in your fort. See the step-by-step guide for using it by running the +``library/pump_stack.csv`` ``/help`` blueprint or by viewing the demo video: + +.. raw:: html + + The blueprint spreadsheet is also available `online `__. diff --git a/docs/guides/quickfort-user-guide.rst b/docs/guides/quickfort-user-guide.rst index ec416f18fb..dae03c3aba 100644 --- a/docs/guides/quickfort-user-guide.rst +++ b/docs/guides/quickfort-user-guide.rst @@ -1,133 +1,119 @@ .. _quickfort-blueprint-guide: .. _quickfort-user-guide: +.. _quickfort-alias-guide: Quickfort blueprint creation guide ================================== -`Quickfort ` is a DFHack script that helps you build fortresses from +`Quickfort ` is a DFHack tool that helps you build fortresses from "blueprint" .csv and .xlsx files. Many applications exist to edit these files, such as MS Excel and `Google Sheets `__. Most layout and -building-oriented DF commands are supported through the use of multiple files or -spreadsheets, each describing a different phase of DF construction: designation, -building, placing stockpiles/zones, and setting configuration. +building-oriented DF actions are supported through the use of multiple files or +spreadsheets, each describing a different phase of DF construction: designating +digging, defining zones, placing stockpiles, and building. The original idea came from :wiki:`Valdemar's ` auto-designation macro. Joel Thornton reimplemented the core logic in Python and extended its functionality with `Quickfort 2.0 `__. This DFHack-native implementation, called "DFHack Quickfort" or just "quickfort", -builds upon Quickfort 2.0's formats and features. Any blueprint that worked in -Python Quickfort 2.0 should work with DFHack Quickfort. DFHack Quickfort -interacts with Dwarf Fortress memory structures directly, allowing for +builds upon Quickfort 2.0's formats and features, preserving compatibility with +existing blueprints (where possible -- DF itself has changed since then). In +contrast with the earlier quickfort implementations, which interacted with DF +by simulating keyboard input, DFHack Quickfort calls lower-level API functions +to designate tiles and configure buildings. This allows for nearly instantaneous blueprint application, error checking and recovery, and many other advanced features. -This guide focuses on DFHack Quickfort's capabilities and teaches players how -to understand and create blueprint files. Some of the text was originally -written by Joel Thornton, reused here with his permission. +This guide focuses on DFHack Quickfort's capabilities and blueprint syntax, and +teaches players how to understand and create blueprint files. Some of the text +was originally written by Joel Thornton, reused here with his permission. -For those just looking to apply existing blueprints, check out the `quickfort -command's documentation ` for syntax. There are also many -ready-to-use blueprints available in the ``hack/data/blueprints`` subfolder in -your DFHack installation. Browse them on your computer or -:source:`online `, or run `gui/quickfort` to browse -and apply them to your fort! +If you are just looking to apply existing blueprints to your fort, check out +`gui/quickfort` (or `quickfort` for the commandline version). There are many +ready-to-use blueprints available in the `quickfort-library-guide` distributed +with DFHack. Before you become an expert at writing blueprints, though, you should know that the easiest way to make a quickfort blueprint is to build your plan "for real" -in Dwarf Fortress and then export your map using the DFHack `blueprint` plugin. -You can apply those blueprints as-is in your next fort, or you can fine-tune -them with additional features from this guide. +in Dwarf Fortress and then export that section of your map using +`gui/blueprint`. You can apply those blueprints as-is in your next fort, or you +can fine-tune them with additional features from this guide. See the `Links`_ section for more information and online resources. - .. contents:: Table of Contents :local: :depth: 2 +Feature summary +--------------- -Features --------- - -- General +- General - - Manages blueprints to handle all phases of DF construction - - Supports .csv and multi-worksheet .xlsx blueprint files - - Near-instant application, even for very large and complex blueprints - - Blueprints can span multiple z-levels - - You can package all blueprints and keystroke aliases needed for an entire - fortress in a single file for easy sharing - - "meta" blueprints that simplify the application of sequences of blueprints - - Undo functionality for dig, build, place, and zone blueprints - - Rotate blueprints or flip them around to your preference when you apply - them to the map - - Automatic cropping of blueprints so you don't get errors if the blueprint - extends off the map - - Can generate manager orders for everything required by a build blueprint - - Includes a library of ready-to-use blueprints - - Blueprint debugging features + - Blueprint modes for all phases of fort design + - Read blueprints from .csv or multi-worksheet .xlsx files + - Near-instant application, even for very large and complex blueprints + - Blueprints can span multiple z-levels + - Easy sharing of blueprints with multi-blueprint files + - Scripted application of sequences of blueprints + - Undo applied blueprints + - Rotate blueprints or flip them around + - Automatic cropping of blueprints that extend off the map + - Generate manager orders for items required by a blueprint + - Includes a library of ready-to-use blueprints + - Blueprint debugging -- Dig mode +- Dig mode - - Supports all types of designations, including dumping/forbidding items and + - Supports all types of designations, including dumping/forbidding items and setting traffic settings - - Supports setting dig priorities - - Supports applying dig blueprints in marker mode - - Handles carving arbitrarily complex minecart tracks, including tracks that + - Supports setting dig priorities + - Supports applying dig blueprints in marker mode + - Handles carving arbitrarily complex minecart tracks, including tracks that cross other tracks -- Build mode +- Zone and place modes - - Fully integrated with DFHack buildingplan: you can place buildings before - manufacturing building materials and you can use the buildingplan UI for - setting materials preferences - - Designate entire constructions in mid-air without having to wait for each + - Define zones and stockpiles of any shape, not just rectangles + - Configurable numbers of bins, barrels and wheelbarrows assigned to created + stockpiles + - Automatic splitting of stockpiles that exceed maximum dimension limits + - Create and attach locations to zones + - Full control over stockpile configuration based on the `stockpiles` + settings library + - Configurable zone/location settings, such as the pit/pond toggle or + hospital supply quantities + +- Build mode + + - Integrated with DFHack `buildingplan`: you can place buildings before + manufacturing building materials and you can use the `buildingplan` UI + for setting materials and quality preferences + - Designate entire constructions in mid-air without having to wait for each tile to become supported - - Automatic expansion of building footprints to their minimum dimensions, so + - Automatic expansion of building footprints to their minimum dimensions, so only the center tile of a multi-tile building needs to be recorded in the blueprint - - Tile occupancy and validity checking so, for example, buildings that - cannot be placed on a target tile will be skipped instead of messing up - the blueprint. Blueprints that are only partially applied for any reason - (e.g. you need to dig out some more tiles) can be safely reapplied to - build the remaining buildings. - - Relaxed rules for farm plot and road placement: you can still place the + - Tile occupancy and validity checking so, for example, buildings that + cannot be placed on a target tile will be skipped instead of causing + errors and interrupting the blueprint. Blueprints that are only partially + applied for any reason (e.g. you need to dig out some more tiles) can be + safely reapplied to build the remaining buildings. + - Relaxed rules for farm plot and road placement: you can still place the building even if an invalid tile (e.g. stone tiles for farm plots) splits the designated area into two disconnected parts - - Intelligent boundary detection for adjacent buildings of the same type + - Intelligent boundary detection for adjacent buildings of the same type (e.g. a 6x6 block of ``wj`` cells will be correctly split into 4 jeweler's workshops) + - Set building properties (such as a name) + - Can attach and configure track stops as part of hauling routes -- Place and zone modes +- Burrow mode - - Define stockpiles and zones of any shape, not just rectangles - - Configurable numbers of bins, barrels and wheelbarrows assigned to created - stockpiles - - Automatic splitting of stockpiles and zones that exceed maximum dimension - limits - - Fully configurable zone settings, such as pit/pond and hospital supply - counts - -- Query mode - - - Send arbitrary keystroke sequences to the UI -- *anything* you can do - through the UI is supported - - Supports aliases to simplify frequent keystroke combos - - Includes a library of pre-made and tested aliases to simplify most common - tasks, such as configuring stockpiles for important item types or creating - hauling routes for quantum stockpiles. - - Supports expanding aliases in other aliases for easy management of common - subsequences - - Supports repeating key sequences a specified number of times - - Skips sending keys when the cursor is over a tile that does not have a - stockpile or building, so missing buildings won't desynchronize your - blueprint - - Instant halting of query blueprint application when keystroke errors are - detected, such as when a mistake in a key sequence leaves us stuck in a - submenu, to make query blueprints easier to debug + - Supports creating, adding to, and subtracting from burrows. -Creating blueprints -------------------- +Introduction to blueprints +-------------------------- We recommend using a spreadsheet editor such as Excel, `Google Sheets `__, or `LibreOffice `__ @@ -136,73 +122,100 @@ to edit blueprint files, but any text editor will do. The format of Quickfort-compatible blueprint files is straightforward. The first line (or upper-left cell) of the spreadsheet should look like this:: - #dig + #dig -The keyword ``dig`` tells Quickfort we are going to be using the Designations -menu in DF. The following "mode" keywords are understood: +The keyword ``dig`` tells Quickfort we are going to be specifying designations. +The following "mode" keywords are understood: ============== =========== Blueprint mode Description ============== =========== -dig Designations menu (:kbd:`d`) -build Build menu (:kbd:`b`) -place Place stockpiles menu (:kbd:`p`) -zone Activity zones menu (:kbd:`i`) -query Set building tasks/prefs menu (:kbd:`q`) +dig Designations (digging, traffic, dumping, etc.) +build Constructions, buildings, and furniture +place Stockpiles +zone Activity zones ============== =========== If no modeline appears in the first cell, Quickfort assumes that it's looking at a ``#dig`` blueprint. There are also other modes that don't directly correspond to Dwarf Fortress -menus, but we'll talk about those `later `. +design operations, but we'll talk about those `later `. If you like, you may enter a comment after the mode keyword. This comment will -appear in the output of ``quickfort list`` when run from the ``DFHack#`` prompt -or in the dialog window when running `gui/quickfort`. You can use this space for -explanations, attribution, etc.:: +appear in the output of ``quickfort list`` or in the dialog window when running +`gui/quickfort`. You can use this space for explanations, attribution, etc.:: - #dig grand dining room + #dig grand dining room Below this line, begin entering keys in each spreadsheet cell that represent what you want designated in the corresponding game map tile. For example, we could dig out a 4x4 room like so (spaces are used as column separators here for readability, but a real .csv file would have commas):: - #dig - d d d d # - d d d d # - d d d d # - d d d d # - # # # # # + #dig + d d d d # + d d d d # + d d d d # + d d d d # + # # # # # + +The letter ``d`` here stands for "dig". The character sequences in these +blueprints are based on the old (pre-v50) keyboard shortcuts for the various DF +menus. Please see the `quickfort_guide_appendix` below for a full reference. Note the :kbd:`#` symbols at the right end of each row and below the last row. These are completely optional, but can be helpful to make the row and column positions clear. -Once the dwarves have that dug out, let's build a walled-in bedroom within our -dug-out area:: - - #build - Cw Cw Cw Cw # - Cw b h Cw # - Cw Cw # - Cw Cw Cw # - # # # # # - -Note my generosity -- in addition to the bed (:kbd:`b`) I've built a container -(:kbd:`h`) here for the dwarf as well. You must use the full series of keys -needed to build something in each cell, e.g. :kbd:`C`:kbd:`w` indicates we -should enter DF's constructions submenu (:kbd:`C`) and select walls (:kbd:`w`). - -I'd also like to place a booze stockpile in the 2 unoccupied tiles in the room:: - - #place Place a food stockpile - ` ` ` ` # - ` ~ ~ ` # - ` f f ` # - ` ` ` # - # # # # # +In general, any cell that contains text that starts with a :kbd:`#` is +interpreted as a comment and is ignored by `quickfort`. You can use this to +leave notes for yourself inside of a blueprint. Take care to start your comment +with a space after the ``#`` to avoid accidentally starting a modeline if your +comment happens to be in the first column and happens to start with a modeline +keyword. For example, ``#dig this area out`` is an accidental modeline that +will cause problems. However, ``# dig this area out`` is a safe comment. + +Once the dwarves have that dug out, let's zone it as a bedroom:: + + #zone + b b b b # + b b b b # + b b b b # + b b b b # + # # # # # + +This looks very similar to the ``#dig`` blueprint above, but with ``b``\s +instead of ``d``\s. The ``b``\s mark the area for a ``b``\edroom zone just like +the ``#dig`` blueprint marked the area for digging. It's important to wait +until after the area is completely dug out before applying further blueprints +since zones can't be applied to hidden tiles and furniture can't be built in +undug walls. + +Now, let's add some walls and furniture:: + + #build + Cw Cw Cw Cw # + Cw b h Cw # + Cw Cw # + Cw Cw Cw # + # # # # # + +The :kbd:`C`:kbd:`w` cells represent the constructed walls, leaving space for a +door that we might want to add later. Quickfort uses `buildingplan` for +managing buildings, so the walls will be built out of whatever matches the +current buildingplan filter set for walls. Also note my generosity -- in +addition to the bed (:kbd:`b`) I've built a container (:kbd:`h`) for this lucky +dwarf. + +Finally, let's place a booze stockpile in the 2 unoccupied tiles in the room:: + + #place personal booze stockpile + ` ` ` ` # + ` ~ ~ ` # + ` f f{name="bedroom booze"}:=booze + ` ` ` # + # # # # # This illustration may be a little hard to understand. The two :kbd:`f` characters are in row 3, columns 2 and 3. All the other cells are empty. QF @@ -213,99 +226,74 @@ multilayer or fortress-wide blueprint layouts as "chalk lines". QF is smart enough to recognize this as a 2x1 food stockpile, and creates it as such rather than as two 1x1 food stockpiles. Quickfort treats any connected region of identical designations as a single entity. The tiles can be connected -orthogonally or diagonally, just as long as they are touching. +orthogonally or diagonally, just as long as they are touching. You can also +treat disconnected segments as belonging to the same stockpile, but we'll get +into `Label syntax`_ later. -Lastly, let's turn the bed into a bedroom and set the food stockpile to hold -only booze. +Now what's all that business attached to the second ``f``? The part between the +curly brackets specifies properties, in this case the name that we want to give +the stockpile. The remaining part, from the colon (``:``) onward, applies the +``booze`` preset from the `stockpiles` library. That will configure the +stockpile to accept only booze. You can use presets (along with other options +that we'll go over later) to configure stockpiles however you want, directly +from the ``#place`` blueprint. -:: - - #query - ` ` ` ` # - ` r& ` # - ` booze # - ` ` ` ` # - # # # # # - -In row 2, column 2 we have ``r&``. This sends the :kbd:`r` key to DF when the -cursor is over the bed, causing us to "make room" and :kbd:`Enter`, represented -by special ``&`` alias, to indicate that we're done setting the size (the -default room size is fine here). - -In column 2, row 3 we have ``booze``. This is one of many alias keywords defined -in the included :source:`aliases library `. -This particular alias sets a food stockpile to accept only booze. It sends the -keys needed to navigate DF's stockpile settings menu, and then it sends an -Escape character to exit back to the map. It is important to exit out of any -menus that you enter while in query mode so that the cursor can move to the next -tile when it is done with the current tile. - -If there weren't an alias named ``booze`` then the literal characters -:kbd:`b`:kbd:`o`:kbd:`o`:kbd:`z`:kbd:`e` would have been sent, so be sure to -spell those aliases correctly! - -You can save a lot of time and effort by using aliases instead of adding all -key sequences directly to your blueprints. For more details, check out the -`quickfort-alias-guide`. You can also see examples of aliases being used in the -query blueprints in the -:source:`DFHack blueprint library `. You can create -your own aliases by adding them to :source:`dfhack-config/quickfort/aliases.txt` -in your DFHack folder or you can package them -`together with your blueprint files `. +And that's it! You now have a series of blueprints that you can "stamp" across +your fort to quickly build new bedrooms. Area expansion syntax ~~~~~~~~~~~~~~~~~~~~~ In Quickfort, the following blueprints are equivalent:: - #dig a 3x3 area - d d d # - d d d # - d d d # - # # # # + #dig a 3x3 area + d d d # + d d d # + d d d # + # # # # - #dig the same area with d(3x3) specified in row 1, col 1 - d(3x3)# - ` ` ` # - ` ` ` # - # # # # + #dig the same area with d(3x3) specified in row 1, col 1 + d(3x3)# + ` ` ` # + ` ` ` # + # # # # The second example uses Quickfort's "area expansion syntax", which takes the form:: - keys(WxH) + text(WxH) Note that area expansion syntax can only specify rectangular areas. If you want to create extent-based structures (e.g. farm plots or stockpiles) in different shapes, use the first format above. For example:: - #place A single L shaped food stockpile - f f ` ` # - f f ` ` # - f f f f # - f f f f # - # # # # # + #place A single L shaped food stockpile + f f ` ` # + f f ` ` # + f f f f # + f f f f # + # # # # # Area expansion syntax also sets boundaries, which can be useful if you want adjacent, but separate, stockpiles of the same type:: - #place Two touching but separate food stockpiles - f(2x2) # - ~ ~ ` ` # - f(4x2) # - ~ ~ ~ ~ # - # # # # # + #place Two touching but separate food stockpiles + f(2x2) # + ~ ~ ` ` # + f(4x2) # + ~ ~ ~ ~ # + # # # # # As mentioned previously, :kbd:`~` characters are ignored as comment characters and can be used for visualizing the blueprint layout. This blueprint can be equivalently written as:: - #place Two touching but separate food stockpiles - f(2x2) # - ~ ~ ` ` # - f f f f # - f f f f # - # # # # # + #place Two touching but separate food stockpiles + f(2x2) # + ~ ~ ` ` # + f f f f # + f f f f # + # # # # # since the area expansion syntax of the upper stockpile prevents it from combining with the lower, freeform syntax stockpile. @@ -313,25 +301,77 @@ combining with the lower, freeform syntax stockpile. Area expansion syntax can also be used for buildings which have an adjustable size, like bridges. The following blueprints are equivalent:: - #build a 4x2 bridge from row 1, col 1 - ga(4x2) ` # - ` ` ` ` # - # # # # # + #build a 4x2 bridge from row 1, col 1 + ga(4x2) ` # + ` ` ` ` # + # # # # # - #build a 4x2 bridge from row 1, col 1 - ga ga ga ga # - ga ga ga ga # - # # # # # + #build a 4x2 bridge from row 1, col 1 + ga ga ga ga # + ga ga ga ga # + # # # # # If it is convenient to do so, you can place the cell with the expansion syntax in any corner of the resulting rectangle. Just use negative numbers to indicate which direction the designation should expand in. For example, the previous blueprint could also be written as:: - #build a 4x2 bridge from row 2, col 4 - ` ` ` ` # - ga(4x-2) ` # - # # # # # + #build a 4x2 bridge from row 2, col 4 + ` ` ` ` # + ga(4x-2) ` # + # # # # # + +Property syntax +~~~~~~~~~~~~~~~ + +Many things you can designate with `quickfort` are configurable. All buildings, +stockpiles, and zones, for example, can be named. These configuration elements +are expressed as properties. + +Properties are written between curly brackets (``{}``). There can be multiple +properties defined between those brackets, separated by spaces. Each property +has a name and a value, with an equal sign to connect them. If a property value +has a space within it, it should be surrounded by double quotes (``"``). + +If you have defined the area of something over multiple spreadsheet cells, you +can specify properties in just one of those cells and they will apply to the +whole object. You can even split properties up among multiple cells if that is +more convenient. If you are using expansion syntax, the expansion part always +goes last. + +Here's an example of a seed stockpile that is configured to take from a seed +feeder stockpile:: + + #place + f{name=Seeds links_only=true}:=seeds(3x2) + + f + f{name="Seeds feeder" give_to=Seeds}:=seeds + f{containers=0} + +Different modes and different types may have different properties that you can +configure. See the `quickfort_guide_appendix` for a full list. + +Label syntax +~~~~~~~~~~~~ + +Labels are different from the ``name`` property. They are only used internally +by Quickfort to associate tiles with a particular zones or stockpiles. This is +useful for when you want to define two touching zones or stockpiles of the same +type(s), but you can't use expansion syntax because they are non-rectangular. +It is also useful for marking two *disconnected* regions as belonging to the +same zone or stockpile. Note that every tile in the zone or stockpile must be +marked with the same label:: + + #place two touching stockpiles of the same type + f/feed f/feed f/feed{name="Seeds feeder" containers=0}:=seeds + f/feed f f/feed + f f f{name=Seeds links_only=true take_from="Seeds feeder"}:=seeds + + #zone one pasture in two disconnected regions + n/slots n/slots n/slots + + n/slots{name="Pasture slots"}(3x1) Automatic area expansion ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -340,19 +380,19 @@ Buildings larger than 1x1, like workshops, can be represented in any of three ways. You can designate just their center tile with empty cells around it to leave room for the footprint, like this:: - #build a mason workshop in row 2, col 2 that will occupy the 3x3 area - ` ` ` # - ` wm ` # - ` ` ` # - # # # # + #build a stonecutter workshop in row 2, col 2 that will occupy the 3x3 area + ` ` ` # + ` wm ` # + ` ` ` # + # # # # Or you can fill out the entire footprint like this:: - #build a mason workshop - wm wm wm # - wm wm wm # - wm wm wm # - # # # # + #build a stonecutter workshop + wm wm wm # + wm wm wm # + wm wm wm # + # # # # This format may be verbose for regular workshops, but it can be very helpful for laying out structures like screw pump towers and waterwheels, whose "center @@ -360,18 +400,18 @@ point" can be non-obvious. Or you can use area expansion syntax:: - #build a mason workshop - wm(3x3) # - ` ` ` # - ` ` ` # - # # # # + #build a stonecutter workshop + wm(3x3) # + ` ` ` # + ` ` ` # + # # # # This style can be convenient for laying out multiple buildings of the same type. If you are building a large-scale block factory, for example, this will create -20 mason workshops all in a row:: +20 stonecutter workshops all in a row:: - #build line of 20 mason workshops - wm(60x3) + #build line of 20 stonecutter workshops + wm(60x3) Quickfort will intelligently break large areas of the same designation into appropriately-sized chunks. @@ -385,15 +425,15 @@ each floor. :: - #dig Stairs leading down to a small room below - j ` ` # - ` ` ` # - ` ` ` # - #> # # # - u d d # - d d d # - d d d # - # # # # + #dig Stairs leading down to a small room below + j ` ` # + ` ` ` # + ` ` ` # + #> # # # + u d d # + d d d # + d d d # + # # # # The marker must appear in the first column of the row to be recognized, just like a modeline. @@ -406,309 +446,143 @@ You can go up or down multiple levels by adding a number after the ``<`` or #>2 r(10x10) +#dig mode +--------- + +``#dig`` blueprints are normally the first step in any design. They define the +boundaries and layouts for the blueprints for later stages of construction. +Despite their name, ``#dig`` blueprints are for more than just digging. They +also handle smoothing, carving, traffic designations, and marking items on the +ground for dumping, forbidding, or other similar tags. See the full list of +supported designations in the `#dig mode reference`_. + .. _quickfort-dig-priorities: Dig priorities ~~~~~~~~~~~~~~ -DF designation priorities are supported for ``#dig`` blueprints. The full syntax -is ``[letter][number][expansion]``, where if the ``letter`` is not specified, -``d`` is assumed, and if ``number`` is not specified, ``4`` is assumed (the -default priority). So each of these blueprints is equivalent:: - - #dig dig the interior of the room at high priority - d d d d d # - d d1 d1 d1 d # - d d1 d1 d1 d # - d d1 d1 d1 d # - d d d d d # - # # # # # # - - #dig dig the interior of the room at high priority - d d d d d # - d d1(3x3) d # - d ` ` ` d # - d ` ` ` d # - d d d d d # - # # # # # # - - #dig dig the interior of the room at high priority - 4 4 4 4 4 # - 4 1 1 1 4 # - 4 1 1 1 4 # - 4 1 1 1 4 # - 4 4 4 4 4 # - # # # # # # - -Marker mode +DF designation priorities are supported in ``#dig`` blueprints. The full syntax +is ``[markers][symbol][number][expansion]``, where if the ``symbol`` is not +specified, ``d`` is assumed, and if ``number`` is not specified, ``4`` is +assumed (the default priority). So all of these blueprints are equivalent:: + + #dig dig the interior of the room at high priority + d d d d d # + d d1 d1 d1 d # + d d1 d1 d1 d # + d d1 d1 d1 d # + d d d d d # + # # # # # # + + #dig dig the interior of the room at high priority + d d d d d # + d d1(3x3) d # + d ` ` ` d # + d ` ` ` d # + d d d d d # + # # # # # # + + #dig dig the interior of the room at high priority + 4 4 4 4 4 # + 4 1 1 1 4 # + 4 1 1 1 4 # + 4 1 1 1 4 # + 4 4 4 4 4 # + # # # # # # + +At least one of the symbol and the priority number must be specified. + +Dig markers ~~~~~~~~~~~ -Marker mode is useful for when you want to plan out your digging, but you don't -want to dig everything just yet. In ``#dig`` mode, you can add a :kbd:`m` before -any other designation letter to indicate that the tile should be designated in -marker mode. For example, to dig out the perimeter of a room, but leave the -center of the room marked for digging later:: - - #dig - d d d d d # - d md md md d # - d md md md d # - d md md md d # - d d d d d # - # # # # # # - -Then you can use "Toggle Standard/Marking" (:kbd:`d`:kbd:`M`) to convert the -center tiles to regular designations at your leisure. - -To apply an entire dig blueprint in marker mode, regardless of what the -blueprint itself says, you can set the global quickfort setting -``force_marker_mode`` to ``true`` before you apply the blueprint. - -Note that the in-game UI setting "Standard/Marker Only" (:kbd:`d`:kbd:`m`) does -not have any effect on quickfort. - -Stockpiles and zones -~~~~~~~~~~~~~~~~~~~~ - -It is very common to have stockpiles that accept multiple categories of items or -zones that permit more than one activity. Although it is perfectly valid to -declare a single-purpose stockpile or zone and then modify it with a ``#query`` -blueprint, quickfort also supports directly declaring all the types in the -``#place`` and ``#zone`` blueprints. For example, to declare a 20x10 stockpile -that accepts both corpses and refuse, you could write:: - - #place refuse heap - yr(20x10) - -And similarly, to declare a zone that is a pasture, a fruit picking area, and a -meeting area all at once:: - - #zone main pasture and picnic area - nmg(10x10) - -The order of the individual letters doesn't matter. If you want to configure the -stockpile from scratch in a ``#query`` blueprint, you can place unconfigured -"custom" stockpiles with (:kbd:`c`). It is more efficient, though, to place -stockpiles using the keys that represent the categories of items that you want -to store, and then only use a ``#query`` blueprint if you need fine-grained -customization. - -.. _quickfort-place-containers: - -Stockpile bins, barrels, and wheelbarrows -````````````````````````````````````````` - -Quickfort has global settings for default values for the number of bins, -barrels, and wheelbarrows assigned to stockpiles, but these numbers can be set -for individual stockpiles as well. - -To set the number of bins, barrels, or wheelbarrows, just add a number after the -letter that indicates what type of stockpile it is. For example:: - - #place a stone stockpile with 5 wheelbarrows - s5(3x3) - - #place a bar, ammo, weapon, and armor stockpile with 20 bins - bzpd20(5x5) - -If the specified number exceeds the number of available stockpile tiles, the -number of available tiles is used. For wheelbarrows, that limit is reduced by 1 -to ensure there is at least one non-wheelbarrow tile available in the stockpile. -Otherwise no stone would ever be brought to the stockpile since all tiles would -be occupied by wheelbarrows! - -Quickfort figures out which container type is being set by looking at the letter -that comes just before the number. For example ``zf10`` means 10 barrels in a -stockpile that accepts both ammo and food, whereas ``z10f`` means 10 bins. If -the stockpile category doesn't usually use any container type, like refuse or -corpses, wheelbarrows are assumed:: - - #place a corpse stockpile with 3 wheelbarrows - y3(3x3) - -Note that if you are not using expansion syntax, each tile of the stockpile must -have the same text. Otherwise the stockpile boundaries will not be detected -properly:: - - #place a non-rectangular animal stockpile with 5 wheelbarrows - a5,a5,a5,a5 - a5, , ,a5 - a5, , ,a5 - a5,a5,a5,a5 +There are three types of markers you can apply to dig designated tiles. You can +apply multiple markers to the same tile by including multiple marker prefixes. +For example, a tile that is in blueprint mode and that is also marked for warm +and damp dig would be written as:: -Running ``quickfort orders`` on a ``#place`` blueprint with explicitly set -container/wheelbarrow counts will enqueue manager orders for the specified -number of containers or wheelbarrows, even if that number exceeds the in-game -size of the stockpile. For example, ``quickfort orders`` on the following -blueprint will enqueue 10 rock pots, even though the stockpile only has 9 -tiles:: + #dig + mbmwmdd - #place - f10(3x3) +Blueprint marker +```````````````` -Zone detailed configuration -``````````````````````````` +"Blueprint" markers are useful for when you want to plan out your digging, but +you don't want to dig everything just yet. Here, "blueprint" refers to the +vanilla UI "blueprint mode" vs. "standard mode" buttons. You can use DF's +"Change blueprints to standard selections" button to convert the "blueprint" +marked tiles to regular designations. -Detailed configuration for zones, such as the pit/pond toggle, can also be set -by mimicking the hotkeys used to set them. Note that gather flags default to -true, so specifying them in a blueprint will turn the toggles off. If you need -to set configuration from multiple zone subscreens, separate the key sections -with :kbd:`^`. Note the special syntax for setting hospital supply levels, which -have no in-game hotkeys:: +For example, to dig out the perimeter of a room, but leave the center of the +room marked for digging later:: - #zone a combination hospital and shrub (but not fruit) gathering zone - gGtf^hH{hospital buckets=5 splints=20}(10x10) + #dig + d d d d d # + d mbd mbd mbd d # + d mbd mbd mbd d # + d mbd mbd mbd d # + d d d d d # + # # # # # # -The valid hospital settings (and their maximum values) are:: +To apply an entire dig blueprint in blueprint marker mode, regardless of what +the blueprint itself says, you can set the global quickfort setting +``force_marker_mode`` to ``true`` before you apply the blueprint by running +``quickfort set force_marker_mode true``. - thread (1500000) - cloth (1000000) - splints (100) - crutches (100) - plaster (15000) - buckets (100) - soap (15000) +Note that the state of the in-game vanilla button that you use to draw +designations in either Standard or "Blueprint" mode does not have any effect on +`quickfort`. -To toggle the ``active`` flag for zones, add an :kbd:`a` character to the -string. For example, to create a *disabled* pond zone (that you later intend to -carefully fill with 3-depth water for a dwarven bathtub):: +Warm and damp dig markers +````````````````````````` - #zone disabled pond zone - apPf(1x3) +Warm and damp dig markers allow digging to continue uninterrupted through warm +or damp tiles. These markers are useful to include in blueprints that are +expected to be applied near magma or in damp/aquifer layers. See the `dig` tool +for more info on warm and damp dig. -Minecart tracks -~~~~~~~~~~~~~~~ +The prefix for warm dig is ``mw`` and the prefix for damp dig is ``md``. -There are two ways to produce minecart tracks, and they are handled very -differently by the game. You can carve them into hard natural floors or you can -construct them out of building materials. Constructed tracks are conceptually -simpler, so we'll start with them. - -Constructed tracks -`````````````````` - -Quickfort supports the designation of track stops and rollers in ``#build`` -blueprints. You can build a track stop with :kbd:`C`:kbd:`S` and some number of -:kbd:`d` and :kbd:`a` characters for selecting dump direction and friction. You -can build a roller with :kbd:`M`:kbd:`r` and some number of :kbd:`s` and -:kbd:`q` characters for direction and speed. However, this can get confusing -very quickly and is very difficult to read in a blueprint. Moreover, constructed -track segments don't even have keys associated with them at all! - -To solve this problem, Quickfort provides the following keywords for use in -build blueprints:: - - -- Track segments -- - trackN - trackS - trackE - trackW - trackNS - trackNE - trackNW - trackSE - trackSW - trackEW - trackNSE - trackNSW - trackNEW - trackSEW - trackNSEW - - -- Track/ramp segments -- - trackrampN - trackrampS - trackrampE - trackrampW - trackrampNS - trackrampNE - trackrampNW - trackrampSE - trackrampSW - trackrampEW - trackrampNSE - trackrampNSW - trackrampNEW - trackrampSEW - trackrampNSEW - - -- Horizontal and vertical roller segments -- - rollerH - rollerV - rollerNS - rollerSN - rollerEW - rollerWE - - Note: append up to four 'q' characters to roller keywords to set roller - speed. E.g. a roller that propels from East to West at the slowest speed can - be specified with 'rollerEWqqqq'. - - -- Track stops that (optionally) dump to the N/S/E/W -- - trackstop - trackstopN - trackstopS - trackstopE - trackstopW - - Note: append up to four 'a' characters to trackstop keywords to set friction - amount. E.g. a stop that applies the smallest amount of friction can be - specified with 'trackstopaaaa'. - -As an example, you can create an E-W track with stops at each end that dump to -their outside directions with the following blueprint:: - - #build Example track - trackstopW trackEW trackEW trackEW trackstopE - -Note that the **only** way to build track and track/ramp segments is with the -keywords. The UI method of using :kbd:`+` and :kbd:`-` keys to select the track -type from a list does not work since DFHack Quickfort doesn't actually send keys -to the UI to build buildings. The text in your spreadsheet cells is mapped -directly onto DFHack API calls. Only ``#query`` blueprints send actual keycodes -to the UI. - -Carved tracks -````````````` +Carved minecart tracks +~~~~~~~~~~~~~~~~~~~~~~ In the game, you carve a minecart track by specifying a beginning and ending -tile and the game "adds" the designation to the tiles in between. You cannot +tile, and the game "adds" the designation to the tiles in between. You cannot designate single tiles because DF needs a multi-tile track to figure out which direction the track should go on each tile. For example to carve two track segments that cross each other, you might use the cursor to designate a line of three vertical tiles like this:: - ` start here ` # - ` ` ` # - ` end here ` # - # # # # + ` start here ` # + ` ` ` # + ` end here ` # + # # # # Then to carve the cross, you'd do a horizontal segment:: - ` ` ` # - start here ` end here # - ` ` ` # - # # # # + ` ` ` # + start here ` end here # + ` ` ` # + # # # # This will result in a carved track that would be equivalent to a constructed track of the form:: - #build - ` trackS ` # - trackE trackNSEW trackW # - ` trackN ` # - # # # # + #build + ` trackS ` # + trackE trackNSEW trackW # + ` trackN ` # + # # # # Quickfort supports both styles of specification for carving tracks with ``#dig`` blueprints. You can use the "additive" style to carve tracks in segments or you -can use the aliases to specify the track tile by tile. To designate track -segments, use area expansion syntax with a height or width of 1:: +can use the ``track`` aliases to specify the track tile by tile. To designate +track segments, use area expansion syntax with a height or width of 1:: - #dig - ` T(1x3) ` # - T(3x1) ` ` # - ` ` ` # - # # # # + #dig + ` T(1x3) ` # + T(3x1) ` ` # + ` ` ` # + # # # # "But wait!", I can hear you say, "How do you designate a track corner that opens to the South and East? You can't put both T(1xH) and T(Wx1) in the same cell!" @@ -716,28 +590,28 @@ This is true, but you can specify both width and height greater than 1, and for tracks, QF interprets it as an upper-left corner extending to the right W tiles and down H tiles. For example, to carve a track in a closed ring, you'd write:: - #dig - T(3x3) ` T(1x3) # - ` ` ` # - T(3x1) ` ` # - # # # # + #dig + T(3x3) ` T(1x3) # + ` ` ` # + T(3x1) ` ` # + # # # # You can also use negative numbers in the expansion syntax to indicate corners that are not upper-left corners. This blueprint will also carve a closed ring:: - #dig - T(3x3) ` ` # - ` ` ` # - ` ` T(-3x-3) # - # # # # + #dig + T(3x3) ` ` # + ` ` ` # + ` ` T(-3x-3) # + # # # # Or you could use the aliases to specify tile by tile:: - #dig - trackSE trackEW trackSW # - trackNS ` trackNS # - trackNE trackEW trackNW # - # # # # + #dig + trackSE trackEW trackSW # + trackNS ` trackNS # + trackNE trackEW trackNW # + # # # # The aliases can also be used to designate a solid block of track. This is especially useful for obliterating low-quality engravings so you can re-smooth @@ -757,24 +631,367 @@ masterwork engravings for destruction (unless forced to by a commandline parameter). You would run (and let your dwarves complete the jobs for) the sequence of blueprints until no tiles are designated by the "erase" blueprint. +#zone mode +---------- + +Zones define how regions of your fort should be treated. They are also the +anchor point for "locations" like taverns and hospitals. Unlike stockpiles or +buildings, zones can overlap, which can lead to some interesting layouts. See +the full list of zone symbols in the `#zone mode reference`_. + +Zone designation syntax +~~~~~~~~~~~~~~~~~~~~~~~ + +A zone is declared with a symbol followed by optional properties:: + + #zone a single tile garbage dump zone + d + + #zone a single tile garbage dump zone named "The Dump" + d{name="The Dump"} + + #zone interrogation room + o{name=Interrogation assigned_unit=sheriff} + + #zone a small inactive pond zone + p{name="Fill me" pond=true active=false}(3x3) + +If you want multiple zones that have the same footprint, they can be declared +from the same cell:: + + #zone pasture and training area + n{name="Main pasture"}t{name="Pet training area"}(14x10) + +or from different corners of the same rectangle:: + + #zone pasture and training area + n{name="Main pasture"}(10x2) + t{name="Pet training area"}(10x-2) + +and you can use this technique to achieve partial overlap, of course. The only +configuration that can't be specified in a single blueprint is multiple +non-rectangular zones that are partially overlapping. You will have to use +multiple ``#zone`` blueprints to achieve that. + +You can also use labels (see `Label syntax`_ above) to separate adjacent +non-rectangular zones that happen to be of the same type or to combine +disconnected regions into a single zone. + +Locations, locations, locations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Hospitals, guildhalls, taverns, libraries, and temples are locations. You can +declare a location in the properties for a zone:: + + #zone metalcrafter hall + m{location=guildhall profession=metalcrafter}(7x7) + +You can attach multiple zones to a single location by giving the location a +label (not a name -- you can name zones, but you can't directly name locations) +and then using that label for each of the zones you want to attach:: + + #zone tavern and rented room + b{location=tavern/bigpub name="Rent me"}(3x1) + h{location=tavern/bigpub name="Central pub" allow=residents}(25x40) + +Note that the label ("bigpub" in this case) will never appear in-game. It is +only used in the context of the blueprint to identify a common location. + +#place mode +----------- + +``#place`` mode is dedicated to stockpiles, which are a major design element in +any fortress. + +Stockpile designation syntax +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Just like zones, stockpiles can have properties like names or lists of other +stockpiles to take from. Unlike zones, stockpiles can have configuration +specifiers for exactly what types of items to accept. The full syntax looks +like this:: + + types/label{properties}:configuration(expansion) + +with every component other than the type being optional. You're already +familiar with `Property syntax`_, `Label syntax`_, and +`Area expansion syntax`_, so let's focus in on the remaining elements. + +Stockpile types +~~~~~~~~~~~~~~~ + +The type of stockpile corresponds to the category of items it accepts. Some +types will cause the stockpile to accept bins or barrels. See the full list in +the `#place mode reference`_. + +It is very common to have stockpiles that accept multiple categories of items. +Although it is perfectly valid to declare a single-purpose stockpile, +`quickfort` also supports directly declaring all the categories at once. For +example, to declare a 20x10 stockpile that accepts both corpses and refuse, you +could write:: + + #place refuse heap + yr(20x10) + +The order of the individual letters doesn't matter. If you want to configure the +stockpile from scratch, you can place unconfigured "custom" stockpiles with +(:kbd:`c`). + +.. _quickfort-place-containers: + +Bins, barrels, and wheelbarrows +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Quickfort has global settings for default values for the number of bins, +barrels, and wheelbarrows assigned to stockpiles, but these numbers can be set +for individual stockpiles as well in the properties. + +Individual properties for ``bins``, ``barrels``, and ``wheelbarrows`` are +supported. You can also set them all at once with the ``containers`` alias (it +usually just makes sense to set this to 0 when you don't want any containers of +any type). For example:: + + #place a stone stockpile with five wheelbarrows + s{wheelbarrows=5}(3x3) + + #place a bar, ammo, weapon, and armor stockpile with 20 bins + bzpd{bins=20}(5x5) + + #place a weapon stockpile with no bins + p{containers=0}(9x2) + +That last one could have equivalently used ``bins=0``, but sometimes you just +don't want to have to think about which stockpile types take which type of +container. + +The container settings also have a shorthand form. If you add a number after a +type symbol, you can set the relevant container count. The first example above +could equivalently be written as:: + + #place a stone stockpile with five wheelbarrows + s5(3x3) + +It sets the count for wheelbarrows specifically because the container +associated with stone stockpiles is wheelbarrows. + +If a stockpile has multiple types, it is the just the previous type symbol that +matters. ``s5e`` (stone and gems) would still set wheelbarrows only since the +``5`` comes directly after the ``s``. ``se5`` would set bins and not +wheelbarrows since the ``5`` would affect the container type associated with +gem stockpiles: bins. + +If the number follows a type symbol that does not have a specific container +type associated with it, then the container type defaults to wheelbarrows. This +allows you to easily add wheelbarrows to furniture and corpse stockpiles, where +having wheelbarrows is useful, but not added by default by the game. + +If the specified number exceeds the number of available stockpile tiles, the +number of available tiles is used. For wheelbarrows, that limit is reduced by 1 +to ensure there is at least one non-wheelbarrow tile available in the stockpile. +Otherwise no stone would ever be brought to the stockpile since all tiles would +be occupied by wheelbarrows! + +Generating manager orders for a ``#place`` blueprint with explicitly set +container/wheelbarrow counts will enqueue manager orders for the specified +number of containers or wheelbarrows, even if that number exceeds the in-game +size of the stockpile. For example, the following blueprint will enqueue orders +for 10 rock pots, even though the stockpile only has 9 tiles:: + + #place + f{barrels=10}(3x3) + +Stockpile configuration +~~~~~~~~~~~~~~~~~~~~~~~ + +Quickfort uses the `stockpiles` plugin and `stockpiles-library` to configure +stockpile settings, and provides a syntax that is easy to write in a blueprint +yet still allows you to access the full power of the `stockpiles` command. + +The syntax is:: + + : [/] [ [/]...] + +```` is one of ``=``, ``-``, or ``+``, representing the three `stockpiles` +import modes: ``set``, ``disable``, or ``enable``, respectively. Note that if +you are using an ``=`` op, then it should go first in the list. Any ``=`` +configuration segment will override anything that comes before it. + +For example, a blueprint like:: + + #place + f:=booze(5x4) + +would be equivalent to creating a 5x4 food stockpile in the UI, then selecting +it and running this command:: + + stockpiles import --mode=set booze + +you can also add a slash (``/``) and a comma-separated list of filter strings +to customize the settings further:: + + #place + p{name="Metal weapons"}:-cat_weapons/other/(7x3) + +Note that the "op" in this case lets us disable the matched preset, which in +this case is the "Other materials" types in the Weapons category. This +configuration is equivalent to the `stockpiles` command:: + + stockpiles import --mode=disable cat_weapons --filter=other/ + +And we can chain multiple `stockpiles` commands together by adding another "op" +character and another preset:: + + #place + p{name="Steel weapons"}:-cat_weapons/mats/,other/+steelweapons(7x3) + +which corresponds to running these two commands:: + + stockpiles import --mode=disable cat_weapons --filter=mats/,other/ + stockpiles import --mode=enable steelweapons + +With the combination of the library presets and custom filter strings, you can +configure any stockpile any way you like! + +#build mode +----------- + +``#build`` mode handles buildings, furniture (which are also "buildings" +according to DF), constructions (including constructed tracks), and hauling +routes. + +Building designation syntax +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The syntax is very similar to the syntax for stockpiles, except that it only +makes sense to have a single symbol to indicate what to build on that tile:: + + symbol{properties}:configuration(expansion) + +See the `#build mode reference`_ for properties that you can specify for each +building type. + +Here's an example of a simple 5x5 square of flooring:: + + #build + Cf(5x5) + +or a named Jeweler's workshop that takes from specific stockpiles:: + + #build + wj{name="Encrusting center" take_from="Furniture,Gem storage"} + +or a forge that specializes in high-quality armor:: + + #build + wf{name=Armorer labors=Armoring min_skill=Master} + +The ``:configuration`` part is only relevant for hauling routes, which we'll go +over in the next section. + +Hauling route definitions +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Hauling routes are defined by properties and configuration attached to track +stops. You can define a single-stop hauling route for a quantum stockpile as +easily as a multi-stop stone quarry transportation line. The stockpile-like +``:configuration`` part of the syntax controls which item types are considered +"desired" for the hauling route stop. If it's not specified, then all item +types are accepted. This is the most common case since most hauling route +contents are filtered by the stockpiles that the stops take from, but the +flexibility is there for when multiple stops take different items from the same +stockpile, or when a stop only wants a subset of items from a stockpile. + +Here is a common setup for a quantum stone stockpile:: + + #place + s{name="Stone quantum" quantum=true} ~ s5{name="Stone feeder"}(3x3) + #build + ~ trackstopW{take_from="Stone feeder" route="Stone dumper"} + +This sets up the quantum stockpile and the feeder stockpile in the ``#place`` +blueprint, followed by the trackstop and the hauling route configuration in the +``#build`` blueprint. The ``route`` property is the name of the hauling route +to create (or attach to if it already exists). If you are applying a quantum +stockpile blueprint more than once in a fort, be sure to *avoid* defining the +``route`` property so that each application of the blueprint creates a unique +hauling route. Two quantum stockpiles on the same route will not function +properly (since one of the stops will be missing a minecart). + +Let's look at a slightly more complicated setup where we sort the stone into +different output quantum stockpiles:: + + #place + s{name="Other stone quantum" quantum=true} ~ s5e{name="Rock feeder"}(3x3) + s{name="Ore/clay stone quantum" quantum=true} ~ + s{name="Gem quantum" quantum=true} ~ + #build + ~ trackstopW{take_from="Rock feeder" route="Other stone"}:=otherstone + ~ trackstopW{take_from="Rock feeder" route="Ore/clay"}:=cat_stone-otherstone + ~ trackstopW{take_from="Rock feeder" route="Gems"}:=cat_gems + +You can see how we make use of the stockpile-style configuration syntax to +fine-tune the items desired by the hauling route stop. + +Finally, let's make a series of stops on a common hauling route. There is +nothing particularly special about this example. If the ``route`` property +names an existing route, the stop will be added to that route:: + + #dig + trackE trackEW trackEW trackW + #build + trackstop{route="Tick tock"} ~ ~ trackstop{route="Tick tock"} + +These two track stops (which do not dump their contents) simply exist on a +common route at the ends of a connected carved track. + +#burrow mode +------------ + +``#burrow`` mode can create, extend, and remove tiles from burrows. + +Burrow designation syntax +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The syntax should look familiar by now:: + + symbol{properties}(expansion) + +See the `#burrow mode reference`_ for symbol and property definitions. + +Here's how to create (or add to, if a burrow by that name already exists) a +5x5 burrow named ``Inside+``. It will also register this burrow with +`gui/civ-alert` if no burrow has yet been registered:: + + #burrow + a{create=true name=Inside+ civalert=true}(5x5) + +Why the trailing ``+``? That's to indicate to the `burrow` plugin that the +burrow should grow as adjacent tiles are dug out. + +Similarly, here is how to erase a tile from all burrows that currently include +it:: + + #burrow + e + .. _quickfort-modeline: Modeline markers -~~~~~~~~~~~~~~~~ +---------------- The modeline has some additional optional components that we haven't talked about yet. You can: -- give a blueprint a label by adding a ``label()`` marker -- set a cursor offset and/or cursor placement hint by adding a ``start()`` - marker -- hide a blueprint from being listed with a ``hidden()`` marker -- register a message to be displayed after the blueprint is successfully - applied with a ``message()`` marker +- give a blueprint a label by adding a ``label()`` marker +- set a cursor offset and/or cursor placement hint by adding a ``start()`` + marker +- hide a blueprint from being listed with a ``hidden()`` marker +- register a message to be displayed after the blueprint is successfully + applied with a ``message()`` marker The full modeline syntax, when all optional elements are specified, is:: - #mode label(mylabel) start(X;Y;STARTCOMMENT) hidden() message(mymessage) comment + #mode label(mylabel) start(X;Y;startcomment) hidden() message(mymessage) comment Note that all elements are optional except for the initial ``#mode`` (though, as mentioned in the first section, if a modeline doesn't appear at all in the first @@ -782,117 +999,178 @@ cell of a spreadsheet, the blueprint is interpreted as a ``#dig`` blueprint with no optional markers). Here are a few examples of modelines with optional elements before we discuss them in more detail:: - #dig start(3; 3; Center tile of a 5-tile square) Regular blueprint comment - #build label(noblebedroom) start(10;15) - #query label(configstockpiles) No explicit 'start()' means cursor is at upper left corner - #meta label(digwholefort) start(center of stairs on surface) - #dig label(digdining) hidden() called by the digwholefort meta blueprint - #zone label(pastures) message(remember to assign animals to the new pastures) + #dig start(3; 3; Center tile of a 5-tile square) Regular blueprint comment + #build label(noblebedroom) No explicit 'start()' so cursor is in upper left + #meta label(digwholefort) start(center of stairs on surface) + #dig label(dig_dining) hidden() called by the digwholefort meta blueprint + #zone label(pastures) message(remember to assign animals to the pastures) .. _quickfort-label: Blueprint labels -```````````````` +~~~~~~~~~~~~~~~~ -Labels are displayed in the ``quickfort list`` output and are used for -addressing specific blueprints when there are multiple blueprints in a single -file or spreadsheet sheet (see `Packaging a set of blueprints`_ below). If a -blueprint has no label, the label becomes the ordinal of the blueprint's -position in the file or sheet. For example, the label of the first blueprint -will be "1" if it is not otherwise set, the label of the second blueprint will -be "2" if it is not otherwise set, etc. Labels that are explicitly defined must -start with a letter to ensure the auto-generated labels don't conflict with -user-defined labels. +Labels are displayed in the blueprint selection dialog and the output of +``quickfort list`` and are used for addressing specific blueprints when there +are multiple blueprints in a single file or spreadsheet sheet (see +`Packaging a set of blueprints`_ below). If a blueprint has no label, the label +becomes the ordinal of the blueprint's position in the file or sheet. For +example, the label of the first blueprint will be "1" if it is not otherwise +set, the label of the second blueprint will be "2" if it is not otherwise set, +etc. Labels that are explicitly defined must start with a letter to ensure the +auto-generated labels don't conflict with user-defined labels. .. _quickfort-start: Start positions -``````````````` +~~~~~~~~~~~~~~~ Start positions specify a cursor offset for a particular blueprint, simplifying the task of blueprint alignment. This is very helpful for blueprints that are based on a central staircase, but it comes in handy whenever a blueprint has an obvious "center". For example:: - #build start(2;2;center of workshop) label(masonw) a mason workshop - wm wm wm # - wm wm wm # - wm wm wm # - # # # # + #build start(2;2;center of workshop) label(stonew) a stonecutter workshop + wm wm wm # + wm wm wm # + wm wm wm # + # # # # will build the workshop *centered* on the cursor, not down and to the right of the cursor. The two numbers specify the column and row (or 1-based X and Y offset) where the cursor is expected to be when you apply the blueprint. Position ``1;1`` is the -top left cell. The optional comment will show up in the ``quickfort list`` -output and should contain information about where to position the cursor. If the -start position is ``1;1``, you can omit the numbers and just add a comment -describing where to put the cursor. This is also useful for meta blueprints that -don't actually care where the cursor is, but that refer to other blueprints that -have fully-specified ``start()`` markers. For example, a meta blueprint that -refers to the ``masonw`` blueprint above could look like this:: +top left cell. The optional comment will show up in the blueprint listings and +should contain information about where to position the cursor. If the start +position is ``1;1``, you can omit the numbers and just add a comment describing +where to put the cursor. This is also useful for meta blueprints that don't +actually care where the cursor is, but that refer to other blueprints that have +fully-specified ``start()`` markers. For example, a meta blueprint that refers +to the ``stonew`` blueprint above could look like this:: - #meta start(center of workshop) a mason workshop - /masonw + #meta start(center of workshop) a stonecutter workshop + /stonew You can use semicolons, commas, or spaces to separate the elements of the -``start()`` marker, whatever is most convenient. +``start()`` marker, whichever you prefer. .. _quickfort-hidden: Hiding blueprints -````````````````` +~~~~~~~~~~~~~~~~~ -A blueprint with a ``hidden()`` marker won't appear in ``quickfort list`` output -unless the ``--hidden`` flag is specified. The primary reason for hiding a -blueprint (rather than, say, deleting it or moving it out of the ``blueprints/`` -folder) is if a blueprint is intended to be run as part of a larger sequence -managed by a `meta blueprint `. +A blueprint with a ``hidden()`` marker won't appear in the blueprint listings +unless hidden blueprints are specifically requested. The primary reason for +hiding a blueprint (rather than, say, deleting it or moving it out of the +``blueprints/`` folder) is if a blueprint is intended to be run as part of a +larger sequence managed by a `meta blueprint `. .. _quickfort-message: Messages -```````` +~~~~~~~~ A blueprint with a ``message()`` marker will display a message after the -blueprint is applied with ``quickfort run``. This is useful for reminding -players to take manual steps that cannot be automated, like assigning minecarts -to a route, or listing the next step in a series of blueprints. For long or -multi-part messages, you can embed newlines:: +blueprint is applied. This is useful for reminding players to take manual steps +that cannot be automated, like assigning minecarts to a route, or listing the +next step in a series of blueprints. For long or multi-part messages, you can +embed newlines:: - "#meta label(surface1) message(This would be a good time to start digging the industry level. - Once the area is clear, continue with /surface2.) clear the embark site and set up pastures" + "#meta label(surface1) message(This would be a good time to start digging the industry level. + Once the area is clear, continue with /surface2.) clear the embark site and set up pastures" The quotes surrounding the cell text are only necessary if you are writing a .csv file by hand. Spreadsheet applications will surround multi-line text with quotes automatically when they save/export the file. +.. _quickfort-other-modes: + +Other blueprint modes +--------------------- + +There are a few additional blueprint modes that become useful when you are +sharing your blueprints with others or managing complex blueprint sets. Instead +of mapping tile positions to map modifications like the basic modes do, these +"blueprints" have specialized, higher-level uses: + +============== =========== +Blueprint mode Description +============== =========== +notes Display long messages, such as help text or blueprint + walkthroughs +ignore Hide a section of your spreadsheet from quickfort, useful for + scratch space or personal notes +meta Script sequences of blueprints together, transform them, and/or + repeat them across multiple z-levels +============== =========== + +.. _quickfort-notes: + +#notes mode +~~~~~~~~~~~ + +Sometimes you just want to record some information about your blueprints, such +as when to apply them, what preparations you need to make, or what the +blueprints contain. The `message() ` modeline marker is +useful for small, single-line messages, but a ``#notes`` blueprint is more +convenient for long messages or messages that span many lines. The lines in a +``#notes`` blueprint are output as if they were contained within one large +multi-line ``message()`` marker. For example, the following (empty) ``#meta`` +blueprint:: + + "#meta label(help) message(This is the help text for the blueprint set + contained in this file. + + First, make sure that you embark in...) blueprint set walkthrough" + +could more naturally be written as a ``#notes`` blueprint:: + + #notes label(help) blueprint set walkthrough + This is the help text for the blueprint set + contained in this file + + First, make sure that you embark in... + +The ``#meta`` blueprint is all squashed into a single spreadsheet cell, using +embedded newlines. Each line of the ``#notes`` "blueprint", however, is in a +separate cell, allowing for much easier viewing and editing. + +#ignore mode +~~~~~~~~~~~~ + +If you don't want some data to be visible to quickfort at all, use an +``#ignore`` blueprint. All lines until the next modeline in the file or sheet +will be completely ignored. This can be useful for personal notes, scratch +space, or temporarily "commented out" blueprints. + .. _quickfort-meta: -Meta blueprints -~~~~~~~~~~~~~~~ +#meta mode +~~~~~~~~~~ -Meta blueprints are blueprints that control how other blueprints are applied. -For example, meta blueprints can bundle a group of other blueprints so that they -can be run with a single command. They can also encode logic, like rotating the -blueprint or duplicating it across a specified number of z-levels. +``#meta`` blueprints are blueprints that control how other blueprints are +applied. For example, meta blueprints can bundle a group of other blueprints so +that they can be run with a single command. They can also encode logic, like +rotating the blueprint or duplicating it across a specified number of z-levels. + +Scripting blueprints together +````````````````````````````` A common scenario where meta blueprints are useful is when you have several phases to link together. For example you might: 1. Apply a dig blueprint to designate dig areas #. Wait for miners to dig +#. **Apply another dig blueprint** to designate traffic costs +#. **Apply a zone blueprint** to designate zones +#. **Apply a place buildprint** to designate and configure stockpiles #. **Apply a build buildprint** to designate buildings -#. **Apply a place buildprint** to designate stockpiles -#. **Apply a query blueprint** to configure stockpiles -#. Wait for buildings to get built -#. Apply a different query blueprint to configure rooms -Those three "apply"s in the middle might as well get done in one command instead -of three. A ``#meta`` blueprint can help with that. A meta blueprint refers to +Those last four "apply"s might as well get done in one command instead of four. +A ``#meta`` blueprint can help with that. A meta blueprint refers to other blueprints in the same file by their label (see the `Modeline markers`_ -section above) in the same format used by the `quickfort` command: +section) in the same format used by the `quickfort` command: ``/